diff --git a/jest.config.cjs b/jest.config.cjs index d4bbf3a61..6609106df 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -51,7 +51,8 @@ module.exports = { '@defra/forms-model/.*', 'nanoid', // Supports ESM only 'slug', // Supports ESM only - '@defra/hapi-tracing' // Supports ESM only| + '@defra/hapi-tracing', // Supports ESM only + 'geodesy' // Supports ESM only| ].join('|')}/)` ], testTimeout: 10000, diff --git a/package-lock.json b/package-lock.json index 45b7b79dd..8bbed92c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "dependencies": { "@defra/forms-model": "^3.0.603", "@defra/hapi-tracing": "^1.29.0", + "@defra/interactive-map": "^0.0.3-alpha", "@elastic/ecs-pino-format": "^1.5.0", "@hapi/boom": "^10.0.1", "@hapi/catbox": "^12.1.1", @@ -36,6 +37,7 @@ "date-fns": "^4.1.0", "dotenv": "^17.2.3", "expr-eval-fork": "^3.0.0", + "geodesy": "^2.4.0", "govuk-frontend": "^5.13.0", "hapi-pino": "^13.0.0", "hapi-pulse": "^3.0.1", @@ -147,6 +149,97 @@ "dev": true, "license": "MIT" }, + "node_modules/@amcharts/amcharts5": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@amcharts/amcharts5/-/amcharts5-5.14.4.tgz", + "integrity": "sha512-Tl7wQLWvsvyWVtlCIm1yhZtJviSDYjuNTnlUkO0D49GyByoK0nb9fr0DK4rUw4DVgyLcySxWBsb2lzTJm5Rd9Q==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@types/d3": "^7.0.0", + "@types/d3-chord": "^3.0.0", + "@types/d3-hierarchy": "3.1.1", + "@types/d3-sankey": "^0.11.1", + "@types/d3-shape": "^3.0.0", + "@types/geojson": "^7946.0.8", + "@types/polylabel": "^1.0.5", + "@types/svg-arc-to-cubic-bezier": "^3.2.0", + "d3": "^7.0.0", + "d3-chord": "^3.0.0", + "d3-force": "^3.0.0", + "d3-geo": "^3.0.0", + "d3-hierarchy": "^3.0.0", + "d3-sankey": "^0.12.3", + "d3-selection": "^3.0.0", + "d3-shape": "^3.0.0", + "d3-transition": "^3.0.0", + "d3-voronoi-treemap": "^1.1.2", + "flatpickr": "^4.6.13", + "markerjs2": "^2.29.4", + "pdfmake": "^0.2.2", + "polylabel": "^1.1.0", + "seedrandom": "^3.0.5", + "svg-arc-to-cubic-bezier": "^3.2.0", + "tslib": "^2.2.0" + } + }, + "node_modules/@arcgis/core": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.34.8.tgz", + "integrity": "sha512-UrEBTjXpSA9fhmmnAENBzz9GG81xALTezQFMXUs2iMB+tiOckmJyBbhATI/W4lIQyUfNEK7Zm/46EP2PhDga/A==", + "license": "SEE LICENSE IN copyright.txt", + "dependencies": { + "@amcharts/amcharts5": "~5.14.1", + "@arcgis/toolkit": "^4.34.0", + "@esri/arcgis-html-sanitizer": "~4.1.0", + "@esri/calcite-components": "^3.3.2", + "@vaadin/grid": "~24.9.1", + "@zip.js/zip.js": "~2.8.7", + "luxon": "~3.7.2", + "marked": "~16.3.0", + "tslib": "^2.8.1" + } + }, + "node_modules/@arcgis/core/node_modules/marked": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.3.0.tgz", + "integrity": "sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@arcgis/lumina": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@arcgis/lumina/-/lumina-4.34.9.tgz", + "integrity": "sha512-efqO+SwR+1IYf29AATh1l2FUeypRyRINTBNkaJY+KkaFe+8gqSJ45qOmputhyzF5WTRDb7WhOYgnChjp6VYPpA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@arcgis/toolkit": "~4.34.9", + "csstype": "^3.1.3", + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@lit/context": "^1.1.5", + "lit": "^3.3.0" + }, + "peerDependenciesMeta": { + "@lit/context": { + "optional": true + } + } + }, + "node_modules/@arcgis/toolkit": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@arcgis/toolkit/-/toolkit-4.34.9.tgz", + "integrity": "sha512-wFST+eVnCwmg9NyICVyn9bsBnR+TlWklsGqG3L7xqSTgfXo6TuCThE7wtTb8xWxsTBkGvImqMUgpgLuwQuTQ1g==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "tslib": "^2.8.1" + } + }, "node_modules/@asamuzakjp/css-color": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", @@ -229,7 +322,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2049,7 +2141,6 @@ "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -2142,7 +2233,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -2166,7 +2256,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -2248,6 +2337,44 @@ "node": ">=22" } }, + "node_modules/@defra/interactive-map": { + "version": "0.0.3-alpha", + "resolved": "https://registry.npmjs.org/@defra/interactive-map/-/interactive-map-0.0.3-alpha.tgz", + "integrity": "sha512-uI1TqqWriIxD2x2vbanj0whnpLQXLShEXD69UrBKzzpMk8qvu3smpibR0t2BeYV40TZEhrPYdpi3TmOThno8lg==", + "dependencies": { + "@arcgis/core": "^4.34.8", + "@turf/area": "^7.2.0", + "@turf/boolean-valid": "^7.2.0", + "@turf/helpers": "^7.2.0", + "core-js": "^3.44.0", + "govuk-frontend": "^5.13.0", + "maplibre-gl": "^5.15.0", + "maplibre-gl-legacy": "npm:maplibre-gl@1.15.3", + "preact": "^10.27.2" + }, + "peerDependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@defra/interactive-map/node_modules/preact": { + "version": "10.28.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.2.tgz", + "integrity": "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", @@ -2880,6 +3007,132 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@esri/arcgis-html-sanitizer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-4.1.0.tgz", + "integrity": "sha512-einEveDJ/k1180NOp78PB/4Hje9eBy3dyOGLLtLn6bSkizpUfCwuYBIXOA7Y3F/k/BsTQXgKqUVwQ0eiscWMdA==", + "license": "Apache-2.0", + "dependencies": { + "xss": "1.0.13" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@esri/calcite-components": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@esri/calcite-components/-/calcite-components-3.3.3.tgz", + "integrity": "sha512-tw+EfJ3pb+Odj71W6E9GUkm8rMbNxfW1KeiI8GgsKDzhr39hMKwY+zYYFFYuO0FONxWGvAB+B8yqB0NvH7WeHw==", + "license": "SEE LICENSE.md", + "dependencies": { + "@arcgis/lumina": ">=4.34.0-next.158 <4.35.0", + "@arcgis/toolkit": ">=4.34.0-next.158 <4.35.0", + "@esri/calcite-ui-icons": "4.3.0", + "@floating-ui/dom": "^1.6.12", + "@floating-ui/utils": "^0.2.8", + "@types/sortablejs": "^1.15.8", + "color": "^5.0.0", + "composed-offset-position": "^0.0.6", + "es-toolkit": "^1.39.8", + "focus-trap": "^7.6.5", + "interactjs": "^1.10.27", + "lit": "^3.3.0", + "sortablejs": "^1.15.6", + "timezone-groups": "^0.10.4", + "type-fest": "^4.30.1" + } + }, + "node_modules/@esri/calcite-components/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esri/calcite-ui-icons": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@esri/calcite-ui-icons/-/calcite-ui-icons-4.3.0.tgz", + "integrity": "sha512-iOOuRurpjFxFVw6+aXW2JpSkRBrdOpBcbdibfPOmSPqMd1aoHBtYmYXetKoH9vfrXoBiPyO2PkDnczhsu/N9IA==", + "license": "SEE LICENSE.md", + "bin": { + "spriter": "bin/spriter.js" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@foliojs-fork/fontkit": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz", + "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/restructure": "^2.0.2", + "brotli": "^1.2.0", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.2.2", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/linebreak": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz", + "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==", + "license": "MIT", + "dependencies": { + "base64-js": "1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/pdfkit": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.3.tgz", + "integrity": "sha512-Obc0Wmy3bm7BINFVvPhcl2rnSSK61DQrlHU8aXnAqDk9LCjWdUOPwhgD8Ywz5VtuFjRxmVOM/kQ/XLIBjDvltw==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/fontkit": "^1.9.2", + "@foliojs-fork/linebreak": "^1.1.1", + "crypto-js": "^4.2.0", + "jpeg-exif": "^1.1.4", + "png-js": "^1.0.0" + } + }, + "node_modules/@foliojs-fork/restructure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", + "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==", + "license": "MIT" + }, "node_modules/@hapi/accept": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", @@ -3433,6 +3686,12 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@interactjs/types": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.27.tgz", + "integrity": "sha512-BUdv0cvs4H5ODuwft2Xp4eL8Vmi3LcihK42z0Ft/FbVJZoRioBsxH+LlsBdK4tAie7PqlKGy+1oyOncu1nQ6eA==", + "license": "MIT" + }, "node_modules/@ioredis/commands": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz", @@ -4184,6 +4443,139 @@ "dev": true, "license": "MIT" }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/reactive-element": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", + "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0" + } + }, + "node_modules/@mapbox/geojson-rewind": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "license": "ISC", + "dependencies": { + "get-stream": "^6.0.1", + "minimist": "^1.2.6" + }, + "bin": { + "geojson-rewind": "geojson-rewind" + } + }, + "node_modules/@mapbox/geojson-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", + "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==", + "license": "ISC" + }, + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@mapbox/mapbox-gl-supported": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", + "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==", + "license": "BSD-3-Clause", + "peerDependencies": { + "mapbox-gl": ">=0.32.1 <2.0.0" + } + }, + "node_modules/@mapbox/point-geometry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-1.1.0.tgz", + "integrity": "sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==", + "license": "ISC" + }, + "node_modules/@mapbox/tiny-sdf": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.7.tgz", + "integrity": "sha512-25gQLQMcpivjOSA40g3gO6qgiFPDpWRoMfd+G/GoppPIeP6JDaMMkMrEJnMZhKyyS6iKwVt5YKu02vCUyJM3Ug==", + "license": "BSD-2-Clause" + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", + "license": "BSD-2-Clause" + }, + "node_modules/@mapbox/vector-tile": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-2.0.4.tgz", + "integrity": "sha512-AkOLcbgGTdXScosBWwmmD7cDlvOjkg/DetGva26pIRiZPdeJYjYKarIlb4uxVzi6bwHO6EWH82eZ5Nuv4T5DUg==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/point-geometry": "~1.1.0", + "@types/geojson": "^7946.0.16", + "pbf": "^4.0.1" + } + }, + "node_modules/@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "license": "ISC", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "24.4.1", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-24.4.1.tgz", + "integrity": "sha512-UKhA4qv1h30XT768ccSv5NjNCX+dgfoq2qlLVmKejspPcSQTYD4SrVucgqegmYcKcmwf06wcNAa/kRd0NHWbUg==", + "license": "ISC", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^3.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, + "node_modules/@maplibre/mlt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@maplibre/mlt/-/mlt-1.1.2.tgz", + "integrity": "sha512-SQKdJ909VGROkA6ovJgtHNs9YXV4YXUPS+VaZ50I2Mt951SLlUm2Cv34x5Xwc1HiFlsd3h2Yrs5cn7xzqBmENw==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@mapbox/point-geometry": "^1.1.0" + } + }, + "node_modules/@maplibre/vt-pbf": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@maplibre/vt-pbf/-/vt-pbf-4.2.0.tgz", + "integrity": "sha512-bxrk/kQUwWXZgmqYgwOCnZCMONCRi3MJMqJdza4T3E4AeR5i+VyMnaJ8iDWtWxdfEAJRtrzIOeJtxZSy5mFrFA==", + "license": "MIT", + "dependencies": { + "@mapbox/point-geometry": "^1.1.0", + "@mapbox/vector-tile": "^2.0.4", + "@types/geojson-vt": "3.2.5", + "@types/supercluster": "^7.1.3", + "geojson-vt": "^4.0.2", + "pbf": "^4.0.1", + "supercluster": "^8.0.1" + } + }, "node_modules/@mswjs/interceptors": { "version": "0.39.8", "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.8.tgz", @@ -4296,6 +4688,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@open-wc/dedupe-mixin": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", + "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==", + "license": "MIT" + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -4636,6 +5034,15 @@ "url": "https://opencollective.com/pkgr" } }, + "node_modules/@polymer/polymer": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.5.2.tgz", + "integrity": "sha512-fWwImY/UH4bb2534DVSaX+Azs2yKg8slkMBHOyGeU2kKx7Xmxp6Lee0jP8p6B3d7c1gFUPB2Z976dTUtX81pQA==", + "license": "BSD-3-Clause", + "dependencies": { + "@webcomponents/shadycss": "^1.9.1" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -4750,1382 +5157,2860 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "license": "MIT" }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, + "node_modules/@turf/area": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.3.2.tgz", + "integrity": "sha512-d7IuEjAO3TSX5aVeL5WXrtCZCwxUAUOD4+LZ+VjoEe2THmYKdUknCPbH6rdhMBzLyZNuSVRmpRD/QfpCnLqoZg==", "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "@turf/helpers": "7.3.2", + "@turf/meta": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/atob": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/atob/-/atob-2.1.4.tgz", - "integrity": "sha512-FisOhG87cCFqzCgq6FUtSYsTMOHCB/p28zJbSN1QBo4ZGJfg9PEhMjdIV++NDeOnloUUe0Gz6jwBV+L1Ac00Mw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, + "node_modules/@turf/bbox": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.2.tgz", + "integrity": "sha512-iohGIDVqi8Ck7VQY2Emp490BShWKixG8wkVPQ7qO4fXRqJwrWO7ntU9XPB+r0qs6Y8kaSd+nDnvG3VFfKDb+Vg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@turf/helpers": "7.3.2", + "@turf/meta": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, + "node_modules/@turf/boolean-crosses": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.3.2.tgz", + "integrity": "sha512-qr2k+3YUnOoVI+9epznpTNE+pslr9nbjn/jGlq6uANhF4jviL5862E8SR4YHSrF0Vg2CguSPY8V4Lqo4qZhXQg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.0.0" + "@turf/boolean-equal": "7.3.2", + "@turf/boolean-point-in-polygon": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@turf/line-intersect": "7.3.2", + "@turf/polygon-to-line": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, + "node_modules/@turf/boolean-disjoint": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.3.2.tgz", + "integrity": "sha512-8cz3fAWldktvCEmIwMvzEq0q7JnICJPZeQ/xPm+XccGbRcGHQZOFI3wZCemQh6akRowWfQ8PgQu2OeJXJbvIuA==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@turf/boolean-point-in-polygon": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/line-intersect": "7.3.2", + "@turf/meta": "7.3.2", + "@turf/polygon-to-line": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, + "node_modules/@turf/boolean-equal": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.3.2.tgz", + "integrity": "sha512-ttve2ghdgkKHVI1gPwKj+XIyPirawhiUZKciLwIIaVgVrihiehpk4OY5Rn4kMWbvYzQTAKDUTfSXVM6fzQFeYA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@turf/clean-coords": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/boom": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/@types/boom/-/boom-7.3.5.tgz", - "integrity": "sha512-jBS0kU2s9W2sx+ILEyO4kxqIYLllqcUXTaVrBctvGptZ+4X3TWkkgY9+AmxdMPKrgiDDdLcfsaQCTu7bniLvgw==", - "dev": true, - "license": "MIT" + "node_modules/@turf/boolean-overlap": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.3.2.tgz", + "integrity": "sha512-xzy/wpf2OpIhyZ80aWU9UtT87w7iQtAPOCyb5szfBcX2L+m4Ii5pVx53yZbKFct16i/zObc4W6gI9N5oHyOBkg==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@turf/line-intersect": "7.3.2", + "@turf/line-overlap": "7.3.2", + "@turf/meta": "7.3.2", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@types/btoa": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/btoa/-/btoa-1.2.5.tgz", - "integrity": "sha512-BItINdjZRlcGdI2efwK4bwxY5vEAT0SnIVfMOZVT18wp4900F1Lurqk/9PNdF9hMP1zgFmWbjVEtAsQKVcbqxA==", - "dev": true, + "node_modules/@turf/boolean-point-in-polygon": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.3.2.tgz", + "integrity": "sha512-PAfPDQ0TW1+VLgZ7tReTSyZ/X41AW7/nMRQxVpY+h/aG7JomZJ779lojnODT4dWCn3IMTA3xD2dDDfVYBAQMYg==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/catbox": { - "version": "10.0.9", - "resolved": "https://registry.npmjs.org/@types/catbox/-/catbox-10.0.9.tgz", - "integrity": "sha512-4qXm1SmZurBMNFc/536+7gfbOlN43fWyoo4O0bdLqtpDK/cpuCYnEDou0Cl4naaMwuJ19rEwnuscR7tetGnTDA==", - "dev": true, - "license": "MIT" + "node_modules/@turf/boolean-point-on-line": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.3.2.tgz", + "integrity": "sha512-1hDfbdBgX9qpMmCnBqeNgRC3Bl/hlNGR42SvGmejXCjaZmheP+V8pXWJgF0WDxAzYkb7opqS8Vta4+EymUU5GQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@types/convict": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@types/convict/-/convict-6.1.6.tgz", - "integrity": "sha512-1B6jqWHWQud+7yyWAqbxnPmzlHrrOtJzZr1DhhYJ/NbpS4irfZSnq+N5Fm76J9LNRlUZvCmYxTVhhohWRvtqHw==", - "dev": true, + "node_modules/@turf/boolean-valid": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.3.2.tgz", + "integrity": "sha512-0QYO49YM1CJufjR1p58zHffiNUzEEwz7WQJu/a0kzQBQNm5+sYVdyL/PiFuDoEr34WdsAGjSFvFS8h5PB3IG1A==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@turf/bbox": "7.3.2", + "@turf/boolean-crosses": "7.3.2", + "@turf/boolean-disjoint": "7.3.2", + "@turf/boolean-overlap": "7.3.2", + "@turf/boolean-point-in-polygon": "7.3.2", + "@turf/boolean-point-on-line": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@turf/line-intersect": "7.3.2", + "@types/geojson": "^7946.0.10", + "geojson-polygon-self-intersections": "^1.2.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, + "node_modules/@turf/clean-coords": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.3.2.tgz", + "integrity": "sha512-O7gnwgUkFbvjnCmq4dyECkYshcXZNqP8pE+DQNC26xG86+qeBlrPU8DjR7aumcK8MezC9tYqw0vb350/sKYBVQ==", "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@turf/boolean-point-on-line": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, + "node_modules/@turf/distance": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.3.2.tgz", + "integrity": "sha512-aY2HQDZpu/doKRUTEcBKdV2olNOD1x0wKR6ujzC+D1EZLKWOEmTJRR+6OjzB+xuv5zZbhFPe9f0MXEuNDxzwfQ==", "license": "MIT", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" + "node_modules/@turf/geojson-rbush": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.3.2.tgz", + "integrity": "sha512-0cUSyLotPClSzPvD7XM88qlaRMkfZJJuwUE/p8rhpvGk53SjVexMjltohkOFd0QFmayCovrT81OSgGcqt91zYA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/meta": "7.3.2", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, + "node_modules/@turf/helpers": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.2.tgz", + "integrity": "sha512-5HFN42rgWjSobdTMxbuq+ZdXPcqp1IbMgFYULTLCplEQM3dXhsyRFe7DCss4Eiw12iW3q6Z5UeTNVfITsE5lgA==", "license": "MIT", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/govuk-frontend": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@types/govuk-frontend/-/govuk-frontend-5.11.0.tgz", - "integrity": "sha512-XUl4XsWqUQPPf5hNlljWjtMfXiCms/ZwVfSA1w94fDW/426gXZnCjRNYR3POUEfCzjY088odIDsra7i+fD57TA==", - "dev": true, - "license": "MIT" + "node_modules/@turf/invariant": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.2.tgz", + "integrity": "sha512-brGmL1EFhZH/YNXhq6S+8sPWBEnmvEyxMWJO8bUNOFZyWHYiRTwxQHZM+An1blkbQ77PiEzsdNAspZqE1j7YKA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@types/hapi": { - "version": "18.0.15", - "resolved": "https://registry.npmjs.org/@types/hapi/-/hapi-18.0.15.tgz", - "integrity": "sha512-n7fXlpRAptQ+6N0JdQun+K4co2v3Wv5+KOFYLFV1xL8HEJ+EX8hqvbBmQg+uL3OkzwQZHvgCtHiBSdmCCDlrog==", - "dev": true, + "node_modules/@turf/line-intersect": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.3.2.tgz", + "integrity": "sha512-qsMUml7MI/x1iLcQzCuD/LlAxQUfMDR6PoVwQ32fGF7dCqfdMkKWoMz4Qn5WyPCeSyW8BchuAjWp5FnVtOeLeg==", "license": "MIT", "dependencies": { - "@types/boom": "*", - "@types/catbox": "*", - "@types/iron": "*", - "@types/mimos": "*", - "@types/node": "*", - "@types/podium": "*", - "@types/shot": "*", - "joi": "^17.3.0" + "@turf/helpers": "7.3.2", + "@types/geojson": "^7946.0.10", + "sweepline-intersections": "^1.5.0", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/hapi__catbox": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.6.tgz", - "integrity": "sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==", - "dev": true, - "license": "MIT" + "node_modules/@turf/line-overlap": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.3.2.tgz", + "integrity": "sha512-oao5Zbs21bX5prTrxdjgjYEc9bBfBDv4dkRqDaFk1pzNyx9zD2uXlifaPaSjo/GFJ5OEfTews8r3nSUXzFN+yA==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-on-line": "7.3.2", + "@turf/geojson-rbush": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@turf/line-segment": "7.3.2", + "@turf/meta": "7.3.2", + "@turf/nearest-point-on-line": "7.3.2", + "@types/geojson": "^7946.0.10", + "fast-deep-equal": "^3.1.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@types/hapi__catbox-memory": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/hapi__catbox-memory/-/hapi__catbox-memory-6.0.2.tgz", - "integrity": "sha512-0bx7IP02GItHGLOBvfVnKfNqFj/8dGmQksyY2Y+OZQB3EdfEBv0kO/SIi8dPkCRtnRc0KBFnnwjmUv8T70XVYA==", - "deprecated": "This is a stub types definition. @hapi/catbox-memory provides its own type definitions, so you do not need this installed.", - "dev": true, + "node_modules/@turf/line-segment": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.3.2.tgz", + "integrity": "sha512-Dx1yQ31fMm3PqYWo5S/5/zlcMaCV02G2alW5FSnJCu9Yc1/sBMxjjuVpF92roOV+XRE9zl50DThATikQB8+roA==", "license": "MIT", "dependencies": { - "@hapi/catbox-memory": "*" + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@turf/meta": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/hapi__cookie": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@types/hapi__cookie/-/hapi__cookie-12.0.5.tgz", - "integrity": "sha512-rZNcJRDuutoSLHVHNSoIACabeGZEhjYFKqdW9vmucpUgE50YfPbtGPREzXEKOf2/1RR6d+jrSkNRwxUEaUIfsQ==", - "dev": true, + "node_modules/@turf/meta": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.2.tgz", + "integrity": "sha512-FIcIY+ZsAe9QV4fHciTXeuRz2TKIVaEjivkl4vMFCibdj7FUkWDofqOncbIre1xPrgktQeh20ZrmD+p0kf3n4Q==", "license": "MIT", "dependencies": { - "@hapi/hapi": "^21.1.0", - "@types/node": "*", - "joi": "^17.7.0" + "@turf/helpers": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/hapi__crumb": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/@types/hapi__crumb/-/hapi__crumb-7.3.7.tgz", - "integrity": "sha512-miEdR5NX0KY6aCr258ViwaxMCPlf98yBb3QiAi83x/gXVNWY3HXsaE0DkaNa+/SAm41eVuhiF+02F/QpaP7gvA==", - "dev": true, + "node_modules/@turf/nearest-point-on-line": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.3.2.tgz", + "integrity": "sha512-IfI7SkasMLdULb+gPOtdZtTSTkuS06dlKEUX4lPOC94jJA2vjaCDIRxejRRzGLY0EQ4uben9I8PQEp7cwVuERA==", "license": "MIT", "dependencies": { - "@hapi/hapi": "^21.1.0", - "@types/node": "*", - "joi": "^17.7.0" + "@turf/distance": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@turf/meta": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@types/hapi__yar": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/@types/hapi__yar/-/hapi__yar-10.1.6.tgz", - "integrity": "sha512-P7FOASHKDRxsG7wQJuw1USAyJhBDve46JyBUVmO+eqL/kymBpy+2fxZqTJqtegqSHjdqZWVZZEoUuDFP5erPpQ==", + "node_modules/@turf/polygon-to-line": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.3.2.tgz", + "integrity": "sha512-/C8On+ddnMi1z2r5ZLbGyXb+gCM4d4CpAKx3f80kyReM2IxwN6F0t6y1PPXYx4eR2P49fhiEcQJ9m0kCwQBAzw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.2", + "@turf/invariant": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@hapi/hapi": "^21.1.0", - "@types/hapi__catbox": "*", - "@types/node": "*", - "joi": "^17.7.0" + "tslib": "^2.4.0" } }, - "node_modules/@types/hoek": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/hoek/-/hoek-4.1.7.tgz", - "integrity": "sha512-eRB9dZ/BxbXv6oIWIx5Nd5MotV9fClhD4UAhO6ZkPBqazbgoh4hE3a4VUpninmdY+IXc2edBx2MXL+me/S54Ww==", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, "license": "MIT" }, - "node_modules/@types/humanize-duration": { - "version": "3.27.4", - "resolved": "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.4.tgz", - "integrity": "sha512-yaf7kan2Sq0goxpbcwTQ+8E9RP6HutFBPv74T/IA/ojcHKhuKVlk2YFYyHhWZeLvZPzzLE3aatuQB4h0iqyyUA==", + "node_modules/@types/atob": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/atob/-/atob-2.1.4.tgz", + "integrity": "sha512-FisOhG87cCFqzCgq6FUtSYsTMOHCB/p28zJbSN1QBo4ZGJfg9PEhMjdIV++NDeOnloUUe0Gz6jwBV+L1Ac00Mw==", + "dev": true, "license": "MIT" }, - "node_modules/@types/iron": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@types/iron/-/iron-5.0.5.tgz", - "integrity": "sha512-ndu2RvRJ5LWsSVF0kBMJe9qnNcFcAO9eYwzr2P4FOU6m5ypRrbdiX+d8x4GNG7lIn1mKShyQf3M08CIX4wPsEA==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@babel/types": "^7.0.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-report": "*" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" + "@babel/types": "^7.28.2" } }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/@types/boom": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@types/boom/-/boom-7.3.5.tgz", + "integrity": "sha512-jBS0kU2s9W2sx+ILEyO4kxqIYLllqcUXTaVrBctvGptZ+4X3TWkkgY9+AmxdMPKrgiDDdLcfsaQCTu7bniLvgw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "MIT" }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/@types/btoa": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/btoa/-/btoa-1.2.5.tgz", + "integrity": "sha512-BItINdjZRlcGdI2efwK4bwxY5vEAT0SnIVfMOZVT18wp4900F1Lurqk/9PNdF9hMP1zgFmWbjVEtAsQKVcbqxA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/node": "*" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/@types/catbox": { + "version": "10.0.9", + "resolved": "https://registry.npmjs.org/@types/catbox/-/catbox-10.0.9.tgz", + "integrity": "sha512-4qXm1SmZurBMNFc/536+7gfbOlN43fWyoo4O0bdLqtpDK/cpuCYnEDou0Cl4naaMwuJ19rEwnuscR7tetGnTDA==", "dev": true, "license": "MIT" }, - "node_modules/@types/jsdom": { - "version": "21.1.7", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", - "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "node_modules/@types/convict": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@types/convict/-/convict-6.1.6.tgz", + "integrity": "sha512-1B6jqWHWQud+7yyWAqbxnPmzlHrrOtJzZr1DhhYJ/NbpS4irfZSnq+N5Fm76J9LNRlUZvCmYxTVhhohWRvtqHw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "@types/node": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", "license": "MIT" }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } }, - "node_modules/@types/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", - "dev": true, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", "license": "MIT" }, - "node_modules/@types/mime-db": { - "version": "1.43.6", - "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.6.tgz", - "integrity": "sha512-r2cqxAt/Eo5yWBOQie1lyM1JZFCiORa5xtLlhSZI0w8RJggBPKw8c4g/fgQCzWydaDR5bL4imnmix2d1n52iBw==", - "dev": true, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", "license": "MIT" }, - "node_modules/@types/mimos": { + "node_modules/@types/d3-contour": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/mimos/-/mimos-3.0.6.tgz", - "integrity": "sha512-pQlYu/Q1e5F5lyu7ATW4J2cyPOfjhRHZgAepZlKBbHqqAjshteHtNLqBXgx7KV5GjXjPLXWUvbzWaGwmVFPaYA==", - "dev": true, + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "license": "MIT", "dependencies": { - "@types/mime-db": "*" + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", "license": "MIT" }, - "node_modules/@types/mysql": { - "version": "2.15.27", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", - "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", - "dev": true, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/d3-selection": "*" } }, - "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "dev": true, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "@types/d3-dsv": "*" } }, - "node_modules/@types/nunjucks": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@types/nunjucks/-/nunjucks-3.2.6.tgz", - "integrity": "sha512-pHiGtf83na1nCzliuAdq8GowYiXvH5l931xZ0YEHaLMNFgynpEqx+IPStlu7UaDkehfvl01e4x/9Tpwhy7Ue3w==", - "dev": true, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", "license": "MIT" }, - "node_modules/@types/podium": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/podium/-/podium-1.0.4.tgz", - "integrity": "sha512-HuG5/hRHs9PxuXXlNFXPy7mHMnBD6Z4riED2SFGwjs+RcszJUkxLgYHQpoiDpYrhLv7sHk9WDyswybD6aNYkig==", - "dev": true, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", "license": "MIT" }, - "node_modules/@types/resolve": { - "version": "1.20.6", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", - "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", - "dev": true, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", + "integrity": "sha512-QwjxA3+YCKH3N1Rs3uSiSy1bdxlLB1uUiENXeJudBoAFvtDuswUxLcanoOaR2JYn1melDTuIXR8VhnVyI3yG/A==", "license": "MIT" }, - "node_modules/@types/shot": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.5.tgz", - "integrity": "sha512-4wiGdy1sXfpcFgF1VAouUaSl6zjWn0v2NarNgviAJYm3BeiODywERnRtIC5YtNIbfh3UfShfCRD9yyeWAD7R0w==", - "dev": true, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/d3-color": "*" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", "license": "MIT" }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", "license": "MIT" }, - "node_modules/@types/url-parse": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.11.tgz", - "integrity": "sha512-FKvKIqRaykZtd4n47LbK/W/5fhQQ1X7cxxzG9A48h0BGN+S04NH7ervcCjM8tyR0lyGru83FAHSmw2ObgKoESg==", - "dev": true, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", "license": "MIT" }, - "node_modules/@types/webpack-assets-manifest": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@types/webpack-assets-manifest/-/webpack-assets-manifest-5.1.4.tgz", - "integrity": "sha512-v+OXN5idAs3V6w/szEalQn7PyOV7XQBpngizl9ztmJaSvLjXhp5WyHC5WqvtPDe0lKYskEiZkm1rXH67F49boA==", - "dev": true, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-sankey": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/@types/d3-sankey/-/d3-sankey-0.11.2.tgz", + "integrity": "sha512-U6SrTWUERSlOhnpSrgvMX64WblX1AxX6nEjI2t3mLK2USpQrnbwYYK+AS9SwiE7wgYmOsSSKoSdr8aoKBH0HgQ==", "license": "MIT", "dependencies": { - "@types/node": "*", - "tapable": "^2.2.0", - "webpack": "^5" + "@types/d3-shape": "^1" } }, - "node_modules/@types/wreck": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@types/wreck/-/wreck-14.0.5.tgz", - "integrity": "sha512-y2miG7Z6KYNoJ2sV5MImONyEQ9ne1yULrmEWYOmGa47KhlukiwQZe3MuFSNa/BlVA65crBzWWRtcCUaEdT1eqQ==", - "dev": true, + "node_modules/@types/d3-sankey/node_modules/@types/d3-path": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.11.tgz", + "integrity": "sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==", + "license": "MIT" + }, + "node_modules/@types/d3-sankey/node_modules/@types/d3-shape": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.12.tgz", + "integrity": "sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==", "license": "MIT", "dependencies": { - "@types/boom": "*", - "@types/node": "*" + "@types/d3-path": "^1" } }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "@types/d3-time": "*" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", "license": "MIT" }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", - "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", - "dev": true, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", "license": "MIT", - "peer": true, "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/type-utils": "8.46.4", - "@typescript-eslint/utils": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.46.4", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "@types/d3-path": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", - "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", - "dev": true, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "license": "MIT", - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "@types/d3-selection": "*" } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", - "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", - "dev": true, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.4", - "@typescript-eslint/types": "^8.46.4", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", - "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", - "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", - "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/geojson-vt": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", + "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/utils": "8.46.4", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "@types/geojson": "*" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", - "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", + "node_modules/@types/govuk-frontend": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@types/govuk-frontend/-/govuk-frontend-5.11.0.tgz", + "integrity": "sha512-XUl4XsWqUQPPf5hNlljWjtMfXiCms/ZwVfSA1w94fDW/426gXZnCjRNYR3POUEfCzjY088odIDsra7i+fD57TA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hapi": { + "version": "18.0.15", + "resolved": "https://registry.npmjs.org/@types/hapi/-/hapi-18.0.15.tgz", + "integrity": "sha512-n7fXlpRAptQ+6N0JdQun+K4co2v3Wv5+KOFYLFV1xL8HEJ+EX8hqvbBmQg+uL3OkzwQZHvgCtHiBSdmCCDlrog==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.4", - "@typescript-eslint/tsconfig-utils": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "@types/boom": "*", + "@types/catbox": "*", + "@types/iron": "*", + "@types/mimos": "*", + "@types/node": "*", + "@types/podium": "*", + "@types/shot": "*", + "joi": "^17.3.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/@types/hapi__catbox": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.6.tgz", + "integrity": "sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "license": "MIT" + }, + "node_modules/@types/hapi__catbox-memory": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/hapi__catbox-memory/-/hapi__catbox-memory-6.0.2.tgz", + "integrity": "sha512-0bx7IP02GItHGLOBvfVnKfNqFj/8dGmQksyY2Y+OZQB3EdfEBv0kO/SIi8dPkCRtnRc0KBFnnwjmUv8T70XVYA==", + "deprecated": "This is a stub types definition. @hapi/catbox-memory provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "@hapi/catbox-memory": "*" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", - "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "node_modules/@types/hapi__cookie": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/@types/hapi__cookie/-/hapi__cookie-12.0.5.tgz", + "integrity": "sha512-rZNcJRDuutoSLHVHNSoIACabeGZEhjYFKqdW9vmucpUgE50YfPbtGPREzXEKOf2/1RR6d+jrSkNRwxUEaUIfsQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "@hapi/hapi": "^21.1.0", + "@types/node": "*", + "joi": "^17.7.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", - "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", + "node_modules/@types/hapi__crumb": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@types/hapi__crumb/-/hapi__crumb-7.3.7.tgz", + "integrity": "sha512-miEdR5NX0KY6aCr258ViwaxMCPlf98yBb3QiAi83x/gXVNWY3HXsaE0DkaNa+/SAm41eVuhiF+02F/QpaP7gvA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@hapi/hapi": "^21.1.0", + "@types/node": "*", + "joi": "^17.7.0" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/@types/hapi__yar": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@types/hapi__yar/-/hapi__yar-10.1.6.tgz", + "integrity": "sha512-P7FOASHKDRxsG7wQJuw1USAyJhBDve46JyBUVmO+eqL/kymBpy+2fxZqTJqtegqSHjdqZWVZZEoUuDFP5erPpQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "license": "MIT", + "dependencies": { + "@hapi/hapi": "^21.1.0", + "@types/hapi__catbox": "*", + "@types/node": "*", + "joi": "^17.7.0" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "node_modules/@types/hoek": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/hoek/-/hoek-4.1.7.tgz", + "integrity": "sha512-eRB9dZ/BxbXv6oIWIx5Nd5MotV9fClhD4UAhO6ZkPBqazbgoh4hE3a4VUpninmdY+IXc2edBx2MXL+me/S54Ww==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], + "node_modules/@types/humanize-duration": { + "version": "3.27.4", + "resolved": "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.4.tgz", + "integrity": "sha512-yaf7kan2Sq0goxpbcwTQ+8E9RP6HutFBPv74T/IA/ojcHKhuKVlk2YFYyHhWZeLvZPzzLE3aatuQB4h0iqyyUA==", + "license": "MIT" + }, + "node_modules/@types/iron": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/iron/-/iron-5.0.5.tgz", + "integrity": "sha512-ndu2RvRJ5LWsSVF0kBMJe9qnNcFcAO9eYwzr2P4FOU6m5ypRrbdiX+d8x4GNG7lIn1mKShyQf3M08CIX4wPsEA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "@types/node": "*" + } }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@types/istanbul-lib-report": "*" + } }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], + "node_modules/@types/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], + "node_modules/@types/mime-db": { + "version": "1.43.6", + "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.6.tgz", + "integrity": "sha512-r2cqxAt/Eo5yWBOQie1lyM1JZFCiORa5xtLlhSZI0w8RJggBPKw8c4g/fgQCzWydaDR5bL4imnmix2d1n52iBw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], + "node_modules/@types/mimos": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/mimos/-/mimos-3.0.6.tgz", + "integrity": "sha512-pQlYu/Q1e5F5lyu7ATW4J2cyPOfjhRHZgAepZlKBbHqqAjshteHtNLqBXgx7KV5GjXjPLXWUvbzWaGwmVFPaYA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@types/mime-db": "*" + } }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], + "node_modules/@types/mysql": { + "version": "2.15.27", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", + "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" + "@types/node": "*" } }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "undici-types": "~7.16.0" + } }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], + "node_modules/@types/nunjucks": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@types/nunjucks/-/nunjucks-3.2.6.tgz", + "integrity": "sha512-pHiGtf83na1nCzliuAdq8GowYiXvH5l931xZ0YEHaLMNFgynpEqx+IPStlu7UaDkehfvl01e4x/9Tpwhy7Ue3w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], + "node_modules/@types/podium": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/podium/-/podium-1.0.4.tgz", + "integrity": "sha512-HuG5/hRHs9PxuXXlNFXPy7mHMnBD6Z4riED2SFGwjs+RcszJUkxLgYHQpoiDpYrhLv7sHk9WDyswybD6aNYkig==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/polylabel": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/polylabel/-/polylabel-1.1.3.tgz", + "integrity": "sha512-9Zw2KoDpi+T4PZz2G6pO2xArE0m/GSMTW1MIxF2s8ZY8x9XDO6fv9um0ydRGvcbkFLlaq8yNK6eZxnmMZtDgWQ==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/shot": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.5.tgz", + "integrity": "sha512-4wiGdy1sXfpcFgF1VAouUaSl6zjWn0v2NarNgviAJYm3BeiODywERnRtIC5YtNIbfh3UfShfCRD9yyeWAD7R0w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@types/node": "*" + } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "node_modules/@types/sortablejs": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz", + "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "@types/geojson": "*" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "node_modules/@types/svg-arc-to-cubic-bezier": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@types/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.3.tgz", + "integrity": "sha512-UNOnbTtl0nVTm8hwKaz5R5VZRvSulFMGojO5+Q7yucKxBoCaTtS4ibSQVRHo5VW5AaRo145U8p1Vfg5KrYe9Bg==", + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/url-parse": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.11.tgz", + "integrity": "sha512-FKvKIqRaykZtd4n47LbK/W/5fhQQ1X7cxxzG9A48h0BGN+S04NH7ervcCjM8tyR0lyGru83FAHSmw2ObgKoESg==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "node_modules/@types/webpack-assets-manifest": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/webpack-assets-manifest/-/webpack-assets-manifest-5.1.4.tgz", + "integrity": "sha512-v+OXN5idAs3V6w/szEalQn7PyOV7XQBpngizl9ztmJaSvLjXhp5WyHC5WqvtPDe0lKYskEiZkm1rXH67F49boA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" + } + }, + "node_modules/@types/wreck": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/@types/wreck/-/wreck-14.0.5.tgz", + "integrity": "sha512-y2miG7Z6KYNoJ2sV5MImONyEQ9ne1yULrmEWYOmGa47KhlukiwQZe3MuFSNa/BlVA65crBzWWRtcCUaEdT1eqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/boom": "*", + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", + "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/type-utils": "8.46.4", + "@typescript-eslint/utils": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.4", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", + "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", + "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.46.4", + "@typescript-eslint/types": "^8.46.4", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", + "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", + "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", + "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/utils": "8.46.4", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", + "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.4", + "@typescript-eslint/tsconfig-utils": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", + "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", + "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.4", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vaadin/a11y-base": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.9.10.tgz", + "integrity": "sha512-76KNDhKn8zyqzWwNWx0BcYNQXtEdoq0FgMR7vYz8qSj4zGvu8wf0GuQavTI7Nnia8pk0jRqT2/NZrJR3YLCLJQ==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/checkbox": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.9.10.tgz", + "integrity": "sha512-08CnG3T02iHTtXD2SVrW+RHFwTOgSq9JvV8edijAxdX27cRbVJGJX2M1zupPLUEtWJEZK5uvK/2HkJzDrTjBdA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.9.10", + "@vaadin/component-base": "~24.9.10", + "@vaadin/field-base": "~24.9.10", + "@vaadin/vaadin-lumo-styles": "~24.9.10", + "@vaadin/vaadin-material-styles": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/component-base": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.9.10.tgz", + "integrity": "sha512-CM9ZligxBd+PJKLEHiz8YVvPGm5XAuJ5YzKUTmslqTo8aPgXWJBchbNyf47xL7XwIWCVy3sfNZYDHGN7zuMJ8A==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/field-base": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.9.10.tgz", + "integrity": "sha512-t4x1HCOESJ7mWxgS7aiwPJVkf00MXbEs43p24JYsEWr78Ivn+4k1+5SZ2mli0HgkmVn89aUbMqkU10YpHIN4Yw==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.9.10", + "@vaadin/component-base": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/grid": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.9.10.tgz", + "integrity": "sha512-9VVnRw4bAwHVIpan8rqMfTJRQ3WbtRxoTrySczZlnQmWaQiBphaXsIdhd9DUy9OjRzteVTHnU6mtuH1aZJl8XA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.9.10", + "@vaadin/checkbox": "~24.9.10", + "@vaadin/component-base": "~24.9.10", + "@vaadin/lit-renderer": "~24.9.10", + "@vaadin/text-field": "~24.9.10", + "@vaadin/vaadin-lumo-styles": "~24.9.10", + "@vaadin/vaadin-material-styles": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/icon": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.9.10.tgz", + "integrity": "sha512-3HAn5vesU9gPBN8loGjajaOxEsTkNo1xdEiRQ6s8KA81TyORBH49O4dGprnUUoRA1sOtwNcnck2WAGa7Imh+Yg==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.9.10", + "@vaadin/vaadin-lumo-styles": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/input-container": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.9.10.tgz", + "integrity": "sha512-c/y5RXuNsb4IUFdJKhXCfvihk35N5Ztk7nBJ0XRaOTqf6I9tPgwVeq8Gj/VcHbwNBw67pv7VLxF/5OuJIsgthA==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.9.10", + "@vaadin/vaadin-lumo-styles": "~24.9.10", + "@vaadin/vaadin-material-styles": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/lit-renderer": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.9.10.tgz", + "integrity": "sha512-1GLggQZyG5qh2OtuidiKVOS83GS9qGWuGgZk2u676AirH/rcsg6O4sABstrNCU/TTOLeo1rTfPC6j0DiC9uXfg==", + "license": "Apache-2.0", + "dependencies": { + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/text-field": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.9.10.tgz", + "integrity": "sha512-8kJKH7EdAuvdRXO+ckOLhIvy/syFa0PM7JD/y20kSZC5MWQx7wCbXH4uKddHj8JUnak217WcZfvcJ6GaD2lmWA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.9.10", + "@vaadin/component-base": "~24.9.10", + "@vaadin/field-base": "~24.9.10", + "@vaadin/input-container": "~24.9.10", + "@vaadin/vaadin-lumo-styles": "~24.9.10", + "@vaadin/vaadin-material-styles": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/vaadin-development-mode-detector": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.7.tgz", + "integrity": "sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==", + "license": "Apache-2.0" + }, + "node_modules/@vaadin/vaadin-lumo-styles": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.9.10.tgz", + "integrity": "sha512-NXUxrl537GrwJG07usUwyDYPVL7aUEBZALGLiTJ+A0om69q155hbpFchPPVexLjBHRn8y7Cdnox+VH/TIJBqBw==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.9.10", + "@vaadin/icon": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10" + } + }, + "node_modules/@vaadin/vaadin-material-styles": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.9.10.tgz", + "integrity": "sha512-jkDiWqqHHGPQ/SqILUheb2Nf/yRssosxu42Qe/e3N8j+Hc2uJb3yN4k9DuR8S2dmfGR3WKi16kWxaXKwlkXMYQ==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.9.10", + "@vaadin/vaadin-themable-mixin": "~24.9.10" + } + }, + "node_modules/@vaadin/vaadin-themable-mixin": { + "version": "24.9.10", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.9.10.tgz", + "integrity": "sha512-2JG9hmM9REQx2GSzZ6/16/fIgBhNP+btil896GFTsj9ZTwMcPTyvZ7/uP8B8Gnm6MGoyGr0nNoeE9/M3dNpGPQ==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "lit": "^3.0.0", + "style-observer": "^0.0.8" + } + }, + "node_modules/@vaadin/vaadin-usage-statistics": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-usage-statistics/-/vaadin-usage-statistics-2.1.3.tgz", + "integrity": "sha512-8r4TNknD7OJQADe3VygeofFR7UNAXZ2/jjBFP5dgI8+2uMfnuGYgbuHivasKr9WSQ64sPej6m8rDoM1uSllXjQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@vaadin/vaadin-development-mode-detector": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webcomponents/shadycss": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.11.2.tgz", + "integrity": "sha512-vRq+GniJAYSBmTRnhCYPAPq6THYqovJ/gzGThWbgEZUQaBccndGTi1hdiUP15HzEco0I6t4RCtXyX0rsSmwgPw==", + "license": "BSD-3-Clause" + }, + "node_modules/@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@zip.js/zip.js": { + "version": "2.8.15", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.15.tgz", + "integrity": "sha512-HZKJLFe4eGVgCe9J87PnijY7T1Zn638bEHS+Fm/ygHZozRpefzWcOYfPaP52S8pqk9g4xN3+LzMDl3Lv9dLglA==", + "license": "BSD-3-Clause", + "engines": { + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=18.0.0" + } + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "license": "MIT" + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "license": "MIT" + }, + "node_modules/accessible-autocomplete": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/accessible-autocomplete/-/accessible-autocomplete-3.0.1.tgz", + "integrity": "sha512-xMshgc2LT5addvvfCTGzIkRrvhbOFeylFSnSMfS/PdjvvvElZkakCwxO3/yJYBWyi1hi3tZloqOJQ5kqqJtH4g==", + "license": "MIT", + "peerDependencies": { + "preact": "^8.0.0" + }, + "peerDependenciesMeta": { + "preact": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "license": "MIT" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, + "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==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "node_modules/autoprefixer": { + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", "dev": true, - "license": "Apache-2.0", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@webpack-cli/configtest": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", - "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "node_modules/babel-plugin-module-resolver": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz", + "integrity": "sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "dependencies": { + "find-babel-config": "^2.1.1", + "glob": "^9.3.3", + "pkg-up": "^3.1.0", + "reselect": "^4.1.7", + "resolve": "^1.22.8" } }, - "node_modules/@webpack-cli/info": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", - "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "node_modules/babel-plugin-module-resolver/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, "engines": { - "node": ">=18.12.0" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@webpack-cli/serve": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", - "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12.0" + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "engines": { + "node": ">=16 || 14 >=14.17" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "node_modules/babel-plugin-module-resolver/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, - "license": "Apache-2.0" - }, - "node_modules/a-sync-waterfall": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "license": "MIT" - }, - "node_modules/abstract-logging": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", - "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", - "license": "MIT" - }, - "node_modules/accessible-autocomplete": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/accessible-autocomplete/-/accessible-autocomplete-3.0.1.tgz", - "integrity": "sha512-xMshgc2LT5addvvfCTGzIkRrvhbOFeylFSnSMfS/PdjvvvElZkakCwxO3/yJYBWyi1hi3tZloqOJQ5kqqJtH4g==", - "license": "MIT", - "peerDependencies": { - "preact": "^8.0.0" - }, - "peerDependenciesMeta": { - "preact": { - "optional": true - } + "license": "ISC", + "engines": { + "node": ">=8" } }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" }, - "engines": { - "node": ">=0.4.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10.13.0" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, "peerDependencies": { - "acorn": "^8.14.0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", - "engines": { - "node": ">= 14" - } + "node_modules/babel-plugin-replace-import-extension": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-replace-import-extension/-/babel-plugin-replace-import-extension-1.1.5.tgz", + "integrity": "sha512-gqXyzEEQ7pAdH8+twgt+GzwJB/5l3CzN+kbX1YxmX1f/qxMqb1q4Sm6ugpGqezt9QxdD/SKfoDnJHSlZryv+jA==", + "dev": true, + "license": "Apache-2.0" }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/babel-plugin-transform-import-meta": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.3.3.tgz", + "integrity": "sha512-bbh30qz1m6ZU1ybJoNOhA2zaDvmeXMnGNBMVMDOJ1Fni4+wMBoy/j7MTRVmqAUCIcy54/rEnr9VEBsfcgbpm3Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/template": "^7.25.9", + "tslib": "^2.8.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@babel/core": "^7.10.0" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.0.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "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==", "dev": true, "license": "MIT" }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz", + "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, "engines": { "node": ">=8" }, @@ -6133,179 +8018,234 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node_modules/blankie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/blankie/-/blankie-5.0.0.tgz", + "integrity": "sha512-LVHCsOC7R7uUbHX2WGq+NMGSMzyrGI1BMpMQybBmVJJSue8iWOZ/V2Ju3fqf5hSAhdrv27/ndDUFXMwgTAr9YQ==", + "license": "MIT", + "dependencies": { + "@hapi/hoek": "^9.0.3", + "@hapi/joi": "^17.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 8.9.0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/blankie/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/blipp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/blipp/-/blipp-4.0.2.tgz", + "integrity": "sha512-QA5amT0IFJgCFgJeWw2udD2zZLui60NgqXTyvbSq+qpVbS6jfqELTRlC8PWW0yD4+chdZ2a+svnN6WE9zqfK5Q==", + "license": "BSD", + "dependencies": { + "@hapi/hoek": "9.x.x", + "chalk": "4.x.x", + "easy-table": "1.x.x", + "joi": "17.x.x" + } + }, + "node_modules/blipp/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "base64-js": "^1.1.2" } }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=14" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "dequal": "^2.0.3" + "node-int64": "^0.4.0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "dev": true, + "license": "MIT/X11" + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "node_modules/cacheable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.2.0.tgz", + "integrity": "sha512-LEJxRqfeomiiRd2t0uON6hxAtgOoWDfY3fugebbz+J3vDLO+SkdfFChQcOHTZhj9SYa9iwE9MGYNX72dKiOE4w==", "dev": true, "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@cacheable/memory": "^2.0.5", + "@cacheable/utils": "^2.3.0", + "hookified": "^1.13.0", + "keyv": "^5.5.4", + "qified": "^0.5.2" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "node_modules/cacheable/node_modules/@cacheable/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-qznqu6bpEei96zojGW+/IX1VXTOihznnVOK/kzyQWcqgn7SqkC3216nsX7M4BQfGwQgnxUXZ1xX7xiUoedqLPA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "hashery": "^1.2.0" + }, + "peerDependencies": { + "keyv": "^5.5.4" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/cacheable/node_modules/keyv": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz", + "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@keyv/serialize": "^1.1.1" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -6314,39 +8254,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arraybuffer.prototype.slice": { + "node_modules/call-bound": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -6355,1438 +8283,1383 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" + "node": ">=6" } }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8.0.0" + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/autoprefixer": { - "version": "10.4.22", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", - "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001755", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz", + "integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==", "dev": true, "funding": [ { "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "browserslist": "^4.27.0", - "caniuse-lite": "^1.0.30001754", - "fraction.js": "^5.3.4", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 8.10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/babel-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", - "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/transform": "30.2.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" + "node": ">=6.0" } }, - "node_modules/babel-jest/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/babel-loader": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", - "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "node_modules/cjs-module-lexer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", + "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^5.0.0" + "del": "^4.1.1" }, "engines": { - "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + "node": ">=10.0.0" }, "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5.61.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" + "webpack": ">=4.0.0 <6.0.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", - "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "@types/babel__core": "^7.20.5" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-module-resolver": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz", - "integrity": "sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==", + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "license": "MIT", "dependencies": { - "find-babel-config": "^2.1.1", - "glob": "^9.3.3", - "pkg-up": "^3.1.0", - "reselect": "^4.1.7", - "resolve": "^1.22.8" - } - }, - "node_modules/babel-plugin-module-resolver/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/babel-plugin-module-resolver/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/babel-plugin-replace-import-extension": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/babel-plugin-replace-import-extension/-/babel-plugin-replace-import-extension-1.1.5.tgz", - "integrity": "sha512-gqXyzEEQ7pAdH8+twgt+GzwJB/5l3CzN+kbX1YxmX1f/qxMqb1q4Sm6ugpGqezt9QxdD/SKfoDnJHSlZryv+jA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/babel-plugin-transform-import-meta": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.3.3.tgz", - "integrity": "sha512-bbh30qz1m6ZU1ybJoNOhA2zaDvmeXMnGNBMVMDOJ1Fni4+wMBoy/j7MTRVmqAUCIcy54/rEnr9VEBsfcgbpm3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/template": "^7.25.9", - "tslib": "^2.8.1" - }, - "peerDependencies": { - "@babel/core": "^7.10.0" + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/babel-preset-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", - "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", + "node_modules/clone-deep/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==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0" + "isobject": "^3.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + "node": ">=0.10.0" } }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz", - "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "color-convert": "^3.1.3", + "color-string": "^2.1.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18" } }, - "node_modules/blankie": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/blankie/-/blankie-5.0.0.tgz", - "integrity": "sha512-LVHCsOC7R7uUbHX2WGq+NMGSMzyrGI1BMpMQybBmVJJSue8iWOZ/V2Ju3fqf5hSAhdrv27/ndDUFXMwgTAr9YQ==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "@hapi/hoek": "^9.0.3", - "@hapi/joi": "^17.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8.9.0" + "node": ">=7.0.0" } }, - "node_modules/blankie/node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "license": "BSD-3-Clause" + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, - "node_modules/blipp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/blipp/-/blipp-4.0.2.tgz", - "integrity": "sha512-QA5amT0IFJgCFgJeWw2udD2zZLui60NgqXTyvbSq+qpVbS6jfqELTRlC8PWW0yD4+chdZ2a+svnN6WE9zqfK5Q==", - "license": "BSD", + "node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "license": "MIT", "dependencies": { - "@hapi/hoek": "9.x.x", - "chalk": "4.x.x", - "easy-table": "1.x.x", - "joi": "17.x.x" + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/blipp/node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "license": "BSD-3-Clause" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, + "node_modules/color-string/node_modules/color-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=12.20" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/color/node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "color-name": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.6" } }, - "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/color/node_modules/color-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" - }, - "bin": { - "browserslist": "cli.js" - }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=12.20" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } + "license": "MIT" }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "license": "(MIT OR Apache-2.0)", - "bin": { - "btoa": "bin/btoa.js" - }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">= 6" } }, - "node_modules/buffer-builder": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", - "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, - "license": "MIT/X11" + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } }, - "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/composed-offset-position": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/composed-offset-position/-/composed-offset-position-0.0.6.tgz", + "integrity": "sha512-Q7dLompI6lUwd7LWyIcP66r4WcS9u7AL2h8HaeipiRfCRPLMWqRx8fYsjb4OHi6UQFifO7XtNC2IlEJ1ozIFxw==", + "license": "MIT", + "peerDependencies": { + "@floating-ui/utils": "^0.2.5" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "node_modules/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", "dev": true, "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/builtins/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT" + }, + "node_modules/convict": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", + "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "yargs-parser": "^20.2.7" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/cacheable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.2.0.tgz", - "integrity": "sha512-LEJxRqfeomiiRd2t0uON6hxAtgOoWDfY3fugebbz+J3vDLO+SkdfFChQcOHTZhj9SYa9iwE9MGYNX72dKiOE4w==", + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", "dev": true, "license": "MIT", - "dependencies": { - "@cacheable/memory": "^2.0.5", - "@cacheable/utils": "^2.3.0", - "hookified": "^1.13.0", - "keyv": "^5.5.4", - "qified": "^0.5.2" + "engines": { + "node": ">=18" } }, - "node_modules/cacheable/node_modules/@cacheable/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-qznqu6bpEei96zojGW+/IX1VXTOihznnVOK/kzyQWcqgn7SqkC3216nsX7M4BQfGwQgnxUXZ1xX7xiUoedqLPA==", + "node_modules/copy-webpack-plugin": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", "dev": true, "license": "MIT", "dependencies": { - "hashery": "^1.2.0" + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "keyv": "^5.5.4" + "webpack": "^5.1.0" } }, - "node_modules/cacheable/node_modules/keyv": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz", - "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", - "peer": true, + "license": "ISC", "dependencies": { - "@keyv/serialize": "^1.1.1" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/core-js": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", + "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" + "browserslist": "^4.26.3" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/css-declaration-sorter": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", + "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=6" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12 || >=16" } }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001755", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz", - "integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==", + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=10" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "license": "MIT" + }, + "node_modules/cssnano": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.2.tgz", + "integrity": "sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "cssnano-preset-default": "^7.0.10", + "lilconfig": "^3.1.3" }, "engines": { - "node": ">= 8.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/cssnano" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "node_modules/cssnano-preset-default": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.10.tgz", + "integrity": "sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==", "dev": true, "license": "MIT", + "dependencies": { + "browserslist": "^4.27.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.5", + "postcss-convert-values": "^7.0.8", + "postcss-discard-comments": "^7.0.5", + "postcss-discard-duplicates": "^7.0.2", + "postcss-discard-empty": "^7.0.1", + "postcss-discard-overridden": "^7.0.1", + "postcss-merge-longhand": "^7.0.5", + "postcss-merge-rules": "^7.0.7", + "postcss-minify-font-values": "^7.0.1", + "postcss-minify-gradients": "^7.0.1", + "postcss-minify-params": "^7.0.5", + "postcss-minify-selectors": "^7.0.5", + "postcss-normalize-charset": "^7.0.1", + "postcss-normalize-display-values": "^7.0.1", + "postcss-normalize-positions": "^7.0.1", + "postcss-normalize-repeat-style": "^7.0.1", + "postcss-normalize-string": "^7.0.1", + "postcss-normalize-timing-functions": "^7.0.1", + "postcss-normalize-unicode": "^7.0.5", + "postcss-normalize-url": "^7.0.1", + "postcss-normalize-whitespace": "^7.0.1", + "postcss-ordered-values": "^7.0.2", + "postcss-reduce-initial": "^7.0.5", + "postcss-reduce-transforms": "^7.0.1", + "postcss-svgo": "^7.1.0", + "postcss-unique-selectors": "^7.0.4" + }, "engines": { - "node": ">=6.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "node_modules/cssnano-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", + "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/cjs-module-lexer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", - "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "license": "MIT", "dependencies": { - "del": "^4.1.1" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.0 <6.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^5.0.0" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssstyle": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" }, "engines": { "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { "node": ">=12" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "node_modules/d3-axis": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "d3-path": "1 - 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=12" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "optional": true, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { - "node": ">=0.8" + "node": ">=12" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "d3-array": "^3.2.0" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/clone-deep/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==", - "dev": true, - "license": "MIT", + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { - "isobject": "^3.0.1" + "delaunator": "5" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=12" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "d3-dispatch": "1 - 3", + "d3-selection": "3" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, - "node_modules/colorjs.io": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", - "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "license": "MIT", + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { - "node": ">= 12.0.0" + "node": ">= 10" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } }, - "node_modules/concurrently": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", - "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", - "dev": true, - "license": "MIT", + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { - "chalk": "4.1.2", - "rxjs": "7.8.2", - "shell-quote": "1.8.3", - "supports-color": "8.1.1", - "tree-kill": "1.2.2", - "yargs": "17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" + "d3-dsv": "1 - 3" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + "node": ">=12" } }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=12" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/convict": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", - "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", - "license": "Apache-2.0", + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { - "lodash.clonedeep": "^4.5.0", - "yargs-parser": "^20.2.7" + "d3-array": "2.5.0 - 3" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "dev": true, - "license": "MIT", + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/copy-webpack-plugin": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", - "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", - "dev": true, - "license": "MIT", + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { - "glob-parent": "^6.0.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2", - "tinyglobby": "^0.2.12" + "d3-color": "1 - 3" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "node": ">=12" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, - "node_modules/core-js": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", - "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" } }, - "node_modules/core-js-compat": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", - "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", - "dev": true, - "license": "MIT", + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", "dependencies": { - "browserslist": "^4.26.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" } }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/css-declaration-sorter": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", - "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", - "dev": true, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "license": "ISC", - "engines": { - "node": "^14 || ^16 || >=18" + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, - "peerDependencies": { - "postcss": "^8.0.9" + "engines": { + "node": ">=12" } }, - "node_modules/css-functions-list": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", - "dev": true, - "license": "MIT", + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { - "node": ">=12 || >=16" + "node": ">=12" } }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "d3-path": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=12" } }, - "node_modules/css-tree": { + "node_modules/d3-time": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" + "d3-array": "2 - 3" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=12" } }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/cssnano": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.2.tgz", - "integrity": "sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA==", - "dev": true, - "license": "MIT", + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { - "cssnano-preset-default": "^7.0.10", - "lilconfig": "^3.1.3" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": "^18.12.0 || ^20.9.0 || >=22.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" + "node": ">=12" }, "peerDependencies": { - "postcss": "^8.4.32" + "d3-selection": "2 - 3" } }, - "node_modules/cssnano-preset-default": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.10.tgz", - "integrity": "sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==", - "dev": true, - "license": "MIT", + "node_modules/d3-voronoi-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-voronoi-map/-/d3-voronoi-map-2.1.1.tgz", + "integrity": "sha512-mCXfz/kD9IQxjHaU2IMjkO8fSo4J6oysPR2iL+omDsCy1i1Qn6BQ/e4hEAW8C6ms2kfuHwqtbNom80Hih94YsA==", + "license": "BSD-3-Clause", "dependencies": { - "browserslist": "^4.27.0", - "css-declaration-sorter": "^7.2.0", - "cssnano-utils": "^5.0.1", - "postcss-calc": "^10.1.1", - "postcss-colormin": "^7.0.5", - "postcss-convert-values": "^7.0.8", - "postcss-discard-comments": "^7.0.5", - "postcss-discard-duplicates": "^7.0.2", - "postcss-discard-empty": "^7.0.1", - "postcss-discard-overridden": "^7.0.1", - "postcss-merge-longhand": "^7.0.5", - "postcss-merge-rules": "^7.0.7", - "postcss-minify-font-values": "^7.0.1", - "postcss-minify-gradients": "^7.0.1", - "postcss-minify-params": "^7.0.5", - "postcss-minify-selectors": "^7.0.5", - "postcss-normalize-charset": "^7.0.1", - "postcss-normalize-display-values": "^7.0.1", - "postcss-normalize-positions": "^7.0.1", - "postcss-normalize-repeat-style": "^7.0.1", - "postcss-normalize-string": "^7.0.1", - "postcss-normalize-timing-functions": "^7.0.1", - "postcss-normalize-unicode": "^7.0.5", - "postcss-normalize-url": "^7.0.1", - "postcss-normalize-whitespace": "^7.0.1", - "postcss-ordered-values": "^7.0.2", - "postcss-reduce-initial": "^7.0.5", - "postcss-reduce-transforms": "^7.0.1", - "postcss-svgo": "^7.1.0", - "postcss-unique-selectors": "^7.0.4" - }, - "engines": { - "node": "^18.12.0 || ^20.9.0 || >=22.0" - }, - "peerDependencies": { - "postcss": "^8.4.32" + "d3-dispatch": "2.*", + "d3-polygon": "2.*", + "d3-timer": "2.*", + "d3-weighted-voronoi": "1.*" } }, - "node_modules/cssnano-utils": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", - "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.12.0 || ^20.9.0 || >=22.0" - }, - "peerDependencies": { - "postcss": "^8.4.32" + "node_modules/d3-voronoi-map/node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-voronoi-map/node_modules/d3-polygon": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", + "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-voronoi-map/node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-voronoi-treemap": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi-treemap/-/d3-voronoi-treemap-1.1.2.tgz", + "integrity": "sha512-7odu9HdG/yLPWwzDteJq4yd9Q/NwgQV7IE/u36VQtcCK7k1sZwDqbkHCeMKNTBsq5mQjDwolTsrXcU0j8ZEMCA==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-voronoi-map": "2.*" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "dev": true, - "license": "MIT", + "node_modules/d3-weighted-voronoi": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/d3-weighted-voronoi/-/d3-weighted-voronoi-1.1.3.tgz", + "integrity": "sha512-C3WdvSKl9aqhAy+f3QT3PPsQG6V+ajDfYO3BSclQDSD+araW2xDBFIH67aKzsSuuuKaX8K2y2dGq1fq/dWTVig==", + "license": "BSD-3-Clause", "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "d3-array": "2", + "d3-polygon": "2" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "dev": true, - "license": "MIT", + "node_modules/d3-weighted-voronoi/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "internmap": "^1.0.0" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true, - "license": "CC0-1.0" + "node_modules/d3-weighted-voronoi/node_modules/d3-polygon": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", + "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==", + "license": "BSD-3-Clause" }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", + "node_modules/d3-weighted-voronoi/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" }, "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/data-uri-to-buffer": { @@ -7924,6 +9797,26 @@ } } }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7958,7 +9851,6 @@ "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==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -7976,7 +9868,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -8023,6 +9914,15 @@ "node": ">=6" } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -8066,6 +9966,12 @@ "node": ">=8" } }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -8187,7 +10093,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -8198,6 +10103,12 @@ "node": ">= 0.4" } }, + "node_modules/earcut": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.2.tgz", + "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==", + "license": "ISC" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -8426,7 +10337,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8436,7 +10346,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8453,7 +10362,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -8509,6 +10417,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-toolkit": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", + "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/esbuild": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", @@ -8602,7 +10520,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8838,7 +10755,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -9015,7 +10931,6 @@ "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", @@ -9092,7 +11007,6 @@ "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -9343,7 +11257,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -9524,6 +11437,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==", + "license": "MIT" + }, "node_modules/flatted": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", @@ -9531,6 +11450,15 @@ "dev": true, "license": "ISC" }, + "node_modules/focus-trap": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.8.0.tgz", + "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", + "license": "MIT", + "dependencies": { + "tabbable": "^6.4.0" + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -9653,7 +11581,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9679,6 +11606,54 @@ "node": ">=6.9.0" } }, + "node_modules/geodesy": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/geodesy/-/geodesy-2.4.0.tgz", + "integrity": "sha512-tHjQ1sXq8UAIEg1V0Pa6mznUxGU0R+3H5PIF6NULr0yPCAVLKqJro93Bbr19jSE18BMfyjN4osWDI4sm92m0kw==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/geojson-equality-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", + "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.14" + } + }, + "node_modules/geojson-polygon-self-intersections": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.2.tgz", + "integrity": "sha512-6XRNF4CsRHYmR9z5YuIk5f/aOototnDf0dgMqYGcS7y1l57ttt6MAIAxl3rXyas6lq1HEbTuLMh4PgvO+OV42w==", + "license": "MIT", + "dependencies": { + "rbush": "^2.0.1" + } + }, + "node_modules/geojson-polygon-self-intersections/node_modules/quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==", + "license": "ISC" + }, + "node_modules/geojson-polygon-self-intersections/node_modules/rbush": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", + "license": "MIT", + "dependencies": { + "quickselect": "^1.0.1" + } + }, + "node_modules/geojson-vt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz", + "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==", + "license": "ISC" + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -9705,7 +11680,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -9740,7 +11714,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -9754,7 +11727,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -9808,6 +11780,12 @@ "node": ">= 14" } }, + "node_modules/gl-matrix": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.4.tgz", + "integrity": "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==", + "license": "MIT" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -9998,7 +11976,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10030,6 +12007,12 @@ "dev": true, "license": "MIT" }, + "node_modules/grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==", + "license": "ISC" + }, "node_modules/hapi-pino": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/hapi-pino/-/hapi-pino-13.0.0.tgz", @@ -10111,7 +12094,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -10140,7 +12122,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10153,7 +12134,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -10316,7 +12296,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -10325,6 +12304,26 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -10425,6 +12424,15 @@ "dev": true, "license": "ISC" }, + "node_modules/interactjs": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.27.tgz", + "integrity": "sha512-y/8RcCftGAF24gSp76X2JS3XpHiUvDQyhF8i7ujemBz77hwiHDuJzftHx7thY8cxGogwGiPJ+o97kWB6eAXnsA==", + "license": "MIT", + "dependencies": { + "@interactjs/types": "1.10.27" + } + }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -10440,6 +12448,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -10483,6 +12500,22 @@ "node": ">= 12" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -10662,7 +12695,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10881,7 +12913,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -11194,7 +13225,6 @@ "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "30.2.0", "@jest/types": "30.2.0", @@ -12244,7 +14274,6 @@ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -12254,7 +14283,6 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -12287,6 +14315,13 @@ "node": ">=10" } }, + "node_modules/jpeg-exif": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/jpeg-exif/-/jpeg-exif-1.1.4.tgz", + "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -12323,7 +14358,6 @@ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", @@ -12399,6 +14433,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-pretty-compact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz", + "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==", + "license": "MIT" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -12419,6 +14459,12 @@ "node": ">=6" } }, + "node_modules/kdbush": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==", + "license": "ISC" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -12732,6 +14778,37 @@ "node": ">=18.0.0" } }, + "node_modules/lit": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", + "integrity": "sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-element": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", + "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-html": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", + "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", @@ -12949,53 +15026,351 @@ "dev": true, "license": "ISC", "dependencies": { - "yallist": "^3.0.2" + "yallist": "^3.0.2" + } + }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mapbox-gl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.13.3.tgz", + "integrity": "sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==", + "license": "SEE LICENSE IN LICENSE.txt", + "peer": true, + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^1.5.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.1.1", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.2.1", + "grid-index": "^1.1.0", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/mapbox-gl/node_modules/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==", + "license": "ISC", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/@mapbox/tiny-sdf": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==", + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==", + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "node_modules/mapbox-gl/node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", + "license": "ISC", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==", + "license": "ISC", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", + "license": "ISC", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/pbf": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", + "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/mapbox-gl/node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", + "license": "ISC", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC", + "peer": true + }, + "node_modules/mapbox-gl/node_modules/supercluster": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", + "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", + "license": "ISC", + "peer": true, + "dependencies": { + "kdbush": "^3.0.0" + } + }, + "node_modules/mapbox-gl/node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "license": "ISC", + "peer": true + }, + "node_modules/maplibre-gl": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-5.16.0.tgz", + "integrity": "sha512-/VDY89nr4jgLJyzmhy325cG6VUI02WkZ/UfVuDbG/piXzo6ODnM+omDFIwWY8tsEsBG26DNDmNMn3Y2ikHsBiA==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/point-geometry": "^1.1.0", + "@mapbox/tiny-sdf": "^2.0.7", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^2.0.4", + "@mapbox/whoots-js": "^3.1.0", + "@maplibre/maplibre-gl-style-spec": "^24.4.1", + "@maplibre/mlt": "^1.1.2", + "@maplibre/vt-pbf": "^4.2.0", + "@types/geojson": "^7946.0.16", + "@types/geojson-vt": "3.2.5", + "@types/supercluster": "^7.1.3", + "earcut": "^3.0.2", + "geojson-vt": "^4.0.2", + "gl-matrix": "^3.4.4", + "kdbush": "^4.0.2", + "murmurhash-js": "^1.0.0", + "pbf": "^4.0.1", + "potpack": "^2.1.0", + "quickselect": "^3.0.0", + "supercluster": "^8.0.1", + "tinyqueue": "^3.0.0" + }, + "engines": { + "node": ">=16.14.0", + "npm": ">=8.1.0" + }, + "funding": { + "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1" + } + }, + "node_modules/maplibre-gl-legacy": { + "name": "maplibre-gl", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-1.15.3.tgz", + "integrity": "sha512-ZuOhLCNgp7Yl1L9uyKgZeuo7kKdewP0iWtmEXsZ/snp0JiVkR1Kl+m1rsfKT/wpm/O4zZ7mUGxF16cYbMIFDRA==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.0", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^1.5.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.1.1", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.2.1", + "grid-index": "^1.1.0", + "minimist": "^1.2.6", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/maplibre-gl-legacy/node_modules/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==", + "license": "ISC" + }, + "node_modules/maplibre-gl-legacy/node_modules/@mapbox/tiny-sdf": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==", + "license": "BSD-2-Clause" + }, + "node_modules/maplibre-gl-legacy/node_modules/@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==", + "license": "BSD-2-Clause" + }, + "node_modules/maplibre-gl-legacy/node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/point-geometry": "~0.1.0" } }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } + "node_modules/maplibre-gl-legacy/node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", + "license": "ISC" }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "license": "MIT", + "node_modules/maplibre-gl-legacy/node_modules/geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==", + "license": "ISC" + }, + "node_modules/maplibre-gl-legacy/node_modules/kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", + "license": "ISC" + }, + "node_modules/maplibre-gl-legacy/node_modules/pbf": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", + "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "license": "BSD-3-Clause", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", "bin": { - "semver": "bin/semver" + "pbf": "bin/pbf" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/maplibre-gl-legacy/node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", + "license": "ISC" + }, + "node_modules/maplibre-gl-legacy/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC" + }, + "node_modules/maplibre-gl-legacy/node_modules/supercluster": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", + "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", + "license": "ISC", "dependencies": { - "tmpl": "1.0.5" + "kdbush": "^3.0.0" } }, + "node_modules/maplibre-gl-legacy/node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "license": "ISC" + }, "node_modules/marked": { "version": "15.0.12", "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", @@ -13008,11 +15383,16 @@ "node": ">= 18" } }, + "node_modules/markerjs2": { + "version": "2.32.7", + "resolved": "https://registry.npmjs.org/markerjs2/-/markerjs2-2.32.7.tgz", + "integrity": "sha512-HeFRZjmc43DOG3lSQp92z49cq2oCYpYn2pX++SkJAW1Dij4xJtRquVRf+cXeSZQWDX3ufns1Ry/bGk+zveP7rA==", + "license": "SEE LICENSE IN LICENSE" + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13202,6 +15582,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==", + "license": "MIT" + }, "node_modules/nanoid": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", @@ -13405,11 +15791,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13672,6 +16073,12 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -13811,6 +16218,49 @@ "node": ">=8" } }, + "node_modules/pbf": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-4.0.1.tgz", + "integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==", + "license": "BSD-3-Clause", + "dependencies": { + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/pdfmake": { + "version": "0.2.23", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.23.tgz", + "integrity": "sha512-A/IksoKb/ikOZH1edSDJ/2zBbqJKDghD4+fXn3rT7quvCJDlsZMs3NmIB3eajLMMFU9Bd3bZPVvlUMXhvFI+bQ==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/linebreak": "^1.1.2", + "@foliojs-fork/pdfkit": "^0.15.3", + "iconv-lite": "^0.7.1", + "xmldoc": "^2.0.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pdfmake/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -14107,6 +16557,35 @@ "node": ">=4" } }, + "node_modules/png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, + "node_modules/point-in-polygon-hao": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.2.4.tgz", + "integrity": "sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==", + "license": "MIT", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/polylabel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/polylabel/-/polylabel-1.1.0.tgz", + "integrity": "sha512-bxaGcA40sL3d6M4hH72Z4NdLqxpXRsCFk8AITYg6x1rn1Ei3izf00UMLklerBZTO49aPA3CYrIwVulx2Bce2pA==", + "license": "ISC", + "dependencies": { + "tinyqueue": "^2.0.3" + } + }, + "node_modules/polylabel/node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "license": "ISC" + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -14137,7 +16616,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -14714,7 +17192,6 @@ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -14782,6 +17259,21 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/potpack": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.1.0.tgz", + "integrity": "sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==", + "license": "ISC" + }, + "node_modules/preact": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz", + "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -14862,6 +17354,12 @@ "node": ">= 8" } }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", + "license": "MIT" + }, "node_modules/proxy-agent": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", @@ -14973,6 +17471,12 @@ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", "license": "MIT" }, + "node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -14983,6 +17487,21 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "license": "MIT", + "dependencies": { + "quickselect": "^2.0.0" + } + }, + "node_modules/rbush/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC" + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -15106,7 +17625,6 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -15251,6 +17769,15 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "license": "MIT", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -15329,6 +17856,12 @@ "rimraf": "bin.js" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, "node_modules/rrweb-cssom": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", @@ -15360,6 +17893,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", @@ -15458,7 +17997,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, "license": "MIT" }, "node_modules/sass": { @@ -15925,7 +18463,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", - "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/saxes": { @@ -15967,7 +18504,6 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -16015,6 +18551,12 @@ ], "license": "BSD-3-Clause" }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "license": "MIT" + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -16039,7 +18581,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -16057,7 +18598,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -16312,6 +18852,12 @@ "atomic-sleep": "^1.0.0" } }, + "node_modules/sortablejs": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.6.tgz", + "integrity": "sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==", + "license": "MIT" + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -16698,6 +19244,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-observer": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/style-observer/-/style-observer-0.0.8.tgz", + "integrity": "sha512-UaIPn33Sx4BJ+goia51Q++VFWoplWK1995VdxQYzwwbFa+FUNLKlG+aiIdG2Vw7VyzIUBi8tqu8mTyg0Ppu6Yg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/LeaVerou" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/leaverou" + } + ], + "license": "MIT" + }, "node_modules/stylehacks": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.7.tgz", @@ -16731,7 +19293,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", @@ -17052,6 +19613,15 @@ "node": ">=8" } }, + "node_modules/supercluster": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "license": "ISC", + "dependencies": { + "kdbush": "^4.0.2" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17093,6 +19663,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==", + "license": "ISC" + }, "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -17135,6 +19711,21 @@ "node": ">=16" } }, + "node_modules/sweepline-intersections": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", + "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", + "license": "MIT", + "dependencies": { + "tinyqueue": "^2.0.0" + } + }, + "node_modules/sweepline-intersections/node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "license": "ISC" + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -17181,6 +19772,12 @@ "url": "https://opencollective.com/synckit" } }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "license": "MIT" + }, "node_modules/table": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", @@ -17433,6 +20030,21 @@ "real-require": "^0.2.0" } }, + "node_modules/timezone-groups": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/timezone-groups/-/timezone-groups-0.10.4.tgz", + "integrity": "sha512-AnkJYrbb7uPkDCEqGeVJiawZNiwVlSkkeX4jZg1gTEguClhyX+/Ezn07KB6DT29tG3UN418ldmS/W6KqGOTDjg==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -17474,7 +20086,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -17482,6 +20093,12 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinyqueue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==", + "license": "ISC" + }, "node_modules/tldts": { "version": "6.1.86", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", @@ -17618,7 +20235,6 @@ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -17753,7 +20369,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17822,6 +20437,16 @@ "node": ">=4" } }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", @@ -17832,6 +20457,16 @@ "node": ">=4" } }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "node_modules/unrs-resolver": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", @@ -17950,6 +20585,45 @@ "dev": true, "license": "MIT" }, + "node_modules/vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "license": "MIT", + "dependencies": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "node_modules/vt-pbf/node_modules/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==", + "license": "ISC" + }, + "node_modules/vt-pbf/node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "node_modules/vt-pbf/node_modules/pbf": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", + "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", @@ -18013,7 +20687,6 @@ "integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -18082,7 +20755,6 @@ "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", @@ -18521,6 +21193,40 @@ "dev": true, "license": "MIT" }, + "node_modules/xmldoc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-2.0.3.tgz", + "integrity": "sha512-6gRk4NY/Jvg67xn7OzJuxLRsGgiXBaPUQplVJ/9l99uIugxh4FTOewYz5ic8WScj7Xx/2WvhENiQKwkK9RpE4w==", + "license": "MIT", + "dependencies": { + "sax": "^1.4.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/xss": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.13.tgz", + "integrity": "sha512-clu7dxTm1e8Mo5fz3n/oW3UCXBfV89xZ72jM8yzo1vR/pIS0w3sgB3XV2H8Vm6zfGnHL0FzvLJPJEBhd86/z4Q==", + "license": "MIT", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 4b08ba206..b7c7a1851 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "dependencies": { "@defra/forms-model": "^3.0.603", "@defra/hapi-tracing": "^1.29.0", + "@defra/interactive-map": "^0.0.3-alpha", "@elastic/ecs-pino-format": "^1.5.0", "@hapi/boom": "^10.0.1", "@hapi/catbox": "^12.1.1", @@ -96,6 +97,7 @@ "date-fns": "^4.1.0", "dotenv": "^17.2.3", "expr-eval-fork": "^3.0.0", + "geodesy": "^2.4.0", "govuk-frontend": "^5.13.0", "hapi-pino": "^13.0.0", "hapi-pulse": "^3.0.1", diff --git a/src/client/javascripts/location-map.js b/src/client/javascripts/location-map.js new file mode 100644 index 000000000..33a5abf2a --- /dev/null +++ b/src/client/javascripts/location-map.js @@ -0,0 +1,766 @@ +// @ts-expect-error - no types +import OsGridRef, { LatLon } from 'geodesy/osgridref.js' + +/** + * Converts lat long to easting and northing + * @param {object} param + * @param {number} param.lat + * @param {number} param.long + * @returns {{ easting: number, northing: number }} + */ +function latLongToEastingNorthing({ lat, long }) { + const point = new LatLon(lat, long) + + return point.toOsGrid() +} + +/** + * Converts easting and northing to lat long + * @param {object} param + * @param {number} param.easting + * @param {number} param.northing + * @returns {{ lat: number, long: number }} + */ +function eastingNorthingToLatLong({ easting, northing }) { + const point = new OsGridRef(easting, northing) + const latLong = point.toLatLon() + + return { lat: latLong.latitude, long: latLong.longitude } +} + +/** + * Converts lat long to an ordnance survey grid reference + * @param {object} param + * @param {number} param.lat + * @param {number} param.long + * @returns {string} + */ +function latLongToOsGridRef({ lat, long }) { + const point = new LatLon(lat, long) + + return point.toOsGrid().toString() +} + +/** + * Converts an ordnance survey grid reference to lat long + * @param {string} osGridRef + * @returns {{ lat: number, long: number }} + */ +function osGridRefToLatLong(osGridRef) { + const point = OsGridRef.parse(osGridRef) + const latLong = point.toLatLon() + + return { lat: latLong.latitude, long: latLong.longitude } +} + +// Center of UK +const DEFAULT_LAT = 53.825564 +const DEFAULT_LONG = -2.421975 + +/** @type {InteractiveMapInitConfig} */ +const defaultConfig = { + zoom: '6', + center: [DEFAULT_LONG, DEFAULT_LAT] +} + +const COMPANY_SYMBOL_CODE = 169 +const LOCATION_FIELD_SELECTOR = 'input.govuk-input' +const EVENTS = { + interactMarkerChange: 'interact:markerchange' +} + +const defaultData = { + VTS_OUTDOOR_URL: '/api/maps/vts/OS_VTS_3857_Outdoor.json', + VTS_DARK_URL: '/api/maps/vts/OS_VTS_3857_Dark.json', + VTS_BLACK_AND_WHITE_URL: '/api/maps/vts/OS_VTS_3857_Black_and_White.json' +} + +/** + * Make a form submit handler that only allows submissions from allowed buttons + * @param {HTMLButtonElement[]} buttons - the form buttons to allow submissions + */ +export function formSubmitFactory(buttons) { + /** + * The submit handler + * @param {SubmitEvent} e + */ + const onFormSubmit = function (e) { + if ( + !(e.submitter instanceof HTMLButtonElement) || + !buttons.includes(e.submitter) + ) { + e.preventDefault() + } + } + + return onFormSubmit +} + +/** + * Initialise location maps + * @param {Partial} config - the map configuration + */ +export function initMaps(config = {}) { + const { + assetPath = '/assets', + apiPath = '/form/api', + data = defaultData + } = config + const locations = document.querySelectorAll('.app-location-field') + + // TODO: Fix this in `interactive-map` + // If there are location components on the page fix up the main form submit + // handler so it doesn't fire when using the integrated map search feature + if (locations.length) { + const form = document.querySelector('form') + + if (form === null) { + return + } + + const buttons = Array.from(form.querySelectorAll('button')) + form.addEventListener('submit', formSubmitFactory(buttons), false) + } + + locations.forEach((location, index) => { + processLocation({ assetPath, apiPath, data }, location, index) + }) +} + +/** + * OS API request proxy factory + * @param {string} apiPath - the root API path + */ +export function makeTileRequestTransformer(apiPath) { + /** + * Proxy OS API requests via our server + * @param {string} url - the request URL + * @param {string} resourceType - the resource type + */ + return function transformTileRequest(url, resourceType) { + // Only proxy OS API requests that don't already have a key + if (resourceType !== 'Style' && url.startsWith('https://api.os.uk')) { + const urlObj = new URL(url) + if (!urlObj.searchParams.has('key')) { + return { + url: `${apiPath}/map-proxy?url=${encodeURIComponent(url)}`, + headers: {} + } + } + } + + const spritesPath = + 'https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main' + + // Proxy sprite requests + if (url.startsWith(spritesPath)) { + const path = url.substring(spritesPath.length) + return { + url: `${apiPath}/maps/vts${path}`, + headers: {} + } + } + + return { url, headers: {} } + } +} + +/** + * Processes a location field to add map capability + * @param {MapsEnvironmentConfig} config - the location field element + * @param {Element} location - the location field element + * @param {*} index - the 0-based index + */ +function processLocation(config, location, index) { + if (!(location instanceof HTMLDivElement)) { + return + } + + const locationInputs = location.querySelector('.app-location-field-inputs') + if (!(locationInputs instanceof HTMLDivElement)) { + return + } + const locationType = location.dataset.locationtype + + // Check for support + const supportedLocations = [ + 'latlongfield', + 'eastingnorthingfield', + 'osgridreffield' + ] + if (!locationType || !supportedLocations.includes(locationType)) { + return + } + + const mapContainer = document.createElement('div') + const mapId = `map_${index}` + + mapContainer.setAttribute('id', mapId) + mapContainer.setAttribute('class', 'map-container') + + const initConfig = getInitMapConfig(location) ?? defaultConfig + + locationInputs.after(mapContainer) + + const { map, interactPlugin } = createMap(mapId, initConfig, config) + + map.on( + 'map:ready', + /** + * Callback function which fires when the map is ready + * @param {object} e - the event + * @param {MapLibreMap} e.map - the map provider instance + */ + function onMapReady(e) { + switch (locationType) { + case 'latlongfield': + bindLatLongField(location, map, e.map) + break + case 'eastingnorthingfield': + bindEastingNorthingField(location, map, e.map) + break + case 'osgridreffield': + bindOsGridRefField(location, map, e.map) + break + default: + throw new Error('Not implemented') + } + + // Add info panel + map.addPanel('info', { + showLabel: true, + label: 'How to use the map', + mobile: { + slot: 'bottom', + initiallyOpen: true, + dismissable: true, + modal: false + }, + tablet: { + slot: 'bottom', + initiallyOpen: true, + dismissable: true, + modal: false + }, + desktop: { + slot: 'bottom', + initiallyOpen: true, + dismissable: true, + modal: false + }, + html: 'If using a map click on a point to update the location.

If using a keyboard, navigate to the point, centering the crosshair at the location and press enter.' + }) + + // Enable the interact plugin + interactPlugin.enable() + } + ) +} + +/** + * Create a Defra map instance + * @param {string} mapId - the map id + * @param {InteractiveMapInitConfig} initConfig - the map initial configuration + * @param {MapsEnvironmentConfig} mapsConfig - the map environment params + */ +function createMap(mapId, initConfig, mapsConfig) { + const { assetPath, apiPath, data = defaultData } = mapsConfig + const logoAltText = 'Ordnance survey logo' + + // @ts-expect-error - Defra namespace currently comes from UMD support files + const defra = window.defra + + const interactPlugin = defra.interactPlugin({ + dataLayers: [], + markerColor: { outdoor: '#ff0000', dark: '#00ff00' }, + interactionMode: 'marker', + multiSelect: false + }) + + /** @type {InteractiveMap} */ + const map = new defra.InteractiveMap(mapId, { + ...initConfig, + mapProvider: defra.maplibreProvider(), + reverseGeocodeProvider: defra.openNamesProvider({ + url: `${apiPath}/reverse-geocode-proxy?easting={easting}&northing={northing}` + }), + behaviour: 'inline', + minZoom: 6, + maxZoom: 18, + containerHeight: '400px', + enableZoomControls: true, + transformRequest: makeTileRequestTransformer(apiPath), + plugins: [ + defra.mapStylesPlugin({ + mapStyles: [ + { + id: 'outdoor', + label: 'Outdoor', + url: data.VTS_OUTDOOR_URL, + thumbnail: `${assetPath}/interactive-map/assets/images/outdoor-map-thumb.jpg`, + logo: `${assetPath}/interactive-map/assets/images/os-logo.svg`, + logoAltText, + attribution: `Contains OS data ${String.fromCodePoint(COMPANY_SYMBOL_CODE)} Crown copyright and database rights ${new Date().getFullYear()}`, + backgroundColor: '#f5f5f0' + }, + { + id: 'dark', + label: 'Dark', + url: data.VTS_DARK_URL, + mapColorScheme: 'dark', + appColorScheme: 'dark', + thumbnail: `${assetPath}/interactive-map/assets/images/dark-map-thumb.jpg`, + logo: `${assetPath}/interactive-map/assets/images/os-logo-white.svg`, + logoAltText, + attribution: `Contains OS data ${String.fromCodePoint(COMPANY_SYMBOL_CODE)} Crown copyright and database rights ${new Date().getFullYear()}` + }, + { + id: 'black-and-white', + label: 'Black/White', + url: data.VTS_BLACK_AND_WHITE_URL, + thumbnail: `${assetPath}/interactive-map/assets/images/black-and-white-map-thumb.jpg`, + logo: `${assetPath}/interactive-map/assets/images/os-logo-black.svg`, + logoAltText, + attribution: `Contains OS data ${String.fromCodePoint(COMPANY_SYMBOL_CODE)} Crown copyright and database rights ${new Date().getFullYear()}` + } + ] + }), + interactPlugin, + defra.searchPlugin({ + osNamesURL: `${apiPath}/geocode-proxy?query={query}`, + width: '300px', + showMarker: false + }), + defra.scaleBarPlugin({ + units: 'metric' + }) + ] + }) + + return { map, interactPlugin } +} + +/** + * Gets initial map config for a location field + * @param {HTMLDivElement} locationField - the location field element + */ +function getInitMapConfig(locationField) { + const locationType = locationField.dataset.locationtype + + switch (locationType) { + case 'latlongfield': + return getInitLatLongMapConfig(locationField) + case 'eastingnorthingfield': + return getInitEastingNorthingMapConfig(locationField) + case 'osgridreffield': + return getInitOsGridRefMapConfig(locationField) + default: + throw new Error('Not implemented') + } +} + +/** + * Validates lat and long is numeric and within UK bounds + * @param {string} strLat - the latitude string + * @param {string} strLong - the longitude string + * @returns {{ valid: false } | { valid: true, value: { lat: number, long: number } }} + */ +function validateLatLong(strLat, strLong) { + const lat = strLat.trim() && Number(strLat.trim()) + const long = strLong.trim() && Number(strLong.trim()) + + if (!lat || !long) { + return { valid: false } + } + + const latMin = 49.85 + const latMax = 60.859 + const longMin = -13.687 + const longMax = 1.767 + + const latInBounds = lat >= latMin && lat <= latMax + const longInBounds = long >= longMin && long <= longMax + + if (!latInBounds || !longInBounds) { + return { valid: false } + } + + return { valid: true, value: { lat, long } } +} + +/** + * Validates easting and northing is numeric and within UK bounds + * @param {string} strEasting - the easting string + * @param {string} strNorthing - the northing string + * @returns {{ valid: false } | { valid: true, value: { easting: number, northing: number } }} + */ +function validateEastingNorthing(strEasting, strNorthing) { + const easting = strEasting.trim() && Number(strEasting.trim()) + const northing = strNorthing.trim() && Number(strNorthing.trim()) + + if (!easting || !northing) { + return { valid: false } + } + + const eastingMin = 0 + const eastingMax = 700000 + const northingMin = 0 + const northingMax = 1300000 + + const latInBounds = easting >= eastingMin && easting <= eastingMax + const longInBounds = northing >= northingMin && northing <= northingMax + + if (!latInBounds || !longInBounds) { + return { valid: false } + } + + return { valid: true, value: { easting, northing } } +} + +/** + * Validates OS grid reference is correct + * @param {string} osGridRef - the OsGridRef + * @returns {{ valid: false } | { valid: true, value: string }} + */ +function validateOsGridRef(osGridRef) { + if (!osGridRef) { + return { valid: false } + } + + const pattern = + /^((([sS]|[nN])[a-hA-Hj-zJ-Z])|(([tT]|[oO])[abfglmqrvwABFGLMQRVW])|([hH][l-zL-Z])|([jJ][lmqrvwLMQRVW]))\s?(([0-9]{3})\s?([0-9]{3})|([0-9]{4})\s?([0-9]{4})|([0-9]{5})\s?([0-9]{5}))$/ + + const match = pattern.exec(osGridRef) + + if (match === null) { + return { valid: false } + } + + return { valid: true, value: match[0] } +} + +/** + * Gets the inputs for a latlong location field + * @param {HTMLDivElement} locationField - the latlong location field element + */ +function getLatLongInputs(locationField) { + const inputs = locationField.querySelectorAll(LOCATION_FIELD_SELECTOR) + + if (inputs.length !== 2) { + throw new Error('Expected 2 inputs for lat and long') + } + + const latInput = /** @type {HTMLInputElement} */ (inputs[0]) + const longInput = /** @type {HTMLInputElement} */ (inputs[1]) + + return { latInput, longInput } +} + +/** + * Gets the inputs for a easting/northing location field + * @param {HTMLDivElement} locationField - the eastingnorthing location field element + */ +function getEastingNorthingInputs(locationField) { + const inputs = locationField.querySelectorAll(LOCATION_FIELD_SELECTOR) + + if (inputs.length !== 2) { + throw new Error('Expected 2 inputs for easting and northing') + } + + const eastingInput = /** @type {HTMLInputElement} */ (inputs[0]) + const northingInput = /** @type {HTMLInputElement} */ (inputs[1]) + + return { eastingInput, northingInput } +} + +/** + * Gets the input for a OS grid reference location field + * @param {HTMLDivElement} locationField - the osgridref location field element + */ +function getOsGridRefInput(locationField) { + const input = locationField.querySelector(LOCATION_FIELD_SELECTOR) + + if (input === null) { + throw new Error('Expected 1 input for osgridref') + } + + return /** @type {HTMLInputElement} */ (input) +} + +/** + * Get the initial map config for a center point + * @param {MapCenter} center - the point + */ +function getInitMapCenterConfig(center) { + return { + zoom: '16', + center, + markers: [ + { + id: 'location', + coords: center + } + ] + } +} + +/** + * Gets initial map config for a latlong location field + * @param {HTMLDivElement} locationField - the latlong location field element + * @returns {InteractiveMapInitConfig | undefined} + */ +function getInitLatLongMapConfig(locationField) { + const { latInput, longInput } = getLatLongInputs(locationField) + const result = validateLatLong(latInput.value, longInput.value) + + if (!result.valid) { + return undefined + } + + /** @type {MapCenter} */ + const center = [result.value.long, result.value.lat] + + return getInitMapCenterConfig(center) +} + +/** + * Gets initial map config for a easting/northing location field + * @param {HTMLDivElement} locationField - the eastingnorthing location field element + * @returns {InteractiveMapInitConfig | undefined} + */ +function getInitEastingNorthingMapConfig(locationField) { + const { eastingInput, northingInput } = + getEastingNorthingInputs(locationField) + const result = validateEastingNorthing( + eastingInput.value, + northingInput.value + ) + + if (!result.valid) { + return undefined + } + + const latlong = eastingNorthingToLatLong(result.value) + + /** @type {MapCenter} */ + const center = [latlong.long, latlong.lat] + + return getInitMapCenterConfig(center) +} + +/** + * Gets initial map config for an OS grid reference location field + * @param {HTMLDivElement} locationField - the osgridref location field element + * @returns {InteractiveMapInitConfig | undefined} + */ +function getInitOsGridRefMapConfig(locationField) { + const osGridRefInput = getOsGridRefInput(locationField) + const result = validateOsGridRef(osGridRefInput.value) + + if (!result.valid) { + return undefined + } + + const latlong = osGridRefToLatLong(result.value) + + /** @type {MapCenter} */ + const center = [latlong.long, latlong.lat] + + return getInitMapCenterConfig(center) +} + +/** + * Bind a latlong field to the map + * @param {HTMLDivElement} locationField - the latlong location field + * @param {InteractiveMap} map - the map component instance (of InteractiveMap) + * @param {MapLibreMap} mapProvider - the map provider instance (of MapLibreMap) + */ +function bindLatLongField(locationField, map, mapProvider) { + const { latInput, longInput } = getLatLongInputs(locationField) + + map.on( + EVENTS.interactMarkerChange, + /** + * Callback function which fires when the map marker changes + * @param {object} e - the event + * @param {[number, number]} e.coords - the map marker coordinates + */ + function onInteractMarkerChange(e) { + const maxPrecision = 7 + latInput.value = e.coords[1].toFixed(maxPrecision) + longInput.value = e.coords[0].toFixed(maxPrecision) + } + ) + + /** + * Lat & long input change event listener + * Update the map view location when the inputs are changed + */ + function onUpdateInputs() { + const result = validateLatLong(latInput.value, longInput.value) + + if (result.valid) { + /** @type {MapCenter} */ + const center = [result.value.long, result.value.lat] + + centerMap(map, mapProvider, center) + } + } + + latInput.addEventListener('change', onUpdateInputs, false) + longInput.addEventListener('change', onUpdateInputs, false) +} + +/** + * Bind an eastingnorthing field to the map + * @param {HTMLDivElement} locationField - the eastingnorthing location field + * @param {InteractiveMap} map - the map component instance (of InteractiveMap) + * @param {MapLibreMap} mapProvider - the map provider instance (of MapLibreMap) + */ +function bindEastingNorthingField(locationField, map, mapProvider) { + const { eastingInput, northingInput } = + getEastingNorthingInputs(locationField) + + map.on( + EVENTS.interactMarkerChange, + /** + * Callback function which fires when the map marker changes + * @param {object} e - the event + * @param {[number, number]} e.coords - the map marker coordinates + */ + function onInteractMarkerChange(e) { + const maxPrecision = 0 + const point = latLongToEastingNorthing({ + lat: e.coords[1], + long: e.coords[0] + }) + + eastingInput.value = point.easting.toFixed(maxPrecision) + northingInput.value = point.northing.toFixed(maxPrecision) + } + ) + + /** + * Easting & northing input change event listener + * Update the map view location when the inputs are changed + */ + function onUpdateInputs() { + const result = validateEastingNorthing( + eastingInput.value, + northingInput.value + ) + + if (result.valid) { + const latlong = eastingNorthingToLatLong(result.value) + + /** @type {MapCenter} */ + const center = [latlong.long, latlong.lat] + + centerMap(map, mapProvider, center) + } + } + + eastingInput.addEventListener('change', onUpdateInputs, false) + northingInput.addEventListener('change', onUpdateInputs, false) +} + +/** + * Bind an OS grid reference field to the map + * @param {HTMLDivElement} locationField - the osgridref location field + * @param {InteractiveMap} map - the map component instance (of InteractiveMap) + * @param {MapLibreMap} mapProvider - the map provider instance (of MapLibreMap) + */ +function bindOsGridRefField(locationField, map, mapProvider) { + const osGridRefInput = getOsGridRefInput(locationField) + + map.on( + EVENTS.interactMarkerChange, + /** + * Callback function which fires when the map marker changes + * @param {object} e - the event + * @param {[number, number]} e.coords - the map marker coordinates + */ + function onInteractMarkerChange(e) { + const point = latLongToOsGridRef({ + lat: e.coords[1], + long: e.coords[0] + }) + + osGridRefInput.value = point + } + ) + + /** + * OS grid reference input change event listener + * Update the map view location when the input is changed + */ + function onUpdateInput() { + const result = validateOsGridRef(osGridRefInput.value) + + if (result.valid) { + const latlong = osGridRefToLatLong(result.value) + + /** @type {MapCenter} */ + const center = [latlong.long, latlong.lat] + + centerMap(map, mapProvider, center) + } + } + + osGridRefInput.addEventListener('change', onUpdateInput, false) +} + +/** + * Updates the marker position and moves the map view port the new location + * @param {InteractiveMap} map - the map component instance (of InteractiveMap) + * @param {MapLibreMap} mapProvider - the map provider instance (of MapLibreMap) + * @param {MapCenter} center - the point + */ +function centerMap(map, mapProvider, center) { + // Move the 'location' marker to the new point + map.addMarker('location', center) + + // Pan & zoom the map to the new valid location + mapProvider.flyTo({ + center, + zoom: 14, + essential: true + }) +} + +/** + * @typedef {object} InteractiveMap - an instance of a InteractiveMap + * @property {Function} on - register callback listeners to map events + * @property {Function} addPanel - adds a new panel to the map + * @property {Function} addMarker - adds/updates a marker + */ + +/** + * @typedef {object} MapLibreMap + * @property {Function} flyTo - pans/zooms to a new location + */ + +/** + * @typedef {[number, number]} MapCenter - Map center point as [long, lat] + */ + +/** + * @typedef {object} InteractiveMapInitConfig - additional config that can be provided to InteractiveMap + * @property {string} zoom - the zoom level of the map + * @property {MapCenter} center - the center point of the map + * @property {{ id: string, coords: MapCenter}[]} [markers] - the markers to add to the map + */ + +/** + * @typedef {object} TileData + * @property {string} VTS_OUTDOOR_URL - the outdoor tile URL + * @property {string} VTS_DARK_URL - the dark tile URL + * @property {string} VTS_BLACK_AND_WHITE_URL - the black and white tile URL + */ + +/** + * @typedef {object} MapsEnvironmentConfig + * @property {string} assetPath - the root asset path + * @property {string} apiPath - the root API path + * @property {TileData} data - the tile data config + */ diff --git a/src/client/javascripts/shared.js b/src/client/javascripts/shared.js index 98246031c..a364bb1ab 100644 --- a/src/client/javascripts/shared.js +++ b/src/client/javascripts/shared.js @@ -2,12 +2,16 @@ import { initAllAutocomplete as initAllAutocompleteImp } from '~/src/client/java import { initFileUpload as initFileUploadImp } from '~/src/client/javascripts/file-upload.js' import { initAllGovuk as initAllGovukImp } from '~/src/client/javascripts/govuk.js' import { initPreviewCloseLink as initPreviewCloseLinkImp } from '~/src/client/javascripts/preview-close-link.js' +export { initMaps } from '~/src/client/javascripts/location-map.js' export const initAllGovuk = initAllGovukImp export const initAllAutocomplete = initAllAutocompleteImp export const initFileUpload = initFileUploadImp export const initPreviewCloseLink = initPreviewCloseLinkImp +/** + * Initialise all clientside components (but not maps as this will be an opt-in for now given the additional UMD assets that are required) + */ export function initAll() { initAllGovuk() initAllAutocomplete() diff --git a/src/client/stylesheets/_location-fields.scss b/src/client/stylesheets/_location-fields.scss index 5f2d70e23..2e9ba7c4b 100644 --- a/src/client/stylesheets/_location-fields.scss +++ b/src/client/stylesheets/_location-fields.scss @@ -3,3 +3,14 @@ .govuk-form-group .app-location-field-inputs .govuk-form-group { margin-bottom: 0; } + +.map-container { + margin-top: 10px; +} + +// Hides the location instructions text when JS (maps) is available +.js-enabled .app-location-field { + details:last-child { + display: none; + } +} diff --git a/src/client/stylesheets/application.scss b/src/client/stylesheets/application.scss index 2aa7b70f1..349c344c2 100644 --- a/src/client/stylesheets/application.scss +++ b/src/client/stylesheets/application.scss @@ -2,7 +2,6 @@ @use "shared"; @use "code"; @use "tag-env"; -@use "location-fields"; // An example of some user-supplied styling // Not great practice but it illustrates the point diff --git a/src/client/stylesheets/shared.scss b/src/client/stylesheets/shared.scss index cb7277959..dd537d805 100644 --- a/src/client/stylesheets/shared.scss +++ b/src/client/stylesheets/shared.scss @@ -2,6 +2,7 @@ @use "pkg:accessible-autocomplete"; @use "prose"; @use "summary-list"; +@use "location-fields"; // Use default GDS Transport font for autocomplete .autocomplete__hint, diff --git a/src/config/index.ts b/src/config/index.ts index 96fe12dac..30740a137 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -255,7 +255,7 @@ export const config = convict({ } as SchemaObj, ordnanceSurveyApiKey: { - doc: 'The ordnance survey api key use by the postcode lookup plugin', + doc: 'The ordnance survey api key used by the postcode lookup and maps plugin', format: String, nullable: true, default: undefined, diff --git a/src/server/plugins/engine/plugin.ts b/src/server/plugins/engine/plugin.ts index 14b915bf5..62859760b 100644 --- a/src/server/plugins/engine/plugin.ts +++ b/src/server/plugins/engine/plugin.ts @@ -15,6 +15,7 @@ import { getRoutes as getRepeaterItemDeleteRoutes } from '~/src/server/plugins/e import { getRoutes as getRepeaterSummaryRoutes } from '~/src/server/plugins/engine/routes/repeaters/summary.js' import { type PluginOptions } from '~/src/server/plugins/engine/types.js' import { registerVision } from '~/src/server/plugins/engine/vision.js' +import { mapPlugin } from '~/src/server/plugins/map/index.js' import { postcodeLookupPlugin } from '~/src/server/plugins/postcode-lookup/index.js' import { type FormRequestPayloadRefs, @@ -57,6 +58,16 @@ export const plugin = { }) } + // Register the maps plugin only if we have an OS api key + if (ordnanceSurveyApiKey) { + await server.register({ + plugin: mapPlugin, + options: { + ordnanceSurveyApiKey + } + }) + } + server.expose('baseLayoutPath', nunjucksOptions.baseLayoutPath) server.expose('viewContext', viewContext) server.expose('cacheService', cacheService) diff --git a/src/server/plugins/engine/views/components/_location-field-base.html b/src/server/plugins/engine/views/components/_location-field-base.html index 0cd96cddb..5fdc3f4ec 100644 --- a/src/server/plugins/engine/views/components/_location-field-base.html +++ b/src/server/plugins/engine/views/components/_location-field-base.html @@ -70,7 +70,7 @@ {% set hasErrors = showFieldsetError and component.model.errorMessage %} -
+
{{ govukFieldset({ legend: { text: component.model.fieldset.legend.text, diff --git a/src/server/plugins/engine/views/components/osgridreffield.html b/src/server/plugins/engine/views/components/osgridreffield.html index 1a2162cd5..3f1ff7203 100644 --- a/src/server/plugins/engine/views/components/osgridreffield.html +++ b/src/server/plugins/engine/views/components/osgridreffield.html @@ -3,8 +3,10 @@ {% macro OsGridRefField(component) %} {% set hasErrors = component.model.errorMessage %} -
- {{ TextField(component) }} +
+
+ {{ TextField(component) }} +
{% if component.model.instructionText %} {{ govukDetails({ diff --git a/src/server/plugins/map/index.js b/src/server/plugins/map/index.js new file mode 100644 index 000000000..a6f148288 --- /dev/null +++ b/src/server/plugins/map/index.js @@ -0,0 +1,19 @@ +import { getRoutes } from '~/src/server/plugins/map/routes/index.js' + +/** + * @satisfies {NamedPlugin} + */ +export const mapPlugin = { + name: '@defra/forms-engine-plugin/map', + dependencies: ['@hapi/inert'], + multiple: false, + register(server, options) { + // @ts-expect-error - Request typing + server.route(getRoutes(options)) + } +} + +/** + * @import { NamedPlugin } from '@hapi/hapi' + * @import { MapConfiguration } from '~/src/server/plugins/map/types.js' + */ diff --git a/src/server/plugins/map/routes/index.js b/src/server/plugins/map/routes/index.js new file mode 100644 index 000000000..32486b472 --- /dev/null +++ b/src/server/plugins/map/routes/index.js @@ -0,0 +1,146 @@ +import { resolve } from 'node:path' + +import Joi from 'joi' + +import { find, nearest } from '~/src/server/plugins/map/service.js' +import { request as httpRequest } from '~/src/server/services/httpService.js' + +/** + * Gets the map support routes + * @param {MapConfiguration} options - ordnance survey names api key + */ +export function getRoutes(options) { + return [ + mapProxyRoute(options), + geocodeProxyRoute(options), + reverseGeocodeProxyRoute(options), + ...tileRoutes() + ] +} + +/** + * Proxies ordnance survey requests from the front end to api.os.com + * Used for VTS map tiles, sprites and fonts by forwarding on the request + * and adding the apikey and optionally an SRS (spatial reference system) + * @param {MapConfiguration} options - the map options + * @returns {ServerRoute} + */ +function mapProxyRoute(options) { + return { + method: 'GET', + path: '/api/map-proxy', + handler: async (request, h) => { + const { query } = request + const targetUrl = new URL(decodeURIComponent(query.url)) + + // Add API key server-side and set SRS + targetUrl.searchParams.set('key', options.ordnanceSurveyApiKey) + if (!targetUrl.searchParams.has('srs')) { + targetUrl.searchParams.set('srs', '3857') + } + + const proxyResponse = await httpRequest('get', targetUrl.toString()) + const buffer = proxyResponse.payload + const contentType = proxyResponse.res.headers['content-type'] + const response = h.response(buffer) + + if (contentType) { + response.type(contentType) + } + + return response + }, + options: { + validate: { + query: Joi.object() + .keys({ + url: Joi.string().required() + }) + .optional() + } + } + } +} + +/** + * Proxies ordnance survey geocode requests from the front end to api.os.com + * Used for the gazzeteer address lookup to find name from query strings like postcode and place names + * @param {MapConfiguration} options - the map options + * @returns {ServerRoute} + */ +function geocodeProxyRoute(options) { + return { + method: 'GET', + path: '/api/geocode-proxy', + async handler(request, _h) { + const { query } = request + const data = await find(query.query, options.ordnanceSurveyApiKey) + + return data + }, + options: { + validate: { + query: Joi.object() + .keys({ + query: Joi.string().required() + }) + .required() + } + } + } +} + +/** + * Proxies ordnance survey reverse geocode requests from the front end to api.os.com + * Used to find name from easting and northing points. + * N.B this endpoint is currently not used by the front end but will be soon in "maps V2" + * @param {MapConfiguration} options - the map options + * @returns {ServerRoute} + */ +function reverseGeocodeProxyRoute(options) { + return { + method: 'GET', + path: '/api/reverse-geocode-proxy', + async handler(request, _h) { + const { query } = request + const data = await nearest( + query.easting, + query.northing, + options.ordnanceSurveyApiKey + ) + + return data + }, + options: { + validate: { + query: Joi.object() + .keys({ + easting: Joi.number().required(), + northing: Joi.number().required() + }) + .required() + } + } + } +} + +function tileRoutes() { + return [ + { + method: 'GET', + path: '/api/maps/vts/{path*}', + options: { + handler: { + directory: { + path: resolve(import.meta.dirname, './vts') + } + } + } + } + ] +} + +/** + * @import { ServerRoute } from '@hapi/hapi' + * @import { MapConfiguration, MapProxyGetRequestRefs, MapGeocodeGetRequestRefs, MapReverseGeocodeGetRequestRefs } from '~/src/server/plugins/map/types.js' + */ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark.json b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark.json new file mode 100644 index 000000000..4b0fe86cb --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark.json @@ -0,0 +1,690 @@ +{ + "OS/TopographicArea_1/Reeds/3": { + "x": 0, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/2": { + "x": 67, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/1": { + "x": 134, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/0": { + "x": 201, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Marsh/0": { + "x": 268, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Saltmarsh/0": { + "x": 0, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Heath/0": { + "x": 67, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Rough Grassland/0": { + "x": 134, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scree/0": { + "x": 201, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Rock/0": { + "x": 268, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Boulders/0": { + "x": 0, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/3": { + "x": 67, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/2": { + "x": 134, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/1": { + "x": 201, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/0": { + "x": 268, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Coppice Or Osiers/0": { + "x": 0, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Coniferous Tree/0": { + "x": 67, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Nonconiferous Tree/0": { + "x": 134, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Mixed Woodland/0": { + "x": 201, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Orchard/0": { + "x": 268, + "y": 201, + "width": 27, + "height": 27, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Site Of Heritage": { + "x": 295, + "y": 201, + "width": 26, + "height": 26, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Cliff": { + "x": 0, + "y": 268, + "width": 24, + "height": 24, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Slope": { + "x": 24, + "y": 268, + "width": 24, + "height": 24, + "pixelRatio": 1, + "sdf": false + }, + "OS/Airports": { + "x": 48, + "y": 268, + "width": 22, + "height": 22, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Positioned Nonconiferous Tree": { + "x": 70, + "y": 268, + "width": 18, + "height": 20, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Positioned Coniferous Tree": { + "x": 70, + "y": 268, + "width": 18, + "height": 20, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station": { + "x": 88, + "y": 268, + "width": 40, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station": { + "x": 128, + "y": 268, + "width": 34, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station": { + "x": 162, + "y": 268, + "width": 26, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/London Underground Station": { + "x": 188, + "y": 268, + "width": 20, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station": { + "x": 208, + "y": 268, + "width": 18, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And Railway Station": { + "x": 226, + "y": 268, + "width": 40, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Rail": { + "x": 266, + "y": 268, + "width": 16, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Bench Mark Symbol": { + "x": 282, + "y": 268, + "width": 26, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Triangulation Point Or Pillar": { + "x": 308, + "y": 268, + "width": 18, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Road Related Flow Symbol": { + "x": 0, + "y": 292, + "width": 18, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station_1": { + "x": 18, + "y": 292, + "width": 18, + "height": 12, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Direction Of Flow Symbol": { + "x": 36, + "y": 292, + "width": 30, + "height": 12, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1": { + "x": 66, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Motorway Junctions": { + "x": 76, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Greenspace:1": { + "x": 86, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Structure": { + "x": 96, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Tidal Water": { + "x": 106, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Landform": { + "x": 114, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Country": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/City:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Capital:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/National Park:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Town:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Water:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Sites": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Landform:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/City:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Capital:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Landcover:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Woodland:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Hamlet (Local)": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Small Settlement": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Suburban Area:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Village:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Town:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/City:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Capital:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/National Park:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Landform:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Landcover:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Water:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Woodland:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Hamlet:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Suburban Area:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Village:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Town:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/City:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Capital:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/National Park:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Hamlet:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Landcover:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Suburban Area:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Village:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Town:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Culvert Symbol": { + "x": 130, + "y": 292, + "width": 14, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Historic Interest": { + "x": 144, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Inland Water": { + "x": 150, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Overhead Construction": { + "x": 156, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Roadside": { + "x": 162, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Spot Height": { + "x": 168, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + } +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark.png b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark.png new file mode 100644 index 000000000..fe0d71e1a Binary files /dev/null and b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark.png differ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark@2x.json b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark@2x.json new file mode 100644 index 000000000..ea0858a49 --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark@2x.json @@ -0,0 +1,690 @@ +{ + "OS/TopographicArea_1/Reeds/3": { + "x": 0, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/2": { + "x": 134, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/1": { + "x": 268, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/0": { + "x": 402, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Marsh/0": { + "x": 536, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Saltmarsh/0": { + "x": 0, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Heath/0": { + "x": 134, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Rough Grassland/0": { + "x": 268, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scree/0": { + "x": 402, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Rock/0": { + "x": 536, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Boulders/0": { + "x": 0, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/3": { + "x": 134, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/2": { + "x": 268, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/1": { + "x": 402, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/0": { + "x": 536, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Coppice Or Osiers/0": { + "x": 0, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Coniferous Tree/0": { + "x": 134, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Nonconiferous Tree/0": { + "x": 268, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Mixed Woodland/0": { + "x": 402, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Orchard/0": { + "x": 536, + "y": 402, + "width": 54, + "height": 54, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Site Of Heritage": { + "x": 590, + "y": 402, + "width": 52, + "height": 52, + "pixelRatio": 2, + "sdf": false + }, + "OS/Airports": { + "x": 0, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Cliff": { + "x": 48, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Slope": { + "x": 96, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Positioned Nonconiferous Tree": { + "x": 144, + "y": 536, + "width": 36, + "height": 40, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Positioned Coniferous Tree": { + "x": 144, + "y": 536, + "width": 36, + "height": 40, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station": { + "x": 180, + "y": 536, + "width": 80, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station": { + "x": 260, + "y": 536, + "width": 68, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station": { + "x": 328, + "y": 536, + "width": 52, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/London Underground Station": { + "x": 380, + "y": 536, + "width": 40, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station": { + "x": 420, + "y": 536, + "width": 36, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And Railway Station": { + "x": 456, + "y": 536, + "width": 80, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Rail": { + "x": 536, + "y": 536, + "width": 32, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Bench Mark Symbol": { + "x": 568, + "y": 536, + "width": 60, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Triangulation Point Or Pillar": { + "x": 628, + "y": 536, + "width": 36, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Road Related Flow Symbol": { + "x": 0, + "y": 584, + "width": 40, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station_1": { + "x": 40, + "y": 584, + "width": 36, + "height": 24, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Direction Of Flow Symbol": { + "x": 76, + "y": 584, + "width": 60, + "height": 24, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1": { + "x": 136, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Motorway Junctions": { + "x": 156, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Greenspace:1": { + "x": 176, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Structure": { + "x": 196, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Tidal Water": { + "x": 216, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Landform": { + "x": 232, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Country": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/City:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Capital:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/National Park:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Town:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Water:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Sites": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Landform:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/City:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Capital:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Landcover:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Woodland:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Hamlet (Local)": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Small Settlement": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Suburban Area:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Village:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Town:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/City:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Capital:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/National Park:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Landform:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Landcover:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Water:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Woodland:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Hamlet:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Suburban Area:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Village:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Town:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/City:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Capital:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/National Park:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Hamlet:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Landcover:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Suburban Area:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Village:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Town:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Culvert Symbol": { + "x": 264, + "y": 584, + "width": 28, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Historic Interest": { + "x": 292, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Inland Water": { + "x": 304, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Overhead Construction": { + "x": 316, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Roadside": { + "x": 328, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Spot Height": { + "x": 340, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + } +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark@2x.png b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark@2x.png new file mode 100644 index 000000000..28292be4d Binary files /dev/null and b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/dark@2x.png differ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale.json b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale.json new file mode 100644 index 000000000..4b0fe86cb --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale.json @@ -0,0 +1,690 @@ +{ + "OS/TopographicArea_1/Reeds/3": { + "x": 0, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/2": { + "x": 67, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/1": { + "x": 134, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/0": { + "x": 201, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Marsh/0": { + "x": 268, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Saltmarsh/0": { + "x": 0, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Heath/0": { + "x": 67, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Rough Grassland/0": { + "x": 134, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scree/0": { + "x": 201, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Rock/0": { + "x": 268, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Boulders/0": { + "x": 0, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/3": { + "x": 67, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/2": { + "x": 134, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/1": { + "x": 201, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/0": { + "x": 268, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Coppice Or Osiers/0": { + "x": 0, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Coniferous Tree/0": { + "x": 67, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Nonconiferous Tree/0": { + "x": 134, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Mixed Woodland/0": { + "x": 201, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Orchard/0": { + "x": 268, + "y": 201, + "width": 27, + "height": 27, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Site Of Heritage": { + "x": 295, + "y": 201, + "width": 26, + "height": 26, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Cliff": { + "x": 0, + "y": 268, + "width": 24, + "height": 24, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Slope": { + "x": 24, + "y": 268, + "width": 24, + "height": 24, + "pixelRatio": 1, + "sdf": false + }, + "OS/Airports": { + "x": 48, + "y": 268, + "width": 22, + "height": 22, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Positioned Nonconiferous Tree": { + "x": 70, + "y": 268, + "width": 18, + "height": 20, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Positioned Coniferous Tree": { + "x": 70, + "y": 268, + "width": 18, + "height": 20, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station": { + "x": 88, + "y": 268, + "width": 40, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station": { + "x": 128, + "y": 268, + "width": 34, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station": { + "x": 162, + "y": 268, + "width": 26, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/London Underground Station": { + "x": 188, + "y": 268, + "width": 20, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station": { + "x": 208, + "y": 268, + "width": 18, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And Railway Station": { + "x": 226, + "y": 268, + "width": 40, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Rail": { + "x": 266, + "y": 268, + "width": 16, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Bench Mark Symbol": { + "x": 282, + "y": 268, + "width": 26, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Triangulation Point Or Pillar": { + "x": 308, + "y": 268, + "width": 18, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Road Related Flow Symbol": { + "x": 0, + "y": 292, + "width": 18, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station_1": { + "x": 18, + "y": 292, + "width": 18, + "height": 12, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Direction Of Flow Symbol": { + "x": 36, + "y": 292, + "width": 30, + "height": 12, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1": { + "x": 66, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Motorway Junctions": { + "x": 76, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Greenspace:1": { + "x": 86, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Structure": { + "x": 96, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Tidal Water": { + "x": 106, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Landform": { + "x": 114, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Country": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/City:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Capital:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/National Park:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Town:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Water:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Sites": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Landform:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/City:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Capital:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Landcover:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Woodland:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Hamlet (Local)": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Small Settlement": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Suburban Area:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Village:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Town:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/City:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Capital:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/National Park:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Landform:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Landcover:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Water:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Woodland:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Hamlet:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Suburban Area:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Village:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Town:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/City:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Capital:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/National Park:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Hamlet:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Landcover:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Suburban Area:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Village:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Town:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Culvert Symbol": { + "x": 130, + "y": 292, + "width": 14, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Historic Interest": { + "x": 144, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Inland Water": { + "x": 150, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Overhead Construction": { + "x": 156, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Roadside": { + "x": 162, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Spot Height": { + "x": 168, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + } +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale.png b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale.png new file mode 100644 index 000000000..83aa61764 Binary files /dev/null and b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale.png differ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale@2x.json b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale@2x.json new file mode 100644 index 000000000..ea0858a49 --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale@2x.json @@ -0,0 +1,690 @@ +{ + "OS/TopographicArea_1/Reeds/3": { + "x": 0, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/2": { + "x": 134, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/1": { + "x": 268, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/0": { + "x": 402, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Marsh/0": { + "x": 536, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Saltmarsh/0": { + "x": 0, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Heath/0": { + "x": 134, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Rough Grassland/0": { + "x": 268, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scree/0": { + "x": 402, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Rock/0": { + "x": 536, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Boulders/0": { + "x": 0, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/3": { + "x": 134, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/2": { + "x": 268, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/1": { + "x": 402, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/0": { + "x": 536, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Coppice Or Osiers/0": { + "x": 0, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Coniferous Tree/0": { + "x": 134, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Nonconiferous Tree/0": { + "x": 268, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Mixed Woodland/0": { + "x": 402, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Orchard/0": { + "x": 536, + "y": 402, + "width": 54, + "height": 54, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Site Of Heritage": { + "x": 590, + "y": 402, + "width": 52, + "height": 52, + "pixelRatio": 2, + "sdf": false + }, + "OS/Airports": { + "x": 0, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Cliff": { + "x": 48, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Slope": { + "x": 96, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Positioned Nonconiferous Tree": { + "x": 144, + "y": 536, + "width": 36, + "height": 40, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Positioned Coniferous Tree": { + "x": 144, + "y": 536, + "width": 36, + "height": 40, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station": { + "x": 180, + "y": 536, + "width": 80, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station": { + "x": 260, + "y": 536, + "width": 68, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station": { + "x": 328, + "y": 536, + "width": 52, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/London Underground Station": { + "x": 380, + "y": 536, + "width": 40, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station": { + "x": 420, + "y": 536, + "width": 36, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And Railway Station": { + "x": 456, + "y": 536, + "width": 80, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Rail": { + "x": 536, + "y": 536, + "width": 32, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Bench Mark Symbol": { + "x": 568, + "y": 536, + "width": 60, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Triangulation Point Or Pillar": { + "x": 628, + "y": 536, + "width": 36, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Road Related Flow Symbol": { + "x": 0, + "y": 584, + "width": 40, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station_1": { + "x": 40, + "y": 584, + "width": 36, + "height": 24, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Direction Of Flow Symbol": { + "x": 76, + "y": 584, + "width": 60, + "height": 24, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1": { + "x": 136, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Motorway Junctions": { + "x": 156, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Greenspace:1": { + "x": 176, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Structure": { + "x": 196, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Tidal Water": { + "x": 216, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Landform": { + "x": 232, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Country": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/City:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Capital:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/National Park:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Town:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Water:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Sites": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Landform:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/City:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Capital:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Landcover:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Woodland:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Hamlet (Local)": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Small Settlement": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Suburban Area:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Village:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Town:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/City:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Capital:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/National Park:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Landform:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Landcover:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Water:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Woodland:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Hamlet:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Suburban Area:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Village:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Town:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/City:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Capital:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/National Park:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Hamlet:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Landcover:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Suburban Area:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Village:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Town:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Culvert Symbol": { + "x": 264, + "y": 584, + "width": 28, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Historic Interest": { + "x": 292, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Inland Water": { + "x": 304, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Overhead Construction": { + "x": 316, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Roadside": { + "x": 328, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Spot Height": { + "x": 340, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + } +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale@2x.png b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale@2x.png new file mode 100644 index 000000000..d080dc9b0 Binary files /dev/null and b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/greyscale@2x.png differ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite.json b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite.json new file mode 100644 index 000000000..4b0fe86cb --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite.json @@ -0,0 +1,690 @@ +{ + "OS/TopographicArea_1/Reeds/3": { + "x": 0, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/2": { + "x": 67, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/1": { + "x": 134, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/0": { + "x": 201, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Marsh/0": { + "x": 268, + "y": 0, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Saltmarsh/0": { + "x": 0, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Heath/0": { + "x": 67, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Rough Grassland/0": { + "x": 134, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scree/0": { + "x": 201, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Rock/0": { + "x": 268, + "y": 67, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Boulders/0": { + "x": 0, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/3": { + "x": 67, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/2": { + "x": 134, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/1": { + "x": 201, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/0": { + "x": 268, + "y": 134, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Coppice Or Osiers/0": { + "x": 0, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Coniferous Tree/0": { + "x": 67, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Nonconiferous Tree/0": { + "x": 134, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Mixed Woodland/0": { + "x": 201, + "y": 201, + "width": 67, + "height": 67, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Orchard/0": { + "x": 268, + "y": 201, + "width": 27, + "height": 27, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Site Of Heritage": { + "x": 295, + "y": 201, + "width": 26, + "height": 26, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Cliff": { + "x": 0, + "y": 268, + "width": 24, + "height": 24, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicArea_1/Slope": { + "x": 24, + "y": 268, + "width": 24, + "height": 24, + "pixelRatio": 1, + "sdf": false + }, + "OS/Airports": { + "x": 48, + "y": 268, + "width": 22, + "height": 22, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Positioned Nonconiferous Tree": { + "x": 70, + "y": 268, + "width": 18, + "height": 20, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Positioned Coniferous Tree": { + "x": 70, + "y": 268, + "width": 18, + "height": 20, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station": { + "x": 88, + "y": 268, + "width": 40, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station": { + "x": 128, + "y": 268, + "width": 34, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station": { + "x": 162, + "y": 268, + "width": 26, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/London Underground Station": { + "x": 188, + "y": 268, + "width": 20, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station": { + "x": 208, + "y": 268, + "width": 18, + "height": 18, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And Railway Station": { + "x": 226, + "y": 268, + "width": 40, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Rail": { + "x": 266, + "y": 268, + "width": 16, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Bench Mark Symbol": { + "x": 282, + "y": 268, + "width": 26, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Triangulation Point Or Pillar": { + "x": 308, + "y": 268, + "width": 18, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Road Related Flow Symbol": { + "x": 0, + "y": 292, + "width": 18, + "height": 16, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station_1": { + "x": 18, + "y": 292, + "width": 18, + "height": 12, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Direction Of Flow Symbol": { + "x": 36, + "y": 292, + "width": 30, + "height": 12, + "pixelRatio": 1, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1": { + "x": 66, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Motorway Junctions": { + "x": 76, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Greenspace:1": { + "x": 86, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Structure": { + "x": 96, + "y": 292, + "width": 10, + "height": 10, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Tidal Water": { + "x": 106, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Landform": { + "x": 114, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Country": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/City:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Capital:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/National Park:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Town:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Water:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Sites": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Landform:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/City:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/National/Capital:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Landcover:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Woodland:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Hamlet (Local)": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Small Settlement": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Suburban Area:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Village:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Town:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/City:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Local/Capital:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/National Park:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Landform:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Landcover:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Water:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Woodland:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Hamlet:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Suburban Area:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Village:3": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Town:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/City:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/District/Capital:4": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/National Park:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Hamlet:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Landcover:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Suburban Area:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Village:1": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/Names/Regional/Town:2": { + "x": 122, + "y": 292, + "width": 8, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/CartographicSymbol/Culvert Symbol": { + "x": 130, + "y": 292, + "width": 14, + "height": 8, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Historic Interest": { + "x": 144, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Inland Water": { + "x": 150, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Overhead Construction": { + "x": 156, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Roadside": { + "x": 162, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + }, + "OS/TopographicPoint/Spot Height": { + "x": 168, + "y": 292, + "width": 6, + "height": 6, + "pixelRatio": 1, + "sdf": false + } +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite.png b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite.png new file mode 100644 index 000000000..1352d2dee Binary files /dev/null and b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite.png differ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite@2x.json b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite@2x.json new file mode 100644 index 000000000..ea0858a49 --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite@2x.json @@ -0,0 +1,690 @@ +{ + "OS/TopographicArea_1/Reeds/3": { + "x": 0, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/2": { + "x": 134, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/1": { + "x": 268, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Reeds/0": { + "x": 402, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Marsh/0": { + "x": 536, + "y": 0, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Saltmarsh/0": { + "x": 0, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Heath/0": { + "x": 134, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Rough Grassland/0": { + "x": 268, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scree/0": { + "x": 402, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Rock/0": { + "x": 536, + "y": 134, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Boulders/0": { + "x": 0, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/3": { + "x": 134, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/2": { + "x": 268, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/1": { + "x": 402, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Scrub/0": { + "x": 536, + "y": 268, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Coppice Or Osiers/0": { + "x": 0, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Coniferous Tree/0": { + "x": 134, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Nonconiferous Tree/0": { + "x": 268, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Mixed Woodland/0": { + "x": 402, + "y": 402, + "width": 134, + "height": 134, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Orchard/0": { + "x": 536, + "y": 402, + "width": 54, + "height": 54, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Site Of Heritage": { + "x": 590, + "y": 402, + "width": 52, + "height": 52, + "pixelRatio": 2, + "sdf": false + }, + "OS/Airports": { + "x": 0, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Cliff": { + "x": 48, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicArea_1/Slope": { + "x": 96, + "y": 536, + "width": 48, + "height": 48, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Positioned Nonconiferous Tree": { + "x": 144, + "y": 536, + "width": 36, + "height": 40, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Positioned Coniferous Tree": { + "x": 144, + "y": 536, + "width": 36, + "height": 40, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station": { + "x": 180, + "y": 536, + "width": 80, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station": { + "x": 260, + "y": 536, + "width": 68, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station": { + "x": 328, + "y": 536, + "width": 52, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/London Underground Station": { + "x": 380, + "y": 536, + "width": 40, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station": { + "x": 420, + "y": 536, + "width": 36, + "height": 36, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And Railway Station": { + "x": 456, + "y": 536, + "width": 80, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Rail": { + "x": 536, + "y": 536, + "width": 32, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Bench Mark Symbol": { + "x": 568, + "y": 536, + "width": 60, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Triangulation Point Or Pillar": { + "x": 628, + "y": 536, + "width": 36, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Road Related Flow Symbol": { + "x": 0, + "y": 584, + "width": 40, + "height": 32, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Railway Station And London Underground Station_1": { + "x": 40, + "y": 584, + "width": 36, + "height": 24, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Direction Of Flow Symbol": { + "x": 76, + "y": 584, + "width": 60, + "height": 24, + "pixelRatio": 2, + "sdf": false + }, + "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1": { + "x": 136, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Motorway Junctions": { + "x": 156, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Greenspace:1": { + "x": 176, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Structure": { + "x": 196, + "y": 584, + "width": 20, + "height": 20, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Tidal Water": { + "x": 216, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Landform": { + "x": 232, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Country": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/City:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Capital:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/National Park:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Town:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Water:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Sites": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Landform:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/City:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/National/Capital:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Landcover:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Woodland:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Hamlet (Local)": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Small Settlement": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Suburban Area:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Village:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Town:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/City:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Local/Capital:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/National Park:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Landform:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Landcover:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Water:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Woodland:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Hamlet:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Suburban Area:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Village:3": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Town:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/City:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/District/Capital:4": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/National Park:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Hamlet:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Landcover:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Suburban Area:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Village:1": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/Names/Regional/Town:2": { + "x": 248, + "y": 584, + "width": 16, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/CartographicSymbol/Culvert Symbol": { + "x": 264, + "y": 584, + "width": 28, + "height": 16, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Historic Interest": { + "x": 292, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Inland Water": { + "x": 304, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Overhead Construction": { + "x": 316, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Roadside": { + "x": 328, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + }, + "OS/TopographicPoint/Spot Height": { + "x": 340, + "y": 584, + "width": 12, + "height": 12, + "pixelRatio": 2, + "sdf": false + } +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite@2x.png b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite@2x.png new file mode 100644 index 000000000..70a6de21a Binary files /dev/null and b/src/server/plugins/map/routes/vts/OS_VTS_3857/resources/sprites/sprite@2x.png differ diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857_Black_and_White.json b/src/server/plugins/map/routes/vts/OS_VTS_3857_Black_and_White.json new file mode 100644 index 000000000..b89760cde --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857_Black_and_White.json @@ -0,0 +1,7858 @@ +{ + "version": 8, + "sprite": "https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857/resources/sprites/greyscale", + "glyphs": "https://api.os.uk/maps/vector/v1/vts/resources/fonts/{fontstack}/{range}.pbf", + "sources": { + "esri": { + "type": "vector", + "url": "https://api.os.uk/maps/vector/v1/vts" + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "rgb(254,254,254)" + } + }, + { + "id": "Background", + "type": "fill", + "source": "esri", + "source-layer": "Background", + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [9, "rgb(220,220,220)"], + [11, "rgb(230,230,230)"], + [12, "rgb(240,240,240)"], + [14, "rgb(255,255,255)"] + ] + } + } + }, + { + "id": "European_land/2", + "type": "fill", + "source": "esri", + "source-layer": "European_land", + "minzoom": 8, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)", + "fill-outline-color": "rgb(0,0,0)" + } + }, + { + "id": "European_land/1", + "type": "fill", + "source": "esri", + "source-layer": "European_land", + "maxzoom": 8, + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/GB_land/3", + "type": "fill", + "source": "esri", + "source-layer": "GB_land", + "minzoom": 8, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/GB_land/2", + "type": "fill", + "source": "esri", + "source-layer": "GB_land", + "minzoom": 7, + "maxzoom": 8, + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/GB_land/1", + "type": "fill", + "source": "esri", + "source-layer": "GB_land", + "minzoom": 5, + "maxzoom": 7, + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/GB_land", + "type": "fill", + "source": "esri", + "source-layer": "GB_land", + "maxzoom": 5, + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/National_parks/2", + "type": "fill", + "source": "esri", + "source-layer": "National_parks", + "minzoom": 8, + "maxzoom": 11, + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [8, "rgb(245,245,245)"], + [10, "rgb(255,255,255)"] + ] + }, + "fill-opacity": 0.5 + } + }, + { + "id": "OS/National_parks/1", + "type": "fill", + "source": "esri", + "source-layer": "National_parks", + "minzoom": 7, + "maxzoom": 8, + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [5, "rgb(230,230,230)"], + [8, "rgb(245,245,245)"] + ] + }, + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Urban_areas/National/2", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "minzoom": 7, + "maxzoom": 9, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": "rgb(240,240,240)" + } + }, + { + "id": "OS/Urban_areas/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "minzoom": 5, + "maxzoom": 7, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": "rgb(235,235,235)" + } + }, + { + "id": "OS/Urban_areas/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "minzoom": 9, + "maxzoom": 12, + "filter": ["==", "_symbol", 1], + "layout": {}, + "paint": { + "fill-color": "rgb(235,235,235)" + } + }, + { + "id": "OS/Functional_sites/Air Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": "rgb(240,240,240)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Education/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": {}, + "paint": { + "fill-color": "rgb(240,240,240)", + "fill-opacity": 0 + } + }, + { + "id": "OS/Functional_sites/Medical Care/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": {}, + "paint": { + "fill-color": "rgb(240,240,240)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Road Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": {}, + "paint": { + "fill-color": "rgb(240,240,240)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Water Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": {}, + "paint": { + "fill-color": "rgb(245,245,245)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Greenspace:2/1", + "type": "fill", + "source": "esri", + "source-layer": "Greenspace:2", + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(235,235,235)" + } + }, + { + "id": "OS/Greenspace:2/0", + "type": "line", + "source": "esri", + "source-layer": "Greenspace:2", + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(226,226,226)", + "line-width": { + "stops": [ + [10, 0], + [11, 0], + [12, 0], + [13, 0], + [14, 0.1], + [15, 0.15], + [16, 0.25] + ] + } + } + }, + { + "id": "OS/TopographicArea_1/Unclassified", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 48], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Landform Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 47], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Tidal Water", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 46], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Landform Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 45], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Glasshouse", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 44], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Rail Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 42], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Structure", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 43], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Rail Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 41], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Path", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 40], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Inland Water", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 39], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Roadside Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 38], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Roadside Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 37], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Road Or Track", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 36], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 34], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 35], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Foreshore", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 30], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 29], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/3", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 29], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/3" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 29], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/2" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 29], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/1" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 29], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/0" + } + }, + { + "id": "OS/TopographicArea_1/Marsh/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 28], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Shingle", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 27], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Marsh/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 28], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Marsh/0" + } + }, + { + "id": "OS/TopographicArea_1/Mud", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 26], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Sand", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 25], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Saltmarsh/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 24], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Heath/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 23], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Saltmarsh/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 24], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Saltmarsh/0" + } + }, + { + "id": "OS/TopographicArea_1/Heath/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 23], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Heath/0" + } + }, + { + "id": "OS/TopographicArea_1/Rough Grassland/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 22], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Rough Grassland/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 22], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Rough Grassland/0" + } + }, + { + "id": "OS/TopographicArea_1/Scree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 21], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Scree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 21], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scree/0" + } + }, + { + "id": "OS/TopographicArea_1/Rock/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 20], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Rock/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 20], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Rock/0" + } + }, + { + "id": "OS/TopographicArea_1/Boulders/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 19], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Boulders/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 19], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Boulders/0" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/3", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/3" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/2" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/1" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/0" + } + }, + { + "id": "OS/TopographicArea_1/Coppice Or Osiers/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 17], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Coppice Or Osiers/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 17], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Coppice Or Osiers/0" + } + }, + { + "id": "OS/TopographicArea_1/Orchard/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 16], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Agricultural Land", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 15], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Orchard/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 16], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Orchard/0" + } + }, + { + "id": "OS/TopographicArea_1/Coniferous Tree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 14], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Coniferous Tree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 14], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Coniferous Tree/0" + } + }, + { + "id": "OS/TopographicArea_1/Nonconiferous Tree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 13], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Nonconiferous Tree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 13], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Nonconiferous Tree/0" + } + }, + { + "id": "OS/TopographicArea_1/Mixed Woodland/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 12], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Footbridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 11], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Mixed Woodland/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 15, + "filter": ["==", "_symbol", 12], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Mixed Woodland/0" + } + }, + { + "id": "OS/TopographicArea_1/Canal", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 10], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Step", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 9], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Track", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 8], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Pylon", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 7], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Traffic Calming", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 6], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Level Crossing", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 5], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Rail Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Road Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Archway", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Multi Surface", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_1/Cliff", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 32], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Cliff" + } + }, + { + "id": "OS/TopographicArea_1/Slope", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 31], + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Slope" + } + }, + { + "id": "OS/Woodland:3/Local/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [12, "rgb(248,248,248)"], + [15, "rgb(250,250,250)"] + ] + }, + "fill-outline-color": { + "stops": [ + [12, "rgb(250,250,250)"], + [15, "rgb(230,230,230)"] + ] + } + } + }, + { + "id": "OS/Woodland:3/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "minzoom": 6, + "maxzoom": 10, + "filter": ["==", "_symbol", 1], + "layout": {}, + "paint": { + "fill-color": "rgb(245,245,245)" + } + }, + { + "id": "OS/Woodland:3/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "minzoom": 10, + "maxzoom": 12, + "filter": ["==", "_symbol", 2], + "layout": {}, + "paint": { + "fill-color": "rgb(245,245,245)" + } + }, + { + "id": "OS/District_buildings/2", + "type": "fill", + "source": "esri", + "source-layer": "District_buildings", + "minzoom": 11, + "maxzoom": 13, + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [6, "rgb(220,220,220)"], + [12, "rgb(225,225,225)"] + ] + } + } + }, + { + "id": "OS/District_buildings/1", + "type": "fill", + "source": "esri", + "source-layer": "District_buildings", + "minzoom": 13, + "maxzoom": 14, + "layout": {}, + "paint": { + "fill-color": "rgb(230,230,230)" + } + }, + { + "id": "OS/Local_buildings/3", + "type": "fill", + "source": "esri", + "source-layer": "Local_buildings", + "minzoom": 15, + "maxzoom": 16, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": { + "stops": [ + [15, "rgb(250,250,250)"], + [16, "rgb(255,255,255)"] + ] + }, + "fill-outline-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/Local_buildings/2.5", + "type": "fill", + "source": "esri", + "source-layer": "Local_buildings", + "minzoom": 14, + "maxzoom": 15, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "rgb(245,245,245)", + "fill-outline-color": "rgb(180,180,180)" + } + }, + { + "id": "OS/Local_buildings/1", + "type": "fill", + "source": "esri", + "source-layer": "Local_buildings", + "minzoom": 13, + "maxzoom": 14, + "layout": {}, + "paint": { + "fill-color": "rgb(230,230,230)" + } + }, + { + "id": "OS/Contours/Index", + "type": "line", + "source": "esri", + "source-layer": "Contours", + "minzoom": 10, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(150,150,150)", + "line-width": { + "stops": [ + [7, 0.1], + [8, 0.13], + [9, 0.2], + [10, 0.3], + [11, 0.4], + [12, 0.6], + [13, 0.8], + [14, 1], + [15, 1], + [16, 1.1] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "OS/Contours/Normal", + "type": "line", + "source": "esri", + "source-layer": "Contours", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(150,150,150)", + "line-width": { + "stops": [ + [12, 0.3], + [13, 0.4], + [14, 0.5], + [15, 0.5], + [16, 0.7] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "OS/Surfacewater/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "minzoom": 6, + "maxzoom": 8, + "filter": ["==", "_symbol", 1], + "layout": {}, + "paint": { + "fill-color": "rgb(220,220,220)" + } + }, + { + "id": "OS/Surfacewater/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "minzoom": 8, + "maxzoom": 12, + "filter": ["==", "_symbol", 2], + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [9, "rgb(220,220,220)"], + [11, "rgb(230,230,230)"], + [12, "rgb(240,240,240)"] + ] + } + } + }, + { + "id": "OS/Surfacewater/Local", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": { + "stops": [ + [12, "rgb(240,240,240)"], + [14, "rgb(255,255,255)"] + ] + }, + "fill-outline-color": "rgba(0,0,0,0.5)" + } + }, + { + "id": "OS/Foreshore/1", + "type": "fill", + "source": "esri", + "source-layer": "Foreshore", + "minzoom": 8, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(252,252,252)" + } + }, + { + "id": "OS/Ornament/1", + "type": "fill", + "source": "esri", + "source-layer": "Ornament", + "minzoom": 14, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(150,150,150)", + "fill-opacity": 0.4 + } + }, + { + "id": "OS/TopographicLine/Property Closing Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [6, 6], + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.5] + ] + } + } + }, + { + "id": "OS/TopographicArea_2/Structure", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 6], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_2/Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 5], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_2/Building/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_2/Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_2/Rail Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_2/Road Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicArea_2/Archway", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "minzoom": 15, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicLine/Step", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [6, 0.4], + [17, 0.4], + [18, 0.8], + [19, 1.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Mean High Water", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [6, 0.8], + [17, 0.9], + [18, 1.3], + [19, 2.1] + ] + } + } + }, + { + "id": "OS/TopographicLine/Traffic Calming", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Standard Gauge Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.8], + [18, 1.2], + [19, 2.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Mean Low Water", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 5], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.6] + ] + } + } + }, + { + "id": "OS/TopographicLine/Path", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 6], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [6, 4], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Overhead Construction", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 7], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [2, 2], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Culvert", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 8], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Pylon", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 9], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 1], + [18, 1.8], + [19, 2.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Ridge Or Rock Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 10], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 1.3], + [18, 2], + [19, 2.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Narrow Gauge Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 11], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Railway Buffer", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 12], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Tunnel Edge", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 13], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [2.5, 2.5], + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 2.1] + ] + } + } + }, + { + "id": "OS/TopographicLine/Line Of Posts", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 14], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Drain", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 15], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicArea_1/Building/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "minzoom": 16, + "filter": ["==", "_symbol", 33], + "layout": {}, + "paint": { + "fill-color": "rgb(255,255,255)" + } + }, + { + "id": "OS/TopographicLine/Default Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 16], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [16, 0.3], + [18, 0.7], + [19, 1.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Building Outline", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 17], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Edge Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [2, 2], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Road Or Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 19], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Building Division", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 20], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Inland water Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 21], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/General Surface Natural Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 22], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [2, 2], + "line-width": 0.6 + } + }, + { + "id": "OS/TopographicLine/Building Overhead Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 23], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [6, 4], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Landform Natural Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 24], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Historic Interest Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 25], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Landform Manmade Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 26], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Unclassified", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "minzoom": 16, + "filter": ["==", "_symbol", 27], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [17, 0.4], + [18, 1], + [19, 1.5] + ] + } + } + }, + { + "id": "OS/Waterlines/District", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 11, + "maxzoom": 13, + "filter": ["==", "_symbol", 0], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(207,207,207)", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/Local", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(200,200,200)", + "line-width": 0.5 + } + }, + { + "id": "OS/Waterlines/MHW", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": 0.5 + } + }, + { + "id": "OS/Waterlines/MHW_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "maxzoom": 12, + "filter": ["==", "_symbol", 2], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": 0.5 + } + }, + { + "id": "OS/Waterlines/MLW-2", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": 0.5, + "line-opacity": 0.8 + } + }, + { + "id": "OS/Waterlines/MLW", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 10, + "maxzoom": 13, + "filter": ["==", "_symbol", 3], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": 0.5, + "line-opacity": 0.4 + } + }, + { + "id": "OS/Waterlines/MLW_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 9, + "maxzoom": 10, + "filter": ["==", "_symbol", 3], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgba(144, 144, 144, 1)", + "line-width": 0.5 + } + }, + { + "id": "OS/Waterlines/National", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 7, + "maxzoom": 8, + "filter": ["==", "_symbol", 4], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(207,207,207)", + "line-width": 0.4 + } + }, + { + "id": "OS/Waterlines/Regional", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "minzoom": 8, + "maxzoom": 11, + "filter": ["==", "_symbol", 5], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(207,207,207)", + "line-width": 0.6 + } + }, + { + "id": "OS/Roads/Tunnels,", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 19], + "layout": {}, + "paint": { + "line-color": "rgb(146,146,146)", + "line-dasharray": [4, 2.5], + "line-width": { + "stops": [ + [9, 0.7], + [12, 0.8], + [14, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 9, + "filter": ["==", "_symbol", 6], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(160,160,160)", + "line-width": 1 + } + }, + { + "id": "OS/Roads/Motorway,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.6], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10], + [16, 14] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 5, + "maxzoom": 7, + "filter": ["==", "_symbol", 0], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(150,150,150)", + "line-width": 1 + } + }, + { + "id": "OS/Roads/Primary,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 3], + [9, 3.5], + [10, 4], + [12, 5], + [13, 5], + [14, 6], + [15, 8.5], + [16, 11] + ] + } + } + }, + { + "id": "OS/Roads/Primary,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 8, + "filter": ["==", "_symbol", 3], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(160,160,160)", + "line-width": 1 + } + }, + { + "id": "OS/Roads/A Road,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 6], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [5, 2.7], + [8, 2.7], + [9, 3.3], + [10, 4], + [12, 4.2], + [13, 5], + [14, 5.3], + [15, 7.5], + [16, 11] + ] + } + } + }, + { + "id": "OS/Roads/B Road,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 10, + "maxzoom": 16, + "filter": ["==", "_symbol", 8], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [8, 4], + [9, 2.7], + [10, 3], + [12, 3.5], + [13, 4.5], + [14, 5], + [15, 7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Minor,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 10], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [9, 2], + [10, 2.5], + [12, 3], + [13, 4], + [14, 5], + [15, 6], + [16, 8] + ] + } + } + }, + { + "id": "OS/Roads/Local,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 13], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [13, 3], + [14, 3], + [15, 5], + [16, 6.5] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 14, + "maxzoom": 16, + "filter": ["==", "_symbol", 15], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [13, 3], + [14, 3.5], + [15, 4], + [16, 5] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 17], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(197,197,197)", + "line-width": { + "stops": [ + [12, 4], + [13, 4], + [14, 5.3], + [15, 6.7], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 6], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [5, 1.8], + [8, 1.8], + [9, 2.3], + [10, 2.8], + [12, 3.2], + [13, 3.9], + [14, 4.4], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 10, + "maxzoom": 16, + "filter": ["==", "_symbol", 8], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [8, 2.8], + [9, 1.8], + [10, 2.3], + [12, 3.2], + [13, 3.9], + [14, 4.2], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 10], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.2], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 13], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [13, 2.3], + [14, 2.9], + [15, 3.75], + [16, 5.4] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 14, + "maxzoom": 16, + "filter": ["==", "_symbol", 15], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [13, 2], + [14, 2.7], + [15, 3], + [16, 4.2] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 17], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [12, 2], + [13, 2], + [14, 2.7], + [15, 3.3], + [16, 3.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "line-join": "round", + "line-cap": "round" + }, + "paint": { + "line-color": "rgb(255,255,255)", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "line-join": "bevel" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.6], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10], + [16, 14] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 5, + "maxzoom": 7, + "filter": ["==", "_symbol", 1], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(150,150,150)", + "line-width": 1 + } + }, + { + "id": "OS/Roads/Primary,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 3], + [9, 3.5], + [10, 4], + [12, 5], + [13, 5], + [14, 6], + [15, 8.5], + [16, 11] + ] + } + } + }, + { + "id": "OS/Roads/Primary,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 8, + "filter": ["==", "_symbol", 4], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(200,200,200)", + "line-width": 1 + } + }, + { + "id": "OS/Roads/A Road,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 7], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [5, 2.7], + [8, 2.7], + [9, 3.3], + [10, 4], + [12, 4.5], + [13, 5], + [14, 5.3], + [15, 7.5], + [16, 11] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 8, + "filter": ["==", "_symbol", 7], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(200,200,200)", + "line-width": 1.3 + } + }, + { + "id": "OS/Roads/B Road,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 9], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [8, 4], + [9, 2.7], + [10, 3], + [12, 3.5], + [13, 4.5], + [14, 5], + [15, 7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Minor,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 11], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [9, 2], + [10, 2.5], + [12, 3], + [13, 4], + [14, 5], + [15, 6], + [16, 8] + ] + } + } + }, + { + "id": "OS/Roads/Local,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 14], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(205,205,205)", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 6], + [16, 8.7] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 16], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(205,205,205)", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 5.3], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(197,197,197)", + "line-width": { + "stops": [ + [12, 4], + [13, 4], + [14, 5.3], + [15, 6.7], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 7], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [5, 1.8], + [8, 1.8], + [9, 2.3], + [10, 2.8], + [12, 3.2], + [13, 3.9], + [14, 4.4], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 9], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [8, 2.8], + [9, 1.8], + [10, 2.3], + [12, 3.2], + [13, 3.9], + [14, 4.2], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 11], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.2], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 14], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [13, 2.3], + [14, 2.9], + [15, 3.75], + [16, 5.4] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 16], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [13, 2], + [14, 2.7], + [15, 3], + [16, 4.2] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_symbol", 18], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [12, 2], + [13, 2], + [14, 2.7], + [15, 3.3], + [16, 3.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(255,255,255)", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(255,255,255)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.6], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10], + [16, 14] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 5, + "maxzoom": 7, + "filter": ["==", "_symbol", 2], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(149,149,149)", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 5], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(147,147,147)", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,2_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 5, + "maxzoom": 8, + "filter": ["==", "_symbol", 5], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(176,176,176)", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 10, + "maxzoom": 16, + "filter": ["==", "_symbol", 12], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(197,197,197)", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 7, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(255,255,255)", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 8, + "maxzoom": 16, + "filter": ["==", "_symbol", 5], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(176,176,176)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Minor,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "minzoom": 10, + "maxzoom": 16, + "filter": ["==", "_symbol", 12], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(254,254,254)", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.1], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Railways/Multi Track", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [9, 0.5], + [10, 0.7], + [11, 0.7], + [12, 0.8], + [13, 1], + [14, 1], + [15, 1.5], + [16, 1.3] + ] + } + } + }, + { + "id": "OS/Railways/Narrow Gauge", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(146,146,146)", + "line-width": { + "stops": [ + [12, 0.4], + [13, 0.4], + [14, 0.4], + [15, 0.5], + [16, 0.5] + ] + } + } + }, + { + "id": "OS/Railways/Single Track", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-width": { + "stops": [ + [10, 0.5], + [11, 0.5], + [12, 0.7], + [13, 0.8], + [14, 0.8], + [15, 0.8], + [16, 1] + ] + } + } + }, + { + "id": "OS/Railways/Tunnel", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "minzoom": 9, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": {}, + "paint": { + "line-color": "rgb(146,146,146)", + "line-dasharray": [4, 2], + "line-width": { + "stops": [ + [10, 1], + [11, 1], + [12, 1], + [13, 1], + [14, 1], + [15, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/ETL", + "type": "line", + "source": "esri", + "source-layer": "ETL", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(0,0,0)", + "line-dasharray": [3, 2], + "line-width": { + "stops": [ + [13, 1], + [14, 1], + [15, 1], + [16, 1] + ] + }, + "line-opacity": 0.5 + } + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station", + "icon-size": { + "stops": [ + [12, 0.5], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 1], + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station", + "icon-size": { + "stops": [ + [12, 0.5], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 13, + "filter": ["==", "_symbol", 1], + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1", + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And Railway Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 2], + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And Railway Station", + "icon-size": { + "stops": [ + [12, 0.7], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 3], + "layout": { + "icon-image": "OS/Railway_stations/London Underground Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Railway Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 16, + "filter": ["==", "_symbol", 4], + "layout": { + "icon-image": "OS/Railway_stations/Railway Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Railway Station And London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_symbol", 5], + "layout": { + "icon-image": "OS/Railway_stations/Railway Station And London Underground Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.8], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Railway Station And London Underground Station_1", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 13, + "filter": ["==", "_symbol", 5], + "layout": { + "icon-image": "OS/Railway_stations/Railway Station And London Underground Station_1", + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Airports", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "minzoom": 8, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Airports", + "icon-size": { + "stops": [ + [9, 0.85], + [10, 0.85], + [11, 0.85], + [12, 0.85], + [13, 1], + [14, 1], + [15, 1], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgb(36,36,36)" + } + }, + { + "id": "OS/TopographicPoint/Spot Height", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 16, + "filter": ["==", "_symbol", 0], + "layout": { + "icon-image": "OS/TopographicPoint/Spot Height", + "icon-size": { + "stops": [ + [17, 0.6], + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(119,119,119)" + } + }, + { + "id": "OS/TopographicPoint/Site Of Heritage", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 1], + "layout": { + "icon-image": "OS/TopographicPoint/Site Of Heritage", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(125,125,125)" + } + }, + { + "id": "OS/TopographicPoint/Positioned Nonconiferous Tree", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 2], + "layout": { + "icon-image": "OS/TopographicPoint/Positioned Nonconiferous Tree", + "icon-size": { + "stops": [ + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(81,81,81)" + } + }, + { + "id": "OS/TopographicPoint/Inland Water", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 3], + "layout": { + "icon-image": "OS/TopographicPoint/Inland Water", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(125,125,125)" + } + }, + { + "id": "OS/TopographicPoint/Roadside", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 4], + "layout": { + "icon-image": "OS/TopographicPoint/Roadside", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(82,82,82)" + } + }, + { + "id": "OS/TopographicPoint/Overhead Construction", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 5], + "layout": { + "icon-image": "OS/TopographicPoint/Overhead Construction", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(82,82,82)" + } + }, + { + "id": "OS/TopographicPoint/Rail", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 6], + "layout": { + "icon-image": "OS/TopographicPoint/Rail", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(125,125,125)" + } + }, + { + "id": "OS/TopographicPoint/Positioned Coniferous Tree", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 7], + "layout": { + "icon-image": "OS/TopographicPoint/Positioned Coniferous Tree", + "icon-size": { + "stops": [ + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(81,81,81)" + } + }, + { + "id": "OS/TopographicPoint/Triangulation Point Or Pillar", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 8], + "layout": { + "icon-image": "OS/TopographicPoint/Triangulation Point Or Pillar", + "icon-size": { + "stops": [ + [18, 1.25], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(82,82,82)" + } + }, + { + "id": "OS/TopographicPoint/Historic Interest", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 9], + "layout": { + "icon-image": "OS/TopographicPoint/Historic Interest", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(125,125,125)" + } + }, + { + "id": "OS/TopographicPoint/Landform", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 10], + "layout": { + "icon-image": "OS/TopographicPoint/Landform", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgba(240,240,240,0)" + } + }, + { + "id": "OS/TopographicPoint/Tidal Water", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 11], + "layout": { + "icon-image": "OS/TopographicPoint/Tidal Water", + "icon-size": { + "stops": [ + [18, 1.4], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(125,125,125)" + } + }, + { + "id": "OS/TopographicPoint/Structure", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "minzoom": 17, + "filter": ["==", "_symbol", 12], + "layout": { + "icon-image": "OS/TopographicPoint/Structure", + "icon-size": { + "stops": [ + [18, 1.4], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(82,82,82)" + } + }, + { + "id": "OS/CartographicSymbol/Culvert Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "minzoom": 17, + "filter": ["==", "_symbol", 0], + "layout": { + "icon-image": "OS/CartographicSymbol/Culvert Symbol", + "icon-size": { + "stops": [ + [18, 1.6], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(125,125,125)" + } + }, + { + "id": "OS/CartographicSymbol/Bench Mark Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "minzoom": 17, + "filter": ["==", "_symbol", 2], + "layout": { + "icon-image": "OS/CartographicSymbol/Bench Mark Symbol", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(82,82,82)" + } + }, + { + "id": "OS/CartographicSymbol/Road Related Flow Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "minzoom": 17, + "filter": ["==", "_symbol", 3], + "layout": { + "icon-image": "OS/CartographicSymbol/Road Related Flow Symbol", + "icon-size": { + "stops": [ + [18, 1.1], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(82,82,82)" + } + }, + { + "id": "OS/Names/National/Capital:1", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Capital:1", + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)" + } + }, + { + "id": "OS/Names/National/Country", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Country", + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class79", 79], + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "center", + "text-offset": [0.107527, 0], + "text-rotate": ["get", "_label_angle79"], + "text-letter-spacing": 0.05, + "text-field": "{_name79}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class64", 64], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-letter-spacing": 0.05, + "text-field": "{_name64}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class74", 74], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle74"], + "text-letter-spacing": 0.05, + "text-field": "{_name74}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class97", 97], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle97"], + "text-letter-spacing": 0.05, + "text-field": "{_name97}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class87", 87], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle87"], + "text-letter-spacing": 0.05, + "text-field": "{_name87}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class72", 72], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle72"], + "text-letter-spacing": 0.05, + "text-field": "{_name72}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class73", 73], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle73"], + "text-letter-spacing": 0.05, + "text-field": "{_name73}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class61", 61], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-letter-spacing": 0.05, + "text-field": "{_name61}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class99", 99], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle99"], + "text-letter-spacing": 0.05, + "text-field": "{_name99}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class96", 96], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle96"], + "text-letter-spacing": 0.05, + "text-field": "{_name96}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class95", 95], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle95"], + "text-letter-spacing": 0.05, + "text-field": "{_name95}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class89", 89], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle89"], + "text-letter-spacing": 0.05, + "text-field": "{_name89}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class86", 86], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle86"], + "text-letter-spacing": 0.05, + "text-field": "{_name86}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class85", 85], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle85"], + "text-letter-spacing": 0.05, + "text-field": "{_name85}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class76", 76], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle76"], + "text-letter-spacing": 0.05, + "text-field": "{_name76}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class66", 66], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-letter-spacing": 0.05, + "text-field": "{_name66}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class53", 53], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0952381, 0], + "text-rotate": ["get", "_label_angle53"], + "text-letter-spacing": 0.05, + "text-field": "{_name53}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class54", 54], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle54"], + "text-letter-spacing": 0.05, + "text-field": "{_name54}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class100", 100], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle100"], + "text-letter-spacing": 0.05, + "text-field": "{_name100}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class90", 90], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle90"], + "text-letter-spacing": 0.05, + "text-field": "{_name90}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class77", 77], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle77"], + "text-letter-spacing": 0.05, + "text-field": "{_name77}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class67", 67], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-letter-spacing": 0.05, + "text-field": "{_name67}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class55", 55], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle55"], + "text-letter-spacing": 0.05, + "text-field": "{_name55}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class78", 78], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle78"], + "text-letter-spacing": 0.05, + "text-field": "{_name78}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class68", 68], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-letter-spacing": 0.05, + "text-field": "{_name68}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class56", 56], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle56"], + "text-letter-spacing": 0.05, + "text-field": "{_name56}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class101", 101], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle101"], + "text-letter-spacing": 0.05, + "text-field": "{_name101}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class91", 91], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle91"], + "text-letter-spacing": 0.05, + "text-field": "{_name91}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class69", 69], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle69"], + "text-letter-spacing": 0.05, + "text-field": "{_name69}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class57", 57], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle57"], + "text-letter-spacing": 0.05, + "text-field": "{_name57}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class92", 92], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle92"], + "text-letter-spacing": 0.05, + "text-field": "{_name92}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-width": 1, + "text-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class82", 82], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle82"], + "text-letter-spacing": 0.05, + "text-field": "{_name82}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class60", 60], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name60}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class58", 58], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle58"], + "text-letter-spacing": 0.05, + "text-field": "{_name58}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class75", 75], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle75"], + "text-letter-spacing": 0.05, + "text-field": "{_name75}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class98", 98], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle98"], + "text-letter-spacing": 0.05, + "text-field": "{_name98}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class88", 88], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle88"], + "text-letter-spacing": 0.05, + "text-field": "{_name88}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class59", 59], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle59"], + "text-letter-spacing": 0.05, + "text-field": "{_name59}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class65", 65], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-letter-spacing": 0.05, + "text-field": "{_name65}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class52", 52], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle52"]], + "text-letter-spacing": 0.05, + "text-field": "{_name52}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class50", 50], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle50"], + "text-letter-spacing": 0.05, + "text-field": "{_name50}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class40", 40], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle40"], + "text-letter-spacing": 0.05, + "text-field": "{_name40}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class43", 43], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle43"], + "text-letter-spacing": 0.05, + "text-field": "{_name43}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class44", 44], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle44"], + "text-letter-spacing": 0.05, + "text-field": "{_name44}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class45", 45], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle45"], + "text-letter-spacing": 0.05, + "text-field": "{_name45}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class46", 46], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle46"], + "text-letter-spacing": 0.05, + "text-field": "{_name46}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class47", 47], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle47"], + "text-letter-spacing": 0.05, + "text-field": "{_name47}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class48", 48], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle48"], + "text-letter-spacing": 0.05, + "text-field": "{_name48}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - NW(1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class49", 49], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle49"], + "text-letter-spacing": 0.05, + "text-field": "{_name49}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class51", 51], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle51"], + "text-letter-spacing": 0.05, + "text-field": "{_name51}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class42", 42], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle42"]], + "text-letter-spacing": 0.05, + "text-field": "{_name42}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class80", 80], + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle80"], + "text-letter-spacing": 0.05, + "text-field": "{_name80}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class94", 94], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle94"]], + "text-letter-spacing": 0.05, + "text-field": "{_name94}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class84", 84], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle84"]], + "text-letter-spacing": 0.05, + "text-field": "{_name84}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class93", 93], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle93"], + "text-letter-spacing": 0.05, + "text-field": "{_name93}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class83", 83], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle83"], + "text-letter-spacing": 0.05, + "text-field": "{_name83}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class71", 71], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle71"]], + "text-letter-spacing": 0.05, + "text-field": "{_name71}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class63", 63], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-letter-spacing": 0.05, + "text-field": "{_name63}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Height - East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class62", 62], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-letter-spacing": 0.05, + "text-field": "{_name62}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class41", 41], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle41"], + "text-letter-spacing": 0.05, + "text-field": "{_name41}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class70", 70], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle70"], + "text-letter-spacing": 0.05, + "text-field": "{_name70}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class81", 81], + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle81"]], + "text-letter-spacing": 0.05, + "text-field": "{_name81}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class32", 32], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle32"]], + "text-letter-spacing": 0.05, + "text-field": "{_name32}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class39", 39], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle39"], + "text-letter-spacing": 0.05, + "text-field": "{_name39}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class38", 38], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle38"], + "text-letter-spacing": 0.05, + "text-field": "{_name38}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class37", 37], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle37"], + "text-letter-spacing": 0.05, + "text-field": "{_name37}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class36", 36], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle36"], + "text-letter-spacing": 0.05, + "text-field": "{_name36}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class35", 35], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle35"], + "text-letter-spacing": 0.05, + "text-field": "{_name35}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class34", 34], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle34"], + "text-letter-spacing": 0.05, + "text-field": "{_name34}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class33", 33], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0930233, 0], + "text-rotate": ["get", "_label_angle33"], + "text-letter-spacing": 0.05, + "text-field": "{_name33}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class30", 30], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0930233, 0], + "text-rotate": ["get", "_label_angle30"], + "text-letter-spacing": 0.05, + "text-field": "{_name30}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class31", 31], + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle31"], + "text-letter-spacing": 0.05, + "text-field": "{_name31}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class20", 20], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle20"], + "text-letter-spacing": 0.05, + "text-field": "{_name20}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class21", 21], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle21"], + "text-letter-spacing": 0.05, + "text-field": "{_name21}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class22", 22], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle22"]], + "text-letter-spacing": 0.05, + "text-field": "{_name22}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class23", 23], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle23"], + "text-letter-spacing": 0.05, + "text-field": "{_name23}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class24", 24], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle24"], + "text-letter-spacing": 0.05, + "text-field": "{_name24}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class25", 25], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle25"], + "text-letter-spacing": 0.05, + "text-field": "{_name25}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class26", 26], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle26"], + "text-letter-spacing": 0.05, + "text-field": "{_name26}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class27", 27], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle27"], + "text-letter-spacing": 0.05, + "text-field": "{_name27}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class28", 28], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle28"], + "text-letter-spacing": 0.05, + "text-field": "{_name28}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Natural - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "filter": ["==", "_label_class29", 29], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle29"], + "text-letter-spacing": 0.05, + "text-field": "{_name29}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class12", 12], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle12"]], + "text-letter-spacing": 0.05, + "text-field": "{_name12}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class2", 2], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle2"]], + "text-letter-spacing": 0.05, + "text-field": "{_name2}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class11", 11], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle11"], + "text-letter-spacing": 0.05, + "text-field": "{_name11}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class1", 1], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle1"], + "text-letter-spacing": 0.05, + "text-field": "{_name1}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class10", 10], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle10"], + "text-letter-spacing": 0.05, + "text-field": "{_name10}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/CartographicText/label/General - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class", 0], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle"], + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/CartographicText/label/General - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class17", 17], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle17"], + "text-letter-spacing": 0.05, + "text-field": "{_name17}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class7", 7], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle7"], + "text-letter-spacing": 0.05, + "text-field": "{_name7}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class19", 19], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle19"], + "text-letter-spacing": 0.05, + "text-field": "{_name19}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class9", 9], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle9"], + "text-letter-spacing": 0.05, + "text-field": "{_name9}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class18", 18], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle18"], + "text-letter-spacing": 0.05, + "text-field": "{_name18}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class8", 8], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle8"], + "text-letter-spacing": 0.05, + "text-field": "{_name8}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class16", 16], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle16"], + "text-letter-spacing": 0.05, + "text-field": "{_name16}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class6", 6], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle6"], + "text-letter-spacing": 0.05, + "text-field": "{_name6}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class15", 15], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle15"], + "text-letter-spacing": 0.05, + "text-field": "{_name15}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class5", 5], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle5"], + "text-letter-spacing": 0.05, + "text-field": "{_name5}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class14", 14], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle14"], + "text-letter-spacing": 0.05, + "text-field": "{_name14}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-width": 2, + "text-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "OS/CartographicText/label/General - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class4", 4], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle4"], + "text-letter-spacing": 0.05, + "text-field": "{_name4}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 16, + "maxzoom": 17, + "filter": ["==", "_label_class13", 13], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle13"], + "text-letter-spacing": 0.05, + "text-field": "{_name13}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/General - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "minzoom": 17, + "filter": ["==", "_label_class3", 3], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle3"], + "text-letter-spacing": 0.05, + "text-field": "{_name3}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/Roads/label/Local Road 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_label_class", 14], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/Local Road 22400-44800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 12, + "maxzoom": 13, + "filter": ["==", "_label_class", 15], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Minor Road 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_label_class", 12], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/Minor Road 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 13, + "maxzoom": 13, + "filter": ["==", "_label_class", 13], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Greenspace:1", + "type": "symbol", + "source": "esri", + "source-layer": "Greenspace:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Greenspace:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(0,0,0,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Sites", + "type": "symbol", + "source": "esri", + "source-layer": "Sites", + "minzoom": 14, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Sites", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Landform:1", + "type": "symbol", + "source": "esri", + "source-layer": "Landform:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Landform:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Landform:2", + "type": "symbol", + "source": "esri", + "source-layer": "Landform:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Landform:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Landcover:3", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Landcover:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Landcover:2", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:2", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Landcover:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Water:2", + "type": "symbol", + "source": "esri", + "source-layer": "Water:2", + "minzoom": 12, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Water:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(80,80,80)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Water:1", + "type": "symbol", + "source": "esri", + "source-layer": "Water:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Water:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(30,30,30)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Woodland:2", + "type": "symbol", + "source": "esri", + "source-layer": "Woodland:2", + "minzoom": 12, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Woodland:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(50,50,50)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Woodland:1", + "type": "symbol", + "source": "esri", + "source-layer": "Woodland:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Woodland:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgb(53,53,53)", + "text-color": "rgb(53,53,53)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/A & B Road 2800-11200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 14, + "maxzoom": 16, + "filter": ["==", "_label_class", 7], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(254,254,254)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/A & B Road 11200-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 13, + "maxzoom": 14, + "filter": ["==", "_label_class", 8], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(254,254,254)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/A & B Road 22400-358400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 10, + "maxzoom": 13, + "filter": ["==", "_label_class", 9], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(254,254,254)", + "text-halo-width": 1.6 + } + }, + { + "id": "OS/Roads/label/A & B Road Name 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_label_class", 10], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/A & B Road Name 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 12, + "maxzoom": 14, + "filter": ["==", "_label_class", 11], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Railway_stations/label/Station names 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 11, + "maxzoom": 13, + "filter": ["==", "_label_class1", 1], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "top", + "text-offset": { + "property": "_symbol", + "type": "categorical", + "default": [0, 0.0333333], + "stops": [ + [0, [0, 0.631292]], + [1, [0, 0.359493]], + [2, [0, 0.609832]], + [3, [0, 0.629975]], + [4, [0, 0.625794]], + [5, [0, 0.410354]] + ] + }, + "text-letter-spacing": 0.05, + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(249,249,249)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Railway_stations/label/Station names 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_label_class", 0], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-offset": { + "property": "_symbol", + "type": "categorical", + "default": [0, 0.1], + "stops": [ + [0, [0, 0.638163]], + [1, [0, 0.393543]], + [2, [0, 0.618849]], + [3, [0, 0.636977]], + [4, [0, 0.633215]], + [5, [0, 0.439319]] + ] + }, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(249,249,249)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Small Settlement", + "type": "symbol", + "source": "esri", + "source-layer": "Small Settlement", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Small Settlement", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": { + "stops": [ + [10, 11], + [15, 12] + ] + }, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Hamlet (Local)", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet (Local)", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Hamlet (Local)", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Hamlet:2", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Hamlet:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Hamlet:1", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet:1", + "minzoom": 11, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Hamlet:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Suburban Area:3", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:3", + "minzoom": 12, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Suburban Area:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/District/Suburban Area:2", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:2", + "minzoom": 10, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Suburban Area:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true, + "visibility": "none" + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Suburban Area:1", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:1", + "minzoom": 10, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/Regional/Suburban Area:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Landcover:1", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:1", + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Regional/Landcover:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 0.7 + } + }, + { + "id": "OS/Roads/label/Primary 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_label_class", 3], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 10, + "maxzoom": 13, + "filter": ["==", "_label_class", 4], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 179200-716800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 8, + "maxzoom": 10, + "filter": ["==", "_label_class", 5], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary Name 2800-44800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 12, + "maxzoom": 16, + "filter": ["==", "_label_class", 6], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Village:3", + "type": "symbol", + "source": "esri", + "source-layer": "Village:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Village:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/Regional/Village:1", + "type": "symbol", + "source": "esri", + "source-layer": "Village:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Village:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Roads/label/Motorway 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_label_class", 0], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Motorway 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 10, + "maxzoom": 13, + "filter": ["==", "_label_class", 1], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 12, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgba(255, 255, 255, 1)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Motorway 179200-2867200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "minzoom": 6, + "maxzoom": 10, + "filter": ["==", "_label_class", 2], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgba(255, 255, 255, 1)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Airports/label/Airport names 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "minzoom": 10, + "maxzoom": 13, + "filter": ["==", "_label_class1", 1], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "top", + "text-offset": [0, 0.582306], + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Airports/label/Airport names 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "minzoom": 13, + "maxzoom": 16, + "filter": ["==", "_label_class", 0], + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom", + "text-offset": [0, 0.688753], + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/National Park:3", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/National Park:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/Local/Motorway Junctions", + "type": "symbol", + "source": "esri", + "source-layer": "Motorway Junctions", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Motorway Junctions", + "icon-allow-overlap": true, + "text-font": ["Arial Bold"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(35,35,35,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/Local/Village:1", + "type": "symbol", + "source": "esri", + "source-layer": "Village:1", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/Local/Village:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": { + "stops": [ + [10, 10], + [12, 13] + ] + }, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true, + "visibility": "visible" + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/Local/Village:3", + "type": "symbol", + "source": "esri", + "source-layer": "Village:3", + "minzoom": 12, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Village:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true, + "visibility": "visible" + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/Local/Town:4", + "type": "symbol", + "source": "esri", + "source-layer": "Town:4", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Town:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 18, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/District/Town:1", + "type": "symbol", + "source": "esri", + "source-layer": "Town:1", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Town:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.7, + "icon-halo-width": 2, + "icon-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "OS/Names/Regional/Town:2", + "type": "symbol", + "source": "esri", + "source-layer": "Town:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Town:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Town:3", + "type": "symbol", + "source": "esri", + "source-layer": "Town:3", + "minzoom": 8, + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Town:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": { + "stops": [ + [8, 11], + [9, 12] + ] + }, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/National Park:2", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/National Park:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/National Park:1", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:1", + "minzoom": 7, + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/National Park:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/City:3", + "type": "symbol", + "source": "esri", + "source-layer": "City:3", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Local/City:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/District/City:4", + "type": "symbol", + "source": "esri", + "source-layer": "City:4", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/District/City:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 19, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/Regional/City:1", + "type": "symbol", + "source": "esri", + "source-layer": "City:1", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/Regional/City:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro regular"], + "text-anchor": "center", + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true, + "text-size": 18 + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/City:2", + "type": "symbol", + "source": "esri", + "source-layer": "City:2", + "minzoom": 5, + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/City:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Capital:3", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Capital:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 24, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/District/Capital:4", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:4", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Capital:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 20, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/Regional/Capital:2", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Capital:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Semibold"], + "text-size": 18, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(53,53,53,0)", + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Capital:1/label/Capital National", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "minzoom": 5, + "maxzoom": 9, + "filter": ["==", "_label_class", 0], + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true, + "icon-allow-overlap": true + }, + "paint": { + "text-color": "rgb(0,0,0)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Country/label/Country National", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "minzoom": 5, + "maxzoom": 9, + "filter": ["==", "_label_class", 0], + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 21, + "text-anchor": "center", + "text-letter-spacing": 0.75, + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true, + "icon-allow-overlap": true + }, + "paint": { + "text-color": "rgba(43,43,43,0.5)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Capital:1/label/Capital National 1:5.7m+", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "maxzoom": 5, + "filter": ["==", "_label_class1", 1], + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.270711, 0.0292893], + "text-field": "{_name1}", + "text-optional": true, + "icon-allow-overlap": true + }, + "paint": { + "text-color": "rgb(0,0,0)" + } + }, + { + "id": "OS/Names/National/Country/label/Country National 1:5.7m+", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "maxzoom": 5, + "filter": ["==", "_label_class1", 1], + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 16, + "text-anchor": "center", + "text-letter-spacing": 0.5, + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgba(0,0,0,0.5)", + "text-halo-color": "rgb(255,255,255)", + "text-halo-width": 1.5 + } + } + ] +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857_Dark.json b/src/server/plugins/map/routes/vts/OS_VTS_3857_Dark.json new file mode 100644 index 000000000..f2ae17e08 --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857_Dark.json @@ -0,0 +1,7669 @@ +{ + "version": 8, + "sprite": "https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857/resources/sprites/dark", + "glyphs": "https://api.os.uk/maps/vector/v1/vts/resources/fonts/{fontstack}/{range}.pbf", + "sources": { + "esri": { + "type": "vector", + "url": "https://api.os.uk/maps/vector/v1/vts" + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "rgb(1,1,1)" + } + }, + { + "id": "Background", + "type": "fill", + "source": "esri", + "source-layer": "Background", + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "European_land/1", + "type": "fill", + "source": "esri", + "source-layer": "European_land", + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(6,6,6)" + } + }, + { + "id": "OS/GB_land/1", + "type": "fill", + "source": "esri", + "source-layer": "GB_land", + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/National_parks/1", + "type": "fill", + "source": "esri", + "source-layer": "National_parks", + "minzoom": 5, + "maxzoom": 11, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Urban_areas/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "filter": ["==", "_symbol", 0], + "minzoom": 5, + "maxzoom": 9, + "layout": {}, + "paint": { + "fill-color": "rgba(41,41,41,0.3)" + } + }, + { + "id": "OS/Urban_areas/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "filter": ["==", "_symbol", 1], + "minzoom": 9, + "maxzoom": 10, + "layout": {}, + "paint": { + "fill-color": "rgba(41,41,41,0.7)" + } + }, + { + "id": "OS/Functional_sites/Air Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 0], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(26,26,26)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Education/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 1], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(21,21,21)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Medical Care/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 2], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(33,33,33)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Road Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 3], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(15,15,15)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Water Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 4], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(28,28,28)", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Greenspace:2/1", + "type": "fill", + "source": "esri", + "source-layer": "Greenspace:2", + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(20,20,20)" + } + }, + { + "id": "OS/Greenspace:2/0", + "type": "line", + "source": "esri", + "source-layer": "Greenspace:2", + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(29,29,29)", + "line-width": { + "stops": [ + [10, 0], + [11, 0], + [12, 0], + [13, 0], + [14, 0.1], + [15, 0.15], + [16, 0.25] + ] + } + } + }, + { + "id": "OS/TopographicArea_1/Unclassified", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 48], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(9,9,9)" + } + }, + { + "id": "OS/TopographicArea_1/Landform Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 47], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(14,14,14)" + } + }, + { + "id": "OS/TopographicArea_1/Tidal Water", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 46], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/TopographicArea_1/Landform Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 45], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(20,20,20)" + } + }, + { + "id": "OS/TopographicArea_1/Glasshouse", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 44], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(8,8,8)" + } + }, + { + "id": "OS/TopographicArea_1/Rail Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 42], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(30,30,30)" + } + }, + { + "id": "OS/TopographicArea_1/Structure", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 43], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(48,48,48)" + } + }, + { + "id": "OS/TopographicArea_1/Rail Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 41], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(52,52,52)" + } + }, + { + "id": "OS/TopographicArea_1/Path", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 40], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(36,36,36)" + } + }, + { + "id": "OS/TopographicArea_1/Inland Water", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 39], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/TopographicArea_1/Roadside Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 38], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(14,14,14)" + } + }, + { + "id": "OS/TopographicArea_1/Roadside Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 37], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(29,29,29)" + } + }, + { + "id": "OS/TopographicArea_1/Road Or Track", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 36], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(3,3,3)" + } + }, + { + "id": "OS/TopographicArea_1/Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 34], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(20,20,20)" + } + }, + { + "id": "OS/TopographicArea_1/Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 35], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(14,14,14)" + } + }, + { + "id": "OS/TopographicArea_1/Foreshore", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 30], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(23,23,23)" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/3", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/3" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/2" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/1" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/0" + } + }, + { + "id": "OS/TopographicArea_1/Marsh/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 28], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(16,16,16)" + } + }, + { + "id": "OS/TopographicArea_1/Shingle", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 27], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Marsh/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 28], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Marsh/0" + } + }, + { + "id": "OS/TopographicArea_1/Mud", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 26], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(27,27,27)" + } + }, + { + "id": "OS/TopographicArea_1/Sand", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 25], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(17,17,17)" + } + }, + { + "id": "OS/TopographicArea_1/Saltmarsh/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 24], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(16,16,16)" + } + }, + { + "id": "OS/TopographicArea_1/Heath/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 23], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Saltmarsh/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 24], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Saltmarsh/0" + } + }, + { + "id": "OS/TopographicArea_1/Heath/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 23], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Heath/0" + } + }, + { + "id": "OS/TopographicArea_1/Rough Grassland/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 22], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Rough Grassland/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 22], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Rough Grassland/0" + } + }, + { + "id": "OS/TopographicArea_1/Scree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 21], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Scree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 21], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scree/0" + } + }, + { + "id": "OS/TopographicArea_1/Rock/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 20], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Rock/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 20], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Rock/0" + } + }, + { + "id": "OS/TopographicArea_1/Boulders/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 19], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Boulders/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 19], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Boulders/0" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(22,22,22)" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/3", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/3" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/2" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/1" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/0" + } + }, + { + "id": "OS/TopographicArea_1/Coppice Or Osiers/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 17], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/TopographicArea_1/Coppice Or Osiers/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 17], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Coppice Or Osiers/0" + } + }, + { + "id": "OS/TopographicArea_1/Orchard/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 16], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/TopographicArea_1/Agricultural Land", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 15], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/TopographicArea_1/Orchard/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 16], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Orchard/0" + } + }, + { + "id": "OS/TopographicArea_1/Coniferous Tree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 14], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/TopographicArea_1/Coniferous Tree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 14], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Coniferous Tree/0" + } + }, + { + "id": "OS/TopographicArea_1/Nonconiferous Tree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 13], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/TopographicArea_1/Nonconiferous Tree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 13], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Nonconiferous Tree/0" + } + }, + { + "id": "OS/TopographicArea_1/Mixed Woodland/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 12], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/TopographicArea_1/Footbridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 11], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(43,43,43)" + } + }, + { + "id": "OS/TopographicArea_1/Mixed Woodland/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 12], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Mixed Woodland/0" + } + }, + { + "id": "OS/TopographicArea_1/Canal", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 10], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/TopographicArea_1/Step", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 9], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(36,36,36)" + } + }, + { + "id": "OS/TopographicArea_1/Track", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 8], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(36,36,36)" + } + }, + { + "id": "OS/TopographicArea_1/Pylon", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 7], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(24,24,24)" + } + }, + { + "id": "OS/TopographicArea_1/Traffic Calming", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 6], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(3,3,3)" + } + }, + { + "id": "OS/TopographicArea_1/Level Crossing", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 5], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(3,3,3)" + } + }, + { + "id": "OS/TopographicArea_1/Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 4], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(45,45,45)" + } + }, + { + "id": "OS/TopographicArea_1/Rail Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 3], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(76,76,76)" + } + }, + { + "id": "OS/TopographicArea_1/Road Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 2], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(3,3,3)" + } + }, + { + "id": "OS/TopographicArea_1/Archway", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 1], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(41,41,41)" + } + }, + { + "id": "OS/TopographicArea_1/Multi Surface", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 0], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(18,18,18)" + } + }, + { + "id": "OS/TopographicArea_1/Cliff", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 32], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Cliff" + } + }, + { + "id": "OS/TopographicArea_1/Slope", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 31], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Slope" + } + }, + { + "id": "OS/Woodland:3/Local/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "filter": ["==", "_symbol", 0], + "minzoom": 12, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/Woodland:3/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "filter": ["==", "_symbol", 1], + "minzoom": 5, + "maxzoom": 10, + "layout": {}, + "paint": { + "fill-color": "rgba(32,32,32,0.6)" + } + }, + { + "id": "OS/Woodland:3/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "filter": ["==", "_symbol", 2], + "minzoom": 10, + "maxzoom": 12, + "layout": {}, + "paint": { + "fill-color": "rgb(32,32,32)" + } + }, + { + "id": "OS/District_buildings/1", + "type": "fill", + "source": "esri", + "source-layer": "District_buildings", + "minzoom": 10, + "maxzoom": 12, + "layout": {}, + "paint": { + "fill-color": "rgb(41,41,41)" + } + }, + { + "id": "OS/Local_buildings/1", + "type": "fill", + "source": "esri", + "source-layer": "Local_buildings", + "minzoom": 12, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(41,41,41)" + } + }, + { + "id": "OS/Contours/Index", + "type": "line", + "source": "esri", + "source-layer": "Contours", + "filter": ["==", "_symbol", 0], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(136,136,136)", + "line-width": { + "stops": [ + [7, 0.1], + [8, 0.13], + [9, 0.4], + [10, 0.4], + [11, 0.53], + [12, 0.67], + [13, 0.8], + [14, 1], + [15, 1], + [16, 1.1] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "OS/Contours/Normal", + "type": "line", + "source": "esri", + "source-layer": "Contours", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(136,136,136)", + "line-width": { + "stops": [ + [12, 0.4], + [13, 0.4], + [14, 0.5], + [15, 0.5], + [16, 0.7] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "OS/Surfacewater/Local", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "filter": ["==", "_symbol", 0], + "minzoom": 11, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)", + "fill-outline-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/Surfacewater/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "filter": ["==", "_symbol", 1], + "minzoom": 6, + "maxzoom": 7, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/Surfacewater/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "filter": ["==", "_symbol", 2], + "minzoom": 7, + "maxzoom": 11, + "layout": {}, + "paint": { + "fill-color": "rgb(44,44,44)" + } + }, + { + "id": "OS/Foreshore/1", + "type": "fill", + "source": "esri", + "source-layer": "Foreshore", + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(23,23,23)" + } + }, + { + "id": "OS/Ornament/1", + "type": "fill", + "source": "esri", + "source-layer": "Ornament", + "minzoom": 12, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(69,69,69)", + "fill-opacity": 0.6 + } + }, + { + "id": "OS/TopographicArea_2/Structure", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 6], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/TopographicArea_2/Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 5], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/TopographicArea_2/Building/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 4], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(41,41,41)" + } + }, + { + "id": "OS/TopographicArea_2/Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 3], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/TopographicArea_2/Rail Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 2], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/TopographicArea_2/Road Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 1], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(11,11,11)" + } + }, + { + "id": "OS/TopographicArea_2/Archway", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 0], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(41,41,41)" + } + }, + { + "id": "OS/TopographicLine/Property Closing Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 0], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(105,105,105)", + "line-dasharray": [6, 6], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Step", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 1], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(78,78,78)", + "line-width": { + "stops": [ + [6, 0.4], + [17, 0.4], + [18, 0.8], + [19, 1.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Mean High Water", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 2], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(62,62,62)", + "line-width": { + "stops": [ + [6, 0.8], + [17, 0.9], + [18, 1.3], + [19, 2.1] + ] + } + } + }, + { + "id": "OS/TopographicLine/Traffic Calming", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 3], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(64,64,64)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Standard Gauge Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 4], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-width": { + "stops": [ + [17, 0.8], + [18, 1.2], + [19, 2.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Mean Low Water", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 5], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(62,62,62)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.6] + ] + } + } + }, + { + "id": "OS/TopographicLine/Path", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 6], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(134,134,134)", + "line-dasharray": [6, 4], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Overhead Construction", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 7], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(78,78,78)", + "line-dasharray": [2, 2], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Culvert", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 8], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(62,62,62)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Pylon", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 9], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": { + "stops": [ + [17, 1], + [18, 1.8], + [19, 2.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Ridge Or Rock Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 10], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(66,66,66)", + "line-width": { + "stops": [ + [17, 1.3], + [18, 2], + [19, 2.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Narrow Gauge Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 11], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Railway Buffer", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 12], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Tunnel Edge", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 13], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-dasharray": [2.5, 2.5], + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 2.1] + ] + } + } + }, + { + "id": "OS/TopographicLine/Line Of Posts", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 14], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(115,115,115)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Drain", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 15], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(62,62,62)", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Default Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 16], + "minzoom": 15, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(134,134,134)", + "line-width": { + "stops": [ + [16, 0.4], + [18, 0.7], + [19, 1.3] + ] + } + } + }, + { + "id": "OS/TopographicArea_1/Building/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 33], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "rgb(41,41,41)" + } + }, + { + "id": "OS/TopographicLine/Building Outline", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 17], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(76,76,76)", + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Edge Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 18], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(105,105,105)", + "line-dasharray": [2, 2], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Road Or Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 19], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(129,129,129)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Building Division", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 20], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(76,76,76)", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Inland water Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 21], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(62,62,62)", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/General Surface Natural Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 22], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(105,105,105)", + "line-dasharray": [2, 2], + "line-width": 0.6 + } + }, + { + "id": "OS/TopographicLine/Building Overhead Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 23], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(134,134,134)", + "line-dasharray": [6, 4], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Landform Natural Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 24], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(66,66,66)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Historic Interest Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 25], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(105,105,105)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Landform Manmade Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 26], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(66,66,66)", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Unclassified", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 27], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(76,76,76)", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 2] + ] + } + } + }, + { + "id": "OS/Waterlines/District", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 0], + "minzoom": 9, + "maxzoom": 11, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 0.9 + } + }, + { + "id": "OS/Waterlines/Local", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/Local_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/MHW", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 2], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 1.6 + } + }, + { + "id": "OS/Waterlines/MHW_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 2], + "minzoom": 8, + "maxzoom": 12, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 1.3 + } + }, + { + "id": "OS/Waterlines/MLW", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 3], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 0.8 + } + }, + { + "id": "OS/Waterlines/MLW_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 3], + "minzoom": 8, + "maxzoom": 10, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 0.5 + } + }, + { + "id": "OS/Waterlines/National", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 4], + "minzoom": 5, + "maxzoom": 6, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 0.4 + } + }, + { + "id": "OS/Waterlines/Regional", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 5], + "minzoom": 7, + "maxzoom": 9, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/Regional_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 5], + "minzoom": 6, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(48,48,48)", + "line-width": 0.5 + } + }, + { + "id": "OS/Roads/Tunnels,", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 19], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "line-color": "rgb(109,109,109)", + "line-dasharray": [4, 2.5], + "line-width": { + "stops": [ + [9, 0.7], + [12, 0.8], + [14, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 6], + "minzoom": 7, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": 1.3 + } + }, + { + "id": "OS/Roads/Motorway,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 0], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(121,121,121)", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.6], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 0], + "minzoom": 5, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 3], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(108,108,108)", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 3], + "minzoom": 5, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(79,79,79)", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 6], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(99,99,99)", + "line-width": { + "stops": [ + [5, 2.7], + [8, 2.7], + [9, 3.3], + [10, 4], + [12, 4.7], + [13, 5.7], + [14, 6.3], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 8], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(100,100,100)", + "line-width": { + "stops": [ + [8, 4], + [9, 2.7], + [10, 3.3], + [12, 4.7], + [13, 5.7], + [14, 6], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 10], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(58,58,58)", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 13], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(50,50,50)", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 6], + [16, 8.7] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 15], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(50,50,50)", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 5.3], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 17], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(58,58,58)", + "line-width": { + "stops": [ + [12, 4], + [13, 4], + [14, 5.3], + [15, 6.7], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 6], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [5, 1.8], + [8, 1.8], + [9, 2.3], + [10, 2.8], + [12, 3.2], + [13, 3.9], + [14, 4.4], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 8], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [8, 2.8], + [9, 1.8], + [10, 2.3], + [12, 3.2], + [13, 3.9], + [14, 4.2], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 10], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.2], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 13], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [13, 2.3], + [14, 2.9], + [15, 3.75], + [16, 5.4] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 15], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [13, 2], + [14, 2.7], + [15, 3], + [16, 4.2] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 17], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [12, 2], + [13, 2], + [14, 2.7], + [15, 3.3], + [16, 3.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 0], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 3], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(79,79,79)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 1], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(121,121,121)", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.7], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 1], + "minzoom": 5, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 4], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(108,108,108)", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 4], + "minzoom": 5, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(79,79,79)", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 7], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(100,100,100)", + "line-width": { + "stops": [ + [5, 2.7], + [8, 2.7], + [9, 3.3], + [10, 4], + [12, 4.7], + [13, 5.7], + [14, 6.3], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 7], + "minzoom": 7, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": 1.3 + } + }, + { + "id": "OS/Roads/B Road,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 9], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(100,100,100)", + "line-width": { + "stops": [ + [8, 4], + [9, 2.7], + [10, 3.3], + [12, 4.7], + [13, 5.7], + [14, 6], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 11], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(58,58,58)", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 14], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(50,50,50)", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 6], + [16, 8.7] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 16], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(50,50,50)", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 5.3], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 18], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(58,58,58)", + "line-width": { + "stops": [ + [12, 4], + [13, 4], + [14, 5.3], + [15, 6.7], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 7], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [5, 1.8], + [8, 1.8], + [9, 2.3], + [10, 2.8], + [12, 3.2], + [13, 3.9], + [14, 4.4], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 9], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [8, 2.8], + [9, 1.8], + [10, 2.3], + [12, 3.2], + [13, 3.9], + [14, 4.2], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 11], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.2], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 14], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [13, 2.3], + [14, 2.9], + [15, 3.75], + [16, 5.4] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 16], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [13, 2], + [14, 2.7], + [15, 3], + [16, 4.2] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 18], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [12, 2], + [13, 2], + [14, 2.7], + [15, 3.3], + [16, 3.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 1], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 4], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(79,79,79)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 2], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(121,121,121)", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.7], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 2], + "minzoom": 5, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 5], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(108,108,108)", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,2_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 5], + "minzoom": 5, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(79,79,79)", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 12], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(58,58,58)", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 2], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(106,106,106)", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 5], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(79,79,79)", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Minor,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 12], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(1,1,1)", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.1], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Railways/Multi Track", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 0], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-width": { + "stops": [ + [10, 1.4], + [11, 1.4], + [12, 1.4], + [13, 1.5], + [14, 1.5], + [15, 2], + [16, 1.3] + ] + } + } + }, + { + "id": "OS/Railways/Narrow Gauge", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 1], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-width": { + "stops": [ + [12, 0.4], + [13, 0.4], + [14, 0.4], + [15, 0.5], + [16, 0.5] + ] + } + } + }, + { + "id": "OS/Railways/Single Track", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 2], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "rgb(109,109,109)", + "line-width": { + "stops": [ + [10, 1.2], + [11, 1.2], + [12, 1.2], + [13, 1.2], + [14, 1.2], + [15, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/Railways/Tunnel", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 3], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "line-color": "rgb(109,109,109)", + "line-dasharray": [4, 2], + "line-width": { + "stops": [ + [10, 1], + [11, 1], + [12, 1], + [13, 1], + [14, 1], + [15, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/ETL", + "type": "line", + "source": "esri", + "source-layer": "ETL", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "rgb(121,121,121)", + "line-dasharray": [6, 3], + "line-width": { + "stops": [ + [13, 1.3], + [14, 1.3], + [15, 2.2], + [16, 1.7] + ] + }, + "line-opacity": 0.5 + } + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 0], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station", + "icon-size": { + "stops": [ + [12, 0.5], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 1], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station", + "icon-size": { + "stops": [ + [12, 0.5], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1", + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And Railway Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 2], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And Railway Station", + "icon-size": { + "stops": [ + [12, 0.7], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 3], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/London Underground Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/Railway Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 4], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Railway Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/Railway Station And London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 5], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Railway Station And London Underground Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.8], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Railway_stations/Railway Station And London Underground Station_1", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 5], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Railway_stations/Railway Station And London Underground Station_1", + "icon-allow-overlap": true + }, + "paint": { + "icon-opacity": 0.8 + } + }, + { + "id": "OS/Airports", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "minzoom": 8, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Airports", + "icon-size": { + "stops": [ + [9, 0.85], + [10, 0.85], + [11, 0.85], + [12, 0.85], + [13, 1], + [14, 1], + [15, 1], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgb(219,219,219)", + "icon-opacity": 0.8 + } + }, + { + "id": "OS/TopographicPoint/Spot Height", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 0], + "minzoom": 16, + "layout": { + "icon-image": "OS/TopographicPoint/Spot Height", + "icon-size": { + "stops": [ + [17, 0.6], + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/TopographicPoint/Site Of Heritage", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 1], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Site Of Heritage", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/TopographicPoint/Positioned Nonconiferous Tree", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 2], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Positioned Nonconiferous Tree", + "icon-size": { + "stops": [ + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/TopographicPoint/Inland Water", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 3], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Inland Water", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/TopographicPoint/Roadside", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 4], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Roadside", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/TopographicPoint/Overhead Construction", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 5], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Overhead Construction", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/TopographicPoint/Rail", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 6], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Rail", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/TopographicPoint/Positioned Coniferous Tree", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 7], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Positioned Coniferous Tree", + "icon-size": { + "stops": [ + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/TopographicPoint/Triangulation Point Or Pillar", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 8], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Triangulation Point Or Pillar", + "icon-size": { + "stops": [ + [18, 1.25], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/TopographicPoint/Historic Interest", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 9], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Historic Interest", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/TopographicPoint/Landform", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 10], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Landform", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgba(15,15,15,0)" + } + }, + { + "id": "OS/TopographicPoint/Tidal Water", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 11], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Tidal Water", + "icon-size": { + "stops": [ + [18, 1.4], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/TopographicPoint/Structure", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 12], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Structure", + "icon-size": { + "stops": [ + [18, 1.4], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicSymbol/Culvert Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "filter": ["==", "_symbol", 0], + "minzoom": 17, + "layout": { + "icon-image": "OS/CartographicSymbol/Culvert Symbol", + "icon-size": { + "stops": [ + [18, 1.6], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicSymbol/Bench Mark Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "filter": ["==", "_symbol", 2], + "minzoom": 17, + "layout": { + "icon-image": "OS/CartographicSymbol/Bench Mark Symbol", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicSymbol/Road Related Flow Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "filter": ["==", "_symbol", 3], + "minzoom": 17, + "layout": { + "icon-image": "OS/CartographicSymbol/Road Related Flow Symbol", + "icon-size": { + "stops": [ + [18, 1.1], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/Names/National/Capital:1", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Capital:1", + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)" + } + }, + { + "id": "OS/Names/National/Country", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Country", + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class79", 79], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "center", + "text-offset": [0.107527, 0], + "text-rotate": ["get", "_label_angle79"], + "text-letter-spacing": 0.05, + "text-field": "{_name79}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Height - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class64", 64], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-letter-spacing": 0.05, + "text-field": "{_name64}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class74", 74], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle74"], + "text-letter-spacing": 0.05, + "text-field": "{_name74}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class97", 97], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle97"], + "text-letter-spacing": 0.05, + "text-field": "{_name97}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class87", 87], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle87"], + "text-letter-spacing": 0.05, + "text-field": "{_name87}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class72", 72], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle72"], + "text-letter-spacing": 0.05, + "text-field": "{_name72}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class73", 73], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle73"], + "text-letter-spacing": 0.05, + "text-field": "{_name73}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Height - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class61", 61], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-letter-spacing": 0.05, + "text-field": "{_name61}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Roads - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class99", 99], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle99"], + "text-letter-spacing": 0.05, + "text-field": "{_name99}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class96", 96], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle96"], + "text-letter-spacing": 0.05, + "text-field": "{_name96}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class95", 95], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle95"], + "text-letter-spacing": 0.05, + "text-field": "{_name95}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class89", 89], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle89"], + "text-letter-spacing": 0.05, + "text-field": "{_name89}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class86", 86], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle86"], + "text-letter-spacing": 0.05, + "text-field": "{_name86}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class85", 85], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle85"], + "text-letter-spacing": 0.05, + "text-field": "{_name85}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class76", 76], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle76"], + "text-letter-spacing": 0.05, + "text-field": "{_name76}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Height - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class66", 66], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-letter-spacing": 0.05, + "text-field": "{_name66}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Water - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class53", 53], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0952381, 0], + "text-rotate": ["get", "_label_angle53"], + "text-letter-spacing": 0.05, + "text-field": "{_name53}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class54", 54], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle54"], + "text-letter-spacing": 0.05, + "text-field": "{_name54}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class100", 100], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle100"], + "text-letter-spacing": 0.05, + "text-field": "{_name100}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class90", 90], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle90"], + "text-letter-spacing": 0.05, + "text-field": "{_name90}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class77", 77], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle77"], + "text-letter-spacing": 0.05, + "text-field": "{_name77}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Height - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class67", 67], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-letter-spacing": 0.05, + "text-field": "{_name67}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Water - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class55", 55], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle55"], + "text-letter-spacing": 0.05, + "text-field": "{_name55}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class78", 78], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle78"], + "text-letter-spacing": 0.05, + "text-field": "{_name78}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Height - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class68", 68], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-letter-spacing": 0.05, + "text-field": "{_name68}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Water - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class56", 56], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle56"], + "text-letter-spacing": 0.05, + "text-field": "{_name56}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class101", 101], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle101"], + "text-letter-spacing": 0.05, + "text-field": "{_name101}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class91", 91], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle91"], + "text-letter-spacing": 0.05, + "text-field": "{_name91}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class69", 69], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle69"], + "text-letter-spacing": 0.05, + "text-field": "{_name69}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Water - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class57", 57], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle57"], + "text-letter-spacing": 0.05, + "text-field": "{_name57}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class92", 92], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle92"], + "text-letter-spacing": 0.05, + "text-field": "{_name92}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class82", 82], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle82"], + "text-letter-spacing": 0.05, + "text-field": "{_name82}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Height - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class60", 60], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name60}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Water - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class58", 58], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle58"], + "text-letter-spacing": 0.05, + "text-field": "{_name58}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class75", 75], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle75"], + "text-letter-spacing": 0.05, + "text-field": "{_name75}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class98", 98], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle98"], + "text-letter-spacing": 0.05, + "text-field": "{_name98}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class88", 88], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle88"], + "text-letter-spacing": 0.05, + "text-field": "{_name88}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Water - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class59", 59], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle59"], + "text-letter-spacing": 0.05, + "text-field": "{_name59}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Height - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class65", 65], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-letter-spacing": 0.05, + "text-field": "{_name65}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class52", 52], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle52"]], + "text-letter-spacing": 0.05, + "text-field": "{_name52}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class50", 50], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle50"], + "text-letter-spacing": 0.05, + "text-field": "{_name50}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class40", 40], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle40"], + "text-letter-spacing": 0.05, + "text-field": "{_name40}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class43", 43], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle43"], + "text-letter-spacing": 0.05, + "text-field": "{_name43}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class44", 44], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle44"], + "text-letter-spacing": 0.05, + "text-field": "{_name44}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class45", 45], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle45"], + "text-letter-spacing": 0.05, + "text-field": "{_name45}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class46", 46], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle46"], + "text-letter-spacing": 0.05, + "text-field": "{_name46}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class47", 47], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle47"], + "text-letter-spacing": 0.05, + "text-field": "{_name47}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class48", 48], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle48"], + "text-letter-spacing": 0.05, + "text-field": "{_name48}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - NW(1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class49", 49], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle49"], + "text-letter-spacing": 0.05, + "text-field": "{_name49}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class51", 51], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle51"], + "text-letter-spacing": 0.05, + "text-field": "{_name51}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class42", 42], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle42"]], + "text-letter-spacing": 0.05, + "text-field": "{_name42}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class80", 80], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle80"], + "text-letter-spacing": 0.05, + "text-field": "{_name80}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class94", 94], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle94"]], + "text-letter-spacing": 0.05, + "text-field": "{_name94}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class84", 84], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle84"]], + "text-letter-spacing": 0.05, + "text-field": "{_name84}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class93", 93], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle93"], + "text-letter-spacing": 0.05, + "text-field": "{_name93}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class83", 83], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle83"], + "text-letter-spacing": 0.05, + "text-field": "{_name83}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(163,163,163)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class71", 71], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle71"]], + "text-letter-spacing": 0.05, + "text-field": "{_name71}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Height - West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class63", 63], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-letter-spacing": 0.05, + "text-field": "{_name63}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Height - East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class62", 62], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-letter-spacing": 0.05, + "text-field": "{_name62}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(136,136,136)" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class41", 41], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle41"], + "text-letter-spacing": 0.05, + "text-field": "{_name41}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class70", 70], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle70"], + "text-letter-spacing": 0.05, + "text-field": "{_name70}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class81", 81], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle81"]], + "text-letter-spacing": 0.05, + "text-field": "{_name81}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class32", 32], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle32"]], + "text-letter-spacing": 0.05, + "text-field": "{_name32}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class39", 39], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle39"], + "text-letter-spacing": 0.05, + "text-field": "{_name39}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class38", 38], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle38"], + "text-letter-spacing": 0.05, + "text-field": "{_name38}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class37", 37], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle37"], + "text-letter-spacing": 0.05, + "text-field": "{_name37}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class36", 36], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle36"], + "text-letter-spacing": 0.05, + "text-field": "{_name36}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class35", 35], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle35"], + "text-letter-spacing": 0.05, + "text-field": "{_name35}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class34", 34], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle34"], + "text-letter-spacing": 0.05, + "text-field": "{_name34}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class33", 33], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0930233, 0], + "text-rotate": ["get", "_label_angle33"], + "text-letter-spacing": 0.05, + "text-field": "{_name33}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class30", 30], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0930233, 0], + "text-rotate": ["get", "_label_angle30"], + "text-letter-spacing": 0.05, + "text-field": "{_name30}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class31", 31], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle31"], + "text-letter-spacing": 0.05, + "text-field": "{_name31}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(130,130,130)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class20", 20], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle20"], + "text-letter-spacing": 0.05, + "text-field": "{_name20}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class21", 21], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle21"], + "text-letter-spacing": 0.05, + "text-field": "{_name21}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class22", 22], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle22"]], + "text-letter-spacing": 0.05, + "text-field": "{_name22}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class23", 23], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle23"], + "text-letter-spacing": 0.05, + "text-field": "{_name23}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class24", 24], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle24"], + "text-letter-spacing": 0.05, + "text-field": "{_name24}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class25", 25], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle25"], + "text-letter-spacing": 0.05, + "text-field": "{_name25}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class26", 26], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle26"], + "text-letter-spacing": 0.05, + "text-field": "{_name26}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class27", 27], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle27"], + "text-letter-spacing": 0.05, + "text-field": "{_name27}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class28", 28], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle28"], + "text-letter-spacing": 0.05, + "text-field": "{_name28}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/Natural - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class29", 29], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle29"], + "text-letter-spacing": 0.05, + "text-field": "{_name29}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(174,174,174)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class12", 12], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle12"]], + "text-letter-spacing": 0.05, + "text-field": "{_name12}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class2", 2], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle2"]], + "text-letter-spacing": 0.05, + "text-field": "{_name2}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class11", 11], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle11"], + "text-letter-spacing": 0.05, + "text-field": "{_name11}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class1", 1], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle1"], + "text-letter-spacing": 0.05, + "text-field": "{_name1}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class10", 10], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle10"], + "text-letter-spacing": 0.05, + "text-field": "{_name10}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class", 0], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle"], + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class17", 17], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle17"], + "text-letter-spacing": 0.05, + "text-field": "{_name17}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class7", 7], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle7"], + "text-letter-spacing": 0.05, + "text-field": "{_name7}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class19", 19], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle19"], + "text-letter-spacing": 0.05, + "text-field": "{_name19}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class9", 9], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle9"], + "text-letter-spacing": 0.05, + "text-field": "{_name9}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class18", 18], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle18"], + "text-letter-spacing": 0.05, + "text-field": "{_name18}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class8", 8], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle8"], + "text-letter-spacing": 0.05, + "text-field": "{_name8}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class16", 16], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle16"], + "text-letter-spacing": 0.05, + "text-field": "{_name16}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class6", 6], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle6"], + "text-letter-spacing": 0.05, + "text-field": "{_name6}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class15", 15], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle15"], + "text-letter-spacing": 0.05, + "text-field": "{_name15}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class5", 5], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle5"], + "text-letter-spacing": 0.05, + "text-field": "{_name5}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class14", 14], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle14"], + "text-letter-spacing": 0.05, + "text-field": "{_name14}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class4", 4], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle4"], + "text-letter-spacing": 0.05, + "text-field": "{_name4}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class13", 13], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle13"], + "text-letter-spacing": 0.05, + "text-field": "{_name13}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/CartographicText/label/General - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class3", 3], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle3"], + "text-letter-spacing": 0.05, + "text-field": "{_name3}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "rgb(173,173,173)" + } + }, + { + "id": "OS/Roads/label/Local Road 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 14], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(141,141,141)", + "text-halo-color": "rgba(1,1,1,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Local Road 22400-44800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 15], + "minzoom": 12, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(141,141,141)", + "text-halo-color": "rgba(1,1,1,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Minor Road 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 12], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(127,127,127)", + "text-halo-color": "rgba(1,1,1,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Minor Road 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 13], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(153,153,153)", + "text-halo-color": "rgba(1,1,1,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Greenspace:1", + "type": "symbol", + "source": "esri", + "source-layer": "Greenspace:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Greenspace:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,255,255,0)", + "text-color": "rgb(144,144,144)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Sites", + "type": "symbol", + "source": "esri", + "source-layer": "Sites", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Sites", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(109,109,109)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Landform:1", + "type": "symbol", + "source": "esri", + "source-layer": "Landform:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Landform:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(130,130,130)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Landform:2", + "type": "symbol", + "source": "esri", + "source-layer": "Landform:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Landform:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(130,130,130)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Landcover:3", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Landcover:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(112,112,112)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Landcover:2", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:2", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Landcover:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(112,112,112)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Water:2", + "type": "symbol", + "source": "esri", + "source-layer": "Water:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Water:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(130,130,130)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Water:1", + "type": "symbol", + "source": "esri", + "source-layer": "Water:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Water:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(130,130,130)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Woodland:2", + "type": "symbol", + "source": "esri", + "source-layer": "Woodland:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Woodland:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(121,121,121)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Woodland:1", + "type": "symbol", + "source": "esri", + "source-layer": "Woodland:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Woodland:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(121,121,121)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/A & B Road 2800-11200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 7], + "minzoom": 14, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(141,141,141)", + "text-halo-color": "rgb(1,1,1)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/A & B Road 11200-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 8], + "minzoom": 13, + "maxzoom": 14, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 13, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(141,141,141)", + "text-halo-color": "rgb(1,1,1)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/A & B Road 22400-358400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 9], + "minzoom": 9, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(141,141,141)", + "text-halo-color": "rgb(1,1,1)", + "text-halo-width": 1.6 + } + }, + { + "id": "OS/Roads/label/A & B Road Name 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 10], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(127,127,127)", + "text-halo-color": "rgba(1,1,1,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/A & B Road Name 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 11], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(153,153,153)", + "text-halo-color": "rgba(1,1,1,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Railway_stations/label/Station names 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_label_class1", 1], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "top", + "text-offset": { + "property": "_symbol", + "type": "categorical", + "default": [0, 0.0333333], + "stops": [ + [0, [0, 0.631292]], + [1, [0, 0.359493]], + [2, [0, 0.609832]], + [3, [0, 0.629975]], + [4, [0, 0.625794]], + [5, [0, 0.410354]] + ] + }, + "text-letter-spacing": 0.05, + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(255,255,255)", + "text-halo-color": "rgb(6,6,6)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Railway_stations/label/Station names 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_label_class", 0], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-offset": { + "property": "_symbol", + "type": "categorical", + "default": [0, 0.1], + "stops": [ + [0, [0, 0.638163]], + [1, [0, 0.393543]], + [2, [0, 0.618849]], + [3, [0, 0.636977]], + [4, [0, 0.633215]], + [5, [0, 0.439319]] + ] + }, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(255,255,255)", + "text-halo-color": "rgb(6,6,6)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Small Settlement", + "type": "symbol", + "source": "esri", + "source-layer": "Small Settlement", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Small Settlement", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(162,162,162)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Landcover:1", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Landcover:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(112,112,112)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 0.7 + } + }, + { + "id": "OS/Names/Local/Hamlet (Local)", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet (Local)", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Hamlet (Local)", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 17, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(173,173,173)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Hamlet:2", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Hamlet:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(173,173,173)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Hamlet:1", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Hamlet:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(173,173,173)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Suburban Area:3", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Suburban Area:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 15, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(162,162,162)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Suburban Area:1", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Suburban Area:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(162,162,162)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Suburban Area:2", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Suburban Area:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(162,162,162)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 3], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(79,79,79)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 4], + "minzoom": 10, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 12, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(79,79,79)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 179200-716800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 5], + "minzoom": 8, + "maxzoom": 10, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(79,79,79)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary Name 2800-44800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 6], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(79,79,79)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Village:2", + "type": "symbol", + "source": "esri", + "source-layer": "Village:2", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Village:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(173,173,173)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/District/Village:3", + "type": "symbol", + "source": "esri", + "source-layer": "Village:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Village:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(173,173,173)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/Regional/Village:1", + "type": "symbol", + "source": "esri", + "source-layer": "Village:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Village:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(173,173,173)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1 + } + }, + { + "id": "OS/Roads/label/Motorway 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 0], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(106,106,106)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Motorway 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 1], + "minzoom": 10, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 12, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(106,106,106)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Motorway 179200-2867200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 2], + "minzoom": 6, + "maxzoom": 10, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(3,3,3)", + "text-halo-color": "rgb(106,106,106)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Airports/label/Airport names 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "filter": ["==", "_label_class1", 1], + "minzoom": 10, + "maxzoom": 13, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "top", + "text-offset": [0, 0.582306], + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(207,207,207)", + "text-halo-color": "rgb(12,12,12)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Airports/label/Airport names 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "filter": ["==", "_label_class", 0], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom", + "text-offset": [0, 0.688753], + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(207,207,207)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/National Park:3", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/National Park:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(121,121,121)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/Local/Motorway Junctions", + "type": "symbol", + "source": "esri", + "source-layer": "Motorway Junctions", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Motorway Junctions", + "icon-allow-overlap": true, + "text-font": ["Arial Bold"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(220,220,220,0)", + "text-color": "rgb(1,1,1)", + "text-halo-color": "rgb(145,145,145)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/Local/Town:4", + "type": "symbol", + "source": "esri", + "source-layer": "Town:4", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Town:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 19, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(211,211,211)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/District/Town:1", + "type": "symbol", + "source": "esri", + "source-layer": "Town:1", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Town:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(211,211,211)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.7 + } + }, + { + "id": "OS/Names/Regional/Town:2", + "type": "symbol", + "source": "esri", + "source-layer": "Town:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Town:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(211,211,211)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Town:3", + "type": "symbol", + "source": "esri", + "source-layer": "Town:3", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Town:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(157,157,157)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/National Park:2", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/National Park:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(121,121,121)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/National Park:1", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:1", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/National Park:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(121,121,121)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/City:3", + "type": "symbol", + "source": "esri", + "source-layer": "City:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/City:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 21, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/District/City:4", + "type": "symbol", + "source": "esri", + "source-layer": "City:4", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/City:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 17, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/Regional/City:1", + "type": "symbol", + "source": "esri", + "source-layer": "City:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/City:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Semibold"], + "text-size": 17, + "text-anchor": "center", + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/City:2", + "type": "symbol", + "source": "esri", + "source-layer": "City:2", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/City:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Capital:3", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Capital:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 24, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/District/Capital:4", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:4", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Capital:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 20, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/Regional/Capital:2", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Capital:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Semibold"], + "text-size": 18, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(202,202,202,0)", + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Capital:1/label/Capital National", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "filter": ["==", "_label_class", 0], + "minzoom": 5, + "maxzoom": 9, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "rgb(214,214,214)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Country/label/Country National", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "filter": ["==", "_label_class", 0], + "minzoom": 5, + "maxzoom": 9, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 21, + "text-anchor": "center", + "text-letter-spacing": 0.75, + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "text-color": "rgba(212,212,212,0.5)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Capital:1/label/Capital National 1:5.7m+", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "filter": ["==", "_label_class1", 1], + "maxzoom": 5, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.270711, 0.0292893], + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgba(214,214,214,0.75)" + } + }, + { + "id": "OS/Names/National/Country/label/Country National 1:5.7m+", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "filter": ["==", "_label_class1", 1], + "maxzoom": 5, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 16, + "text-anchor": "center", + "text-letter-spacing": 0.5, + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgba(212,212,212,0.5)", + "text-halo-color": "rgb(11,11,11)", + "text-halo-width": 1.5 + } + } + ] +} diff --git a/src/server/plugins/map/routes/vts/OS_VTS_3857_Outdoor.json b/src/server/plugins/map/routes/vts/OS_VTS_3857_Outdoor.json new file mode 100644 index 000000000..54487515e --- /dev/null +++ b/src/server/plugins/map/routes/vts/OS_VTS_3857_Outdoor.json @@ -0,0 +1,7653 @@ +{ + "version": 8, + "_sprite": "https://api.os.uk/maps/vector/v1/vts/resources/sprites/sprite", + "sprite": "https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857/resources/sprites/sprite", + "glyphs": "https://api.os.uk/maps/vector/v1/vts/resources/fonts/{fontstack}/{range}.pbf", + "sources": { + "esri": { + "type": "vector", + "url": "https://api.os.uk/maps/vector/v1/vts" + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#FEFFFF" + } + }, + { + "id": "Background", + "type": "fill", + "source": "esri", + "source-layer": "Background", + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "European_land/1", + "type": "fill", + "source": "esri", + "source-layer": "European_land", + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#FAFAF3" + } + }, + { + "id": "OS/GB_land/1", + "type": "fill", + "source": "esri", + "source-layer": "GB_land", + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/National_parks/1", + "type": "fill", + "source": "esri", + "source-layer": "National_parks", + "minzoom": 5, + "maxzoom": 11, + "layout": {}, + "paint": { + "fill-color": "#E2EFCE", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Urban_areas/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "filter": ["==", "_symbol", 0], + "minzoom": 5, + "maxzoom": 9, + "layout": {}, + "paint": { + "fill-color": "rgba(220,215,198,0.3)" + } + }, + { + "id": "OS/Urban_areas/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Urban_areas", + "filter": ["==", "_symbol", 1], + "minzoom": 9, + "maxzoom": 10, + "layout": {}, + "paint": { + "fill-color": "rgba(220,215,198,0.7)" + } + }, + { + "id": "OS/Functional_sites/Air Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 0], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E6E6E6", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Education/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 1], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F7EACA", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Medical Care/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 2], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F3D8E7", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Road Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 3], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F7F3CA", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Functional_sites/Water Transport/1", + "type": "fill", + "source": "esri", + "source-layer": "Functional_sites", + "filter": ["==", "_symbol", 4], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#D8E6F3", + "fill-opacity": 0.5 + } + }, + { + "id": "OS/Greenspace:2/1", + "type": "fill", + "source": "esri", + "source-layer": "Greenspace:2", + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E3F0DB" + } + }, + { + "id": "OS/Greenspace:2/0", + "type": "line", + "source": "esri", + "source-layer": "Greenspace:2", + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#DBE6D5", + "line-width": { + "stops": [ + [10, 0], + [11, 0], + [12, 0], + [13, 0], + [14, 0.1], + [15, 0.15], + [16, 0.25] + ] + } + } + }, + { + "id": "OS/TopographicArea_1/Unclassified", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 48], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F8F6F0" + } + }, + { + "id": "OS/TopographicArea_1/Landform Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 47], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F2F2E9" + } + }, + { + "id": "OS/TopographicArea_1/Tidal Water", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 46], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "OS/TopographicArea_1/Landform Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 45], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E4EFDA" + } + }, + { + "id": "OS/TopographicArea_1/Glasshouse", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 44], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F3F9F4" + } + }, + { + "id": "OS/TopographicArea_1/Rail Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 42], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCE5D3" + } + }, + { + "id": "OS/TopographicArea_1/Structure", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 43], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E7C9C8" + } + }, + { + "id": "OS/TopographicArea_1/Rail Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 41], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#CCCBCB" + } + }, + { + "id": "OS/TopographicArea_1/Path", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 40], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCDCDB" + } + }, + { + "id": "OS/TopographicArea_1/Inland Water", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 39], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "OS/TopographicArea_1/Roadside Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 38], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F2F2E9" + } + }, + { + "id": "OS/TopographicArea_1/Roadside Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 37], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DDE6D5" + } + }, + { + "id": "OS/TopographicArea_1/Road Or Track", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 36], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#FCFDFF" + } + }, + { + "id": "OS/TopographicArea_1/Natural", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 34], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E4EFDA" + } + }, + { + "id": "OS/TopographicArea_1/Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 35], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F2F2E9" + } + }, + { + "id": "OS/TopographicArea_1/Foreshore", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 30], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EAEAD2" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/3", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/3" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/2" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/1" + } + }, + { + "id": "OS/TopographicArea_1/Reeds/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 29], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Reeds/0" + } + }, + { + "id": "OS/TopographicArea_1/Marsh/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 28], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#E4F3F4" + } + }, + { + "id": "OS/TopographicArea_1/Shingle", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 27], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EAEAE4" + } + }, + { + "id": "OS/TopographicArea_1/Marsh/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 28], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Marsh/0" + } + }, + { + "id": "OS/TopographicArea_1/Mud", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 26], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E8E4DD" + } + }, + { + "id": "OS/TopographicArea_1/Sand", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 25], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F4F0D3" + } + }, + { + "id": "OS/TopographicArea_1/Saltmarsh/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 24], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#E4F3F4" + } + }, + { + "id": "OS/TopographicArea_1/Heath/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 23], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E2EFCE" + } + }, + { + "id": "OS/TopographicArea_1/Saltmarsh/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 24], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Saltmarsh/0" + } + }, + { + "id": "OS/TopographicArea_1/Heath/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 23], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Heath/0" + } + }, + { + "id": "OS/TopographicArea_1/Rough Grassland/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 22], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E2EFCE" + } + }, + { + "id": "OS/TopographicArea_1/Rough Grassland/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 22], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Rough Grassland/0" + } + }, + { + "id": "OS/TopographicArea_1/Scree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 21], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EAEAE4" + } + }, + { + "id": "OS/TopographicArea_1/Scree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 21], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scree/0" + } + }, + { + "id": "OS/TopographicArea_1/Rock/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 20], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EAEAE4" + } + }, + { + "id": "OS/TopographicArea_1/Rock/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 20], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Rock/0" + } + }, + { + "id": "OS/TopographicArea_1/Boulders/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 19], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EAEAE4" + } + }, + { + "id": "OS/TopographicArea_1/Boulders/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 19], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Boulders/0" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E2EFCE" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/3", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/3" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/2" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/1" + } + }, + { + "id": "OS/TopographicArea_1/Scrub/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 18], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Scrub/0" + } + }, + { + "id": "OS/TopographicArea_1/Coppice Or Osiers/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 17], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/TopographicArea_1/Coppice Or Osiers/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 17], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Coppice Or Osiers/0" + } + }, + { + "id": "OS/TopographicArea_1/Orchard/2", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 16], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/TopographicArea_1/Agricultural Land", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 15], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/TopographicArea_1/Orchard/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 16], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Orchard/0" + } + }, + { + "id": "OS/TopographicArea_1/Coniferous Tree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 14], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/TopographicArea_1/Coniferous Tree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 14], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Coniferous Tree/0" + } + }, + { + "id": "OS/TopographicArea_1/Nonconiferous Tree/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 13], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/TopographicArea_1/Nonconiferous Tree/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 13], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Nonconiferous Tree/0" + } + }, + { + "id": "OS/TopographicArea_1/Mixed Woodland/4", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 12], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/TopographicArea_1/Footbridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 11], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#E8CFCC" + } + }, + { + "id": "OS/TopographicArea_1/Mixed Woodland/0", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 12], + "minzoom": 15, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Mixed Woodland/0" + } + }, + { + "id": "OS/TopographicArea_1/Canal", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 10], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "OS/TopographicArea_1/Step", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 9], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCDCDB" + } + }, + { + "id": "OS/TopographicArea_1/Track", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 8], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCDCDB" + } + }, + { + "id": "OS/TopographicArea_1/Pylon", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 7], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EEE8D3" + } + }, + { + "id": "OS/TopographicArea_1/Traffic Calming", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 6], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#FCFDFF" + } + }, + { + "id": "OS/TopographicArea_1/Level Crossing", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 5], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#FCFDFF" + } + }, + { + "id": "OS/TopographicArea_1/Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 4], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#D6D2D2" + } + }, + { + "id": "OS/TopographicArea_1/Rail Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 3], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#B3B3B3" + } + }, + { + "id": "OS/TopographicArea_1/Road Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 2], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#FCFDFF" + } + }, + { + "id": "OS/TopographicArea_1/Archway", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 1], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCD7C6" + } + }, + { + "id": "OS/TopographicArea_1/Multi Surface", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 0], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EEEFDA" + } + }, + { + "id": "OS/TopographicArea_1/Cliff", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 32], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Cliff" + } + }, + { + "id": "OS/TopographicArea_1/Slope", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 31], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-pattern": "OS/TopographicArea_1/Slope" + } + }, + { + "id": "OS/Woodland:3/Local/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "filter": ["==", "_symbol", 0], + "minzoom": 12, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/Woodland:3/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "filter": ["==", "_symbol", 1], + "minzoom": 5, + "maxzoom": 10, + "layout": {}, + "paint": { + "fill-color": "rgba(209,231,195,0.6)" + } + }, + { + "id": "OS/Woodland:3/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Woodland:3", + "filter": ["==", "_symbol", 2], + "minzoom": 10, + "maxzoom": 12, + "layout": {}, + "paint": { + "fill-color": "#D1E7C3" + } + }, + { + "id": "OS/District_buildings/1", + "type": "fill", + "source": "esri", + "source-layer": "District_buildings", + "minzoom": 10, + "maxzoom": 12, + "layout": {}, + "paint": { + "fill-color": "#DCD7C6" + } + }, + { + "id": "OS/Local_buildings/1", + "type": "fill", + "source": "esri", + "source-layer": "Local_buildings", + "minzoom": 12, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCD7C6" + } + }, + { + "id": "OS/Contours/Index", + "type": "line", + "source": "esri", + "source-layer": "Contours", + "filter": ["==", "_symbol", 0], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#857660", + "line-width": { + "stops": [ + [7, 0.1], + [8, 0.13], + [9, 0.4], + [10, 0.4], + [11, 0.53], + [12, 0.67], + [13, 0.8], + [14, 1], + [15, 1], + [16, 1.1] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "OS/Contours/Normal", + "type": "line", + "source": "esri", + "source-layer": "Contours", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#857660", + "line-width": { + "stops": [ + [12, 0.4], + [13, 0.4], + [14, 0.5], + [15, 0.5], + [16, 0.7] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "OS/Surfacewater/Local", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "filter": ["==", "_symbol", 0], + "minzoom": 11, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF", + "fill-outline-color": "#A9DDEF" + } + }, + { + "id": "OS/Surfacewater/National/1", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "filter": ["==", "_symbol", 1], + "minzoom": 6, + "maxzoom": 7, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "OS/Surfacewater/Regional/1", + "type": "fill", + "source": "esri", + "source-layer": "Surfacewater", + "filter": ["==", "_symbol", 2], + "minzoom": 7, + "maxzoom": 11, + "layout": {}, + "paint": { + "fill-color": "#A9DDEF" + } + }, + { + "id": "OS/Foreshore/1", + "type": "fill", + "source": "esri", + "source-layer": "Foreshore", + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#EAEAD2" + } + }, + { + "id": "OS/Ornament/1", + "type": "fill", + "source": "esri", + "source-layer": "Ornament", + "minzoom": 12, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#BABABA", + "fill-opacity": 0.6 + } + }, + { + "id": "OS/TopographicArea_2/Structure", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 6], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/TopographicArea_2/Manmade", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 5], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/TopographicArea_2/Building/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 4], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCD7C6" + } + }, + { + "id": "OS/TopographicArea_2/Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 3], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/TopographicArea_2/Rail Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 2], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/TopographicArea_2/Road Bridge", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 1], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#F5F5F0" + } + }, + { + "id": "OS/TopographicArea_2/Archway", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_2", + "filter": ["==", "_symbol", 0], + "minzoom": 15, + "maxzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCD7C6" + } + }, + { + "id": "OS/TopographicLine/Property Closing Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 0], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#969696", + "line-dasharray": [6, 6], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Step", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 1], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#B2B1B1", + "line-width": { + "stops": [ + [6, 0.4], + [17, 0.4], + [18, 0.8], + [19, 1.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Mean High Water", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 2], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#7ED2E0", + "line-width": { + "stops": [ + [6, 0.8], + [17, 0.9], + [18, 1.3], + [19, 2.1] + ] + } + } + }, + { + "id": "OS/TopographicLine/Traffic Calming", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 3], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#BFBFBF", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Standard Gauge Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 4], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-width": { + "stops": [ + [17, 0.8], + [18, 1.2], + [19, 2.3] + ] + } + } + }, + { + "id": "OS/TopographicLine/Mean Low Water", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 5], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#7ED2E0", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.6] + ] + } + } + }, + { + "id": "OS/TopographicLine/Path", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 6], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#7A7977", + "line-dasharray": [6, 4], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Overhead Construction", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 7], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#AEB4A6", + "line-dasharray": [2, 2], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Culvert", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 8], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#7ED2E0", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Pylon", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 9], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#95968F", + "line-width": { + "stops": [ + [17, 1], + [18, 1.8], + [19, 2.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Ridge Or Rock Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 10], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#BEBEB4", + "line-width": { + "stops": [ + [17, 1.3], + [18, 2], + [19, 2.5] + ] + } + } + }, + { + "id": "OS/TopographicLine/Narrow Gauge Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 11], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Railway Buffer", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 12], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 1.8] + ] + } + } + }, + { + "id": "OS/TopographicLine/Tunnel Edge", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 13], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-dasharray": [2.5, 2.5], + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 2.1] + ] + } + } + }, + { + "id": "OS/TopographicLine/Line Of Posts", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 14], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#8C8C8C", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Drain", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 15], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#7ED2E0", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Default Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 16], + "minzoom": 15, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#7A7977", + "line-width": { + "stops": [ + [16, 0.4], + [18, 0.7], + [19, 1.3] + ] + } + } + }, + { + "id": "OS/TopographicArea_1/Building/1", + "type": "fill", + "source": "esri", + "source-layer": "TopographicArea_1", + "filter": ["==", "_symbol", 33], + "minzoom": 16, + "layout": {}, + "paint": { + "fill-color": "#DCD7C6" + } + }, + { + "id": "OS/TopographicLine/Building Outline", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 17], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#BBB49C", + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Edge Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 18], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#969696", + "line-dasharray": [2, 2], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Road Or Track", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 19], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#817E79", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Building Division", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 20], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#BBB49C", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Inland water Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 21], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#7ED2E0", + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/General Surface Natural Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 22], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#969696", + "line-dasharray": [2, 2], + "line-width": 0.6 + } + }, + { + "id": "OS/TopographicLine/Building Overhead Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 23], + "minzoom": 15, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#7A7977", + "line-dasharray": [6, 4], + "line-width": { + "stops": [ + [16, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Landform Natural Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 24], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#BEBEB4", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Historic Interest Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 25], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#969696", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Landform Manmade Line", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 26], + "minzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#BEBEB4", + "line-dasharray": [4, 4], + "line-width": { + "stops": [ + [17, 0.7], + [18, 1.3], + [19, 2] + ] + } + } + }, + { + "id": "OS/TopographicLine/Unclassified", + "type": "line", + "source": "esri", + "source-layer": "TopographicLine", + "filter": ["==", "_symbol", 27], + "minzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#BBB49C", + "line-width": { + "stops": [ + [17, 0.5], + [18, 1], + [19, 2] + ] + } + } + }, + { + "id": "OS/Waterlines/District", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 0], + "minzoom": 9, + "maxzoom": 11, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 0.9 + } + }, + { + "id": "OS/Waterlines/Local", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/Local_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/MHW", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 2], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 1.6 + } + }, + { + "id": "OS/Waterlines/MHW_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 2], + "minzoom": 8, + "maxzoom": 12, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 1.3 + } + }, + { + "id": "OS/Waterlines/MLW", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 3], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 0.8 + } + }, + { + "id": "OS/Waterlines/MLW_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 3], + "minzoom": 8, + "maxzoom": 10, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 0.5 + } + }, + { + "id": "OS/Waterlines/National", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 4], + "minzoom": 5, + "maxzoom": 6, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 0.4 + } + }, + { + "id": "OS/Waterlines/Regional", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 5], + "minzoom": 7, + "maxzoom": 9, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 1 + } + }, + { + "id": "OS/Waterlines/Regional_1", + "type": "line", + "source": "esri", + "source-layer": "Waterlines", + "filter": ["==", "_symbol", 5], + "minzoom": 6, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#A4DAEB", + "line-width": 0.5 + } + }, + { + "id": "OS/Roads/Tunnels,", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 19], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "line-color": "#949197", + "line-dasharray": [4, 2.5], + "line-width": { + "stops": [ + [9, 0.7], + [12, 0.8], + [14, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 6], + "minzoom": 7, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": 1.3 + } + }, + { + "id": "OS/Roads/Motorway,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 0], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#4E94A3", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.6], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 0], + "minzoom": 5, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#08B7E7", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 3], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#73A06F", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,0_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 3], + "minzoom": 5, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#77C776", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 6], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#A09C92", + "line-width": { + "stops": [ + [5, 2.7], + [8, 2.7], + [9, 3.3], + [10, 4], + [12, 4.7], + [13, 5.7], + [14, 6.3], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 8], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#9F9C93", + "line-width": { + "stops": [ + [8, 4], + [9, 2.7], + [10, 3.3], + [12, 4.7], + [13, 5.7], + [14, 6], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 10], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#C6C6C1", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 13], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#CECDCA", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 6], + [16, 8.7] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 15], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#CECDCA", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 5.3], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,0/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 17], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#C6C6C1", + "line-width": { + "stops": [ + [12, 4], + [13, 4], + [14, 5.3], + [15, 6.7], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 6], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [5, 1.8], + [8, 1.8], + [9, 2.3], + [10, 2.8], + [12, 3.2], + [13, 3.9], + [14, 4.4], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 8], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [8, 2.8], + [9, 1.8], + [10, 2.3], + [12, 3.2], + [13, 3.9], + [14, 4.2], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 10], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.2], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 13], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [13, 2.3], + [14, 2.9], + [15, 3.75], + [16, 5.4] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 15], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [13, 2], + [14, 2.7], + [15, 3], + [16, 4.2] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 17], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [12, 2], + [13, 2], + [14, 2.7], + [15, 3.3], + [16, 3.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 0], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#08B7E7", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,0/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 3], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#77C776", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 1], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#4E94A3", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.7], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 1], + "minzoom": 5, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#08B7E7", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 4], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#73A06F", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 4], + "minzoom": 5, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#77C776", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 7], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#9F9C93", + "line-width": { + "stops": [ + [5, 2.7], + [8, 2.7], + [9, 3.3], + [10, 4], + [12, 4.7], + [13, 5.7], + [14, 6.3], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 7], + "minzoom": 7, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": 1.3 + } + }, + { + "id": "OS/Roads/B Road,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 9], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#9F9C93", + "line-width": { + "stops": [ + [8, 4], + [9, 2.7], + [10, 3.3], + [12, 4.7], + [13, 5.7], + [14, 6], + [15, 8], + [16, 13.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 11], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#C6C6C1", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 14], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#CECDCA", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 6], + [16, 8.7] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 16], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#CECDCA", + "line-width": { + "stops": [ + [13, 3.7], + [14, 4.7], + [15, 5.3], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,1/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 18], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#C6C6C1", + "line-width": { + "stops": [ + [12, 4], + [13, 4], + [14, 5.3], + [15, 6.7], + [16, 7.3] + ] + } + } + }, + { + "id": "OS/Roads/A Road,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 7], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [5, 1.8], + [8, 1.8], + [9, 2.3], + [10, 2.8], + [12, 3.2], + [13, 3.9], + [14, 4.4], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/B Road,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 9], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [8, 2.8], + [9, 1.8], + [10, 2.3], + [12, 3.2], + [13, 3.9], + [14, 4.2], + [15, 5.6], + [16, 9.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 11], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.2], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Roads/Local,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 14], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [13, 2.3], + [14, 2.9], + [15, 3.75], + [16, 5.4] + ] + } + } + }, + { + "id": "OS/Roads/Restricted,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 16], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [13, 2], + [14, 2.7], + [15, 3], + [16, 4.2] + ] + } + } + }, + { + "id": "OS/Roads/Guided Busway,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 18], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [12, 2], + [13, 2], + [14, 2.7], + [15, 3.3], + [16, 3.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 1], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#08B7E7", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,1/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 4], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#77C776", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 2], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#4E94A3", + "line-width": { + "stops": [ + [6, 4], + [7, 4], + [8, 4.7], + [9, 5.3], + [10, 5.7], + [12, 6], + [13, 6.7], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 2], + "minzoom": 5, + "maxzoom": 7, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#08B7E7", + "line-width": 2 + } + }, + { + "id": "OS/Roads/Primary,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 5], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#73A06F", + "line-width": { + "stops": [ + [5, 4], + [8, 3.3], + [9, 4], + [10, 5.3], + [12, 5.3], + [13, 6.3], + [14, 7.3], + [15, 10.7], + [16, 16] + ] + } + } + }, + { + "id": "OS/Roads/Primary,2_1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 5], + "minzoom": 5, + "maxzoom": 8, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#77C776", + "line-width": { + "stops": [ + [5, 1.3], + [7, 2], + [8, 1.3] + ] + } + } + }, + { + "id": "OS/Roads/Minor,2/1", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 12], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#C6C6C1", + "line-width": { + "stops": [ + [9, 3], + [10, 3], + [12, 4], + [13, 5.3], + [14, 6.7], + [15, 7.3], + [16, 10.7] + ] + } + } + }, + { + "id": "OS/Roads/Motorway,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 2], + "minzoom": 7, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#08B7E7", + "line-width": { + "stops": [ + [6, 3], + [7, 3], + [8, 3.5], + [9, 4], + [10, 4.25], + [12, 4.5], + [13, 5], + [14, 5.5], + [15, 8], + [16, 12] + ] + } + } + }, + { + "id": "OS/Roads/Primary,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 5], + "minzoom": 8, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#77C776", + "line-width": { + "stops": [ + [5, 2.5], + [8, 2], + [9, 2.5], + [10, 3.3], + [12, 3.3], + [13, 3.9], + [14, 4.5], + [15, 6.7], + [16, 10] + ] + } + } + }, + { + "id": "OS/Roads/Minor,2/0", + "type": "line", + "source": "esri", + "source-layer": "Roads", + "filter": ["==", "_symbol", 12], + "minzoom": 10, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#FFFFFF", + "line-width": { + "stops": [ + [9, 1.875], + [10, 1.875], + [12, 2.5], + [13, 3.3], + [14, 4.1], + [15, 4.5], + [16, 6.7] + ] + } + } + }, + { + "id": "OS/Railways/Multi Track", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 0], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-width": { + "stops": [ + [10, 1.4], + [11, 1.4], + [12, 1.4], + [13, 1.5], + [14, 1.5], + [15, 2], + [16, 1.3] + ] + } + } + }, + { + "id": "OS/Railways/Narrow Gauge", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 1], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-width": { + "stops": [ + [12, 0.4], + [13, 0.4], + [14, 0.4], + [15, 0.5], + [16, 0.5] + ] + } + } + }, + { + "id": "OS/Railways/Single Track", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 2], + "minzoom": 9, + "maxzoom": 16, + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#949197", + "line-width": { + "stops": [ + [10, 1.2], + [11, 1.2], + [12, 1.2], + [13, 1.2], + [14, 1.2], + [15, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/Railways/Tunnel", + "type": "line", + "source": "esri", + "source-layer": "Railways", + "filter": ["==", "_symbol", 3], + "minzoom": 9, + "maxzoom": 16, + "layout": {}, + "paint": { + "line-color": "#949197", + "line-dasharray": [4, 2], + "line-width": { + "stops": [ + [10, 1], + [11, 1], + [12, 1], + [13, 1], + [14, 1], + [15, 1.6], + [16, 1.6] + ] + } + } + }, + { + "id": "OS/ETL", + "type": "line", + "source": "esri", + "source-layer": "ETL", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#978282", + "line-dasharray": [6, 3], + "line-width": { + "stops": [ + [13, 1.3], + [14, 1.3], + [15, 2.2], + [16, 1.7] + ] + }, + "line-opacity": 0.5 + } + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 0], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station", + "icon-size": { + "stops": [ + [12, 0.5], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 1], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station", + "icon-size": { + "stops": [ + [12, 0.5], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 1], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And London Underground Station_1", + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Light Rapid Transit Station And Railway Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 2], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Light Rapid Transit Station And Railway Station", + "icon-size": { + "stops": [ + [12, 0.7], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 3], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/London Underground Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Railway Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 4], + "minzoom": 11, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Railway Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.7], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Railway Station And London Underground Station", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 5], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Railway_stations/Railway Station And London Underground Station", + "icon-size": { + "stops": [ + [12, 0.6], + [13, 0.8], + [14, 0.8], + [15, 0.9], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Railway_stations/Railway Station And London Underground Station_1", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_symbol", 5], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Railway_stations/Railway Station And London Underground Station_1", + "icon-allow-overlap": true + }, + "paint": {} + }, + { + "id": "OS/Airports", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "minzoom": 8, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Airports", + "icon-size": { + "stops": [ + [9, 0.85], + [10, 0.85], + [11, 0.85], + [12, 0.85], + [13, 1], + [14, 1], + [15, 1], + [16, 1] + ] + }, + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "#242424" + } + }, + { + "id": "OS/TopographicPoint/Spot Height", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 0], + "minzoom": 16, + "layout": { + "icon-image": "OS/TopographicPoint/Spot Height", + "icon-size": { + "stops": [ + [17, 0.6], + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#857660" + } + }, + { + "id": "OS/TopographicPoint/Site Of Heritage", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 1], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Site Of Heritage", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#7D7D7D" + } + }, + { + "id": "OS/TopographicPoint/Positioned Nonconiferous Tree", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 2], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Positioned Nonconiferous Tree", + "icon-size": { + "stops": [ + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#296314" + } + }, + { + "id": "OS/TopographicPoint/Inland Water", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 3], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Inland Water", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#318FAE" + } + }, + { + "id": "OS/TopographicPoint/Roadside", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 4], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Roadside", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#655314" + } + }, + { + "id": "OS/TopographicPoint/Overhead Construction", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 5], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Overhead Construction", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#655314" + } + }, + { + "id": "OS/TopographicPoint/Rail", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 6], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Rail", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#7D7D7D" + } + }, + { + "id": "OS/TopographicPoint/Positioned Coniferous Tree", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 7], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Positioned Coniferous Tree", + "icon-size": { + "stops": [ + [18, 1], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#296314" + } + }, + { + "id": "OS/TopographicPoint/Triangulation Point Or Pillar", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 8], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Triangulation Point Or Pillar", + "icon-size": { + "stops": [ + [18, 1.25], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#655314" + } + }, + { + "id": "OS/TopographicPoint/Historic Interest", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 9], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Historic Interest", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#7D7D7D" + } + }, + { + "id": "OS/TopographicPoint/Landform", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 10], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Landform", + "icon-size": { + "stops": [ + [18, 1.3], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "rgba(240,240,240,0)" + } + }, + { + "id": "OS/TopographicPoint/Tidal Water", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 11], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Tidal Water", + "icon-size": { + "stops": [ + [18, 1.4], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#318FAE" + } + }, + { + "id": "OS/TopographicPoint/Structure", + "type": "symbol", + "source": "esri", + "source-layer": "TopographicPoint", + "filter": ["==", "_symbol", 12], + "minzoom": 17, + "layout": { + "icon-image": "OS/TopographicPoint/Structure", + "icon-size": { + "stops": [ + [18, 1.4], + [19, 2] + ] + }, + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#655314" + } + }, + { + "id": "OS/CartographicSymbol/Culvert Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "filter": ["==", "_symbol", 0], + "minzoom": 17, + "layout": { + "icon-image": "OS/CartographicSymbol/Culvert Symbol", + "icon-size": { + "stops": [ + [18, 1.6], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#318FAE" + } + }, + { + "id": "OS/CartographicSymbol/Bench Mark Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "filter": ["==", "_symbol", 2], + "minzoom": 17, + "layout": { + "icon-image": "OS/CartographicSymbol/Bench Mark Symbol", + "icon-size": { + "stops": [ + [18, 1.2], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#655314" + } + }, + { + "id": "OS/CartographicSymbol/Road Related Flow Symbol", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicSymbol", + "filter": ["==", "_symbol", 3], + "minzoom": 17, + "layout": { + "icon-image": "OS/CartographicSymbol/Road Related Flow Symbol", + "icon-size": { + "stops": [ + [18, 1.1], + [19, 2] + ] + }, + "icon-rotate": ["get", "angle"], + "icon-allow-overlap": true, + "icon-rotation-alignment": "map" + }, + "paint": { + "icon-color": "#655314" + } + }, + { + "id": "OS/Names/National/Capital:1", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Capital:1", + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)" + } + }, + { + "id": "OS/Names/National/Country", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Country", + "icon-allow-overlap": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class79", 79], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "center", + "text-offset": [0.107527, 0], + "text-rotate": ["get", "_label_angle79"], + "text-letter-spacing": 0.05, + "text-field": "{_name79}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Height - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class64", 64], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-letter-spacing": 0.05, + "text-field": "{_name64}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Buildings - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class74", 74], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle74"], + "text-letter-spacing": 0.05, + "text-field": "{_name74}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Roads - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class97", 97], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle97"], + "text-letter-spacing": 0.05, + "text-field": "{_name97}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class87", 87], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle87"], + "text-letter-spacing": 0.05, + "text-field": "{_name87}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class72", 72], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle72"], + "text-letter-spacing": 0.05, + "text-field": "{_name72}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Buildings - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class73", 73], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle73"], + "text-letter-spacing": 0.05, + "text-field": "{_name73}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Height - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class61", 61], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-letter-spacing": 0.05, + "text-field": "{_name61}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Roads - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class99", 99], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle99"], + "text-letter-spacing": 0.05, + "text-field": "{_name99}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class96", 96], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle96"], + "text-letter-spacing": 0.05, + "text-field": "{_name96}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class95", 95], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle95"], + "text-letter-spacing": 0.05, + "text-field": "{_name95}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class89", 89], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle89"], + "text-letter-spacing": 0.05, + "text-field": "{_name89}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class86", 86], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle86"], + "text-letter-spacing": 0.05, + "text-field": "{_name86}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class85", 85], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-rotate": ["get", "_label_angle85"], + "text-letter-spacing": 0.05, + "text-field": "{_name85}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Buildings - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class76", 76], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle76"], + "text-letter-spacing": 0.05, + "text-field": "{_name76}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Height - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class66", 66], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-letter-spacing": 0.05, + "text-field": "{_name66}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Water - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class53", 53], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0952381, 0], + "text-rotate": ["get", "_label_angle53"], + "text-letter-spacing": 0.05, + "text-field": "{_name53}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class54", 54], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle54"], + "text-letter-spacing": 0.05, + "text-field": "{_name54}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Roads - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class100", 100], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle100"], + "text-letter-spacing": 0.05, + "text-field": "{_name100}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class90", 90], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle90"], + "text-letter-spacing": 0.05, + "text-field": "{_name90}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Buildings - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class77", 77], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle77"], + "text-letter-spacing": 0.05, + "text-field": "{_name77}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Height - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class67", 67], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-letter-spacing": 0.05, + "text-field": "{_name67}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Water - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class55", 55], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle55"], + "text-letter-spacing": 0.05, + "text-field": "{_name55}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Buildings - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class78", 78], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle78"], + "text-letter-spacing": 0.05, + "text-field": "{_name78}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Height - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class68", 68], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-letter-spacing": 0.05, + "text-field": "{_name68}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Water - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class56", 56], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle56"], + "text-letter-spacing": 0.05, + "text-field": "{_name56}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Roads - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class101", 101], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle101"], + "text-letter-spacing": 0.05, + "text-field": "{_name101}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class91", 91], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle91"], + "text-letter-spacing": 0.05, + "text-field": "{_name91}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class69", 69], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle69"], + "text-letter-spacing": 0.05, + "text-field": "{_name69}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Water - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class57", 57], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle57"], + "text-letter-spacing": 0.05, + "text-field": "{_name57}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class92", 92], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle92"], + "text-letter-spacing": 0.05, + "text-field": "{_name92}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class82", 82], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle82"], + "text-letter-spacing": 0.05, + "text-field": "{_name82}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Height - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class60", 60], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name60}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Water - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class58", 58], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle58"], + "text-letter-spacing": 0.05, + "text-field": "{_name58}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Buildings - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class75", 75], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle75"], + "text-letter-spacing": 0.05, + "text-field": "{_name75}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Roads - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class98", 98], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle98"], + "text-letter-spacing": 0.05, + "text-field": "{_name98}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class88", 88], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle88"], + "text-letter-spacing": 0.05, + "text-field": "{_name88}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Water - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class59", 59], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle59"], + "text-letter-spacing": 0.05, + "text-field": "{_name59}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Height - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class65", 65], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-letter-spacing": 0.05, + "text-field": "{_name65}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class52", 52], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle52"]], + "text-letter-spacing": 0.05, + "text-field": "{_name52}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class50", 50], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle50"], + "text-letter-spacing": 0.05, + "text-field": "{_name50}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class40", 40], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle40"], + "text-letter-spacing": 0.05, + "text-field": "{_name40}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class43", 43], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle43"], + "text-letter-spacing": 0.05, + "text-field": "{_name43}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class44", 44], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle44"], + "text-letter-spacing": 0.05, + "text-field": "{_name44}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class45", 45], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle45"], + "text-letter-spacing": 0.05, + "text-field": "{_name45}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class46", 46], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle46"], + "text-letter-spacing": 0.05, + "text-field": "{_name46}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class47", 47], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle47"], + "text-letter-spacing": 0.05, + "text-field": "{_name47}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class48", 48], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle48"], + "text-letter-spacing": 0.05, + "text-field": "{_name48}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - NW(1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class49", 49], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle49"], + "text-letter-spacing": 0.05, + "text-field": "{_name49}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class51", 51], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle51"], + "text-letter-spacing": 0.05, + "text-field": "{_name51}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class42", 42], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle42"]], + "text-letter-spacing": 0.05, + "text-field": "{_name42}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class80", 80], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle80"], + "text-letter-spacing": 0.05, + "text-field": "{_name80}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class94", 94], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle94"]], + "text-letter-spacing": 0.05, + "text-field": "{_name94}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class84", 84], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle84"]], + "text-letter-spacing": 0.05, + "text-field": "{_name84}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class93", 93], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle93"], + "text-letter-spacing": 0.05, + "text-field": "{_name93}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Roads - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class83", 83], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle83"], + "text-letter-spacing": 0.05, + "text-field": "{_name83}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#5C5C5C" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class71", 71], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle71"]], + "text-letter-spacing": 0.05, + "text-field": "{_name71}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Height - West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class63", 63], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-letter-spacing": 0.05, + "text-field": "{_name63}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Height - East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class62", 62], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-letter-spacing": 0.05, + "text-field": "{_name62}", + "text-allow-overlap": true, + "text-optional": true, + "text-keep-upright": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#857660" + } + }, + { + "id": "OS/CartographicText/label/Water - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class41", 41], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle41"], + "text-letter-spacing": 0.05, + "text-field": "{_name41}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#318FAE" + } + }, + { + "id": "OS/CartographicText/label/Buildings - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class70", 70], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle70"], + "text-letter-spacing": 0.05, + "text-field": "{_name70}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Small Buildings - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class81", 81], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Light"], + "text-size": 12.4, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle81"]], + "text-letter-spacing": 0.05, + "text-field": "{_name81}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class32", 32], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle32"]], + "text-letter-spacing": 0.05, + "text-field": "{_name32}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class39", 39], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle39"], + "text-letter-spacing": 0.05, + "text-field": "{_name39}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class38", 38], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle38"], + "text-letter-spacing": 0.05, + "text-field": "{_name38}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class37", 37], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle37"], + "text-letter-spacing": 0.05, + "text-field": "{_name37}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class36", 36], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle36"], + "text-letter-spacing": 0.05, + "text-field": "{_name36}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class35", 35], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle35"], + "text-letter-spacing": 0.05, + "text-field": "{_name35}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class34", 34], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle34"], + "text-letter-spacing": 0.05, + "text-field": "{_name34}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class33", 33], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0930233, 0], + "text-rotate": ["get", "_label_angle33"], + "text-letter-spacing": 0.05, + "text-field": "{_name33}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class30", 30], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "center", + "text-offset": [0.0930233, 0], + "text-rotate": ["get", "_label_angle30"], + "text-letter-spacing": 0.05, + "text-field": "{_name30}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Historic - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class31", 31], + "minzoom": 16, + "layout": { + "text-font": ["Times New Roman Italic"], + "text-size": 14, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle31"], + "text-letter-spacing": 0.05, + "text-field": "{_name31}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#7D7D7D" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class20", 20], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle20"], + "text-letter-spacing": 0.05, + "text-field": "{_name20}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class21", 21], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle21"], + "text-letter-spacing": 0.05, + "text-field": "{_name21}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class22", 22], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle22"]], + "text-letter-spacing": 0.05, + "text-field": "{_name22}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class23", 23], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle23"], + "text-letter-spacing": 0.05, + "text-field": "{_name23}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class24", 24], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle24"], + "text-letter-spacing": 0.05, + "text-field": "{_name24}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class25", 25], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle25"], + "text-letter-spacing": 0.05, + "text-field": "{_name25}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class26", 26], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle26"], + "text-letter-spacing": 0.05, + "text-field": "{_name26}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class27", 27], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle27"], + "text-letter-spacing": 0.05, + "text-field": "{_name27}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class28", 28], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle28"], + "text-letter-spacing": 0.05, + "text-field": "{_name28}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/Natural - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class29", 29], + "minzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle29"], + "text-letter-spacing": 0.05, + "text-field": "{_name29}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#296314" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate West (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class12", 12], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle12"]], + "text-letter-spacing": 0.05, + "text-field": "{_name12}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate West (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class2", 2], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "right", + "text-rotate": ["+", 180, ["get", "_label_angle2"]], + "text-letter-spacing": 0.05, + "text-field": "{_name2}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate East (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class11", 11], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle11"], + "text-letter-spacing": 0.05, + "text-field": "{_name11}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate East (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class1", 1], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "left", + "text-rotate": ["get", "_label_angle1"], + "text-letter-spacing": 0.05, + "text-field": "{_name1}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class10", 10], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle10"], + "text-letter-spacing": 0.05, + "text-field": "{_name10}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Rotate Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class", 0], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle"], + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - South (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class17", 17], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle17"], + "text-letter-spacing": 0.05, + "text-field": "{_name17}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - South (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class7", 7], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-rotate": ["get", "_label_angle7"], + "text-letter-spacing": 0.05, + "text-field": "{_name7}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - NW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class19", 19], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle19"], + "text-letter-spacing": 0.05, + "text-field": "{_name19}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - NW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class9", 9], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-right", + "text-rotate": ["get", "_label_angle9"], + "text-letter-spacing": 0.05, + "text-field": "{_name9}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - SW (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class18", 18], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle18"], + "text-letter-spacing": 0.05, + "text-field": "{_name18}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - SW (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class8", 8], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-right", + "text-rotate": ["get", "_label_angle8"], + "text-letter-spacing": 0.05, + "text-field": "{_name8}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - SE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class16", 16], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle16"], + "text-letter-spacing": 0.05, + "text-field": "{_name16}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - SE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class6", 6], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top-left", + "text-rotate": ["get", "_label_angle6"], + "text-letter-spacing": 0.05, + "text-field": "{_name6}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - NE (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class15", 15], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 10, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle15"], + "text-letter-spacing": 0.05, + "text-field": "{_name15}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - NE (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class5", 5], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom-left", + "text-rotate": ["get", "_label_angle5"], + "text-letter-spacing": 0.05, + "text-field": "{_name5}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - North (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class14", 14], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle14"], + "text-letter-spacing": 0.05, + "text-field": "{_name14}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - North (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class4", 4], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "bottom", + "text-rotate": ["get", "_label_angle4"], + "text-letter-spacing": 0.05, + "text-field": "{_name4}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Central (1:1400)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class13", 13], + "minzoom": 16, + "maxzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-anchor": "center", + "text-offset": [0.117647, 0], + "text-rotate": ["get", "_label_angle13"], + "text-letter-spacing": 0.05, + "text-field": "{_name13}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/CartographicText/label/General - Central (1:700)", + "type": "symbol", + "source": "esri", + "source-layer": "CartographicText", + "filter": ["==", "_label_class3", 3], + "minzoom": 17, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.103093, 0], + "text-rotate": ["get", "_label_angle3"], + "text-letter-spacing": 0.05, + "text-field": "{_name3}", + "text-allow-overlap": true, + "text-optional": true, + "text-rotation-alignment": "map" + }, + "paint": { + "text-color": "#655314" + } + }, + { + "id": "OS/Roads/label/Local Road 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 14], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#737373", + "text-halo-color": "rgba(255,255,255,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Local Road 22400-44800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 15], + "minzoom": 12, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#737373", + "text-halo-color": "rgba(255,255,255,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Minor Road 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 12], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#808080", + "text-halo-color": "rgba(255,255,255,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Minor Road 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 13], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#666666", + "text-halo-color": "rgba(255,255,255,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Greenspace:1", + "type": "symbol", + "source": "esri", + "source-layer": "Greenspace:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Greenspace:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(0,0,0,0)", + "text-color": "#438519", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Sites", + "type": "symbol", + "source": "esri", + "source-layer": "Sites", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Sites", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#A79720", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Landform:1", + "type": "symbol", + "source": "esri", + "source-layer": "Landform:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Landform:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#AF7631", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Landform:2", + "type": "symbol", + "source": "esri", + "source-layer": "Landform:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Landform:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#AF7631", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Landcover:3", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Landcover:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#AF9031", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Landcover:2", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:2", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Landcover:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#AF9031", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Water:2", + "type": "symbol", + "source": "esri", + "source-layer": "Water:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Water:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#318FAE", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Water:1", + "type": "symbol", + "source": "esri", + "source-layer": "Water:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Water:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#318FAE", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Woodland:2", + "type": "symbol", + "source": "esri", + "source-layer": "Woodland:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Woodland:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#599C30", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Woodland:1", + "type": "symbol", + "source": "esri", + "source-layer": "Woodland:1", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Woodland:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#599C30", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/A & B Road 2800-11200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 7], + "minzoom": 14, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#737373", + "text-halo-color": "#FFFFFF", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/A & B Road 11200-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 8], + "minzoom": 13, + "maxzoom": 14, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 13, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#737373", + "text-halo-color": "#FFFFFF", + "text-halo-width": 2 + } + }, + { + "id": "OS/Roads/label/A & B Road 22400-358400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 9], + "minzoom": 9, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Regular"], + "text-size": 11, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#737373", + "text-halo-color": "#FFFFFF", + "text-halo-width": 1.6 + } + }, + { + "id": "OS/Roads/label/A & B Road Name 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 10], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#808080", + "text-halo-color": "rgba(255,255,255,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/A & B Road Name 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 11], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 11, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#666666", + "text-halo-color": "rgba(255,255,255,0.99)", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Railway_stations/label/Station names 22400-89600", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_label_class1", 1], + "minzoom": 11, + "maxzoom": 13, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "top", + "text-offset": { + "property": "_symbol", + "type": "categorical", + "default": [0, 0.0333333], + "stops": [ + [0, [0, 0.631292]], + [1, [0, 0.359493]], + [2, [0, 0.609832]], + [3, [0, 0.629975]], + [4, [0, 0.625794]], + [5, [0, 0.410354]] + ] + }, + "text-letter-spacing": 0.05, + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "#000000", + "text-halo-color": "#FAFAF3", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Railway_stations/label/Station names 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Railway_stations", + "filter": ["==", "_label_class", 0], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "top", + "text-offset": { + "property": "_symbol", + "type": "categorical", + "default": [0, 0.1], + "stops": [ + [0, [0, 0.638163]], + [1, [0, 0.393543]], + [2, [0, 0.618849]], + [3, [0, 0.636977]], + [4, [0, 0.633215]], + [5, [0, 0.439319]] + ] + }, + "text-letter-spacing": 0.05, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#000000", + "text-halo-color": "#FAFAF3", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Small Settlement", + "type": "symbol", + "source": "esri", + "source-layer": "Small Settlement", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Small Settlement", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#725F17", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Landcover:1", + "type": "symbol", + "source": "esri", + "source-layer": "Landcover:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Landcover:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#AF9031", + "text-halo-color": "#F5F5F0", + "text-halo-width": 0.7 + } + }, + { + "id": "OS/Names/Local/Hamlet (Local)", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet (Local)", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Hamlet (Local)", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 17, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#655314", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Hamlet:2", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Hamlet:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#655314", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Hamlet:1", + "type": "symbol", + "source": "esri", + "source-layer": "Hamlet:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Hamlet:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#655314", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Suburban Area:3", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Suburban Area:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 15, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#725F17", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/Suburban Area:1", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Suburban Area:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#725F17", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/Suburban Area:2", + "type": "symbol", + "source": "esri", + "source-layer": "Suburban Area:2", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Suburban Area:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#725F17", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 3], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#77C776", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 4], + "minzoom": 10, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 12, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#77C776", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary 179200-716800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 5], + "minzoom": 8, + "maxzoom": 10, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#77C776", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Primary Name 2800-44800", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 6], + "minzoom": 12, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#77C776", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Village:2", + "type": "symbol", + "source": "esri", + "source-layer": "Village:2", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Village:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#655314", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/District/Village:3", + "type": "symbol", + "source": "esri", + "source-layer": "Village:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Village:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#655314", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1 + } + }, + { + "id": "OS/Names/Regional/Village:1", + "type": "symbol", + "source": "esri", + "source-layer": "Village:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Village:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#655314", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1 + } + }, + { + "id": "OS/Roads/label/Motorway 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 0], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 13, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#08B7E7", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Motorway 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 1], + "minzoom": 10, + "maxzoom": 13, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 12, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#08B7E7", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Roads/label/Motorway 179200-2867200", + "type": "symbol", + "source": "esri", + "source-layer": "Roads/label", + "filter": ["==", "_label_class", 2], + "minzoom": 6, + "maxzoom": 10, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 1000, + "text-font": ["Arial Bold"], + "text-size": 11, + "text-letter-spacing": 0.1, + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#FCFDFF", + "text-halo-color": "#08B7E7", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Airports/label/Airport names 22400-179200", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "filter": ["==", "_label_class1", 1], + "minzoom": 10, + "maxzoom": 13, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 12.5, + "text-anchor": "top", + "text-offset": [0, 0.582306], + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "#303030", + "text-halo-color": "#F4F4EE", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Airports/label/Airport names 2800-22400", + "type": "symbol", + "source": "esri", + "source-layer": "Airports", + "filter": ["==", "_label_class", 0], + "minzoom": 13, + "maxzoom": 16, + "layout": { + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "bottom", + "text-offset": [0, 0.688753], + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#303030", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/District/National Park:3", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:3", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/National Park:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#599C30", + "text-halo-color": "#F5F5F0", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/Local/Motorway Junctions", + "type": "symbol", + "source": "esri", + "source-layer": "Motorway Junctions", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Motorway Junctions", + "icon-allow-overlap": true, + "text-font": ["Arial Bold"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(168,0,0,0)", + "text-color": "#FFFFFF", + "text-halo-color": "#1484A3", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/Local/Town:4", + "type": "symbol", + "source": "esri", + "source-layer": "Town:4", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Town:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 19, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#372D0B", + "text-halo-color": "#F5F5F0", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/District/Town:1", + "type": "symbol", + "source": "esri", + "source-layer": "Town:1", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Town:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#372D0B", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.7 + } + }, + { + "id": "OS/Names/Regional/Town:2", + "type": "symbol", + "source": "esri", + "source-layer": "Town:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Town:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 13, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#372D0B", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Town:3", + "type": "symbol", + "source": "esri", + "source-layer": "Town:3", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/Town:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#796315", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Regional/National Park:2", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/National Park:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 14, + "text-anchor": "center", + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#599C30", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/National Park:1", + "type": "symbol", + "source": "esri", + "source-layer": "National Park:1", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/National Park:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 12, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#599C30", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/City:3", + "type": "symbol", + "source": "esri", + "source-layer": "City:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/City:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 21, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/District/City:4", + "type": "symbol", + "source": "esri", + "source-layer": "City:4", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/City:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 17, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 2 + } + }, + { + "id": "OS/Names/Regional/City:1", + "type": "symbol", + "source": "esri", + "source-layer": "City:1", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/City:1", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Semibold"], + "text-size": 17, + "text-anchor": "center", + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/City:2", + "type": "symbol", + "source": "esri", + "source-layer": "City:2", + "maxzoom": 9, + "layout": { + "icon-image": "OS/Names/National/City:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/Local/Capital:3", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:3", + "minzoom": 13, + "maxzoom": 16, + "layout": { + "icon-image": "OS/Names/Local/Capital:3", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 24, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/District/Capital:4", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:4", + "minzoom": 11, + "maxzoom": 13, + "layout": { + "icon-image": "OS/Names/District/Capital:4", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Regular"], + "text-size": 20, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 3 + } + }, + { + "id": "OS/Names/Regional/Capital:2", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:2", + "minzoom": 9, + "maxzoom": 11, + "layout": { + "icon-image": "OS/Names/Regional/Capital:2", + "icon-allow-overlap": true, + "text-font": ["Source Sans Pro Semibold"], + "text-size": 18, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "icon-color": "rgba(255,0,0,0)", + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Capital:1/label/Capital National", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "filter": ["==", "_label_class", 0], + "minzoom": 5, + "maxzoom": 9, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 16, + "text-anchor": "center", + "text-field": "{_name}", + "text-optional": true + }, + "paint": { + "text-color": "#342A07", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Country/label/Country National", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "filter": ["==", "_label_class", 0], + "minzoom": 5, + "maxzoom": 9, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 21, + "text-anchor": "center", + "text-letter-spacing": 0.75, + "text-field": "{_name}", + "text-allow-overlap": true, + "text-optional": true + }, + "paint": { + "text-color": "rgba(54,44,7,0.5)", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + }, + { + "id": "OS/Names/National/Capital:1/label/Capital National 1:5.7m+", + "type": "symbol", + "source": "esri", + "source-layer": "Capital:1", + "filter": ["==", "_label_class1", 1], + "maxzoom": 5, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 13, + "text-anchor": "center", + "text-offset": [0.270711, 0.0292893], + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgba(52,42,7,0.75)" + } + }, + { + "id": "OS/Names/National/Country/label/Country National 1:5.7m+", + "type": "symbol", + "source": "esri", + "source-layer": "Country", + "filter": ["==", "_label_class1", 1], + "maxzoom": 5, + "layout": { + "text-font": ["Source Sans Pro Semibold"], + "text-size": 16, + "text-anchor": "center", + "text-letter-spacing": 0.5, + "text-field": "{_name1}", + "text-optional": true + }, + "paint": { + "text-color": "rgba(54,44,7,0.5)", + "text-halo-color": "#F5F5F0", + "text-halo-width": 1.5 + } + } + ] +} diff --git a/src/server/plugins/map/routes/vts/README.md b/src/server/plugins/map/routes/vts/README.md new file mode 100644 index 000000000..1641cfc3d --- /dev/null +++ b/src/server/plugins/map/routes/vts/README.md @@ -0,0 +1,5 @@ +File in this directory are sourced from https://github.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets + +VTS_OUTDOOR_URL=https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857_Outdoor.json +VTS_DARK_URL=https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857_Dark.json +VTS_BLACK_AND_WHITE_URL=https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857_Black_and_White.json diff --git a/src/server/plugins/map/service.js b/src/server/plugins/map/service.js new file mode 100644 index 000000000..b23384645 --- /dev/null +++ b/src/server/plugins/map/service.js @@ -0,0 +1,84 @@ +import { getErrorMessage } from '@defra/forms-model' +import Boom from '@hapi/boom' + +import { createLogger } from '~/src/server/common/helpers/logging/logger.js' +import { getJson } from '~/src/server/services/httpService.js' + +const logger = createLogger() + +/** + * Returns an empty result set + */ +function empty() { + /** @type {OsNamesFindResult[]} */ + const results = [] + + return /** @type {OsNamesFindResponse} */ ({ header: {}, results }) +} + +/** + * Logs OS names errors + * @param {unknown} err - the error + * @param {string} endpoint - the OS api endpoint + */ +function logErrorAndReturnEmpty(err, endpoint) { + const msg = `${getErrorMessage(err)} ${(Boom.isBoom(err) && err.data?.payload?.error?.message) ?? ''}` + + logger.error(err, `Exception occured calling OS names ${endpoint} - ${msg}}`) + + return empty() +} + +/** + * Fetch data from OS names API + * @param {string} url - the url to get address json data from + * @param {string} endpoint - the url endpoint description for logging + */ +async function getData(url, endpoint) { + const getJsonByType = /** @type {typeof getJson} */ ( + getJson + ) + + try { + const response = await getJsonByType(url) + + if (response.error) { + return logErrorAndReturnEmpty(response.error, endpoint) + } + + const results = response.payload + + return results + } catch (err) { + return logErrorAndReturnEmpty(err, endpoint) + } +} + +/** + * OS names search find by query + * @param {string} query - the search term + * @param {string} apiKey - the OS api key + */ +export async function find(query, apiKey) { + const endpoint = 'find' + const url = `https://api.os.uk/search/names/v1/find?key=${apiKey}&query=${query}&fq=local_type:postcode%20local_type:hamlet%20local_type:village%20local_type:town%20local_type:city%20local_type:other_settlement&maxresults=8` + + return getData(url, endpoint) +} + +/** + * OS names search nearest by E/N + * @param {number} easting - the easting + * @param {number} northing - the northing + * @param {string} apiKey - the OS api key + */ +export async function nearest(easting, northing, apiKey) { + const endpoint = 'nearest' + const url = `https://api.os.uk/search/names/v1/nearest?key=${apiKey}&point=${easting},${northing}&radius=1000&fq=local_type:Airfield%20local_type:Airport%20local_type:Bus_Station%20local_type:Chemical_Works%20local_type:City%20local_type:Coach_Station%20local_type:Electricity_Distribution%20local_type:Electricity_Production%20local_type:Further_Education%20local_type:Gas_Distribution_or_Storage%20local_type:Hamlet%20local_type:Harbour%20local_type:Helicopter_Station%20local_type:Heliport%20local_type:Higher_or_University_Education%20local_type:Hill_Or_Mountain%20local_type:Hospice%20local_type:Hospital%20local_type:Medical_Care_Accommodation%20local_type:Named_Road%20local_type:Non_State_Primary_Education%20local_type:Non_State_Secondary_Education%20local_type:Other_Settlement%20local_type:Passenger_Ferry_Terminal%20local_type:Port_Consisting_of_Docks_and_Nautical_Berthing%20local_type:Postcode%20local_type:Primary_Education%20local_type:Railway_Station%20local_type:Road_User_Services%20local_type:Secondary_Education%20local_type:Section_Of_Named_Road%20local_type:Section_Of_Numbered_Road%20local_type:Special_Needs_Education%20local_type:Suburban_Area%20local_type:Town%20local_type:Urban_Greenspace%20local_type:Vehicular_Ferry_Terminal%20local_type:Vehicular_Rail_Terminal%20local_type:Village%20local_type:Waterfall%20` + + return getData(url, endpoint) +} + +/** + * @import { OsNamesFindResponse, OsNamesFindResult } from '~/src/server/plugins/map/types.js' + */ diff --git a/src/server/plugins/map/service.test.js b/src/server/plugins/map/service.test.js new file mode 100644 index 000000000..3ddeb617f --- /dev/null +++ b/src/server/plugins/map/service.test.js @@ -0,0 +1,144 @@ +import Boom from '@hapi/boom' + +import * as service from '~/src/server/plugins/map/service.js' +import { result as findResult } from '~/src/server/plugins/map/test/__stubs__/find.js' +import { result as nearestResult } from '~/src/server/plugins/map/test/__stubs__/nearest.js' +import { getJson } from '~/src/server/services/httpService.js' + +jest.mock('~/src/server/services/httpService.ts') + +describe('Maps service', () => { + describe('find', () => { + it('should return entires', async () => { + jest.mocked(getJson).mockResolvedValueOnce({ + res: /** @type {IncomingMessage} */ ({ + statusCode: 200, + headers: {} + }), + payload: findResult, + error: undefined + }) + + const { results } = await service.find('NW1 6XE', 'apikey') + + expect(results).toHaveLength(8) + expect(results.at(1)).toEqual({ + GAZETTEER_ENTRY: { + ID: 'NW26XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW26XE', + NAME1: 'NW2 6XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 523065, + GEOMETRY_Y: 185795, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'London', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074813508', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'Brent', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011447', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }) + }) + + it('should return an empty response when an error is encountered', async () => { + jest.mocked(getJson).mockResolvedValueOnce({ + res: /** @type {IncomingMessage} */ ({ + statusCode: 300, + headers: {} + }), + payload: undefined, + error: new Error('Unknown error') + }) + + const { results } = await service.find('NW1 6XE', 'apikey') + + expect(results).toHaveLength(0) + expect(results).toEqual([]) + }) + + it('should return an empty response when a non 200 response is encountered', async () => { + jest + .mocked(getJson) + .mockRejectedValueOnce( + Boom.badRequest( + 'OS API error', + new Error('Invalid postcode segments') + ) + ) + + const { results } = await service.find('invalid postcode', 'apikey') + + expect(results).toHaveLength(0) + expect(results).toEqual([]) + }) + }) + + describe('nearest', () => { + it('should return entries', async () => { + jest.mocked(getJson).mockResolvedValueOnce({ + res: /** @type {IncomingMessage} */ ({ + statusCode: 200, + headers: {} + }), + payload: nearestResult, + error: undefined + }) + + const { results } = await service.nearest(700000, 1300000, 'apikey') + + expect(results).toHaveLength(1) + expect(results.at(0)).toEqual({ + GAZETTEER_ENTRY: { + ID: 'NW26XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW26XE', + NAME1: 'NW2 6XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 523065, + GEOMETRY_Y: 185795, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'London', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074813508', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'Brent', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011447', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }) + }) + }) +}) + +/** + * @import { IncomingMessage } from 'node:http' + */ diff --git a/src/server/plugins/map/test/__stubs__/find.js b/src/server/plugins/map/test/__stubs__/find.js new file mode 100644 index 000000000..7d1fa5769 --- /dev/null +++ b/src/server/plugins/map/test/__stubs__/find.js @@ -0,0 +1,271 @@ +/** @type {OsNamesFindResponse} */ +export const result = { + header: { + uri: 'https://api.os.uk/search/names/v1/find?query=NW1%206XE&fq=local_type%3Apostcode%20local_type%3Ahamlet%20local_type%3Avillage%20local_type%3Atown%20local_type%3Acity%20local_type%3Aother_settlement&maxresults=8', + query: 'NW1 6XE', + format: 'JSON', + maxresults: 8, + offset: 0, + totalresults: 2016, + filter: + 'fq=local_type:postcode local_type:hamlet local_type:village local_type:town local_type:city local_type:other_settlement' + }, + results: [ + { + GAZETTEER_ENTRY: { + ID: 'NW16XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW16XE', + NAME1: 'NW1 6XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 527850, + GEOMETRY_Y: 182134, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'City of Westminster', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074559881', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'City of Westminster', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011164', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW26XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW26XE', + NAME1: 'NW2 6XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 523065, + GEOMETRY_Y: 185795, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'London', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074813508', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'Brent', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011447', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW36XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW36XE', + NAME1: 'NW3 6XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 526197, + GEOMETRY_Y: 185535, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'Hampstead', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074541613', + DISTRICT_BOROUGH: 'Camden', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011244', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW10XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW10XE', + NAME1: 'NW1 0XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 529608, + GEOMETRY_Y: 183996, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'Camden Town', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074557754', + DISTRICT_BOROUGH: 'Camden', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011244', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW16AE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW16AE', + NAME1: 'NW1 6AE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 527873, + GEOMETRY_Y: 182010, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'City of Westminster', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074559881', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'City of Westminster', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011164', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW16DE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW16DE', + NAME1: 'NW1 6DE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 527681, + GEOMETRY_Y: 182107, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'City of Westminster', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074559881', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'City of Westminster', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011164', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW16EX', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW16EX', + NAME1: 'NW1 6EX', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 527534, + GEOMETRY_Y: 182220, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'City of Westminster', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074559881', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'City of Westminster', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011164', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + }, + { + GAZETTEER_ENTRY: { + ID: 'NW16HE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW16HE', + NAME1: 'NW1 6HE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 527621, + GEOMETRY_Y: 182113, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'City of Westminster', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074559881', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'City of Westminster', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011164', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + } + ] +} + +/** + * @import { OsNamesFindResponse } from '~/src/server/plugins/map/types.js' + */ diff --git a/src/server/plugins/map/test/__stubs__/nearest.js b/src/server/plugins/map/test/__stubs__/nearest.js new file mode 100644 index 000000000..d5eb86691 --- /dev/null +++ b/src/server/plugins/map/test/__stubs__/nearest.js @@ -0,0 +1,46 @@ +export const result = { + header: { + uri: 'https://api.os.uk/search/names/v1/nearest?point=523065%2C185795&radius=1000&fq=local_type%3AAirfield%20local_type%3AAirport%20local_type%3ABus_Station%20local_type%3AChemical_Works%20local_type%3ACity%20local_type%3ACoach_Station%20local_type%3AElectricity_Distribution%20local_type%3AElectricity_Production%20local_type%3AFurther_Education%20local_type%3AGas_Distribution_or_Storage%20local_type%3AHamlet%20local_type%3AHarbour%20local_type%3AHelicopter_Station%20local_type%3AHeliport%20local_type%3AHigher_or_University_Education%20local_type%3AHill_Or_Mountain%20local_type%3AHospice%20local_type%3AHospital%20local_type%3AMedical_Care_Accommodation%20local_type%3ANamed_Road%20local_type%3ANon_State_Primary_Education%20local_type%3ANon_State_Secondary_Education%20local_type%3AOther_Settlement%20local_type%3APassenger_Ferry_Terminal%20local_type%3APort_Consisting_of_Docks_and_Nautical_Berthing%20local_type%3APostcode%20local_type%3APrimary_Education%20local_type%3ARailway_Station%20local_type%3ARoad_User_Services%20local_type%3ASecondary_Education%20local_type%3ASection_Of_Named_Road%20local_type%3ASection_Of_Numbered_Road%20local_type%3ASpecial_Needs_Education%20local_type%3ASuburban_Area%20local_type%3ATown%20local_type%3AUrban_Greenspace%20local_type%3AVehicular_Ferry_Terminal%20local_type%3AVehicular_Rail_Terminal%20local_type%3AVillage%20local_type%3AWaterfall%20', + query: 'point=523065,185795 radius=1000', + format: 'JSON', + maxresults: 1, + offset: 0, + totalresults: 1, + filter: + 'fq=local_type:Airfield local_type:Airport local_type:Bus_Station local_type:Chemical_Works local_type:City local_type:Coach_Station local_type:Electricity_Distribution local_type:Electricity_Production local_type:Further_Education local_type:Gas_Distribution_or_Storage local_type:Hamlet local_type:Harbour local_type:Helicopter_Station local_type:Heliport local_type:Higher_or_University_Education local_type:Hill_Or_Mountain local_type:Hospice local_type:Hospital local_type:Medical_Care_Accommodation local_type:Named_Road local_type:Non_State_Primary_Education local_type:Non_State_Secondary_Education local_type:Other_Settlement local_type:Passenger_Ferry_Terminal local_type:Port_Consisting_of_Docks_and_Nautical_Berthing local_type:Postcode local_type:Primary_Education local_type:Railway_Station local_type:Road_User_Services local_type:Secondary_Education local_type:Section_Of_Named_Road local_type:Section_Of_Numbered_Road local_type:Special_Needs_Education local_type:Suburban_Area local_type:Town local_type:Urban_Greenspace local_type:Vehicular_Ferry_Terminal local_type:Vehicular_Rail_Terminal local_type:Village local_type:Waterfall' + }, + results: [ + { + GAZETTEER_ENTRY: { + ID: 'NW26XE', + NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW26XE', + NAME1: 'NW2 6XE', + TYPE: 'other', + LOCAL_TYPE: 'Postcode', + GEOMETRY_X: 523065, + GEOMETRY_Y: 185795, + MOST_DETAIL_VIEW_RES: 3500, + LEAST_DETAIL_VIEW_RES: 18000, + POPULATED_PLACE: 'London', + POPULATED_PLACE_URI: + 'http://data.ordnancesurvey.co.uk/id/4000000074813508', + POPULATED_PLACE_TYPE: + 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city', + DISTRICT_BOROUGH: 'Brent', + DISTRICT_BOROUGH_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000011447', + DISTRICT_BOROUGH_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough', + COUNTY_UNITARY: 'Greater London', + COUNTY_UNITARY_URI: + 'http://data.ordnancesurvey.co.uk/id/7000000000041441', + COUNTY_UNITARY_TYPE: + 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority', + REGION: 'London', + REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428', + COUNTRY: 'England', + COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england' + } + } + ] +} diff --git a/src/server/plugins/map/types.js b/src/server/plugins/map/types.js new file mode 100644 index 000000000..5e567693b --- /dev/null +++ b/src/server/plugins/map/types.js @@ -0,0 +1,119 @@ +/** + * @typedef {{ + * ordnanceSurveyApiKey: string + * }} MapConfiguration + */ + +// +// Route types +// + +/** + * Map proxy query params + * @typedef {object} MapProxyQuery + * @property {string} url - the proxied url + */ + +/** + * Map geocode query params + * @typedef {object} MapGeocodeQuery + * @property {string} query - name query + */ + +/** + * Map reverse geocode query params + * @typedef {object} MapReverseGeocodeQuery + * @property {number} easting - the Easting point + * @property {number} northing - the Northing point + */ + +/** + * Map geocode get request + * @typedef {object} MapProxyGetRequestRefs + * @property {MapProxyQuery} Query - Request query + */ + +/** + * Map geocode get request + * @typedef {object} MapGeocodeGetRequestRefs + * @property {MapGeocodeQuery} Query - Request query + */ + +/** + * Map reverst geocode get request + * @typedef {object} MapReverseGeocodeGetRequestRefs + * @property {MapReverseGeocodeQuery} Query - Request query + */ + +/** + * @typedef {MapProxyGetRequestRefs} MapProxyRequestRefs + * @typedef {MapGeocodeGetRequestRefs} MapGeocodeRequestRefs + * @typedef {MapReverseGeocodeGetRequestRefs} MapReverseGeocodeRequestRefs + * @typedef {Request} MapProxyGetRequest + * @typedef {Request} MapGeocodeGetRequest + * @typedef {Request} MapReverseGeocodeGetRequest + * @typedef {MapProxyGetRequest | MapGeocodeGetRequest | MapReverseGeocodeGetRequest} MapRequest + */ + +// +// Service types +// + +/** + * @typedef {object} OsNamesFindResponse + * @property {OsNamesFindHeader} header - Metadata about the search request and results. + * @property {OsNamesFindResult[]} results - An array of matched place records from the search. + */ + +/** + * @typedef {object} OsNamesFindHeader + * @property {string} uri - The query URI (usually same as search text). + * @property {string} query - The original text query string passed to the API. + * @property {string} format - The response format returned (e.g., "JSON"). + * @property {number} maxresults - The maximum number of results requested. + * @property {number} offset - The offset used in the search results. + * @property {number} totalresults - The total number of results that matched the query. + * @property {string} filter - The original filter string passed to the API. + */ + +/** + * @typedef {object} OsNamesFindGazetteerEntry + * @property {string} ID - Unique identifier for the place/feature. + * @property {string} NAMES_URI - A URI (identifier) for this named feature. + * @property {string} NAME1 - Primary name of the feature. + * @property {string} TYPE - General type classification of the feature. + * @property {string} LOCAL_TYPE - Local or more specific type classification. + * @property {number} GEOMETRY_X - Easting coordinate (British National Grid). + * @property {number} GEOMETRY_Y - Northing coordinate (British National Grid). + * @property {number} MOST_DETAIL_VIEW_RES - Most detailed resolution available. + * @property {number} LEAST_DETAIL_VIEW_RES - Least detailed resolution available. + * @property {number} [MBR_XMIN] - Minimum bounding box X (easting). + * @property {number} [MBR_YMIN] - Minimum bounding box Y (northing). + * @property {number} [MBR_XMAX] - Maximum bounding box X (easting). + * @property {number} [MBR_YMAX] - Maximum bounding box Y (northing). + * @property {string} [DISTRICT_BOROUGH] - (Optional) District borough. + * @property {string} [DISTRICT_BOROUGH_URI] - (Optional) URI for the district borough. + * @property {string} [DISTRICT_BOROUGH_TYPE] - (Optional) Type of the district borough. + * @property {string} [POSTCODE_DISTRICT] - (Optional) Postcode district. + * @property {string} [POSTCODE_DISTRICT_URI] - (Optional) URI for the postcode district. + * @property {string} [POPULATED_PLACE] - (Optional) Name of associated populated place. + * @property {string} [POPULATED_PLACE_URI] - (Optional) URI of populated place. + * @property {string} [POPULATED_PLACE_TYPE] - (Optional) Type of populated place. + * @property {string} [COUNTY_UNITARY] - (Optional) County or unitary authority name. + * @property {string} [COUNTY_UNITARY_URI] - (Optional) URI for county/unitary authority. + * @property {string} [COUNTY_UNITARY_TYPE] - (Optional) Classification of county/unitary authority. + * @property {string} [REGION] - (Optional) Region name. + * @property {string} [REGION_URI] - (Optional) URI for region. + * @property {string} [COUNTRY] - (Optional) Country name. + * @property {string} [COUNTRY_URI] - (Optional) URI for country. + */ + +/** + * OS names GAZETTEER_ENTRY response + * @typedef {object} OsNamesFindResult + * @property {OsNamesFindGazetteerEntry} GAZETTEER_ENTRY - Gazetteer entry + */ + +/** + * @import { Request } from '@hapi/hapi' + */ diff --git a/test/client/javascripts/location-map.test.js b/test/client/javascripts/location-map.test.js new file mode 100644 index 000000000..18feb79cb --- /dev/null +++ b/test/client/javascripts/location-map.test.js @@ -0,0 +1,697 @@ +import { + formSubmitFactory, + initMaps, + makeTileRequestTransformer +} from '~/src/client/javascripts/location-map.js' + +describe('Location Maps Client JS', () => { + /** @type {jest.Mock} */ + let onMock + + /** @type {jest.Mock} */ + let addMarkerMock + + /** @type {jest.Mock} */ + let addPanelMock + + /** @type {jest.Mock} */ + let interactPlugin + + /** @type {jest.Mock} */ + let interactPluginEnable + + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-empty-function + const noop = () => {} + onMock = jest.fn() + addMarkerMock = jest.fn() + addPanelMock = jest.fn() + interactPluginEnable = jest.fn() + interactPlugin = jest.fn(() => ({ + enable: interactPluginEnable + })) + + class MockInteractiveMap { + // eslint-disable-next-line @typescript-eslint/no-empty-function + on = onMock + // eslint-disable-next-line @typescript-eslint/no-empty-function + addMarker = addMarkerMock + // eslint-disable-next-line @typescript-eslint/no-empty-function + addPanel = addPanelMock + } + + // @ts-expect-error - loaded via UMD + window.defra = { + InteractiveMap: MockInteractiveMap, + maplibreProvider: noop, + openNamesProvider: noop, + mapStylesPlugin: noop, + interactPlugin, + searchPlugin: noop, + zoomControlsPlugin: noop, + scaleBarPlugin: noop + } + }) + + afterEach(() => { + document.body.innerHTML = '' + }) + + describe('Lat long component', () => { + beforeEach(() => { + document.body.innerHTML = ` +
+
+
+ + What is your latitude and longitude (optional) + +
+ For Great Britain, the latitude will be a number between 49.850 and 60.859. The longitude will be a number between -13.687 and 1.767 +
+
+
+
+ +
+ + +
+
+
+
+
+ +
+ + +
+
+
+
+
+
+
+ +
+
+ ` + }) + + describe('Map initialisation', () => { + test('initMaps initializes without errors when DOM elements are present', () => { + expect(() => initMaps()).not.toThrow() + expect(onMock).toHaveBeenLastCalledWith( + 'map:ready', + expect.any(Function) + ) + + const onMapReady = onMock.mock.calls[0][1] + expect(typeof onMapReady).toBe('function') + + // Manually invoke onMapReady callback + const flyToMock = jest.fn() + onMapReady({ + map: { + flyTo: flyToMock + } + }) + + expect(interactPlugin).toHaveBeenCalledWith(expect.any(Object)) + expect(addPanelMock).toHaveBeenCalledWith('info', expect.any(Object)) + expect(interactPluginEnable).toHaveBeenCalled() + + expect(onMock).toHaveBeenLastCalledWith( + 'interact:markerchange', + expect.any(Function) + ) + + const inputs = document.body.querySelectorAll('input.govuk-input') + expect(inputs).toHaveLength(2) + + const latInput = /** @type {HTMLInputElement} */ (inputs[0]) + const longInput = /** @type {HTMLInputElement} */ (inputs[1]) + + latInput.value = '53.825564' + latInput.dispatchEvent(new window.Event('change')) + + longInput.value = '-2.421975' + longInput.dispatchEvent(new window.Event('change')) + + // Expect it to update once, only when both fields are valid + expect(addMarkerMock).toHaveBeenCalledTimes(1) + expect(flyToMock).toHaveBeenCalledTimes(1) + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const onInteractMarkerChange = onMock.mock.calls[1][1] + expect(typeof onInteractMarkerChange).toBe('function') + onInteractMarkerChange({ coords: [-2.1478238, 54.155676] }) + }) + + test('initMaps with initial values', () => { + const inputs = document.body.querySelectorAll('input.govuk-input') + expect(inputs).toHaveLength(2) + + const latInput = /** @type {HTMLInputElement} */ (inputs[0]) + const longInput = /** @type {HTMLInputElement} */ (inputs[1]) + + // Set some initial values prior to initMaps + latInput.value = '53.743697' + longInput.value = '-1.522781' + + expect(() => initMaps()).not.toThrow() + expect(onMock).toHaveBeenLastCalledWith( + 'map:ready', + expect.any(Function) + ) + + const onMapReady = onMock.mock.calls[0][1] + expect(typeof onMapReady).toBe('function') + + // Manually invoke onMapReady callback + const flyToMock = jest.fn() + onMapReady({ + map: { + flyTo: flyToMock + } + }) + + expect(interactPlugin).toHaveBeenCalledWith(expect.any(Object)) + expect(addPanelMock).toHaveBeenCalledWith('info', expect.any(Object)) + expect(interactPluginEnable).toHaveBeenCalled() + + expect(onMock).toHaveBeenLastCalledWith( + 'interact:markerchange', + expect.any(Function) + ) + + latInput.value = '53.825564' + latInput.dispatchEvent(new window.Event('change')) + + longInput.value = '-2.421975' + longInput.dispatchEvent(new window.Event('change')) + + // Expect it to update twice as both fields are already valid + expect(addMarkerMock).toHaveBeenCalledTimes(2) + expect(flyToMock).toHaveBeenCalledTimes(2) + }) + + test('initMaps only applies when there are location components on the page', () => { + const locations = document.querySelectorAll('.app-location-field') + + // Remove any locations for the test + locations.forEach((location) => { + location.remove() + }) + + expect(() => initMaps()).not.toThrow() + expect(onMock).not.toHaveBeenCalled() + }) + + test('initMaps only applies when there are supported location components on the page', () => { + const locations = document.querySelectorAll('.app-location-field') + + // Reset the location type of each component + locations.forEach((location) => { + location.setAttribute('data-locationtype', 'unknowntype') + }) + + expect(() => initMaps()).not.toThrow() + expect(onMock).not.toHaveBeenCalled() + }) + }) + }) + + describe('Easting northing component', () => { + beforeEach(() => { + document.body.innerHTML = ` +
+
+
+ + What is your easting and northing + +
+ For example. Easting: 248741, Northing: 63688 +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+ ` + }) + + describe('Map initialisation', () => { + test('initMaps easting northing initializes without errors when DOM elements are present', () => { + expect(() => initMaps()).not.toThrow() + expect(onMock).toHaveBeenLastCalledWith( + 'map:ready', + expect.any(Function) + ) + + const onMapReady = onMock.mock.calls[0][1] + expect(typeof onMapReady).toBe('function') + + // Manually invoke onMapReady callback + const flyToMock = jest.fn() + onMapReady({ + map: { + flyTo: flyToMock + } + }) + + expect(interactPlugin).toHaveBeenCalledWith(expect.any(Object)) + expect(addPanelMock).toHaveBeenCalledWith('info', expect.any(Object)) + expect(interactPluginEnable).toHaveBeenCalled() + + expect(onMock).toHaveBeenLastCalledWith( + 'interact:markerchange', + expect.any(Function) + ) + + const inputs = document.body.querySelectorAll('input.govuk-input') + expect(inputs).toHaveLength(2) + + const eastingInput = /** @type {HTMLInputElement} */ (inputs[0]) + const northingInput = /** @type {HTMLInputElement} */ (inputs[1]) + + eastingInput.value = '380779' + eastingInput.dispatchEvent(new window.Event('change')) + + northingInput.value = '462222' + northingInput.dispatchEvent(new window.Event('change')) + + // Expect it to update once, only when both fields are valid + expect(addMarkerMock).toHaveBeenCalledTimes(1) + expect(flyToMock).toHaveBeenCalledTimes(1) + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const onInteractMarkerChange = onMock.mock.calls[1][1] + expect(typeof onInteractMarkerChange).toBe('function') + onInteractMarkerChange({ + coords: [-2.147823, 54.155676] + }) + }) + + test('initMaps with initial values', () => { + const inputs = document.body.querySelectorAll('input.govuk-input') + expect(inputs).toHaveLength(2) + + const eastingInput = /** @type {HTMLInputElement} */ (inputs[0]) + const northingInput = /** @type {HTMLInputElement} */ (inputs[1]) + + // Set some initial values prior to initMaps + eastingInput.value = '431571' + northingInput.value = '427585' + + expect(() => initMaps()).not.toThrow() + expect(onMock).toHaveBeenLastCalledWith( + 'map:ready', + expect.any(Function) + ) + + const onMapReady = onMock.mock.calls[0][1] + expect(typeof onMapReady).toBe('function') + + // Manually invoke onMapReady callback + const flyToMock = jest.fn() + onMapReady({ + map: { + flyTo: flyToMock + } + }) + + expect(interactPlugin).toHaveBeenCalledWith(expect.any(Object)) + expect(addPanelMock).toHaveBeenCalledWith('info', expect.any(Object)) + expect(interactPluginEnable).toHaveBeenCalled() + + expect(onMock).toHaveBeenLastCalledWith( + 'interact:markerchange', + expect.any(Function) + ) + + eastingInput.value = '380779' + eastingInput.dispatchEvent(new window.Event('change')) + + northingInput.value = '462222' + northingInput.dispatchEvent(new window.Event('change')) + + // Expect it to update twice as both fields are already valid + expect(addMarkerMock).toHaveBeenCalledTimes(2) + expect(flyToMock).toHaveBeenCalledTimes(2) + }) + + test('initMaps only applies when there are location components on the page', () => { + const locations = document.querySelectorAll('.app-location-field') + + // Remove any locations for the test + locations.forEach((location) => { + location.remove() + }) + + expect(() => initMaps()).not.toThrow() + expect(onMock).not.toHaveBeenCalled() + }) + + test('initMaps only applies when there are supported location components on the page', () => { + const locations = document.querySelectorAll('.app-location-field') + + // Reset the location type of each component + locations.forEach((location) => { + location.setAttribute('data-locationtype', 'unknowntype') + }) + + expect(() => initMaps()).not.toThrow() + expect(onMock).not.toHaveBeenCalled() + }) + }) + }) + + describe('OS grid reference component', () => { + beforeEach(() => { + document.body.innerHTML = ` +
+
+
+
+

+ +

+
+ An OS grid reference number is made up of 2 letters followed by either 6, 8 or 10 numbers, for example, TQ123456 +
+ +
+
+
+
+ +
+
+ ` + }) + + describe('Map initialisation', () => { + test('initMaps os grid reference initializes without errors when DOM elements are present', () => { + expect(() => initMaps()).not.toThrow() + expect(onMock).toHaveBeenLastCalledWith( + 'map:ready', + expect.any(Function) + ) + + const onMapReady = onMock.mock.calls[0][1] + expect(typeof onMapReady).toBe('function') + + // Manually invoke onMapReady callback + const flyToMock = jest.fn() + onMapReady({ + map: { + flyTo: flyToMock + } + }) + + expect(interactPlugin).toHaveBeenCalledWith(expect.any(Object)) + expect(addPanelMock).toHaveBeenCalledWith('info', expect.any(Object)) + expect(interactPluginEnable).toHaveBeenCalled() + + expect(onMock).toHaveBeenLastCalledWith( + 'interact:markerchange', + expect.any(Function) + ) + + const input = document.body.querySelector('input.govuk-input') + expect(input).toBeDefined() + + const osGridRefInput = /** @type {HTMLInputElement} */ (input) + + osGridRefInput.value = 'SJ 61831 71507' + osGridRefInput.dispatchEvent(new window.Event('change')) + + // Expect it to update once + expect(addMarkerMock).toHaveBeenCalledTimes(1) + expect(flyToMock).toHaveBeenCalledTimes(1) + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const onInteractMarkerChange = onMock.mock.calls[1][1] + expect(typeof onInteractMarkerChange).toBe('function') + onInteractMarkerChange({ + coords: [-2.147823, 54.155676] + }) + }) + + test('initMaps with initial values', () => { + const input = document.body.querySelector('input.govuk-input') + expect(input).toBeDefined() + + const osGridRefInput = /** @type {HTMLInputElement} */ (input) + + // Set some initial values prior to initMaps + osGridRefInput.value = 'SJ 61831 71500' + + expect(() => initMaps()).not.toThrow() + expect(onMock).toHaveBeenLastCalledWith( + 'map:ready', + expect.any(Function) + ) + + const onMapReady = onMock.mock.calls[0][1] + expect(typeof onMapReady).toBe('function') + + // Manually invoke onMapReady callback + const flyToMock = jest.fn() + onMapReady({ + map: { + flyTo: flyToMock + } + }) + + expect(interactPlugin).toHaveBeenCalledWith(expect.any(Object)) + expect(addPanelMock).toHaveBeenCalledWith('info', expect.any(Object)) + expect(interactPluginEnable).toHaveBeenCalled() + + expect(onMock).toHaveBeenLastCalledWith( + 'interact:markerchange', + expect.any(Function) + ) + + osGridRefInput.value = 'SJ 61836 71440' + osGridRefInput.dispatchEvent(new window.Event('change')) + + // Expect it to update once as the field is valid + expect(addMarkerMock).toHaveBeenCalledTimes(1) + expect(flyToMock).toHaveBeenCalledTimes(1) + }) + + test('initMaps only applies when there are location components on the page', () => { + const locations = document.querySelectorAll('.app-location-field') + + // Remove any locations for the test + locations.forEach((location) => { + location.remove() + }) + + expect(() => initMaps()).not.toThrow() + expect(onMock).not.toHaveBeenCalled() + }) + + test('initMaps only applies when there are supported location components on the page', () => { + const locations = document.querySelectorAll('.app-location-field') + + // Reset the location type of each component + locations.forEach((location) => { + location.setAttribute('data-locationtype', 'unknowntype') + }) + + expect(() => initMaps()).not.toThrow() + expect(onMock).not.toHaveBeenCalled() + }) + }) + }) + + describe('Form submit event propagation', () => { + beforeEach(() => { + document.body.innerHTML = ` +
+
+
+ + What is your latitude and longitude (optional) + +
+ For Great Britain, the latitude will be a number between 49.850 and 60.859. The longitude will be a number between -13.687 and 1.767 +
+
+
+
+ +
+ + +
+
+
+
+
+ +
+ + +
+
+
+
+
+
+
+ +
+
+ ` + }) + + test('form does submit when submitter is the main form button', () => { + const preventDefault = jest.fn() + + initMaps() + + const form = document.body.querySelector('form') + if (!form) { + throw new TypeError('Unexpected empty form') + } + + const buttons = Array.from(form.querySelectorAll('button')) + const onFormSubmit = formSubmitFactory(buttons) + + const e = /** @type {SubmitEvent} */ ( + /** @type {unknown} */ ({ + submitter: buttons.at(0), + preventDefault + }) + ) + + onFormSubmit(e) + + expect(preventDefault).toHaveBeenCalledTimes(0) + }) + + test('form does not submit unless it is the main form button', () => { + const preventDefault = jest.fn() + + initMaps() + + const form = document.body.querySelector('form') + if (!form) { + throw new TypeError('Unexpected empty form') + } + + const buttons = Array.from(form.querySelectorAll('button')) + const onFormSubmit = formSubmitFactory(buttons) + + const e = /** @type {SubmitEvent} */ ( + /** @type {unknown} */ ({ + submitter: null, + preventDefault + }) + ) + + onFormSubmit(e) + + expect(preventDefault).toHaveBeenCalledTimes(1) + }) + }) + + describe('Tile request transformer', () => { + const apiPath = '/api' + + test('tile request transformer factory returns a transformer function', () => { + const transformer = makeTileRequestTransformer(apiPath) + + expect(typeof transformer).toBe('function') + expect(transformer).toHaveLength(2) + }) + + test('tile request transformer works on api.os.uk requests without an apikey', () => { + const url = 'https://api.os.uk/test.js' + const transformer = makeTileRequestTransformer(apiPath) + const result = transformer(url, 'Script') + + expect(result).toEqual({ + url: `${apiPath}/map-proxy?url=${encodeURIComponent(url)}`, + headers: {} + }) + }) + + test('tile request transformer does not apply to api.os.uk requests that already have an api key', () => { + const url = 'https://api.os.uk/test.js?key=abcde' + const transformer = makeTileRequestTransformer(apiPath) + const result = transformer(url, 'Script') + + expect(result).toEqual({ + url, + headers: {} + }) + }) + + test('tile request transformer does not apply to "Style" api.os.uk requests', () => { + const url = 'https://api.os.uk/test.js' + const transformer = makeTileRequestTransformer(apiPath) + const result = transformer(url, 'Style') + + expect(result).toEqual({ + url, + headers: {} + }) + }) + + test('tile request transformer does not apply to other domain requests', () => { + const url = 'https://esri.os.uk/test.js' + const transformer = makeTileRequestTransformer(apiPath) + const result = transformer(url, 'Script') + + expect(result).toEqual({ + url, + headers: {} + }) + }) + + test('tile request transformer works on raw.githubusercontent.com style and sprite requests', () => { + const url = + 'https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main/OS_VTS_3857/resources/sprites/sprite@2x.json' + const transformer = makeTileRequestTransformer(apiPath) + const result = transformer(url, 'SpriteJSON') + + expect(result).toEqual({ + url: `${apiPath}/maps/vts/OS_VTS_3857/resources/sprites/sprite@2x.json`, + headers: {} + }) + }) + }) +}) diff --git a/test/client/javascripts/shared.test.js b/test/client/javascripts/shared.test.js new file mode 100644 index 000000000..0b86d7dc8 --- /dev/null +++ b/test/client/javascripts/shared.test.js @@ -0,0 +1,24 @@ +import { initAllAutocomplete } from '~/src/client/javascripts/autocomplete.js' +import { initFileUpload } from '~/src/client/javascripts/file-upload.js' +import { initAllGovuk } from '~/src/client/javascripts/govuk.js' +import { initMaps } from '~/src/client/javascripts/location-map.js' +import { initPreviewCloseLink } from '~/src/client/javascripts/preview-close-link.js' +import { initAll } from '~/src/client/javascripts/shared.js' + +jest.mock('~/src/client/javascripts/autocomplete.js') +jest.mock('~/src/client/javascripts/file-upload.js') +jest.mock('~/src/client/javascripts/govuk.js') +jest.mock('~/src/client/javascripts/location-map.js') +jest.mock('~/src/client/javascripts/preview-close-link.js') + +describe('Shared client JS', () => { + test('initAll initialises all the shared client imports apart from maps', () => { + initAll() + + expect(initAllAutocomplete).toHaveBeenCalledTimes(1) + expect(initFileUpload).toHaveBeenCalledTimes(1) + expect(initAllGovuk).toHaveBeenCalledTimes(1) + expect(initPreviewCloseLink).toHaveBeenCalledTimes(1) + expect(initMaps).toHaveBeenCalledTimes(0) + }) +}) diff --git a/test/form/map.test.js b/test/form/map.test.js new file mode 100644 index 000000000..f22a96050 --- /dev/null +++ b/test/form/map.test.js @@ -0,0 +1,139 @@ +import { StatusCodes } from 'http-status-codes' + +import { FORM_PREFIX } from '~/src/server/constants.js' +import { createServer } from '~/src/server/index.js' +import { find, nearest } from '~/src/server/plugins/map/service.js' +import { result as findResult } from '~/src/server/plugins/map/test/__stubs__/find.js' +import { result as nearestResult } from '~/src/server/plugins/map/test/__stubs__/nearest.js' +import { request } from '~/src/server/services/httpService.js' + +const basePath = `${FORM_PREFIX}/api` + +jest.mock('~/src/server/plugins/map/service.js') +jest.mock('~/src/server/services/httpService.ts') + +describe('Map API routes', () => { + /** @type {Server} */ + let server + + beforeAll(async () => { + server = await createServer({ + enforceCsrf: true, + ordnanceSurveyApiKey: 'dummy' + }) + + await server.initialize() + }) + + it('should get map proxy results', async () => { + const res = /** @type {IncomingMessage} */ ({ + headers: { + 'content-type': 'application/json' + } + }) + + jest.mocked(request).mockResolvedValueOnce({ + res, + payload: Buffer.from(JSON.stringify({})) + }) + + const urlToProxy = 'http://example.com?srs=3857' + const response = await server.inject({ + url: `${basePath}/map-proxy?url=${encodeURIComponent(urlToProxy)}`, + method: 'GET' + }) + + expect(request).toHaveBeenCalledWith( + 'get', + 'http://example.com/?srs=3857&key=dummy' + ) + expect(response.statusCode).toBe(StatusCodes.OK) + expect(response.headers['content-type']).toBe( + 'application/json; charset=utf-8' + ) + expect(response.result).toBe('{}') + }) + + it('should get map proxy results and set SRS if not present in the original request', async () => { + const res = /** @type {IncomingMessage} */ ({ + headers: { + 'content-type': 'application/json' + } + }) + + jest.mocked(request).mockResolvedValueOnce({ + res, + payload: Buffer.from(JSON.stringify({})) + }) + + const urlToProxy = 'http://example.com' + const response = await server.inject({ + url: `${basePath}/map-proxy?url=${encodeURIComponent(urlToProxy)}`, + method: 'GET' + }) + + expect(request).toHaveBeenCalledWith( + 'get', + 'http://example.com/?key=dummy&srs=3857' + ) + expect(response.statusCode).toBe(StatusCodes.OK) + expect(response.headers['content-type']).toBe( + 'application/json; charset=utf-8' + ) + expect(response.result).toBe('{}') + }) + + it('should get map proxy results and not set content type if not present proxied response', async () => { + const res = /** @type {IncomingMessage} */ ({ + headers: {} + }) + + jest.mocked(request).mockResolvedValueOnce({ + res, + payload: Buffer.from(JSON.stringify({})) + }) + + const urlToProxy = 'http://example.com' + const response = await server.inject({ + url: `${basePath}/map-proxy?url=${encodeURIComponent(urlToProxy)}`, + method: 'GET' + }) + + expect(request).toHaveBeenCalledWith( + 'get', + 'http://example.com/?key=dummy&srs=3857' + ) + expect(response.statusCode).toBe(StatusCodes.OK) + expect(response.headers['content-type']).toBe('application/octet-stream') + expect(response.result).toBe('{}') + }) + + it('should get geocode results', async () => { + jest.mocked(find).mockResolvedValueOnce(findResult) + + const response = await server.inject({ + url: `${basePath}/geocode-proxy?query=NW1%206XE`, + method: 'GET' + }) + + expect(response.statusCode).toBe(StatusCodes.OK) + expect(response.result).toEqual(findResult) + }) + + it('should get reverse geocode results', async () => { + jest.mocked(nearest).mockResolvedValueOnce(nearestResult) + + const response = await server.inject({ + url: `${basePath}/reverse-geocode-proxy?easting=523065&northing=185795`, + method: 'GET' + }) + + expect(response.statusCode).toBe(StatusCodes.OK) + expect(response.result).toEqual(nearestResult) + }) +}) + +/** + * @import { IncomingMessage } from 'node:http' + * @import { Server } from '@hapi/hapi' + */ diff --git a/test/form/postcode-lookup.test.js b/test/form/postcode-lookup.test.js index cb1570564..915205515 100644 --- a/test/form/postcode-lookup.test.js +++ b/test/form/postcode-lookup.test.js @@ -19,7 +19,6 @@ jest.mock('~/src/server/plugins/engine/services/formsService.js') jest.mock('~/src/server/plugins/postcode-lookup/service.js') /** - * * @param {Server} server */ async function initialiseJourney(server) { diff --git a/webpack.config.js b/webpack.config.js index 233fcbf7e..95cd995fe 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -208,5 +208,5 @@ export default { } /** - * @import { Configuration, NormalModule } from 'webpack' + * @import { Configuration } from 'webpack' */