diff --git a/examples/learn/next.config.js b/examples/learn/next.config.js new file mode 100644 index 00000000..52d0faf4 --- /dev/null +++ b/examples/learn/next.config.js @@ -0,0 +1,5 @@ +const nextConfig = { + swcMinify: false +} + +module.exports = nextConfig diff --git a/examples/openspending/components/DataRichDocument.tsx b/examples/openspending/components/DataRichDocument.tsx index 9387ec01..be08461d 100644 --- a/examples/openspending/components/DataRichDocument.tsx +++ b/examples/openspending/components/DataRichDocument.tsx @@ -7,13 +7,21 @@ import { Mermaid } from '@portaljs/core'; // to handle import statements. Instead, you must include components in scope // here. const components = { - Table: dynamic(() => import('@portaljs/components').then(mod => mod.Table)), - Catalog: dynamic(() => import('@portaljs/components').then(mod => mod.Catalog)), + Table: dynamic(() => import('@portaljs/components').then((mod) => mod.Table)), + Catalog: dynamic(() => + import('@portaljs/components').then((mod) => mod.Catalog) + ), mermaid: Mermaid, - Vega: dynamic(() => import('@portaljs/components').then(mod => mod.Vega)), - VegaLite: dynamic(() => import('@portaljs/components').then(mod => mod.VegaLite)), - LineChart: dynamic(() => import('@portaljs/components').then(mod => mod.LineChart)), - FlatUiTable: dynamic(() => import('@portaljs/components').then(mod => mod.FlatUiTable)), + Vega: dynamic(() => import('@portaljs/components').then((mod) => mod.Vega)), + VegaLite: dynamic(() => + import('@portaljs/components').then((mod) => mod.VegaLite) + ), + LineChart: dynamic(() => + import('@portaljs/components').then((mod) => mod.LineChart) + ), + FlatUiTable: dynamic(() => + import('@portaljs/components').then((mod) => mod.FlatUiTable) + ), } as any; export default function DRD({ source }: { source: any }) { diff --git a/examples/openspending/content/stories/frankfurt-is-investing-in-education-and-your-city-should-too.mdx b/examples/openspending/content/stories/frankfurt-is-investing-in-education-and-your-city-should-too.mdx index 64626f8e..cb396ad1 100644 --- a/examples/openspending/content/stories/frankfurt-is-investing-in-education-and-your-city-should-too.mdx +++ b/examples/openspending/content/stories/frankfurt-is-investing-in-education-and-your-city-should-too.mdx @@ -15,6 +15,17 @@ helps to bring this data to life. It maps out the city's annual spending across the education slice has grown noticeably over the years, indicating Frankfurt's intention to prioritize this space. The city's commitment to education is abundantly clear. + + + + = 0.6" + } + }, + "node_modules/@mapbox/mapbox-gl-style-spec": { + "version": "13.28.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz", + "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/unitbezier": "^0.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^2.0.0", + "minimist": "^1.2.6", + "rw": "^1.3.3", + "sort-object": "^0.3.2" + }, + "bin": { + "gl-style-composite": "bin/gl-style-composite.js", + "gl-style-format": "bin/gl-style-format.js", + "gl-style-migrate": "bin/gl-style-migrate.js", + "gl-style-validate": "bin/gl-style-validate.js" + } + }, + "node_modules/@mapbox/mapbox-gl-style-spec/node_modules/json-stringify-pretty-compact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==" + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", @@ -2020,6 +2054,16 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "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==" + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==" + }, "node_modules/@mdx-js/mdx": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", @@ -2657,6 +2701,11 @@ "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.11.0.tgz", "integrity": "sha512-AanzbulOHljrku1NGfafxdpTCfw2ENaWzH01N2vqQM+cUFbk868Cgh0xylz0JIM9BoKbfI++bdD6EYX0Q/UTEw==" }, + "node_modules/@petamoriken/float16": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.1.tgz", + "integrity": "sha512-oj3dU9kuMy8AqrreIboVh3KCJGSQO5T+dJ8JQFl369961jTWvPLP1GIlLy0FVoWehXLoI9BXygu/yzuNiIHBlg==" + }, "node_modules/@pkgr/utils": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.1.tgz", @@ -2676,6 +2725,14 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@planet/maps": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@planet/maps/-/maps-8.1.0.tgz", + "integrity": "sha512-THvbooWXFZYyjSdoqi6MFNqnjrfnO5Oev1tKh6ORjxFru0N69gZwUfEduRjg99VNklmaAk2BPaCatgKs5qr0XA==", + "dependencies": { + "react-reconciler": "^0.29.0" + } + }, "node_modules/@portaljs/ckan": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/@portaljs/ckan/-/ckan-0.0.2.tgz", @@ -2692,21 +2749,25 @@ }, "node_modules/@portaljs/components": { "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@portaljs/components/-/components-0.1.12.tgz", - "integrity": "sha512-p7I7uOJYXo+jZgVJfgGW2RtjT02wpjsSiGb+QgQCdIdh7E1e9LKIWMx7wnaRqB1eS3Z+yxaYtG3+0tQEqyxNoQ==", + "resolved": "file:../../packages/components/portaljs-components-0.1.12.tgz", + "integrity": "sha512-Cr+RQ7tkbIqtBNq5D8zeZEB2dOejxD0V78l/I4AbdjYI8jvQ4Evx6APEfhPs3im6LDEGrT28LslVTZJ6luslnw==", "dependencies": { "@githubocto/flat-ui": "^0.14.1", "@heroicons/react": "^2.0.17", + "@planet/maps": "^8.1.0", "@tanstack/react-table": "^8.8.5", + "chroma-js": "^2.4.2", "flexsearch": "0.7.21", + "leaflet": "^1.9.4", "next-mdx-remote": "^4.4.1", + "ol": "^7.4.0", "papaparse": "^5.4.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.43.9", + "react-leaflet": "^4.2.1", "react-query": "^3.39.3", "react-vega": "^7.6.0", - "rollup-plugin-re": "^1.0.7", "vega": "5.25.0", "vega-lite": "5.1.0", "vitest": "^0.31.4" @@ -2909,6 +2970,16 @@ "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz", @@ -4424,6 +4495,11 @@ "node": ">=10" } }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, "node_modules/clean-set": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz", @@ -4735,6 +4811,11 @@ "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -5858,6 +5939,11 @@ "node": ">=4" } }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -7155,6 +7241,39 @@ "node": ">=6.9.0" } }, + "node_modules/geotiff": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.7.tgz", + "integrity": "sha512-FKvFTNowMU5K6lHYY2f83d4lS2rsCNdpUC28AX61x9ZzzqPNaWFElWv93xj0eJFaNyOYA63ic5OzJ88dHpoA5Q==", + "dependencies": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2" + }, + "engines": { + "node": ">=10.19" + } + }, + "node_modules/geotiff/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "node_modules/geotiff/node_modules/quick-lru": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.1.tgz", + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -7831,9 +7950,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "optional": true, - "peer": true + ] }, "node_modules/ignore": { "version": "5.2.4", @@ -8784,6 +8901,16 @@ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8956,14 +9083,6 @@ "yallist": "^3.0.2" } }, - "node_modules/magic-string": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz", - "integrity": "sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==", - "dependencies": { - "vlq": "^0.2.1" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -9023,6 +9142,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "optional": true }, + "node_modules/mapbox-to-css-font": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz", + "integrity": "sha512-f+NBjJJY4T3dHtlEz1wCG7YFlkODEjFIYlxDdLIDMNpkSksqTt+l/d4rjuwItxuzkuMFvPyrjzV2lxRM4ePcIA==" + }, "node_modules/markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", @@ -11492,6 +11616,32 @@ "node": ">= 14" } }, + "node_modules/ol": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-7.4.0.tgz", + "integrity": "sha512-bgBbiah694HhC0jt8ptEFNRXwgO8d6xWH3G97PCg4bmn9Li5nLLbi59oSrvqUI6VPVwonPQF1YcqJymxxyMC6A==", + "dependencies": { + "earcut": "^2.2.3", + "geotiff": "^2.0.7", + "ol-mapbox-style": "^10.1.0", + "pbf": "3.2.1", + "rbush": "^3.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/ol-mapbox-style": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-10.6.0.tgz", + "integrity": "sha512-s86QhCoyyKVRsYkvPzzdWd///bhYh3onWrBq4lNXnCd9G/hS6AoK023kn4zlDESVlTBDTWLz8vhOistp0M3TXA==", + "dependencies": { + "@mapbox/mapbox-gl-style-spec": "^13.23.1", + "mapbox-to-css-font": "^2.4.1", + "ol": "^7.3.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -11638,6 +11788,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -11735,6 +11890,18 @@ "node": "*" } }, + "node_modules/pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -12055,6 +12222,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "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==" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -12173,6 +12345,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": { + "quickselect": "^2.0.0" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -12221,6 +12406,19 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/react-markdown": { "version": "8.0.7", "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", @@ -12290,6 +12488,21 @@ "react-dom": "^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0" } }, + "node_modules/react-reconciler": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -12828,6 +13041,14 @@ "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==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, "node_modules/retext": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/retext/-/retext-8.1.0.tgz", @@ -12949,28 +13170,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-re": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/rollup-plugin-re/-/rollup-plugin-re-1.0.7.tgz", - "integrity": "sha512-TyFf3QaV/eJ/50k4wp5BM0SodGy0Idq0uOgvA1q3gHRwgXLPVX5y3CRKkBuHzKTZPC9CTZX7igKw5UvgjDls8w==", - "dependencies": { - "magic-string": "^0.16.0", - "rollup-pluginutils": "^2.0.1" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" - }, "node_modules/rtl-css-js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", @@ -13314,6 +13513,34 @@ "node": ">= 10" } }, + "node_modules/sort-asc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz", + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-desc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz", + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz", + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==", + "dependencies": { + "sort-asc": "^0.1.0", + "sort-desc": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -15964,11 +16191,6 @@ "node": ">=12" } }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -16173,6 +16395,11 @@ } } }, + "node_modules/xml-utils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.7.0.tgz", + "integrity": "sha512-bWB489+RQQclC7A9OW8e5BzbT8Tu//jtAOvkYwewFr+Q9T9KDGvfzC1lp0pYPEQPEoPQLDkmxkepSC/2gIAZGw==" + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/examples/openspending/pages/_app.tsx b/examples/openspending/pages/_app.tsx index 59d766fb..406c2fc7 100644 --- a/examples/openspending/pages/_app.tsx +++ b/examples/openspending/pages/_app.tsx @@ -1,5 +1,6 @@ import { AppProps } from 'next/app'; import './styles.css'; +import '@portaljs/components/styles.css'; import { NextSeo } from 'next-seo'; import { useEffect } from 'react'; diff --git a/examples/openspending/pages/stories/[fileName].tsx b/examples/openspending/pages/stories/[fileName].tsx index 9166f3b0..a7d33974 100644 --- a/examples/openspending/pages/stories/[fileName].tsx +++ b/examples/openspending/pages/stories/[fileName].tsx @@ -4,7 +4,12 @@ import { GetStaticProps } from 'next'; import Layout from '../../components/_shared/Layout'; import { formatDate } from '@/utils/formatDate'; import parse from '../../lib/markdown'; -import DataRichDocument from '../../components/DataRichDocument'; +import dynamic from 'next/dynamic'; + +const DataRichDocument = dynamic( + () => import('../../components/DataRichDocument'), + { ssr: false } +); export default function Page({ source, meta }) { return ( @@ -46,7 +51,10 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { export async function getStaticPaths() { const mddb = await clientPromise; - let allDocuments = await mddb.getFiles({ extensions: ['mdx'], folder: 'stories' }); + let allDocuments = await mddb.getFiles({ + extensions: ['mdx'], + folder: 'stories', + }); const paths = allDocuments .filter((page) => page.metadata?.isDraft !== true) diff --git a/package-lock.json b/package-lock.json index 6faef11f..621d10ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7089,6 +7089,50 @@ "node": ">= 4.0.0" } }, + "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-style-spec": { + "version": "13.28.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz", + "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/unitbezier": "^0.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^2.0.0", + "minimist": "^1.2.6", + "rw": "^1.3.3", + "sort-object": "^0.3.2" + }, + "bin": { + "gl-style-composite": "bin/gl-style-composite.js", + "gl-style-format": "bin/gl-style-format.js", + "gl-style-migrate": "bin/gl-style-migrate.js", + "gl-style-validate": "bin/gl-style-validate.js" + } + }, + "node_modules/@mapbox/mapbox-gl-style-spec/node_modules/json-stringify-pretty-compact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==" + }, + "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==" + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==" + }, "node_modules/@mdx-js/mdx": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", @@ -8613,6 +8657,11 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@petamoriken/float16": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.1.tgz", + "integrity": "sha512-oj3dU9kuMy8AqrreIboVh3KCJGSQO5T+dJ8JQFl369961jTWvPLP1GIlLy0FVoWehXLoI9BXygu/yzuNiIHBlg==" + }, "node_modules/@phenomnomnominal/tsquery": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", @@ -8645,6 +8694,14 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@planet/maps": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@planet/maps/-/maps-8.1.0.tgz", + "integrity": "sha512-THvbooWXFZYyjSdoqi6MFNqnjrfnO5Oev1tKh6ORjxFru0N69gZwUfEduRjg99VNklmaAk2BPaCatgKs5qr0XA==", + "dependencies": { + "react-reconciler": "^0.29.0" + } + }, "node_modules/@portaljs/ckan": { "resolved": "packages/ckan", "link": true @@ -8808,6 +8865,16 @@ "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -11814,9 +11881,9 @@ } }, "node_modules/@swc/core": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.49.tgz", - "integrity": "sha512-br44ZHOfE9YyRGcORSLkHFQHTvhwRcaithBJ1Q5y5iMGpLbH0Wai3GN49L60RvmGwxNJfWzT+E7+rNNR7ewKgA==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.68.tgz", + "integrity": "sha512-njGQuJO+Wy06dEayt70cf0c/KI3HGjm4iW9LLViVLBuYNzJ4SSdNfzejludzufu6im+dsDJ0i3QjgWhAIcVHMQ==", "dev": true, "hasInstallScript": true, "engines": { @@ -11827,16 +11894,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.49", - "@swc/core-darwin-x64": "1.3.49", - "@swc/core-linux-arm-gnueabihf": "1.3.49", - "@swc/core-linux-arm64-gnu": "1.3.49", - "@swc/core-linux-arm64-musl": "1.3.49", - "@swc/core-linux-x64-gnu": "1.3.49", - "@swc/core-linux-x64-musl": "1.3.49", - "@swc/core-win32-arm64-msvc": "1.3.49", - "@swc/core-win32-ia32-msvc": "1.3.49", - "@swc/core-win32-x64-msvc": "1.3.49" + "@swc/core-darwin-arm64": "1.3.68", + "@swc/core-darwin-x64": "1.3.68", + "@swc/core-linux-arm-gnueabihf": "1.3.68", + "@swc/core-linux-arm64-gnu": "1.3.68", + "@swc/core-linux-arm64-musl": "1.3.68", + "@swc/core-linux-x64-gnu": "1.3.68", + "@swc/core-linux-x64-musl": "1.3.68", + "@swc/core-win32-arm64-msvc": "1.3.68", + "@swc/core-win32-ia32-msvc": "1.3.68", + "@swc/core-win32-x64-msvc": "1.3.68" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -11848,9 +11915,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.49.tgz", - "integrity": "sha512-g7aIfXh6uPHmhLXdjXQq5t3HAyS/EdvujasW1DIS5k8UqOBaSoCcSGtLIjzcLv3KujqNfYcm118E+12H0nY6fQ==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.68.tgz", + "integrity": "sha512-Z5pNxeuP2NxpOHTzDQkJs0wAPLnTlglZnR3WjObijwvdwT/kw1Y5EPDKM/BVSIeG40SPMkDLBbI0aj0qyXzrBA==", "cpu": [ "arm64" ], @@ -11864,9 +11931,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.49.tgz", - "integrity": "sha512-eSIxVX0YDw40Bre5sAx2BV3DzdIGzmQvCf2yiBvLqiiL6GC0mmuDeWbUCAzdUX6fJ6FUVEBMUVqNOc9oJ2/d5w==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.68.tgz", + "integrity": "sha512-ZHl42g6yXhfX4PzAQ0BNvBXpt/OcbAHfubWRN6eXELK3fiNnxL7QBW1if7iizlq6iA+Mj1pwHyyUit1pz0+fgA==", "cpu": [ "x64" ], @@ -11880,9 +11947,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.49.tgz", - "integrity": "sha512-8mj3IcRVr/OJY0mVITz6Z5osNAMJK5GiKDaZ+3QejPLbl6aiu4sH4GmTHDRN14RnaVXOpecsGcUoQmNoNa3u3w==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.68.tgz", + "integrity": "sha512-Mk8f6KCOQ2CNAR4PtWajIjS6XKSSR7ZYDOCf1GXRxhS3qEyQH7V8elWvqWYqHcT4foO60NUmxA/NOM/dQrdO1A==", "cpu": [ "arm" ], @@ -11896,9 +11963,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.49.tgz", - "integrity": "sha512-Rmg9xw6tmpOpf6GKKjpHQGmjfHzqSths5ebI2ahrHlhekzZF2HYmPkVw4bHda8Bja6mbaw8FVBgBHjPU8mMeDA==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.68.tgz", + "integrity": "sha512-RhBllggh9t9sIxaRgRcGrVaS7fDk6KsIqR6b9+dwU5OyDr4ZyHWw1ZaH/1/HAebuXYhNBjoNUiRtca6lKRIPgQ==", "cpu": [ "arm64" ], @@ -11912,9 +11979,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.49.tgz", - "integrity": "sha512-nlKPYMogAI3Aak6Mlkag8/2AlHAZ/DpH7RjhfMazsaGhD/sQOmYdyY9Al69ejpa419YJuREeeeLoojFlSsd30g==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.68.tgz", + "integrity": "sha512-8K3zjU+tFgn6yGDEeD343gkKaHU9dhz77NiVkI1VzwRaT/Ag5pwl5eMQ1yStm8koNFzn3zq6rGjHfI5g2yI5Wg==", "cpu": [ "arm64" ], @@ -11928,9 +11995,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.49.tgz", - "integrity": "sha512-QOyeJQ6NVi73SJcizbwvIZTiGA/N+BxX9liRrvibumaQmRh8fWjJiLNsv3ODSHeuonak7E8Bf7a7NnSTyu48Mw==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.68.tgz", + "integrity": "sha512-4xAnvsBOyeTL0AB8GWlRKDM/hsysJ5jr5qvdKKI3rZfJgnnxl/xSX6TJKPsJ8gygfUJ3BmfCbmUmEyeDZ3YPvA==", "cpu": [ "x64" ], @@ -11944,9 +12011,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.49.tgz", - "integrity": "sha512-WlDMz+SOpYC9O/ZBUw1oiyWI7HyUCMlf/HS8Fy/kRI3eGoGCUxVTCJ1mP57GdQr4Wg32Y/ZpO2KSNQFWnT8mAw==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.68.tgz", + "integrity": "sha512-RCpaBo1fcpy1EFdjF+I7N4lfzOaHXVV0iMw/ABM+0PD6tp3V/9pxsguaZyeAHyEiUlDA6PZ4TfXv5zfnXEgW4Q==", "cpu": [ "x64" ], @@ -11960,9 +12027,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.49.tgz", - "integrity": "sha512-41LZOeI94Za3twib8KOIjnHYAZ+nkBFmboaREsFR1760S7jiMVywqWX8nFZvn/CXj15Fjjgdgyuig+zMREwXwQ==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.68.tgz", + "integrity": "sha512-v2WZvXrSslYEpY1nqpItyamL4DyaJinmOkXvM8Bc1LLKU5rGuvmBdjUYg/5Y+o0AUynuiWubpgHNOkBWiCvfqw==", "cpu": [ "arm64" ], @@ -11976,9 +12043,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.49.tgz", - "integrity": "sha512-IdqLPoMKssyAoOCZdNXmnAd6/uyx+Hb9KSfZUHepZaNfwMy6J5XXrOsbYs3v53FH8MtekUUdV+mMX4me9bcv9w==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.68.tgz", + "integrity": "sha512-HH5NJrIdzkJs+1xxprie0qSCMBeL9yeEhcC1yZTzYv8bwmabOUSdtKIqS55iYP/2hLWn9CTbvKPmLOIhCopW3Q==", "cpu": [ "ia32" ], @@ -11992,9 +12059,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.49.tgz", - "integrity": "sha512-7Fqjo5pS3uIohhSbYSaR0+e/bJdxmQb4oG97FIh5qvlCCGQaQ9UiaEeYy4uK0Ad+Menum1IXCAEiG7RHcl6Eyw==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.68.tgz", + "integrity": "sha512-9HZVtLQUgK8r/yXQdwe0VBexbIcrY6+fBROhs7AAPWdewpaUeLkwQEJk6TbYr9CQuHw26FFGg6SjwAiqXF+kgQ==", "cpu": [ "x64" ], @@ -12696,6 +12763,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/leaflet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.3.tgz", + "integrity": "sha512-Caa1lYOgKVqDkDZVWkto2Z5JtVo09spEaUt2S69LiugbBpoqQu92HYFMGUbYezZbnBkyOxMNPXHSgRrRY5UyIA==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/lodash": { "version": "4.14.195", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", @@ -13283,6 +13359,18 @@ "vite": "^4.2.0" } }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", + "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.61" + }, + "peerDependencies": { + "vite": "^4" + } + }, "node_modules/@vitest/expect": { "version": "0.31.4", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.4.tgz", @@ -15525,6 +15613,11 @@ "node": ">=10" } }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -16362,6 +16455,11 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -17901,6 +17999,11 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -20223,6 +20326,39 @@ "node": ">=6.9.0" } }, + "node_modules/geotiff": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.7.tgz", + "integrity": "sha512-FKvFTNowMU5K6lHYY2f83d4lS2rsCNdpUC28AX61x9ZzzqPNaWFElWv93xj0eJFaNyOYA63ic5OzJ88dHpoA5Q==", + "dependencies": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2" + }, + "engines": { + "node": ">=10.19" + } + }, + "node_modules/geotiff/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "node_modules/geotiff/node_modules/quick-lru": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.1.tgz", + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -21043,6 +21179,12 @@ "node": ">= 0.8" } }, + "node_modules/http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "dev": true + }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -21187,7 +21329,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "devOptional": true, "funding": [ { "type": "github", @@ -21982,6 +22123,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -27579,6 +27726,16 @@ "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -27780,6 +27937,12 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -27836,6 +27999,12 @@ "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==" }, + "node_modules/lodash.trim": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz", + "integrity": "sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg==", + "dev": true + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -28113,6 +28282,11 @@ "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", "dev": true }, + "node_modules/mapbox-to-css-font": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz", + "integrity": "sha512-f+NBjJJY4T3dHtlEz1wCG7YFlkODEjFIYlxDdLIDMNpkSksqTt+l/d4rjuwItxuzkuMFvPyrjzV2lxRM4ePcIA==" + }, "node_modules/markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", @@ -30744,6 +30918,32 @@ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" }, + "node_modules/ol": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-7.4.0.tgz", + "integrity": "sha512-bgBbiah694HhC0jt8ptEFNRXwgO8d6xWH3G97PCg4bmn9Li5nLLbi59oSrvqUI6VPVwonPQF1YcqJymxxyMC6A==", + "dependencies": { + "earcut": "^2.2.3", + "geotiff": "^2.0.7", + "ol-mapbox-style": "^10.1.0", + "pbf": "3.2.1", + "rbush": "^3.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/ol-mapbox-style": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-10.6.0.tgz", + "integrity": "sha512-s86QhCoyyKVRsYkvPzzdWd///bhYh3onWrBq4lNXnCd9G/hS6AoK023kn4zlDESVlTBDTWLz8vhOistp0M3TXA==", + "dependencies": { + "@mapbox/mapbox-gl-style-spec": "^13.23.1", + "mapbox-to-css-font": "^2.4.1", + "ol": "^7.3.0" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -31101,6 +31301,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -31208,6 +31413,18 @@ "node": "*" } }, + "node_modules/pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, "node_modules/peek-stream": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", @@ -31466,6 +31683,25 @@ "postcss": "^8.0.0" } }, + "node_modules/postcss-import-url": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/postcss-import-url/-/postcss-import-url-7.2.0.tgz", + "integrity": "sha512-El61K/5+Rv753G9mBiHyQlOIN2mBfN0YHPMXLlgIo/m1+tPDLM32wd97WoUjc8FHUnC6EyyfVA8RDuKoyuVl0Q==", + "dev": true, + "dependencies": { + "http-https": "^1.0.0", + "is-url": "^1.2.4", + "lodash.assign": "^4.2.0", + "lodash.trim": "^4.5.1", + "resolve-relative-url": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/postcss-js": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", @@ -32134,6 +32370,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "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==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -32433,6 +32674,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -32467,6 +32718,11 @@ "node": ">=8" } }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, "node_modules/ramda": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", @@ -32510,6 +32766,14 @@ "node": ">= 0.8" } }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": { + "quickselect": "^2.0.0" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -32646,6 +32910,19 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/react-query": { "version": "3.39.3", "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", @@ -32680,6 +32957,21 @@ "react-dom": "^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0" } }, + "node_modules/react-reconciler": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -33482,6 +33774,23 @@ "node": ">=8" } }, + "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==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "node_modules/resolve-relative-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-relative-url/-/resolve-relative-url-1.0.0.tgz", + "integrity": "sha512-zpcelQBAmrwckiyRmym9os1goECU3EzuTU/UrYkGzXV0i14n8FkyGUvwkOYA5klqVLq1Hz/EiFZMS7bZQdd+EA==", + "dev": true, + "dependencies": { + "url": "0.10.x" + } + }, "node_modules/resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -33754,23 +34063,6 @@ "node": ">=8" } }, - "node_modules/rollup-plugin-re": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/rollup-plugin-re/-/rollup-plugin-re-1.0.7.tgz", - "integrity": "sha512-TyFf3QaV/eJ/50k4wp5BM0SodGy0Idq0uOgvA1q3gHRwgXLPVX5y3CRKkBuHzKTZPC9CTZX7igKw5UvgjDls8w==", - "dependencies": { - "magic-string": "^0.16.0", - "rollup-pluginutils": "^2.0.1" - } - }, - "node_modules/rollup-plugin-re/node_modules/magic-string": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz", - "integrity": "sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==", - "dependencies": { - "vlq": "^0.2.1" - } - }, "node_modules/rollup-plugin-typescript2": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz", @@ -33852,6 +34144,7 @@ "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, "dependencies": { "estree-walker": "^0.6.1" } @@ -33859,7 +34152,8 @@ "node_modules/rollup-pluginutils/node_modules/estree-walker": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true }, "node_modules/rtl-css-js": { "version": "1.16.1", @@ -34491,6 +34785,34 @@ "node": ">=6" } }, + "node_modules/sort-asc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz", + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-desc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz", + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz", + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==", + "dependencies": { + "sort-asc": "^0.1.0", + "sort-desc": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -37109,6 +37431,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, "node_modules/url-loader": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", @@ -37164,6 +37496,12 @@ "requires-port": "^1.0.0" } }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, "node_modules/use-callback-ref": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", @@ -38115,6 +38453,49 @@ "node": ">=12" } }, + "node_modules/vite-plugin-swc-only": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/vite-plugin-swc-only/-/vite-plugin-swc-only-0.1.18.tgz", + "integrity": "sha512-PpYCGM32JdIpspkzjmvDit6Ft7qMkJt3XoAwELbNQ8OGyJUlt922r3BRXnsXndfL7a7u+KRq+xn2L3NQZT2nhQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "@swc/core": "^1.3.38" + }, + "peerDependencies": { + "@swc/core": "^1.3.38", + "vite": "^2.9 || ^3.0 || ^4.0" + } + }, + "node_modules/vite-plugin-swc-only/node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/vite-plugin-swc-only/node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, "node_modules/vite/node_modules/rollup": { "version": "3.23.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.1.tgz", @@ -38218,11 +38599,6 @@ "node": ">=12" } }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -38696,6 +39072,11 @@ "node": ">=12" } }, + "node_modules/xml-utils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.7.0.tgz", + "integrity": "sha512-bWB489+RQQclC7A9OW8e5BzbT8Tu//jtAOvkYwewFr+Q9T9KDGvfzC1lp0pYPEQPEoPQLDkmxkepSC/2gIAZGw==" + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -39254,20 +39635,24 @@ }, "packages/components": { "name": "@portaljs/components", - "version": "0.1.11", + "version": "0.1.12", "dependencies": { "@githubocto/flat-ui": "^0.14.1", "@heroicons/react": "^2.0.17", + "@planet/maps": "^8.1.0", "@tanstack/react-table": "^8.8.5", + "chroma-js": "^2.4.2", "flexsearch": "0.7.21", + "leaflet": "^1.9.4", "next-mdx-remote": "^4.4.1", + "ol": "^7.4.0", "papaparse": "^5.4.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.43.9", + "react-leaflet": "^4.2.1", "react-query": "^3.39.3", "react-vega": "^7.6.0", - "rollup-plugin-re": "^1.0.7", "vega": "5.25.0", "vega-lite": "5.1.0", "vitest": "^0.31.4" @@ -39280,13 +39665,16 @@ "@storybook/react": "^7.0.7", "@storybook/react-vite": "^7.0.7", "@storybook/testing-library": "^0.0.14-next.2", + "@swc/core": "^1.3.68", "@types/flexsearch": "^0.7.3", + "@types/leaflet": "^1.9.3", "@types/papaparse": "^5.3.7", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@typescript-eslint/eslint-plugin": "^5.57.1", "@typescript-eslint/parser": "^5.57.1", "@vitejs/plugin-react": "^4.0.0", + "@vitejs/plugin-react-swc": "^3.3.2", "autoprefixer": "^10.4.14", "eslint": "^8.38.0", "eslint-plugin-react-hooks": "^4.6.0", @@ -39294,12 +39682,15 @@ "eslint-plugin-storybook": "^0.6.11", "json": "^11.0.0", "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-import-url": "^7.2.0", "prop-types": "^15.8.1", "storybook": "^7.0.7", "tailwindcss": "^3.3.2", "typescript": "^5.0.2", "vite": "^4.3.2", - "vite-plugin-dts": "^2.3.0" + "vite-plugin-dts": "^2.3.0", + "vite-plugin-swc-only": "^0.1.18" }, "peerDependencies": { "react": "^18.2.0", @@ -39627,7 +40018,7 @@ }, "packages/core": { "name": "@portaljs/core", - "version": "1.0.3", + "version": "1.0.6", "license": "MIT", "dependencies": { "@docsearch/react": "^3.3.3", @@ -39653,7 +40044,7 @@ }, "packages/remark-callouts": { "name": "@portaljs/remark-callouts", - "version": "1.0.4", + "version": "1.0.5", "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^1.2.0", @@ -39663,7 +40054,7 @@ }, "packages/remark-embed": { "name": "@portaljs/remark-embed", - "version": "1.0.3", + "version": "1.0.4", "license": "MIT", "dependencies": { "unist-util-visit": "^4.1.1" @@ -39671,7 +40062,7 @@ }, "packages/remark-wiki-link": { "name": "@portaljs/remark-wiki-link", - "version": "1.0.3", + "version": "1.0.4", "license": "MIT", "dependencies": { "mdast-util-to-markdown": "^1.5.0", @@ -45051,6 +45442,43 @@ } } }, + "@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==" + }, + "@mapbox/mapbox-gl-style-spec": { + "version": "13.28.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz", + "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==", + "requires": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/unitbezier": "^0.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^2.0.0", + "minimist": "^1.2.6", + "rw": "^1.3.3", + "sort-object": "^0.3.2" + }, + "dependencies": { + "json-stringify-pretty-compact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==" + } + } + }, + "@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==" + }, + "@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==" + }, "@mdx-js/mdx": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", @@ -46124,6 +46552,11 @@ "node-gyp-build": "^4.3.0" } }, + "@petamoriken/float16": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.1.tgz", + "integrity": "sha512-oj3dU9kuMy8AqrreIboVh3KCJGSQO5T+dJ8JQFl369961jTWvPLP1GIlLy0FVoWehXLoI9BXygu/yzuNiIHBlg==" + }, "@phenomnomnominal/tsquery": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", @@ -46147,6 +46580,14 @@ "tslib": "^2.4.0" } }, + "@planet/maps": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@planet/maps/-/maps-8.1.0.tgz", + "integrity": "sha512-THvbooWXFZYyjSdoqi6MFNqnjrfnO5Oev1tKh6ORjxFru0N69gZwUfEduRjg99VNklmaAk2BPaCatgKs5qr0XA==", + "requires": { + "react-reconciler": "^0.29.0" + } + }, "@portaljs/ckan": { "version": "file:packages/ckan", "requires": { @@ -46407,6 +46848,7 @@ "requires": { "@githubocto/flat-ui": "^0.14.1", "@heroicons/react": "^2.0.17", + "@planet/maps": "^8.1.0", "@storybook/addon-essentials": "^7.0.7", "@storybook/addon-interactions": "^7.0.7", "@storybook/addon-links": "^7.0.7", @@ -46414,31 +46856,39 @@ "@storybook/react": "^7.0.7", "@storybook/react-vite": "^7.0.7", "@storybook/testing-library": "^0.0.14-next.2", + "@swc/core": "^1.3.68", "@tanstack/react-table": "^8.8.5", "@types/flexsearch": "^0.7.3", + "@types/leaflet": "^1.9.3", "@types/papaparse": "^5.3.7", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@typescript-eslint/eslint-plugin": "^5.57.1", "@typescript-eslint/parser": "^5.57.1", "@vitejs/plugin-react": "^4.0.0", + "@vitejs/plugin-react-swc": "^3.3.2", "autoprefixer": "^10.4.14", + "chroma-js": "^2.4.2", "eslint": "^8.38.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.3.4", "eslint-plugin-storybook": "^0.6.11", "flexsearch": "0.7.21", "json": "^11.0.0", + "leaflet": "^1.9.4", "next-mdx-remote": "^4.4.1", + "ol": "^7.4.0", "papaparse": "^5.4.1", "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-import-url": "^7.2.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.43.9", + "react-leaflet": "^4.2.1", "react-query": "^3.39.3", "react-vega": "^7.6.0", - "rollup-plugin-re": "^1.0.7", "storybook": "^7.0.7", "tailwindcss": "^3.3.2", "typescript": "^5.0.2", @@ -46446,6 +46896,7 @@ "vega-lite": "5.1.0", "vite": "^4.3.2", "vite-plugin-dts": "^2.3.0", + "vite-plugin-swc-only": "^0.1.18", "vitest": "^0.31.4" }, "dependencies": { @@ -46799,6 +47250,12 @@ "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" }, + "@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "requires": {} + }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -48924,90 +49381,90 @@ } }, "@swc/core": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.49.tgz", - "integrity": "sha512-br44ZHOfE9YyRGcORSLkHFQHTvhwRcaithBJ1Q5y5iMGpLbH0Wai3GN49L60RvmGwxNJfWzT+E7+rNNR7ewKgA==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.68.tgz", + "integrity": "sha512-njGQuJO+Wy06dEayt70cf0c/KI3HGjm4iW9LLViVLBuYNzJ4SSdNfzejludzufu6im+dsDJ0i3QjgWhAIcVHMQ==", "dev": true, "requires": { - "@swc/core-darwin-arm64": "1.3.49", - "@swc/core-darwin-x64": "1.3.49", - "@swc/core-linux-arm-gnueabihf": "1.3.49", - "@swc/core-linux-arm64-gnu": "1.3.49", - "@swc/core-linux-arm64-musl": "1.3.49", - "@swc/core-linux-x64-gnu": "1.3.49", - "@swc/core-linux-x64-musl": "1.3.49", - "@swc/core-win32-arm64-msvc": "1.3.49", - "@swc/core-win32-ia32-msvc": "1.3.49", - "@swc/core-win32-x64-msvc": "1.3.49" + "@swc/core-darwin-arm64": "1.3.68", + "@swc/core-darwin-x64": "1.3.68", + "@swc/core-linux-arm-gnueabihf": "1.3.68", + "@swc/core-linux-arm64-gnu": "1.3.68", + "@swc/core-linux-arm64-musl": "1.3.68", + "@swc/core-linux-x64-gnu": "1.3.68", + "@swc/core-linux-x64-musl": "1.3.68", + "@swc/core-win32-arm64-msvc": "1.3.68", + "@swc/core-win32-ia32-msvc": "1.3.68", + "@swc/core-win32-x64-msvc": "1.3.68" } }, "@swc/core-darwin-arm64": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.49.tgz", - "integrity": "sha512-g7aIfXh6uPHmhLXdjXQq5t3HAyS/EdvujasW1DIS5k8UqOBaSoCcSGtLIjzcLv3KujqNfYcm118E+12H0nY6fQ==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.68.tgz", + "integrity": "sha512-Z5pNxeuP2NxpOHTzDQkJs0wAPLnTlglZnR3WjObijwvdwT/kw1Y5EPDKM/BVSIeG40SPMkDLBbI0aj0qyXzrBA==", "dev": true, "optional": true }, "@swc/core-darwin-x64": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.49.tgz", - "integrity": "sha512-eSIxVX0YDw40Bre5sAx2BV3DzdIGzmQvCf2yiBvLqiiL6GC0mmuDeWbUCAzdUX6fJ6FUVEBMUVqNOc9oJ2/d5w==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.68.tgz", + "integrity": "sha512-ZHl42g6yXhfX4PzAQ0BNvBXpt/OcbAHfubWRN6eXELK3fiNnxL7QBW1if7iizlq6iA+Mj1pwHyyUit1pz0+fgA==", "dev": true, "optional": true }, "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.49.tgz", - "integrity": "sha512-8mj3IcRVr/OJY0mVITz6Z5osNAMJK5GiKDaZ+3QejPLbl6aiu4sH4GmTHDRN14RnaVXOpecsGcUoQmNoNa3u3w==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.68.tgz", + "integrity": "sha512-Mk8f6KCOQ2CNAR4PtWajIjS6XKSSR7ZYDOCf1GXRxhS3qEyQH7V8elWvqWYqHcT4foO60NUmxA/NOM/dQrdO1A==", "dev": true, "optional": true }, "@swc/core-linux-arm64-gnu": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.49.tgz", - "integrity": "sha512-Rmg9xw6tmpOpf6GKKjpHQGmjfHzqSths5ebI2ahrHlhekzZF2HYmPkVw4bHda8Bja6mbaw8FVBgBHjPU8mMeDA==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.68.tgz", + "integrity": "sha512-RhBllggh9t9sIxaRgRcGrVaS7fDk6KsIqR6b9+dwU5OyDr4ZyHWw1ZaH/1/HAebuXYhNBjoNUiRtca6lKRIPgQ==", "dev": true, "optional": true }, "@swc/core-linux-arm64-musl": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.49.tgz", - "integrity": "sha512-nlKPYMogAI3Aak6Mlkag8/2AlHAZ/DpH7RjhfMazsaGhD/sQOmYdyY9Al69ejpa419YJuREeeeLoojFlSsd30g==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.68.tgz", + "integrity": "sha512-8K3zjU+tFgn6yGDEeD343gkKaHU9dhz77NiVkI1VzwRaT/Ag5pwl5eMQ1yStm8koNFzn3zq6rGjHfI5g2yI5Wg==", "dev": true, "optional": true }, "@swc/core-linux-x64-gnu": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.49.tgz", - "integrity": "sha512-QOyeJQ6NVi73SJcizbwvIZTiGA/N+BxX9liRrvibumaQmRh8fWjJiLNsv3ODSHeuonak7E8Bf7a7NnSTyu48Mw==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.68.tgz", + "integrity": "sha512-4xAnvsBOyeTL0AB8GWlRKDM/hsysJ5jr5qvdKKI3rZfJgnnxl/xSX6TJKPsJ8gygfUJ3BmfCbmUmEyeDZ3YPvA==", "dev": true, "optional": true }, "@swc/core-linux-x64-musl": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.49.tgz", - "integrity": "sha512-WlDMz+SOpYC9O/ZBUw1oiyWI7HyUCMlf/HS8Fy/kRI3eGoGCUxVTCJ1mP57GdQr4Wg32Y/ZpO2KSNQFWnT8mAw==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.68.tgz", + "integrity": "sha512-RCpaBo1fcpy1EFdjF+I7N4lfzOaHXVV0iMw/ABM+0PD6tp3V/9pxsguaZyeAHyEiUlDA6PZ4TfXv5zfnXEgW4Q==", "dev": true, "optional": true }, "@swc/core-win32-arm64-msvc": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.49.tgz", - "integrity": "sha512-41LZOeI94Za3twib8KOIjnHYAZ+nkBFmboaREsFR1760S7jiMVywqWX8nFZvn/CXj15Fjjgdgyuig+zMREwXwQ==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.68.tgz", + "integrity": "sha512-v2WZvXrSslYEpY1nqpItyamL4DyaJinmOkXvM8Bc1LLKU5rGuvmBdjUYg/5Y+o0AUynuiWubpgHNOkBWiCvfqw==", "dev": true, "optional": true }, "@swc/core-win32-ia32-msvc": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.49.tgz", - "integrity": "sha512-IdqLPoMKssyAoOCZdNXmnAd6/uyx+Hb9KSfZUHepZaNfwMy6J5XXrOsbYs3v53FH8MtekUUdV+mMX4me9bcv9w==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.68.tgz", + "integrity": "sha512-HH5NJrIdzkJs+1xxprie0qSCMBeL9yeEhcC1yZTzYv8bwmabOUSdtKIqS55iYP/2hLWn9CTbvKPmLOIhCopW3Q==", "dev": true, "optional": true }, "@swc/core-win32-x64-msvc": { - "version": "1.3.49", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.49.tgz", - "integrity": "sha512-7Fqjo5pS3uIohhSbYSaR0+e/bJdxmQb4oG97FIh5qvlCCGQaQ9UiaEeYy4uK0Ad+Menum1IXCAEiG7RHcl6Eyw==", + "version": "1.3.68", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.68.tgz", + "integrity": "sha512-9HZVtLQUgK8r/yXQdwe0VBexbIcrY6+fBROhs7AAPWdewpaUeLkwQEJk6TbYr9CQuHw26FFGg6SjwAiqXF+kgQ==", "dev": true, "optional": true }, @@ -49605,6 +50062,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/leaflet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.3.tgz", + "integrity": "sha512-Caa1lYOgKVqDkDZVWkto2Z5JtVo09spEaUt2S69LiugbBpoqQu92HYFMGUbYezZbnBkyOxMNPXHSgRrRY5UyIA==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, "@types/lodash": { "version": "4.14.195", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", @@ -50075,6 +50541,15 @@ "react-refresh": "^0.14.0" } }, + "@vitejs/plugin-react-swc": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", + "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "dev": true, + "requires": { + "@swc/core": "^1.3.61" + } + }, "@vitest/expect": { "version": "0.31.4", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.4.tgz", @@ -51793,6 +52268,11 @@ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, + "chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -52453,6 +52933,11 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, + "csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -53620,6 +54105,11 @@ } } }, + "earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -55418,6 +55908,32 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "geotiff": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.7.tgz", + "integrity": "sha512-FKvFTNowMU5K6lHYY2f83d4lS2rsCNdpUC28AX61x9ZzzqPNaWFElWv93xj0eJFaNyOYA63ic5OzJ88dHpoA5Q==", + "requires": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2" + }, + "dependencies": { + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "quick-lru": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.1.tgz", + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==" + } + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -56041,6 +56557,12 @@ "toidentifier": "1.0.1" } }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "dev": true + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -56147,8 +56669,7 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "devOptional": true + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { "version": "5.2.4", @@ -56672,6 +57193,12 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, "is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -61034,6 +61561,16 @@ } } }, + "leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -61192,6 +61729,12 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -61248,6 +61791,12 @@ "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==" }, + "lodash.trim": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz", + "integrity": "sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg==", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -61456,6 +62005,11 @@ "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", "dev": true }, + "mapbox-to-css-font": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz", + "integrity": "sha512-f+NBjJJY4T3dHtlEz1wCG7YFlkODEjFIYlxDdLIDMNpkSksqTt+l/d4rjuwItxuzkuMFvPyrjzV2lxRM4ePcIA==" + }, "markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", @@ -63305,6 +63859,28 @@ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" }, + "ol": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-7.4.0.tgz", + "integrity": "sha512-bgBbiah694HhC0jt8ptEFNRXwgO8d6xWH3G97PCg4bmn9Li5nLLbi59oSrvqUI6VPVwonPQF1YcqJymxxyMC6A==", + "requires": { + "earcut": "^2.2.3", + "geotiff": "^2.0.7", + "ol-mapbox-style": "^10.1.0", + "pbf": "3.2.1", + "rbush": "^3.0.1" + } + }, + "ol-mapbox-style": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-10.6.0.tgz", + "integrity": "sha512-s86QhCoyyKVRsYkvPzzdWd///bhYh3onWrBq4lNXnCd9G/hS6AoK023kn4zlDESVlTBDTWLz8vhOistp0M3TXA==", + "requires": { + "@mapbox/mapbox-gl-style-spec": "^13.23.1", + "mapbox-to-css-font": "^2.4.1", + "ol": "^7.3.0" + } + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -63568,6 +64144,11 @@ "is-hexadecimal": "^2.0.0" } }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -63650,6 +64231,15 @@ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, + "pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "requires": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + } + }, "peek-stream": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", @@ -63834,6 +64424,19 @@ "resolve": "^1.1.7" } }, + "postcss-import-url": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/postcss-import-url/-/postcss-import-url-7.2.0.tgz", + "integrity": "sha512-El61K/5+Rv753G9mBiHyQlOIN2mBfN0YHPMXLlgIo/m1+tPDLM32wd97WoUjc8FHUnC6EyyfVA8RDuKoyuVl0Q==", + "dev": true, + "requires": { + "http-https": "^1.0.0", + "is-url": "^1.2.4", + "lodash.assign": "^4.2.0", + "lodash.trim": "^4.5.1", + "resolve-relative-url": "^1.0.0" + } + }, "postcss-js": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", @@ -64254,6 +64857,11 @@ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==" }, + "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==" + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -64495,6 +65103,12 @@ "side-channel": "^1.0.4" } }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -64512,6 +65126,11 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, "ramda": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", @@ -64545,6 +65164,14 @@ "unpipe": "1.0.0" } }, + "rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "requires": { + "quickselect": "^2.0.0" + } + }, "react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -64650,6 +65277,14 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "requires": { + "@react-leaflet/core": "^2.1.0" + } + }, "react-query": { "version": "3.39.3", "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", @@ -64666,6 +65301,15 @@ "integrity": "sha512-v2nyD5106rHf9dwHzq+WRlhCes83h1wJRHIMFjbZsYYsO6LF4mG/mR3cH7Cf+dkeHq65DItuqIbLn/3jjYjsHg==", "requires": {} }, + "react-reconciler": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, "react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -65261,6 +65905,23 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "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==", + "requires": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "resolve-relative-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-relative-url/-/resolve-relative-url-1.0.0.tgz", + "integrity": "sha512-zpcelQBAmrwckiyRmym9os1goECU3EzuTU/UrYkGzXV0i14n8FkyGUvwkOYA5klqVLq1Hz/EiFZMS7bZQdd+EA==", + "dev": true, + "requires": { + "url": "0.10.x" + } + }, "resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -65468,25 +66129,6 @@ } } }, - "rollup-plugin-re": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/rollup-plugin-re/-/rollup-plugin-re-1.0.7.tgz", - "integrity": "sha512-TyFf3QaV/eJ/50k4wp5BM0SodGy0Idq0uOgvA1q3gHRwgXLPVX5y3CRKkBuHzKTZPC9CTZX7igKw5UvgjDls8w==", - "requires": { - "magic-string": "^0.16.0", - "rollup-pluginutils": "^2.0.1" - }, - "dependencies": { - "magic-string": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz", - "integrity": "sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==", - "requires": { - "vlq": "^0.2.1" - } - } - } - }, "rollup-plugin-typescript2": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz", @@ -65551,6 +66193,7 @@ "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, "requires": { "estree-walker": "^0.6.1" }, @@ -65558,7 +66201,8 @@ "estree-walker": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true } } }, @@ -66063,6 +66707,25 @@ } } }, + "sort-asc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz", + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==" + }, + "sort-desc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz", + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==" + }, + "sort-object": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz", + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==", + "requires": { + "sort-asc": "^0.1.0", + "sort-desc": "^0.1.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -68024,6 +68687,24 @@ "punycode": "^2.1.0" } }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, "url-loader": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", @@ -68845,6 +69526,35 @@ } } }, + "vite-plugin-swc-only": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/vite-plugin-swc-only/-/vite-plugin-swc-only-0.1.18.tgz", + "integrity": "sha512-PpYCGM32JdIpspkzjmvDit6Ft7qMkJt3XoAwELbNQ8OGyJUlt922r3BRXnsXndfL7a7u+KRq+xn2L3NQZT2nhQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.2", + "@swc/core": "^1.3.38" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + } + } + }, "vitest": { "version": "0.31.4", "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.4.tgz", @@ -68887,11 +69597,6 @@ } } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, "w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -69247,6 +69952,11 @@ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "devOptional": true }, + "xml-utils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.7.0.tgz", + "integrity": "sha512-bWB489+RQQclC7A9OW8e5BzbT8Tu//jtAOvkYwewFr+Q9T9KDGvfzC1lp0pYPEQPEoPQLDkmxkepSC/2gIAZGw==" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", diff --git a/packages/components/.storybook/preview-head.html b/packages/components/.storybook/preview-head.html new file mode 100644 index 00000000..b43dc699 --- /dev/null +++ b/packages/components/.storybook/preview-head.html @@ -0,0 +1,10 @@ + + + diff --git a/packages/components/.storybook/preview.ts b/packages/components/.storybook/preview.ts index 45152b91..1ec353c5 100644 --- a/packages/components/.storybook/preview.ts +++ b/packages/components/.storybook/preview.ts @@ -1,6 +1,7 @@ import 'tailwindcss/tailwind.css' import '../src/index.css' + import type { Preview } from '@storybook/react'; const preview: Preview = { diff --git a/packages/components/package.json b/packages/components/package.json index 93cad484..32882e06 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -12,12 +12,14 @@ ], "scripts": { "dev": "npm run storybook", - "build": "tsc && vite build && npm run build-tailwind", + "example": "vite", + "build": "tsc && vite build && npm run build-tailwind && npm run fix-leaflet", "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", - "build-tailwind": "NODE_ENV=production npx tailwindcss -o ./dist/styles.css --minify", - "prepare": "npm run build" + "build-tailwind": "NODE_ENV=production npx tailwindcss --postcss -c tailwind.config.js -i src/index.css -o ./dist/styles.css --minify", + "prepare": "npm run build", + "fix-leaflet": "node ./scripts/fix-leaflet.cjs" }, "peerDependencies": { "react": "^18.2.0", @@ -26,16 +28,20 @@ "dependencies": { "@githubocto/flat-ui": "^0.14.1", "@heroicons/react": "^2.0.17", + "@planet/maps": "^8.1.0", "@tanstack/react-table": "^8.8.5", + "chroma-js": "^2.4.2", "flexsearch": "0.7.21", + "leaflet": "^1.9.4", "next-mdx-remote": "^4.4.1", + "ol": "^7.4.0", "papaparse": "^5.4.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.43.9", + "react-leaflet": "^4.2.1", "react-query": "^3.39.3", "react-vega": "^7.6.0", - "rollup-plugin-re": "^1.0.7", "vega": "5.25.0", "vega-lite": "5.1.0", "vitest": "^0.31.4" @@ -48,13 +54,16 @@ "@storybook/react": "^7.0.7", "@storybook/react-vite": "^7.0.7", "@storybook/testing-library": "^0.0.14-next.2", + "@swc/core": "^1.3.68", "@types/flexsearch": "^0.7.3", + "@types/leaflet": "^1.9.3", "@types/papaparse": "^5.3.7", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@typescript-eslint/eslint-plugin": "^5.57.1", "@typescript-eslint/parser": "^5.57.1", "@vitejs/plugin-react": "^4.0.0", + "@vitejs/plugin-react-swc": "^3.3.2", "autoprefixer": "^10.4.14", "eslint": "^8.38.0", "eslint-plugin-react-hooks": "^4.6.0", @@ -62,12 +71,15 @@ "eslint-plugin-storybook": "^0.6.11", "json": "^11.0.0", "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-import-url": "^7.2.0", "prop-types": "^15.8.1", "storybook": "^7.0.7", "tailwindcss": "^3.3.2", "typescript": "^5.0.2", "vite": "^4.3.2", - "vite-plugin-dts": "^2.3.0" + "vite-plugin-dts": "^2.3.0", + "vite-plugin-swc-only": "^0.1.18" }, "files": [ "dist" diff --git a/packages/components/portaljs-components-0.1.12.tgz b/packages/components/portaljs-components-0.1.12.tgz new file mode 100644 index 00000000..cbede784 Binary files /dev/null and b/packages/components/portaljs-components-0.1.12.tgz differ diff --git a/packages/components/postcss.config.js b/packages/components/postcss.config.js index 2e7af2b7..e24f213a 100644 --- a/packages/components/postcss.config.js +++ b/packages/components/postcss.config.js @@ -1,6 +1,9 @@ +console.log('PostCSS') + export default { plugins: { + 'postcss-import': {}, tailwindcss: {}, autoprefixer: {}, }, -} +}; diff --git a/packages/components/scripts/fix-leaflet.cjs b/packages/components/scripts/fix-leaflet.cjs new file mode 100644 index 00000000..4878a51b --- /dev/null +++ b/packages/components/scripts/fix-leaflet.cjs @@ -0,0 +1,6 @@ +const fs = require('fs'); +const path = require('path'); + +const leafletPath = path.join(require.resolve('leaflet'), '../') + +fs.cpSync(`${leafletPath}images`,'./dist/images', { recursive: true }); diff --git a/packages/components/src/components/Map.tsx b/packages/components/src/components/Map.tsx new file mode 100644 index 00000000..e55b2769 --- /dev/null +++ b/packages/components/src/components/Map.tsx @@ -0,0 +1,139 @@ +import { useEffect, useState } from 'react'; +import LoadingSpinner from './LoadingSpinner'; +import loadData from '../lib/loadData'; +import chroma from 'chroma-js'; +import { + MapContainer, + TileLayer, + GeoJSON as GeoJSONLayer, +} from 'react-leaflet'; + +import * as L from 'leaflet'; + +export type MapProps = { + data: string | GeoJSON.GeoJSON; + title?: string; + colorScale?: { + starting: string; + ending: string; + }; + center?: { latitude: number | undefined; longitude: number | undefined }; + zoom?: number; + tooltip?: { + prop: string; + }; +}; + +export function Map({ + data, + title = '', + colorScale = { starting: 'blue', ending: 'red' }, + center = { latitude: 45, longitude: 45 }, + zoom = 2, + tooltip = { + prop: '', + }, +}: MapProps) { + const [isLoading, setIsLoading] = useState(false); + + // By default, assumes data is an Array... + const [geoJsonData, setGeoJsonData] = useState(null); + + useEffect(() => { + // If data is string, assume it's a URL + if (typeof data === 'string') { + setIsLoading(true); + + loadData(data).then((res: any) => { + const geoJsonObject = JSON.parse(res); + + const colorScaleAr = chroma + .scale([colorScale.starting, colorScale.ending]) + .mode('lch') + .colors(geoJsonObject.features.length); + + geoJsonObject.features.forEach((feature, i) => { + if (feature.color === undefined) { + feature.color = colorScaleAr[i]; + } + }); + + setGeoJsonData(geoJsonObject); + setIsLoading(false); + }); + } else { + setGeoJsonData(data); + } + }, []); + + const onEachFeature = (feature, layer) => { + const geometryType = feature.type; + + if (tooltip.prop) + layer.bindTooltip(feature.properties[tooltip.prop], { + direction: 'center', + }); + + layer.on({ + mouseover: (event) => { + if (['Polygon', 'MultiPolygon'].includes(geometryType)) { + event.target.setStyle({ + fillColor: '#B85042', + }); + } + }, + mouseout: (event) => { + if (['Polygon', 'MultiPolygon'].includes(geometryType)) { + event.target.setStyle({ + fillColor: '#A7BEAE', + }); + } + }, + }); + }; + + return isLoading || !geoJsonData ? ( +
+ +
+ ) : ( + { + map.target.scrollWheelZoom.enable(); + + var info = new L.Control() as any; + + info.onAdd = function () { + this._div = L.DomUtil.create('div', 'info'); + this.update(); + return this._div; + }; + + info.update = function () { + this._div.innerHTML = `

${title}

`; + }; + + if (title) info.addTo(map.target); + + setTimeout(() => map.target.invalidateSize(), 5000); + }} + > + { + return { color: geoJsonFeature?.color }; + }} + onEachFeature={onEachFeature} + /> + +
+ ); +} diff --git a/packages/components/src/components/OpenLayers/Controls.jsx b/packages/components/src/components/OpenLayers/Controls.jsx new file mode 100644 index 00000000..56ffa921 --- /dev/null +++ b/packages/components/src/components/OpenLayers/Controls.jsx @@ -0,0 +1,84 @@ +import React, { useContext, useEffect, useState } from 'react'; +export const Controls = ({ children }) => { + return
{children}
; +}; + +import { FullScreen, Zoom } from 'ol/control'; +import { MapContext } from './Map'; + +export const FullScreenControl = () => { + const { map } = useContext(MapContext); + useEffect(() => { + if (!map) return; + let fullScreenControl = new FullScreen({ + className: 'ml-1 flex flex-col w-8 items-center mt-2', + activeClassName: + 'w-full inline-flex justify-center items-center rounded-t-md bg-white px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10 text-sm', + inactiveClassName: + 'inline-flex w-full justify-center items-center rounded-t-md bg-white px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10 text-sm', + }); + let zoomControl = new Zoom({ + className: 'ml-1 flex flex-col w-8 items-center', + zoomInClassName: + 'inline-flex w-full justify-center items-center bg-white px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10 text-sm', + zoomOutClassName: + 'inline-flex w-full justify-center items-center rounded-b-md bg-white px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10 text-sm', + }); + map.controls.push(fullScreenControl); + map.controls.push(zoomControl); + + return () => { + map.controls.remove(zoomControl); + map.controls.remove(fullScreenControl); + }; + }, [map]); + return null; +}; + +//build a list of checkboxes in react + +export const ListOfCheckboxes = ({ layers, shownLayers, setShownLayers }) => { + //layers is an array of url and name + function addLayer(layer) { + setShownLayers([...shownLayers, layer.url]); + } + + function removeLayer(layer) { + setShownLayers(shownLayers.filter((l) => l !== layer.url)); + } + + return ( +
+

Layers

+
    + {layers.map((layer, index) => ( +
  • +
    + + shownLayers.includes(layer.url) + ? removeLayer(layer) + : addLayer(layer) + } + value={true} + className="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 focus:ring-2 " + > + +
    +
  • + ))} +
+
+ ); +}; diff --git a/packages/components/src/components/OpenLayers/HeatMapLayer.jsx b/packages/components/src/components/OpenLayers/HeatMapLayer.jsx new file mode 100644 index 00000000..7137b085 --- /dev/null +++ b/packages/components/src/components/OpenLayers/HeatMapLayer.jsx @@ -0,0 +1,29 @@ +import { useContext, useEffect, useState } from 'react'; +import HeatMap from 'ol/layer/Heatmap'; +import { MapContext } from './Map'; +const HeatMapLayer = ({ source, style, zIndex = 0 }) => { + const { map } = useContext(MapContext); + const [heatMapLayer, setHeatMapLayer] = useState(null); + useEffect(() => { + if (!map) return; + let heatMapLayer = new HeatMap({ + source, + style, + blur: parseInt(5, 10), + radius: parseInt(5, 10), + }); + map.addLayer(heatMapLayer); + setHeatMapLayer(heatMapLayer); + heatMapLayer.setZIndex(zIndex); + return () => { + if (map) { + map.removeLayer(heatMapLayer); + } + }; + }, [map]); + useEffect(() => { + heatMapLayer && heatMapLayer.setZIndex(zIndex); + }, [zIndex]); + return null; +}; +export default HeatMapLayer; diff --git a/packages/components/src/components/OpenLayers/Layers.jsx b/packages/components/src/components/OpenLayers/Layers.jsx new file mode 100644 index 00000000..079b6b3a --- /dev/null +++ b/packages/components/src/components/OpenLayers/Layers.jsx @@ -0,0 +1,4 @@ +import React from 'react'; +export const Layers = ({ children }) => { + return
{children}
; +}; diff --git a/packages/components/src/components/OpenLayers/Map.jsx b/packages/components/src/components/OpenLayers/Map.jsx new file mode 100644 index 00000000..a897a5c7 --- /dev/null +++ b/packages/components/src/components/OpenLayers/Map.jsx @@ -0,0 +1,50 @@ +import React, { useRef, useState, useEffect } from 'react'; +import * as ol from 'ol'; + +export const MapContext = new React.createContext(); + +const Map = ({ children, zoom, center, setSelected }) => { + const mapRef = useRef(); + const [map, setMap] = useState(null); + // on component mount + useEffect(() => { + let options = { + view: new ol.View({ zoom, center }), + layers: [], + controls: [], + overlays: [], + }; + let mapObject = new ol.Map(options); + mapObject.setTarget(mapRef.current); + setMap(mapObject); + return () => mapObject.setTarget(undefined); + }, []); + + useEffect(() => { + if (map) { + if (setSelected !== null) { + let selected = null; + map.on('pointermove', function (e) { + map.forEachFeatureAtPixel(e.pixel, function (f) { + selected = f; + return true; + }); + if (selected) { + setSelected(selected); + } else { + setSelected(null); + } + }); + } + } + }, [map]); + return ( + +
+ {children} +
+
+ ); +}; + +export default Map; diff --git a/packages/components/src/components/OpenLayers/OpenLayers.tsx b/packages/components/src/components/OpenLayers/OpenLayers.tsx new file mode 100644 index 00000000..d5b60785 --- /dev/null +++ b/packages/components/src/components/OpenLayers/OpenLayers.tsx @@ -0,0 +1,136 @@ +import { useEffect, useState } from 'react'; +import Map from './Map'; +import { Layers } from './Layers'; +import { Fill, Icon, Style } from 'ol/style'; +import * as olSource from 'ol/source'; +import TileLayer from './TileLayer'; +import { fromLonLat } from 'ol/proj'; +import VectorLayer from './VectorLayer'; +import { Vector as VectorSource } from 'ol/source'; +import GeoJSON from 'ol/format/GeoJSON'; +import KML from 'ol/format/KML'; +import { colors } from './colors'; +import { FullScreenControl, Controls, ListOfCheckboxes } from './Controls'; +import HeatMapLayer from './HeatMapLayer'; + +function osm() { + return new olSource.OSM(); +} + +const formats = { + geojson: new GeoJSON(), + kml: new KML(), +}; + +interface OpenLayersProps { + layers: { + url: string; + name?: string; + format?: string; + heatmap?: boolean; + }[]; + center?: [number, number]; + zoom?: number; + popup?: (selected: any) => JSX.Element; +} + +export default function OpenLayers({ + layers, + center = [0, 0], + zoom = 1, + popup, +}: OpenLayersProps) { + const [shownLayers, setShownLayers] = useState( + layers.map((layer) => layer.url) + ); + const [selected, setSelected] = useState(null); + const [style, setStyle] = useState(null); + + useEffect(() => { + const style = new Style({ + fill: new Fill({ + color: '#eeeeee', + }), + image: new Icon({ + anchor: [0.5, 46], + anchorXUnits: 'fraction', + anchorYUnits: 'pixels', + width: 18, + height: 28, + src: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Google_Maps_icon_%282020%29.svg/418px-Google_Maps_icon_%282020%29.svg.png?20200218211225', + }), + }); + setStyle(style); + }, []); + + return ( +
+ + + + {layers.map((layer, index) => + !layer.heatmap ? ( + + ) : ( + + ) + )} + + {/* add a floating pane that will output the ListOfCheckboxes component using tailwind*/} +
+ +
+ {popup && selected && ( +
+ {popup(selected)} +
+ )} + + + +
+
+ ); +} diff --git a/packages/components/src/components/OpenLayers/TileLayer.jsx b/packages/components/src/components/OpenLayers/TileLayer.jsx new file mode 100644 index 00000000..6f68c249 --- /dev/null +++ b/packages/components/src/components/OpenLayers/TileLayer.jsx @@ -0,0 +1,23 @@ +import { useContext, useEffect } from 'react'; +import OLTileLayer from 'ol/layer/Tile'; +import { MapContext } from './Map'; +const TileLayer = ({ source, zIndex = 0 }) => { + const { map } = useContext(MapContext); + useEffect(() => { + if (!map) return; + + let tileLayer = new OLTileLayer({ + source, + zIndex, + }); + map.addLayer(tileLayer); + tileLayer.setZIndex(zIndex); + return () => { + if (map) { + map.removeLayer(tileLayer); + } + }; + }, [map]); + return null; +}; +export default TileLayer; diff --git a/packages/components/src/components/OpenLayers/VectorLayer.jsx b/packages/components/src/components/OpenLayers/VectorLayer.jsx new file mode 100644 index 00000000..2a5d9893 --- /dev/null +++ b/packages/components/src/components/OpenLayers/VectorLayer.jsx @@ -0,0 +1,33 @@ +import { useContext, useEffect, useState } from 'react'; +import OLVectorLayer from 'ol/layer/Vector'; +import { MapContext } from './Map'; +const VectorLayer = ({ source, style, zIndex = 0 }) => { + const { map } = useContext(MapContext); + const [vectorLayer, setVectorLayer] = useState(null); + useEffect(() => { + if (!map) return; + let vectorLayer = new OLVectorLayer({ + source, + style, + }); + const vectorSource = vectorLayer.getSource(); + vectorSource.on('featuresloadend', function () { + vectorSource.getFeatures().forEach((feature, index) => { + feature.setId(index); + }); + }); + map.addLayer(vectorLayer); + setVectorLayer(vectorLayer); + vectorLayer.setZIndex(zIndex); + return () => { + if (map) { + map.removeLayer(vectorLayer); + } + }; + }, [map]); + useEffect(() => { + vectorLayer && vectorLayer.setZIndex(zIndex); + }, [zIndex]); + return null; +}; +export default VectorLayer; diff --git a/packages/components/src/components/OpenLayers/colors.js b/packages/components/src/components/OpenLayers/colors.js new file mode 100644 index 00000000..e90708de --- /dev/null +++ b/packages/components/src/components/OpenLayers/colors.js @@ -0,0 +1,5210 @@ +export const colors = [ + { + name: 'Absolute Zero', + hex: '#0048BA', + }, + { + name: 'Acid Green', + hex: '#B0BF1A', + }, + { + name: 'Aero', + hex: '#7CB9E8', + }, + { + name: 'Aero Blue', + hex: '#C9FFE5', + }, + { + name: 'African Violet', + hex: '#B284BE', + }, + { + name: 'Air Force Blue (RAF)', + hex: '#5D8AA8', + }, + { + name: 'Air Force Blue (USAF)', + hex: '#00308F', + }, + { + name: 'Air Superiority Blue', + hex: '#72A0C1', + }, + { + name: 'Alabama Crimson', + hex: '#AF002A', + }, + { + name: 'Alabaster', + hex: '#F2F0E6', + }, + { + name: 'Alice Blue', + hex: '#F0F8FF', + }, + { + name: 'Alien Armpit', + hex: '#84DE02', + }, + { + name: 'Alizarin Crimson', + hex: '#E32636', + }, + { + name: 'Alloy Orange', + hex: '#C46210', + }, + { + name: 'Almond', + hex: '#EFDECD', + }, + { + name: 'Amaranth', + hex: '#E52B50', + }, + { + name: 'Amaranth Deep Purple', + hex: '#9F2B68', + }, + { + name: 'Amaranth Pink', + hex: '#F19CBB', + }, + { + name: 'Amaranth Purple', + hex: '#AB274F', + }, + { + name: 'Amaranth Red', + hex: '#D3212D', + }, + { + name: 'Amazon Store', + hex: '#3B7A57', + }, + { + name: 'Amazonite', + hex: '#00C4B0', + }, + { + name: 'Amber', + hex: '#FFBF00', + }, + { + name: 'Amber (SAE/ECE)', + hex: '#FF7E00', + }, + { + name: 'American Rose', + hex: '#FF033E', + }, + { + name: 'Amethyst', + hex: '#9966CC', + }, + { + name: 'Android Green', + hex: '#A4C639', + }, + { + name: 'Anti-Flash White', + hex: '#F2F3F4', + }, + { + name: 'Antique Brass', + hex: '#CD9575', + }, + { + name: 'Antique Bronze', + hex: '#665D1E', + }, + { + name: 'Antique Fuchsia', + hex: '#915C83', + }, + { + name: 'Antique Ruby', + hex: '#841B2D', + }, + { + name: 'Antique White', + hex: '#FAEBD7', + }, + { + name: 'Ao (English)', + hex: '#008000', + }, + { + name: 'Apple Green', + hex: '#8DB600', + }, + { + name: 'Apricot', + hex: '#FBCEB1', + }, + { + name: 'Aqua', + hex: '#00FFFF', + }, + { + name: 'Aquamarine', + hex: '#7FFFD4', + }, + { + name: 'Arctic Lime', + hex: '#D0FF14', + }, + { + name: 'Army Green', + hex: '#4B5320', + }, + { + name: 'Arsenic', + hex: '#3B444B', + }, + { + name: 'Artichoke', + hex: '#8F9779', + }, + { + name: 'Arylide Yellow', + hex: '#E9D66B', + }, + { + name: 'Ash Gray', + hex: '#B2BEB5', + }, + { + name: 'Asparagus', + hex: '#87A96B', + }, + { + name: 'Atomic Tangerine', + hex: '#FF9966', + }, + { + name: 'Auburn', + hex: '#A52A2A', + }, + { + name: 'Aureolin', + hex: '#FDEE00', + }, + { + name: 'AuroMetalSaurus', + hex: '#6E7F80', + }, + { + name: 'Avocado', + hex: '#568203', + }, + { + name: 'Awesome', + hex: '#FF2052', + }, + { + name: 'Aztec Gold', + hex: '#C39953', + }, + { + name: 'Azure', + hex: '#007FFF', + }, + { + name: 'Azure (Web Color)', + hex: '#F0FFFF', + }, + { + name: 'Azure Mist', + hex: '#F0FFFF', + }, + { + name: 'Azureish White', + hex: '#DBE9F4', + }, + { + name: 'Baby Blue', + hex: '#89CFF0', + }, + { + name: 'Baby Blue Eyes', + hex: '#A1CAF1', + }, + { + name: 'Baby Pink', + hex: '#F4C2C2', + }, + { + name: 'Baby Powder', + hex: '#FEFEFA', + }, + { + name: 'Baker-Miller Pink', + hex: '#FF91AF', + }, + { + name: 'Ball Blue', + hex: '#21ABCD', + }, + { + name: 'Banana Mania', + hex: '#FAE7B5', + }, + { + name: 'Banana Yellow', + hex: '#FFE135', + }, + { + name: 'Bangladesh Green', + hex: '#006A4E', + }, + { + name: 'Barbie Pink', + hex: '#E0218A', + }, + { + name: 'Barn Red', + hex: '#7C0A02', + }, + { + name: 'Battery Charged Blue', + hex: '#1DACD6', + }, + { + name: 'Battleship Grey', + hex: '#848482', + }, + { + name: 'Bazaar', + hex: '#98777B', + }, + { + name: 'Beau Blue', + hex: '#BCD4E6', + }, + { + name: 'Beaver', + hex: '#9F8170', + }, + { + name: 'Begonia', + hex: '#FA6E79', + }, + { + name: 'Beige', + hex: '#F5F5DC', + }, + { + name: "B'dazzled Blue", + hex: '#2E5894', + }, + { + name: "Big Dip O'ruby", + hex: '#9C2542', + }, + { + name: 'Big Foot Feet', + hex: '#E88E5A', + }, + { + name: 'Bisque', + hex: '#FFE4C4', + }, + { + name: 'Bistre', + hex: '#3D2B1F', + }, + { + name: 'Bistre Brown', + hex: '#967117', + }, + { + name: 'Bitter Lemon', + hex: '#CAE00D', + }, + { + name: 'Bitter Lime', + hex: '#BFFF00', + }, + { + name: 'Bittersweet', + hex: '#FE6F5E', + }, + { + name: 'Bittersweet Shimmer', + hex: '#BF4F51', + }, + { + name: 'Black', + hex: '#000000', + }, + { + name: 'Black Bean', + hex: '#3D0C02', + }, + { + name: 'Black Coral', + hex: '#54626F', + }, + { + name: 'Black Leather Jacket', + hex: '#253529', + }, + { + name: 'Black Olive', + hex: '#3B3C36', + }, + { + name: 'Black Shadows', + hex: '#BFAFB2', + }, + { + name: 'Blanched Almond', + hex: '#FFEBCD', + }, + { + name: 'Blast-Off Bronze', + hex: '#A57164', + }, + { + name: 'Bleu De France', + hex: '#318CE7', + }, + { + name: 'Blizzard Blue', + hex: '#ACE5EE', + }, + { + name: 'Blond', + hex: '#FAF0BE', + }, + { + name: 'Blue', + hex: '#0000FF', + }, + { + name: 'Blue (Crayola)', + hex: '#1F75FE', + }, + { + name: 'Blue (Munsell)', + hex: '#0093AF', + }, + { + name: 'Blue (NCS)', + hex: '#0087BD', + }, + { + name: 'Blue (Pantone)', + hex: '#0018A8', + }, + { + name: 'Blue (Pigment)', + hex: '#333399', + }, + { + name: 'Blue (RYB)', + hex: '#0247FE', + }, + { + name: 'Blue Bell', + hex: '#A2A2D0', + }, + { + name: 'Blue Bolt', + hex: '#00B9FB', + }, + { + name: 'Blue-Gray', + hex: '#6699CC', + }, + { + name: 'Blue-Green', + hex: '#0D98BA', + }, + { + name: 'Blue Jeans', + hex: '#5DADEC', + }, + { + name: 'Blue Lagoon', + hex: '#ACE5EE', + }, + { + name: 'Blue-Magenta Violet', + hex: '#553592', + }, + { + name: 'Blue Sapphire', + hex: '#126180', + }, + { + name: 'Blue-Violet', + hex: '#8A2BE2', + }, + { + name: 'Blue Yonder', + hex: '#5072A7', + }, + { + name: 'Blueberry', + hex: '#4F86F7', + }, + { + name: 'Bluebonnet', + hex: '#1C1CF0', + }, + { + name: 'Blush', + hex: '#DE5D83', + }, + { + name: 'Bole', + hex: '#79443B', + }, + { + name: 'Bondi Blue', + hex: '#0095B6', + }, + { + name: 'Bone', + hex: '#E3DAC9', + }, + { + name: 'Booger Buster', + hex: '#DDE26A', + }, + { + name: 'Boston University Red', + hex: '#CC0000', + }, + { + name: 'Bottle Green', + hex: '#006A4E', + }, + { + name: 'Boysenberry', + hex: '#873260', + }, + { + name: 'Brandeis Blue', + hex: '#0070FF', + }, + { + name: 'Brass', + hex: '#B5A642', + }, + { + name: 'Brick Red', + hex: '#CB4154', + }, + { + name: 'Bright Cerulean', + hex: '#1DACD6', + }, + { + name: 'Bright Green', + hex: '#66FF00', + }, + { + name: 'Bright Lavender', + hex: '#BF94E4', + }, + { + name: 'Bright Lilac', + hex: '#D891EF', + }, + { + name: 'Bright Maroon', + hex: '#C32148', + }, + { + name: 'Bright Navy Blue', + hex: '#1974D2', + }, + { + name: 'Bright Pink', + hex: '#FF007F', + }, + { + name: 'Bright Turquoise', + hex: '#08E8DE', + }, + { + name: 'Bright Ube', + hex: '#D19FE8', + }, + { + name: 'Bright Yellow (Crayola)', + hex: '#FFAA1D', + }, + { + name: 'Brilliant Azure', + hex: '#3399FF', + }, + { + name: 'Brilliant Lavender', + hex: '#F4BBFF', + }, + { + name: 'Brilliant Rose', + hex: '#FF55A3', + }, + { + name: 'Brink Pink', + hex: '#FB607F', + }, + { + name: 'British Racing Green', + hex: '#004225', + }, + { + name: 'Bronze', + hex: '#CD7F32', + }, + { + name: 'Bronze Yellow', + hex: '#737000', + }, + { + name: 'Brown (Traditional)', + hex: '#964B00', + }, + { + name: 'Brown (Web)', + hex: '#A52A2A', + }, + { + name: 'Brown-Nose', + hex: '#6B4423', + }, + { + name: 'Brown Sugar', + hex: '#AF6E4D', + }, + { + name: 'Brown Yellow', + hex: '#cc9966', + }, + { + name: 'Brunswick Green', + hex: '#1B4D3E', + }, + { + name: 'Bubble Gum', + hex: '#FFC1CC', + }, + { + name: 'Bubbles', + hex: '#E7FEFF', + }, + { + name: 'Bud Green', + hex: '#7BB661', + }, + { + name: 'Buff', + hex: '#F0DC82', + }, + { + name: 'Bulgarian Rose', + hex: '#480607', + }, + { + name: 'Burgundy', + hex: '#800020', + }, + { + name: 'Burlywood', + hex: '#DEB887', + }, + { + name: 'Burnished Brown', + hex: '#A17A74', + }, + { + name: 'Burnt Orange', + hex: '#CC5500', + }, + { + name: 'Burnt Sienna', + hex: '#E97451', + }, + { + name: 'Burnt Umber', + hex: '#8A3324', + }, + { + name: 'Button Blue', + hex: '#24A0ED', + }, + { + name: 'Byzantine', + hex: '#BD33A4', + }, + { + name: 'Byzantium', + hex: '#702963', + }, + { + name: 'Cadet', + hex: '#536872', + }, + { + name: 'Cadet Blue', + hex: '#5F9EA0', + }, + { + name: 'Cadet Grey', + hex: '#91A3B0', + }, + { + name: 'Cadmium Green', + hex: '#006B3C', + }, + { + name: 'Cadmium Orange', + hex: '#ED872D', + }, + { + name: 'Cadmium Red', + hex: '#E30022', + }, + { + name: 'Cadmium Yellow', + hex: '#FFF600', + }, + { + name: 'Cafe Au Lait', + hex: '#A67B5B', + }, + { + name: 'Cafe Noir', + hex: '#4B3621', + }, + { + name: 'Cal Poly Pomona Green', + hex: '#1E4D2B', + }, + { + name: 'Cambridge Blue', + hex: '#A3C1AD', + }, + { + name: 'Camel', + hex: '#C19A6B', + }, + { + name: 'Cameo Pink', + hex: '#EFBBCC', + }, + { + name: 'Camouflage Green', + hex: '#78866B', + }, + { + name: 'Canary', + hex: '#FFFF99', + }, + { + name: 'Canary Yellow', + hex: '#FFEF00', + }, + { + name: 'Candy Apple Red', + hex: '#FF0800', + }, + { + name: 'Candy Pink', + hex: '#E4717A', + }, + { + name: 'Capri', + hex: '#00BFFF', + }, + { + name: 'Caput Mortuum', + hex: '#592720', + }, + { + name: 'Cardinal', + hex: '#C41E3A', + }, + { + name: 'Caribbean Green', + hex: '#00CC99', + }, + { + name: 'Carmine', + hex: '#960018', + }, + { + name: 'Carmine (M&P)', + hex: '#D70040', + }, + { + name: 'Carmine Pink', + hex: '#EB4C42', + }, + { + name: 'Carmine Red', + hex: '#FF0038', + }, + { + name: 'Carnation Pink', + hex: '#FFA6C9', + }, + { + name: 'Carnelian', + hex: '#B31B1B', + }, + { + name: 'Carolina Blue', + hex: '#56A0D3', + }, + { + name: 'Carrot Orange', + hex: '#ED9121', + }, + { + name: 'Castleton Green', + hex: '#00563F', + }, + { + name: 'Catalina Blue', + hex: '#062A78', + }, + { + name: 'Catawba', + hex: '#703642', + }, + { + name: 'Cedar Chest', + hex: '#C95A49', + }, + { + name: 'Ceil', + hex: '#92A1CF', + }, + { + name: 'Celadon', + hex: '#ACE1AF', + }, + { + name: 'Celadon Blue', + hex: '#007BA7', + }, + { + name: 'Celadon Green', + hex: '#2F847C', + }, + { + name: 'Celeste', + hex: '#B2FFFF', + }, + { + name: 'Celestial Blue', + hex: '#4997D0', + }, + { + name: 'Cerise', + hex: '#DE3163', + }, + { + name: 'Cerise Pink', + hex: '#EC3B83', + }, + { + name: 'Cerulean', + hex: '#007BA7', + }, + { + name: 'Cerulean Blue', + hex: '#2A52BE', + }, + { + name: 'Cerulean Frost', + hex: '#6D9BC3', + }, + { + name: 'CG Blue', + hex: '#007AA5', + }, + { + name: 'CG Red', + hex: '#E03C31', + }, + { + name: 'Chamoisee', + hex: '#A0785A', + }, + { + name: 'Champagne', + hex: '#F7E7CE', + }, + { + name: 'Champagne Pink', + hex: '#F1DDCF', + }, + { + name: 'Charcoal', + hex: '#36454F', + }, + { + name: 'Charleston Green', + hex: '#232B2B', + }, + { + name: 'Charm Pink', + hex: '#E68FAC', + }, + { + name: 'Chartreuse (Traditional)', + hex: '#DFFF00', + }, + { + name: 'Chartreuse (Web)', + hex: '#7FFF00', + }, + { + name: 'Cherry', + hex: '#DE3163', + }, + { + name: 'Cherry Blossom Pink', + hex: '#FFB7C5', + }, + { + name: 'Chestnut', + hex: '#954535', + }, + { + name: 'China Pink', + hex: '#DE6FA1', + }, + { + name: 'China Rose', + hex: '#A8516E', + }, + { + name: 'Chinese Red', + hex: '#AA381E', + }, + { + name: 'Chinese Violet', + hex: '#856088', + }, + { + name: 'Chlorophyll Green', + hex: '#4AFF00', + }, + { + name: 'Chocolate (Traditional)', + hex: '#7B3F00', + }, + { + name: 'Chocolate (Web)', + hex: '#D2691E', + }, + { + name: 'Chrome Yellow', + hex: '#FFA700', + }, + { + name: 'Cinereous', + hex: '#98817B', + }, + { + name: 'Cinnabar', + hex: '#E34234', + }, + { + name: 'Cinnamon', + hex: '#D2691E', + }, + { + name: 'Cinnamon Satin', + hex: '#CD607E', + }, + { + name: 'Citrine', + hex: '#E4D00A', + }, + { + name: 'Citron', + hex: '#9FA91F', + }, + { + name: 'Claret', + hex: '#7F1734', + }, + { + name: 'Classic Rose', + hex: '#FBCCE7', + }, + { + name: 'Cobalt Blue', + hex: '#0047AB', + }, + { + name: 'Cocoa Brown', + hex: '#D2691E', + }, + { + name: 'Coconut', + hex: '#965A3E', + }, + { + name: 'Coffee', + hex: '#6F4E37', + }, + { + name: 'Columbia Blue', + hex: '#C4D8E2', + }, + { + name: 'Congo Pink', + hex: '#F88379', + }, + { + name: 'Cool Black', + hex: '#002E63', + }, + { + name: 'Cool Grey', + hex: '#8C92AC', + }, + { + name: 'Copper', + hex: '#B87333', + }, + { + name: 'Copper (Crayola)', + hex: '#DA8A67', + }, + { + name: 'Copper Penny', + hex: '#AD6F69', + }, + { + name: 'Copper Red', + hex: '#CB6D51', + }, + { + name: 'Copper Rose', + hex: '#996666', + }, + { + name: 'Coquelicot', + hex: '#FF3800', + }, + { + name: 'Coral', + hex: '#FF7F50', + }, + { + name: 'Coral Pink', + hex: '#F88379', + }, + { + name: 'Coral Red', + hex: '#FF4040', + }, + { + name: 'Coral Reef', + hex: '#FD7C6E', + }, + { + name: 'Cordovan', + hex: '#893F45', + }, + { + name: 'Corn', + hex: '#FBEC5D', + }, + { + name: 'Cornell Red', + hex: '#B31B1B', + }, + { + name: 'Cornflower Blue', + hex: '#6495ED', + }, + { + name: 'Cornsilk', + hex: '#FFF8DC', + }, + { + name: 'Cosmic Cobalt', + hex: '#2E2D88', + }, + { + name: 'Cosmic Latte', + hex: '#FFF8E7', + }, + { + name: 'Coyote Brown', + hex: '#81613C', + }, + { + name: 'Cotton Candy', + hex: '#FFBCD9', + }, + { + name: 'Cream', + hex: '#FFFDD0', + }, + { + name: 'Crimson', + hex: '#DC143C', + }, + { + name: 'Crimson Glory', + hex: '#BE0032', + }, + { + name: 'Crimson Red', + hex: '#990000', + }, + { + name: 'Cultured', + hex: '#F5F5F5', + }, + { + name: 'Cyan', + hex: '#00FFFF', + }, + { + name: 'Cyan Azure', + hex: '#4E82B4', + }, + { + name: 'Cyan-Blue Azure', + hex: '#4682BF', + }, + { + name: 'Cyan Cobalt Blue', + hex: '#28589C', + }, + { + name: 'Cyan Cornflower Blue', + hex: '#188BC2', + }, + { + name: 'Cyan (Process)', + hex: '#00B7EB', + }, + { + name: 'Cyber Grape', + hex: '#58427C', + }, + { + name: 'Cyber Yellow', + hex: '#FFD300', + }, + { + name: 'Cyclamen', + hex: '#F56FA1', + }, + { + name: 'Daffodil', + hex: '#FFFF31', + }, + { + name: 'Dandelion', + hex: '#F0E130', + }, + { + name: 'Dark Blue', + hex: '#00008B', + }, + { + name: 'Dark Blue-Gray', + hex: '#666699', + }, + { + name: 'Dark Brown', + hex: '#654321', + }, + { + name: 'Dark Brown-Tangelo', + hex: '#88654E', + }, + { + name: 'Dark Byzantium', + hex: '#5D3954', + }, + { + name: 'Dark Candy Apple Red', + hex: '#A40000', + }, + { + name: 'Dark Cerulean', + hex: '#08457E', + }, + { + name: 'Dark Chestnut', + hex: '#986960', + }, + { + name: 'Dark Coral', + hex: '#CD5B45', + }, + { + name: 'Dark Cyan', + hex: '#008B8B', + }, + { + name: 'Dark Electric Blue', + hex: '#536878', + }, + { + name: 'Dark Goldenrod', + hex: '#B8860B', + }, + { + name: 'Dark Gray (X11)', + hex: '#A9A9A9', + }, + { + name: 'Dark Green', + hex: '#013220', + }, + { + name: 'Dark Green (X11)', + hex: '#006400', + }, + { + name: 'Dark Gunmetal', + hex: '#1F262A', + }, + { + name: 'Dark Imperial Blue', + hex: '#00416A', + }, + { + name: 'Dark Imperial Blue', + hex: '#00147E', + }, + { + name: 'Dark Jungle Green', + hex: '#1A2421', + }, + { + name: 'Dark Khaki', + hex: '#BDB76B', + }, + { + name: 'Dark Lava', + hex: '#483C32', + }, + { + name: 'Dark Lavender', + hex: '#734F96', + }, + { + name: 'Dark Liver', + hex: '#534B4F', + }, + { + name: 'Dark Liver (Horses)', + hex: '#543D37', + }, + { + name: 'Dark Magenta', + hex: '#8B008B', + }, + { + name: 'Dark Medium Gray', + hex: '#A9A9A9', + }, + { + name: 'Dark Midnight Blue', + hex: '#003366', + }, + { + name: 'Dark Moss Green', + hex: '#4A5D23', + }, + { + name: 'Dark Olive Green', + hex: '#556B2F', + }, + { + name: 'Dark Orange', + hex: '#FF8C00', + }, + { + name: 'Dark Orchid', + hex: '#9932CC', + }, + { + name: 'Dark Pastel Blue', + hex: '#779ECB', + }, + { + name: 'Dark Pastel Green', + hex: '#03C03C', + }, + { + name: 'Dark Pastel Purple', + hex: '#966FD6', + }, + { + name: 'Dark Pastel Red', + hex: '#C23B22', + }, + { + name: 'Dark Pink', + hex: '#E75480', + }, + { + name: 'Dark Powder Blue', + hex: '#003399', + }, + { + name: 'Dark Puce', + hex: '#4F3A3C', + }, + { + name: 'Dark Purple', + hex: '#301934', + }, + { + name: 'Dark Raspberry', + hex: '#872657', + }, + { + name: 'Dark Red', + hex: '#8B0000', + }, + { + name: 'Dark Salmon', + hex: '#E9967A', + }, + { + name: 'Dark Scarlet', + hex: '#560319', + }, + { + name: 'Dark Sea Green', + hex: '#8FBC8F', + }, + { + name: 'Dark Sienna', + hex: '#3C1414', + }, + { + name: 'Dark Sky Blue', + hex: '#8CBED6', + }, + { + name: 'Dark Slate Blue', + hex: '#483D8B', + }, + { + name: 'Dark Slate Gray', + hex: '#2F4F4F', + }, + { + name: 'Dark Spring Green', + hex: '#177245', + }, + { + name: 'Dark Tan', + hex: '#918151', + }, + { + name: 'Dark Tangerine', + hex: '#FFA812', + }, + { + name: 'Dark Taupe', + hex: '#483C32', + }, + { + name: 'Dark Terra Cotta', + hex: '#CC4E5C', + }, + { + name: 'Dark Turquoise', + hex: '#00CED1', + }, + { + name: 'Dark Vanilla', + hex: '#D1BEA8', + }, + { + name: 'Dark Violet', + hex: '#9400D3', + }, + { + name: 'Dark Yellow', + hex: '#9B870C', + }, + { + name: 'Dartmouth Green', + hex: '#00703C', + }, + { + name: "Davy's Grey", + hex: '#555555', + }, + { + name: 'Debian Red', + hex: '#D70A53', + }, + { + name: 'Deep Aquamarine', + hex: '#40826D', + }, + { + name: 'Deep Carmine', + hex: '#A9203E', + }, + { + name: 'Deep Carmine Pink', + hex: '#EF3038', + }, + { + name: 'Deep Carrot Orange', + hex: '#E9692C', + }, + { + name: 'Deep Cerise', + hex: '#DA3287', + }, + { + name: 'Deep Champagne', + hex: '#FAD6A5', + }, + { + name: 'Deep Chestnut', + hex: '#B94E48', + }, + { + name: 'Deep Coffee', + hex: '#704241', + }, + { + name: 'Deep Fuchsia', + hex: '#C154C1', + }, + { + name: 'Deep Green', + hex: '#056608', + }, + { + name: 'Deep Green-Cyan Turquoise', + hex: '#0E7C61', + }, + { + name: 'Deep Jungle Green', + hex: '#004B49', + }, + { + name: 'Deep Koamaru', + hex: '#333366', + }, + { + name: 'Deep Lemon', + hex: '#F5C71A', + }, + { + name: 'Deep Lilac', + hex: '#9955BB', + }, + { + name: 'Deep Magenta', + hex: '#CC00CC', + }, + { + name: 'Deep Maroon', + hex: '#820000', + }, + { + name: 'Deep Mauve', + hex: '#D473D4', + }, + { + name: 'Deep Moss Green', + hex: '#355E3B', + }, + { + name: 'Deep Peach', + hex: '#FFCBA4', + }, + { + name: 'Deep Pink', + hex: '#FF1493', + }, + { + name: 'Deep Puce', + hex: '#A95C68', + }, + { + name: 'Deep Red', + hex: '#850101', + }, + { + name: 'Deep Ruby', + hex: '#843F5B', + }, + { + name: 'Deep Saffron', + hex: '#FF9933', + }, + { + name: 'Deep Sky Blue', + hex: '#00BFFF', + }, + { + name: 'Deep Space Sparkle', + hex: '#4A646C', + }, + { + name: 'Deep Spring Bud', + hex: '#556B2F', + }, + { + name: 'Deep Taupe', + hex: '#7E5E60', + }, + { + name: 'Deep Tuscan Red', + hex: '#66424D', + }, + { + name: 'Deep Violet', + hex: '#330066', + }, + { + name: 'Deer', + hex: '#BA8759', + }, + { + name: 'Denim', + hex: '#1560BD', + }, + { + name: 'Denim Blue', + hex: '#2243B6', + }, + { + name: 'Desaturated Cyan', + hex: '#669999', + }, + { + name: 'Desert', + hex: '#C19A6B', + }, + { + name: 'Desert Sand', + hex: '#EDC9AF', + }, + { + name: 'Desire', + hex: '#EA3C53', + }, + { + name: 'Diamond', + hex: '#B9F2FF', + }, + { + name: 'Dim Gray', + hex: '#696969', + }, + { + name: 'Dingy Dungeon', + hex: '#C53151', + }, + { + name: 'Dirt', + hex: '#9B7653', + }, + { + name: 'Dodger Blue', + hex: '#1E90FF', + }, + { + name: 'Dodie Yellow', + hex: '#FEF65B', + }, + { + name: 'Dogwood Rose', + hex: '#D71868', + }, + { + name: 'Dollar Bill', + hex: '#85BB65', + }, + { + name: 'Dolphin Gray', + hex: '#828E84', + }, + { + name: 'Donkey Brown', + hex: '#664C28', + }, + { + name: 'Drab', + hex: '#967117', + }, + { + name: 'Duke Blue', + hex: '#00009C', + }, + { + name: 'Dust Storm', + hex: '#E5CCC9', + }, + { + name: 'Dutch White', + hex: '#EFDFBB', + }, + { + name: 'Earth Yellow', + hex: '#E1A95F', + }, + { + name: 'Ebony', + hex: '#555D50', + }, + { + name: 'Ecru', + hex: '#C2B280', + }, + { + name: 'Eerie Black', + hex: '#1B1B1B', + }, + { + name: 'Eggplant', + hex: '#614051', + }, + { + name: 'Eggshell', + hex: '#F0EAD6', + }, + { + name: 'Egyptian Blue', + hex: '#1034A6', + }, + { + name: 'Electric Blue', + hex: '#7DF9FF', + }, + { + name: 'Electric Crimson', + hex: '#FF003F', + }, + { + name: 'Electric Cyan', + hex: '#00FFFF', + }, + { + name: 'Electric Green', + hex: '#00FF00', + }, + { + name: 'Electric Indigo', + hex: '#6F00FF', + }, + { + name: 'Electric Lavender', + hex: '#F4BBFF', + }, + { + name: 'Electric Lime', + hex: '#CCFF00', + }, + { + name: 'Electric Purple', + hex: '#BF00FF', + }, + { + name: 'Electric Ultramarine', + hex: '#3F00FF', + }, + { + name: 'Electric Violet', + hex: '#8F00FF', + }, + { + name: 'Electric Yellow', + hex: '#FFFF33', + }, + { + name: 'Emerald', + hex: '#50C878', + }, + { + name: 'Eminence', + hex: '#6C3082', + }, + { + name: 'English Green', + hex: '#1B4D3E', + }, + { + name: 'English Lavender', + hex: '#B48395', + }, + { + name: 'English Red', + hex: '#AB4B52', + }, + { + name: 'English Vermillion', + hex: '#CC474B', + }, + { + name: 'English Violet', + hex: '#563C5C', + }, + { + name: 'Eton Blue', + hex: '#96C8A2', + }, + { + name: 'Eucalyptus', + hex: '#44D7A8', + }, + { + name: 'Fallow', + hex: '#C19A6B', + }, + { + name: 'Falu Red', + hex: '#801818', + }, + { + name: 'Fandango', + hex: '#B53389', + }, + { + name: 'Fandango Pink', + hex: '#DE5285', + }, + { + name: 'Fashion Fuchsia', + hex: '#F400A1', + }, + { + name: 'Fawn', + hex: '#E5AA70', + }, + { + name: 'Feldgrau', + hex: '#4D5D53', + }, + { + name: 'Feldspar', + hex: '#FDD5B1', + }, + { + name: 'Fern Green', + hex: '#4F7942', + }, + { + name: 'Ferrari Red', + hex: '#FF2800', + }, + { + name: 'Field Drab', + hex: '#6C541E', + }, + { + name: 'Fiery Rose', + hex: '#FF5470', + }, + { + name: 'Firebrick', + hex: '#B22222', + }, + { + name: 'Fire Engine Red', + hex: '#CE2029', + }, + { + name: 'Flame', + hex: '#E25822', + }, + { + name: 'Flamingo Pink', + hex: '#FC8EAC', + }, + { + name: 'Flattery', + hex: '#6B4423', + }, + { + name: 'Flavescent', + hex: '#F7E98E', + }, + { + name: 'Flax', + hex: '#EEDC82', + }, + { + name: 'Flirt', + hex: '#A2006D', + }, + { + name: 'Floral White', + hex: '#FFFAF0', + }, + { + name: 'Fluorescent Orange', + hex: '#FFBF00', + }, + { + name: 'Fluorescent Pink', + hex: '#FF1493', + }, + { + name: 'Fluorescent Yellow', + hex: '#CCFF00', + }, + { + name: 'Folly', + hex: '#FF004F', + }, + { + name: 'Forest Green (Traditional)', + hex: '#014421', + }, + { + name: 'Forest Green (Web)', + hex: '#228B22', + }, + { + name: 'French Beige', + hex: '#A67B5B', + }, + { + name: 'French Bistre', + hex: '#856D4D', + }, + { + name: 'French Blue', + hex: '#0072BB', + }, + { + name: 'French Fuchsia', + hex: '#FD3F92', + }, + { + name: 'French Lilac', + hex: '#86608E', + }, + { + name: 'French Lime', + hex: '#9EFD38', + }, + { + name: 'French Mauve', + hex: '#D473D4', + }, + { + name: 'French Pink', + hex: '#FD6C9E', + }, + { + name: 'French Plum', + hex: '#811453', + }, + { + name: 'French Puce', + hex: '#4E1609', + }, + { + name: 'French Raspberry', + hex: '#C72C48', + }, + { + name: 'French Rose', + hex: '#F64A8A', + }, + { + name: 'French Sky Blue', + hex: '#77B5FE', + }, + { + name: 'French Violet', + hex: '#8806CE', + }, + { + name: 'French Wine', + hex: '#AC1E44', + }, + { + name: 'Fresh Air', + hex: '#A6E7FF', + }, + { + name: 'Frogert', + hex: '#E936A7', + }, + { + name: 'Fuchsia', + hex: '#FF00FF', + }, + { + name: 'Fuchsia (Crayola)', + hex: '#C154C1', + }, + { + name: 'Fuchsia Pink', + hex: '#FF77FF', + }, + { + name: 'Fuchsia Purple', + hex: '#CC397B', + }, + { + name: 'Fuchsia Rose', + hex: '#C74375', + }, + { + name: 'Fulvous', + hex: '#E48400', + }, + { + name: 'Fuzzy Wuzzy', + hex: '#CC6666', + }, + { + name: 'Gainsboro', + hex: '#DCDCDC', + }, + { + name: 'Gamboge', + hex: '#E49B0F', + }, + { + name: 'Gamboge Orange (Brown)', + hex: '#996600', + }, + { + name: 'Gargoyle Gas', + hex: '#FFDF46', + }, + { + name: 'Generic Viridian', + hex: '#007F66', + }, + { + name: 'Ghost White', + hex: '#F8F8FF', + }, + { + name: "Giant's Club", + hex: '#B05C52', + }, + { + name: 'Giants Orange', + hex: '#FE5A1D', + }, + { + name: 'Ginger', + hex: '#B06500', + }, + { + name: 'Glaucous', + hex: '#6082B6', + }, + { + name: 'Glitter', + hex: '#E6E8FA', + }, + { + name: 'Glossy Grape', + hex: '#AB92B3', + }, + { + name: 'GO Green', + hex: '#00AB66', + }, + { + name: 'Gold (Metallic)', + hex: '#D4AF37', + }, + { + name: 'Gold (Web) (Golden)', + hex: '#FFD700', + }, + { + name: 'Gold Fusion', + hex: '#85754E', + }, + { + name: 'Golden Brown', + hex: '#996515', + }, + { + name: 'Golden Poppy', + hex: '#FCC200', + }, + { + name: 'Golden Yellow', + hex: '#FFDF00', + }, + { + name: 'Goldenrod', + hex: '#DAA520', + }, + { + name: 'Granite Gray', + hex: '#676767', + }, + { + name: 'Granny Smith Apple', + hex: '#A8E4A0', + }, + { + name: 'Grape', + hex: '#6F2DA8', + }, + { + name: 'Gray', + hex: '#808080', + }, + { + name: 'Gray (HTML/CSS Gray)', + hex: '#808080', + }, + { + name: 'Gray (X11 Gray)', + hex: '#BEBEBE', + }, + { + name: 'Gray-Asparagus', + hex: '#465945', + }, + { + name: 'Gray-Blue', + hex: '#8C92AC', + }, + { + name: 'Green (Color Wheel) (X11 Green)', + hex: '#00FF00', + }, + { + name: 'Green (Crayola)', + hex: '#1CAC78', + }, + { + name: 'Green (HTML/CSS Color)', + hex: '#008000', + }, + { + name: 'Green (Munsell)', + hex: '#00A877', + }, + { + name: 'Green (NCS)', + hex: '#009F6B', + }, + { + name: 'Green (Pantone)', + hex: '#00AD43', + }, + { + name: 'Green (Pigment)', + hex: '#00A550', + }, + { + name: 'Green (RYB)', + hex: '#66B032', + }, + { + name: 'Green-Blue', + hex: '#1164B4', + }, + { + name: 'Green-Cyan', + hex: '#009966', + }, + { + name: 'Green Lizard', + hex: '#A7F432', + }, + { + name: 'Green Sheen', + hex: '#6EAEA1', + }, + { + name: 'Green-Yellow', + hex: '#ADFF2F', + }, + { + name: 'Grizzly', + hex: '#885818', + }, + { + name: 'Grullo', + hex: '#A99A86', + }, + { + name: 'Guppie Green', + hex: '#00FF7F', + }, + { + name: 'Gunmetal', + hex: '#2a3439', + }, + { + name: 'Halaya Ube', + hex: '#663854', + }, + { + name: 'Han Blue', + hex: '#446CCF', + }, + { + name: 'Han Purple', + hex: '#5218FA', + }, + { + name: 'Hansa Yellow', + hex: '#E9D66B', + }, + { + name: 'Harlequin', + hex: '#3FFF00', + }, + { + name: 'Harlequin Green', + hex: '#46CB18', + }, + { + name: 'Harvard Crimson', + hex: '#C90016', + }, + { + name: 'Harvest Gold', + hex: '#DA9100', + }, + { + name: 'Heart Gold', + hex: '#808000', + }, + { + name: 'Heat Wave', + hex: '#FF7A00', + }, + { + name: 'Heidelberg Red', + hex: '#960018', + }, + { + name: 'Heliotrope', + hex: '#DF73FF', + }, + { + name: 'Heliotrope Gray', + hex: '#AA98A9', + }, + { + name: 'Heliotrope Magenta', + hex: '#AA00BB', + }, + { + name: 'Hollywood Cerise', + hex: '#F400A1', + }, + { + name: 'Honeydew', + hex: '#F0FFF0', + }, + { + name: 'Honolulu Blue', + hex: '#006DB0', + }, + { + name: "Hooker's Green", + hex: '#49796B', + }, + { + name: 'Hot Magenta', + hex: '#FF1DCE', + }, + { + name: 'Hot Pink', + hex: '#FF69B4', + }, + { + name: 'Hunter Green', + hex: '#355E3B', + }, + { + name: 'Iceberg', + hex: '#71A6D2', + }, + { + name: 'Icterine', + hex: '#FCF75E', + }, + { + name: 'Iguana Green', + hex: '#71BC78', + }, + { + name: 'Illuminating Emerald', + hex: '#319177', + }, + { + name: 'Imperial', + hex: '#602F6B', + }, + { + name: 'Imperial Blue', + hex: '#002395', + }, + { + name: 'Imperial Purple', + hex: '#66023C', + }, + { + name: 'Imperial Red', + hex: '#ED2939', + }, + { + name: 'Inchworm', + hex: '#B2EC5D', + }, + { + name: 'Independence', + hex: '#4C516D', + }, + { + name: 'India Green', + hex: '#138808', + }, + { + name: 'Indian Red', + hex: '#CD5C5C', + }, + { + name: 'Indian Yellow', + hex: '#E3A857', + }, + { + name: 'Indigo', + hex: '#4B0082', + }, + { + name: 'Indigo Dye', + hex: '#091F92', + }, + { + name: 'Indigo (Web)', + hex: '#4B0082', + }, + { + name: 'Infra Red', + hex: '#FF496C', + }, + { + name: 'Interdimensional Blue', + hex: '#360CCC', + }, + { + name: 'International Klein Blue', + hex: '#002FA7', + }, + { + name: 'International Orange (Aerospace)', + hex: '#FF4F00', + }, + { + name: 'International Orange (Engineering)', + hex: '#BA160C', + }, + { + name: 'International Orange (Golden Gate Bridge)', + hex: '#C0362C', + }, + { + name: 'Iris', + hex: '#5A4FCF', + }, + { + name: 'Irresistible', + hex: '#B3446C', + }, + { + name: 'Isabelline', + hex: '#F4F0EC', + }, + { + name: 'Islamic Green', + hex: '#009000', + }, + { + name: 'Italian Sky Blue', + hex: '#B2FFFF', + }, + { + name: 'Ivory', + hex: '#FFFFF0', + }, + { + name: 'Jade', + hex: '#00A86B', + }, + { + name: 'Japanese Carmine', + hex: '#9D2933', + }, + { + name: 'Japanese Indigo', + hex: '#264348', + }, + { + name: 'Japanese Violet', + hex: '#5B3256', + }, + { + name: 'Jasmine', + hex: '#F8DE7E', + }, + { + name: 'Jasper', + hex: '#D73B3E', + }, + { + name: 'Jazzberry Jam', + hex: '#A50B5E', + }, + { + name: 'Jelly Bean', + hex: '#DA614E', + }, + { + name: 'Jet', + hex: '#343434', + }, + { + name: 'Jonquil', + hex: '#F4CA16', + }, + { + name: 'Jordy Blue', + hex: '#8AB9F1', + }, + { + name: 'June Bud', + hex: '#BDDA57', + }, + { + name: 'Jungle Green', + hex: '#29AB87', + }, + { + name: 'Kelly Green', + hex: '#4CBB17', + }, + { + name: 'Kenyan Copper', + hex: '#7C1C05', + }, + { + name: 'Keppel', + hex: '#3AB09E', + }, + { + name: 'Key Lime', + hex: '#E8F48C', + }, + { + name: 'Khaki (HTML/CSS) (Khaki)', + hex: '#C3B091', + }, + { + name: 'Khaki (X11) (Light Khaki)', + hex: '#F0E68C', + }, + { + name: 'Kiwi', + hex: '#8EE53F', + }, + { + name: 'Kobe', + hex: '#882D17', + }, + { + name: 'Kobi', + hex: '#E79FC4', + }, + { + name: 'Kobicha', + hex: '#6B4423', + }, + { + name: 'Kombu Green', + hex: '#354230', + }, + { + name: 'KSU Purple', + hex: '#512888', + }, + { + name: 'KU Crimson', + hex: '#E8000D', + }, + { + name: 'La Salle Green', + hex: '#087830', + }, + { + name: 'Languid Lavender', + hex: '#D6CADD', + }, + { + name: 'Lapis Lazuli', + hex: '#26619C', + }, + { + name: 'Laser Lemon', + hex: '#FFFF66', + }, + { + name: 'Laurel Green', + hex: '#A9BA9D', + }, + { + name: 'Lava', + hex: '#CF1020', + }, + { + name: 'Lavender (Floral)', + hex: '#B57EDC', + }, + { + name: 'Lavender (Web)', + hex: '#E6E6FA', + }, + { + name: 'Lavender Blue', + hex: '#CCCCFF', + }, + { + name: 'Lavender Blush', + hex: '#FFF0F5', + }, + { + name: 'Lavender Gray', + hex: '#C4C3D0', + }, + { + name: 'Lavender Indigo', + hex: '#9457EB', + }, + { + name: 'Lavender Magenta', + hex: '#EE82EE', + }, + { + name: 'Lavender Mist', + hex: '#E6E6FA', + }, + { + name: 'Lavender Pink', + hex: '#FBAED2', + }, + { + name: 'Lavender Purple', + hex: '#967BB6', + }, + { + name: 'Lavender Rose', + hex: '#FBA0E3', + }, + { + name: 'Lawn Green', + hex: '#7CFC00', + }, + { + name: 'Lemon', + hex: '#FFF700', + }, + { + name: 'Lemon Chiffon', + hex: '#FFFACD', + }, + { + name: 'Lemon Curry', + hex: '#CCA01D', + }, + { + name: 'Lemon Glacier', + hex: '#FDFF00', + }, + { + name: 'Lemon Lime', + hex: '#E3FF00', + }, + { + name: 'Lemon Meringue', + hex: '#F6EABE', + }, + { + name: 'Lemon Yellow', + hex: '#FFF44F', + }, + { + name: 'Licorice', + hex: '#1A1110', + }, + { + name: 'Liberty', + hex: '#545AA7', + }, + { + name: 'Light Apricot', + hex: '#FDD5B1', + }, + { + name: 'Light Blue', + hex: '#ADD8E6', + }, + { + name: 'Light Brown', + hex: '#B5651D', + }, + { + name: 'Light Carmine Pink', + hex: '#E66771', + }, + { + name: 'Light Cobalt Blue', + hex: '#88ACE0', + }, + { + name: 'Light Coral', + hex: '#F08080', + }, + { + name: 'Light Cornflower Blue', + hex: '#93CCEA', + }, + { + name: 'Light Crimson', + hex: '#F56991', + }, + { + name: 'Light Cyan', + hex: '#E0FFFF', + }, + { + name: 'Light Deep Pink', + hex: '#FF5CCD', + }, + { + name: 'Light French Beige', + hex: '#C8AD7F', + }, + { + name: 'Light Fuchsia Pink', + hex: '#F984EF', + }, + { + name: 'Light Goldenrod Yellow', + hex: '#FAFAD2', + }, + { + name: 'Light Gray', + hex: '#D3D3D3', + }, + { + name: 'Light Grayish Magenta', + hex: '#CC99CC', + }, + { + name: 'Light Green', + hex: '#90EE90', + }, + { + name: 'Light Hot Pink', + hex: '#FFB3DE', + }, + { + name: 'Light Khaki', + hex: '#F0E68C', + }, + { + name: 'Light Medium Orchid', + hex: '#D39BCB', + }, + { + name: 'Light Moss Green', + hex: '#ADDFAD', + }, + { + name: 'Light Orange', + hex: '#FED8B1', + }, + { + name: 'Light Orchid', + hex: '#E6A8D7', + }, + { + name: 'Light Pastel Purple', + hex: '#B19CD9', + }, + { + name: 'Light Pink', + hex: '#FFB6C1', + }, + { + name: 'Light Red Ochre', + hex: '#E97451', + }, + { + name: 'Light Salmon', + hex: '#FFA07A', + }, + { + name: 'Light Salmon Pink', + hex: '#FF9999', + }, + { + name: 'Light Sea Green', + hex: '#20B2AA', + }, + { + name: 'Light Sky Blue', + hex: '#87CEFA', + }, + { + name: 'Light Slate Gray', + hex: '#778899', + }, + { + name: 'Light Steel Blue', + hex: '#B0C4DE', + }, + { + name: 'Light Taupe', + hex: '#B38B6D', + }, + { + name: 'Light Thulian Pink', + hex: '#E68FAC', + }, + { + name: 'Light Yellow', + hex: '#FFFFE0', + }, + { + name: 'Lilac', + hex: '#C8A2C8', + }, + { + name: 'Lilac Luster', + hex: '#AE98AA', + }, + { + name: 'Lime (Color Wheel)', + hex: '#BFFF00', + }, + { + name: 'Lime (Web) (X11 Green)', + hex: '#00FF00', + }, + { + name: 'Lime Green', + hex: '#32CD32', + }, + { + name: 'Limerick', + hex: '#9DC209', + }, + { + name: 'Lincoln Green', + hex: '#195905', + }, + { + name: 'Linen', + hex: '#FAF0E6', + }, + { + name: 'Loeen (Lopen) Look', + hex: '#15F2FD', + }, + { + name: 'Liseran Purple', + hex: '#DE6FA1', + }, + { + name: 'Little Boy Blue', + hex: '#6CA0DC', + }, + { + name: 'Liver', + hex: '#674C47', + }, + { + name: 'Liver (Dogs)', + hex: '#B86D29', + }, + { + name: 'Liver (Organ)', + hex: '#6C2E1F', + }, + { + name: 'Liver Chestnut', + hex: '#987456', + }, + { + name: 'Livid', + hex: '#6699CC', + }, + { + name: 'Lumber', + hex: '#FFE4CD', + }, + { + name: 'Lust', + hex: '#E62020', + }, + { + name: 'Maastricht Blue', + hex: '#001C3D', + }, + { + name: 'Macaroni And Cheese', + hex: '#FFBD88', + }, + { + name: 'Madder Lake', + hex: '#CC3336', + }, + { + name: 'Magenta', + hex: '#FF00FF', + }, + { + name: 'Magenta (Crayola)', + hex: '#FF55A3', + }, + { + name: 'Magenta (Dye)', + hex: '#CA1F7B', + }, + { + name: 'Magenta (Pantone)', + hex: '#D0417E', + }, + { + name: 'Magenta (Process)', + hex: '#FF0090', + }, + { + name: 'Magenta Haze', + hex: '#9F4576', + }, + { + name: 'Magenta-Pink', + hex: '#CC338B', + }, + { + name: 'Magic Mint', + hex: '#AAF0D1', + }, + { + name: 'Magic Potion', + hex: '#FF4466', + }, + { + name: 'Magnolia', + hex: '#F8F4FF', + }, + { + name: 'Mahogany', + hex: '#C04000', + }, + { + name: 'Maize', + hex: '#FBEC5D', + }, + { + name: 'Majorelle Blue', + hex: '#6050DC', + }, + { + name: 'Malachite', + hex: '#0BDA51', + }, + { + name: 'Manatee', + hex: '#979AAA', + }, + { + name: 'Mandarin', + hex: '#F37A48', + }, + { + name: 'Mango Tango', + hex: '#FF8243', + }, + { + name: 'Mantis', + hex: '#74C365', + }, + { + name: 'Mardi Gras', + hex: '#880085', + }, + { + name: 'Marigold', + hex: '#EAA221', + }, + { + name: 'Maroon (Crayola)', + hex: '#C32148', + }, + { + name: 'Maroon (HTML/CSS)', + hex: '#800000', + }, + { + name: 'Maroon (X11)', + hex: '#B03060', + }, + { + name: 'Mauve', + hex: '#E0B0FF', + }, + { + name: 'Mauve Taupe', + hex: '#915F6D', + }, + { + name: 'Mauvelous', + hex: '#EF98AA', + }, + { + name: 'Maximum Blue', + hex: '#47ABCC', + }, + { + name: 'Maximum Blue Green', + hex: '#30BFBF', + }, + { + name: 'Maximum Blue Purple', + hex: '#ACACE6', + }, + { + name: 'Maximum Green', + hex: '#5E8C31', + }, + { + name: 'Maximum Green Yellow', + hex: '#D9E650', + }, + { + name: 'Maximum Purple', + hex: '#733380', + }, + { + name: 'Maximum Red', + hex: '#D92121', + }, + { + name: 'Maximum Red Purple', + hex: '#A63A79', + }, + { + name: 'Maximum Yellow', + hex: '#FAFA37', + }, + { + name: 'Maximum Yellow Red', + hex: '#F2BA49', + }, + { + name: 'May Green', + hex: '#4C9141', + }, + { + name: 'Maya Blue', + hex: '#73C2FB', + }, + { + name: 'Meat Brown', + hex: '#E5B73B', + }, + { + name: 'Medium Aquamarine', + hex: '#66DDAA', + }, + { + name: 'Medium Blue', + hex: '#0000CD', + }, + { + name: 'Medium Candy Apple Red', + hex: '#E2062C', + }, + { + name: 'Medium Carmine', + hex: '#AF4035', + }, + { + name: 'Medium Champagne', + hex: '#F3E5AB', + }, + { + name: 'Medium Electric Blue', + hex: '#035096', + }, + { + name: 'Medium Jungle Green', + hex: '#1C352D', + }, + { + name: 'Medium Lavender Magenta', + hex: '#DDA0DD', + }, + { + name: 'Medium Orchid', + hex: '#BA55D3', + }, + { + name: 'Medium Persian Blue', + hex: '#0067A5', + }, + { + name: 'Medium Purple', + hex: '#9370DB', + }, + { + name: 'Medium Red-Violet', + hex: '#BB3385', + }, + { + name: 'Medium Ruby', + hex: '#AA4069', + }, + { + name: 'Medium Sea Green', + hex: '#3CB371', + }, + { + name: 'Medium Sky Blue', + hex: '#80DAEB', + }, + { + name: 'Medium Slate Blue', + hex: '#7B68EE', + }, + { + name: 'Medium Spring Bud', + hex: '#C9DC87', + }, + { + name: 'Medium Spring Green', + hex: '#00FA9A', + }, + { + name: 'Medium Taupe', + hex: '#674C47', + }, + { + name: 'Medium Turquoise', + hex: '#48D1CC', + }, + { + name: 'Medium Tuscan Red', + hex: '#79443B', + }, + { + name: 'Medium Vermilion', + hex: '#D9603B', + }, + { + name: 'Medium Violet-Red', + hex: '#C71585', + }, + { + name: 'Mellow Apricot', + hex: '#F8B878', + }, + { + name: 'Mellow Yellow', + hex: '#F8DE7E', + }, + { + name: 'Melon', + hex: '#FDBCB4', + }, + { + name: 'Metallic Seaweed', + hex: '#0A7E8C', + }, + { + name: 'Metallic Sunburst', + hex: '#9C7C38', + }, + { + name: 'Mexican Pink', + hex: '#E4007C', + }, + { + name: 'Middle Blue', + hex: '#7ED4E6', + }, + { + name: 'Middle Blue Green', + hex: '#8DD9CC', + }, + { + name: 'Middle Blue Purple', + hex: '#8B72BE', + }, + { + name: 'Middle Red Purple', + hex: '#210837', + }, + { + name: 'Middle Green', + hex: '#4D8C57', + }, + { + name: 'Middle Green Yellow', + hex: '#ACBF60', + }, + { + name: 'Middle Purple', + hex: '#D982B5', + }, + { + name: 'Middle Red', + hex: '#E58E73', + }, + { + name: 'Middle Red Purple', + hex: '#A55353', + }, + { + name: 'Middle Yellow', + hex: '#FFEB00', + }, + { + name: 'Middle Yellow Red', + hex: '#ECB176', + }, + { + name: 'Midnight', + hex: '#702670', + }, + { + name: 'Midnight Blue', + hex: '#191970', + }, + { + name: 'Midnight Green (Eagle Green)', + hex: '#004953', + }, + { + name: 'Mikado Yellow', + hex: '#FFC40C', + }, + { + name: 'Milk', + hex: '#FDFFF5', + }, + { + name: 'Mimi Pink', + hex: '#FFDAE9', + }, + { + name: 'Mindaro', + hex: '#E3F988', + }, + { + name: 'Ming', + hex: '#36747D', + }, + { + name: 'Minion Yellow', + hex: '#F5E050', + }, + { + name: 'Mint', + hex: '#3EB489', + }, + { + name: 'Mint Cream', + hex: '#F5FFFA', + }, + { + name: 'Mint Green', + hex: '#98FF98', + }, + { + name: 'Misty Moss', + hex: '#BBB477', + }, + { + name: 'Misty Rose', + hex: '#FFE4E1', + }, + { + name: 'Moccasin', + hex: '#FAEBD7', + }, + { + name: 'Mode Beige', + hex: '#967117', + }, + { + name: 'Moonstone Blue', + hex: '#73A9C2', + }, + { + name: 'Mordant Red 19', + hex: '#AE0C00', + }, + { + name: 'Morning Blue', + hex: '#8DA399', + }, + { + name: 'Moss Green', + hex: '#8A9A5B', + }, + { + name: 'Mountain Meadow', + hex: '#30BA8F', + }, + { + name: 'Mountbatten Pink', + hex: '#997A8D', + }, + { + name: 'MSU Green', + hex: '#18453B', + }, + { + name: 'Mughal Green', + hex: '#306030', + }, + { + name: 'Mulberry', + hex: '#C54B8C', + }, + { + name: "Mummy's Tomb", + hex: '#828E84', + }, + { + name: 'Mustard', + hex: '#FFDB58', + }, + { + name: 'Myrtle Green', + hex: '#317873', + }, + { + name: 'Mystic', + hex: '#D65282', + }, + { + name: 'Mystic Maroon', + hex: '#AD4379', + }, + { + name: 'Nadeshiko Pink', + hex: '#F6ADC6', + }, + { + name: 'Napier Green', + hex: '#2A8000', + }, + { + name: 'Naples Yellow', + hex: '#FADA5E', + }, + { + name: 'Navajo White', + hex: '#FFDEAD', + }, + { + name: 'Navy', + hex: '#000080', + }, + { + name: 'Navy Purple', + hex: '#9457EB', + }, + { + name: 'Neon Carrot', + hex: '#FFA343', + }, + { + name: 'Neon Fuchsia', + hex: '#FE4164', + }, + { + name: 'Neon Green', + hex: '#39FF14', + }, + { + name: 'New Car', + hex: '#214FC6', + }, + { + name: 'New York Pink', + hex: '#D7837F', + }, + { + name: 'Nickel', + hex: '#727472', + }, + { + name: 'Non-Photo Blue', + hex: '#A4DDED', + }, + { + name: 'North Texas Green', + hex: '#059033', + }, + { + name: 'Nyanza', + hex: '#E9FFDB', + }, + { + name: 'Ocean Blue', + hex: '#4F42B5', + }, + { + name: 'Ocean Boat Blue', + hex: '#0077BE', + }, + { + name: 'Ocean Green', + hex: '#48BF91', + }, + { + name: 'Ochre', + hex: '#CC7722', + }, + { + name: 'Office Green', + hex: '#008000', + }, + { + name: 'Ogre Odor', + hex: '#FD5240', + }, + { + name: 'Old Burgundy', + hex: '#43302E', + }, + { + name: 'Old Gold', + hex: '#CFB53B', + }, + { + name: 'Old Heliotrope', + hex: '#563C5C', + }, + { + name: 'Old Lace', + hex: '#FDF5E6', + }, + { + name: 'Old Lavender', + hex: '#796878', + }, + { + name: 'Old Mauve', + hex: '#673147', + }, + { + name: 'Old Moss Green', + hex: '#867E36', + }, + { + name: 'Old Rose', + hex: '#C08081', + }, + { + name: 'Old Silver', + hex: '#848482', + }, + { + name: 'Olive', + hex: '#808000', + }, + { + name: 'Olive Drab (#3)', + hex: '#6B8E23', + }, + { + name: 'Olive Drab #7', + hex: '#3C341F', + }, + { + name: 'Olivine', + hex: '#9AB973', + }, + { + name: 'Onyx', + hex: '#353839', + }, + { + name: 'Opera Mauve', + hex: '#B784A7', + }, + { + name: 'Orange (Color Wheel)', + hex: '#FF7F00', + }, + { + name: 'Orange (Crayola)', + hex: '#FF7538', + }, + { + name: 'Orange (Pantone)', + hex: '#FF5800', + }, + { + name: 'Orange (RYB)', + hex: '#FB9902', + }, + { + name: 'Orange (Web)', + hex: '#FFA500', + }, + { + name: 'Orange Peel', + hex: '#FF9F00', + }, + { + name: 'Orange-Red', + hex: '#FF4500', + }, + { + name: 'Orange Soda', + hex: '#FA5B3D', + }, + { + name: 'Orange-Yellow', + hex: '#F8D568', + }, + { + name: 'Orchid', + hex: '#DA70D6', + }, + { + name: 'Orchid Pink', + hex: '#F2BDCD', + }, + { + name: 'Orioles Orange', + hex: '#FB4F14', + }, + { + name: 'Otter Brown', + hex: '#654321', + }, + { + name: 'Outer Space', + hex: '#414A4C', + }, + { + name: 'Outrageous Orange', + hex: '#FF6E4A', + }, + { + name: 'Oxford Blue', + hex: '#002147', + }, + { + name: 'OU Crimson Red', + hex: '#990000', + }, + { + name: 'Pacific Blue', + hex: '#1CA9C9', + }, + { + name: 'Pakistan Green', + hex: '#006600', + }, + { + name: 'Palatinate Blue', + hex: '#273BE2', + }, + { + name: 'Palatinate Purple', + hex: '#682860', + }, + { + name: 'Pale Aqua', + hex: '#BCD4E6', + }, + { + name: 'Pale Blue', + hex: '#AFEEEE', + }, + { + name: 'Pale Brown', + hex: '#987654', + }, + { + name: 'Pale Carmine', + hex: '#AF4035', + }, + { + name: 'Pale Cerulean', + hex: '#9BC4E2', + }, + { + name: 'Pale Chestnut', + hex: '#DDADAF', + }, + { + name: 'Pale Copper', + hex: '#DA8A67', + }, + { + name: 'Pale Cornflower Blue', + hex: '#ABCDEF', + }, + { + name: 'Pale Cyan', + hex: '#87D3F8', + }, + { + name: 'Pale Gold', + hex: '#E6BE8A', + }, + { + name: 'Pale Goldenrod', + hex: '#EEE8AA', + }, + { + name: 'Pale Green', + hex: '#98FB98', + }, + { + name: 'Pale Lavender', + hex: '#DCD0FF', + }, + { + name: 'Pale Magenta', + hex: '#F984E5', + }, + { + name: 'Pale Magenta-Pink', + hex: '#FF99CC', + }, + { + name: 'Pale Pink', + hex: '#FADADD', + }, + { + name: 'Pale Plum', + hex: '#DDA0DD', + }, + { + name: 'Pale Red-Violet', + hex: '#DB7093', + }, + { + name: 'Pale Robin Egg Blue', + hex: '#96DED1', + }, + { + name: 'Pale Silver', + hex: '#C9C0BB', + }, + { + name: 'Pale Spring Bud', + hex: '#ECEBBD', + }, + { + name: 'Pale Taupe', + hex: '#BC987E', + }, + { + name: 'Pale Turquoise', + hex: '#AFEEEE', + }, + { + name: 'Pale Violet', + hex: '#CC99FF', + }, + { + name: 'Pale Violet-Red', + hex: '#DB7093', + }, + { + name: 'Palm Leaf', + hex: '#6F9940', + }, + { + name: 'Pansy Purple', + hex: '#78184A', + }, + { + name: 'Paolo Veronese Green', + hex: '#009B7D', + }, + { + name: 'Papaya Whip', + hex: '#FFEFD5', + }, + { + name: 'Paradise Pink', + hex: '#E63E62', + }, + { + name: 'Paris Green', + hex: '#50C878', + }, + { + name: 'Parrot Pink', + hex: '#D998A0', + }, + { + name: 'Pastel Blue', + hex: '#AEC6CF', + }, + { + name: 'Pastel Brown', + hex: '#836953', + }, + { + name: 'Pastel Gray', + hex: '#CFCFC4', + }, + { + name: 'Pastel Green', + hex: '#77DD77', + }, + { + name: 'Pastel Magenta', + hex: '#F49AC2', + }, + { + name: 'Pastel Orange', + hex: '#FFB347', + }, + { + name: 'Pastel Pink', + hex: '#DEA5A4', + }, + { + name: 'Pastel Purple', + hex: '#B39EB5', + }, + { + name: 'Pastel Red', + hex: '#FF6961', + }, + { + name: 'Pastel Violet', + hex: '#CB99C9', + }, + { + name: 'Pastel Yellow', + hex: '#FDFD96', + }, + { + name: 'Patriarch', + hex: '#800080', + }, + { + name: "Payne's Grey", + hex: '#536878', + }, + { + name: 'Peach', + hex: '#FFE5B4', + }, + { + name: 'Peach', + hex: '#FFCBA4', + }, + { + name: 'Peach-Orange', + hex: '#FFCC99', + }, + { + name: 'Peach Puff', + hex: '#FFDAB9', + }, + { + name: 'Peach-Yellow', + hex: '#FADFAD', + }, + { + name: 'Pear', + hex: '#D1E231', + }, + { + name: 'Pearl', + hex: '#EAE0C8', + }, + { + name: 'Pearl Aqua', + hex: '#88D8C0', + }, + { + name: 'Pearly Purple', + hex: '#B768A2', + }, + { + name: 'Peridot', + hex: '#E6E200', + }, + { + name: 'Periwinkle', + hex: '#CCCCFF', + }, + { + name: 'Permanent Geranium Lake', + hex: '#E12C2C', + }, + { + name: 'Persian Blue', + hex: '#1C39BB', + }, + { + name: 'Persian Green', + hex: '#00A693', + }, + { + name: 'Persian Indigo', + hex: '#32127A', + }, + { + name: 'Persian Orange', + hex: '#D99058', + }, + { + name: 'Persian Pink', + hex: '#F77FBE', + }, + { + name: 'Persian Plum', + hex: '#701C1C', + }, + { + name: 'Persian Red', + hex: '#CC3333', + }, + { + name: 'Persian Rose', + hex: '#FE28A2', + }, + { + name: 'Persimmon', + hex: '#EC5800', + }, + { + name: 'Peru', + hex: '#CD853F', + }, + { + name: 'Pewter Blue', + hex: '#8BA8B7', + }, + { + name: 'Phlox', + hex: '#DF00FF', + }, + { + name: 'Phthalo Blue', + hex: '#000F89', + }, + { + name: 'Phthalo Green', + hex: '#123524', + }, + { + name: 'Picton Blue', + hex: '#45B1E8', + }, + { + name: 'Pictorial Carmine', + hex: '#C30B4E', + }, + { + name: 'Piggy Pink', + hex: '#FDDDE6', + }, + { + name: 'Pine Green', + hex: '#01796F', + }, + { + name: 'Pineapple', + hex: '#563C0D', + }, + { + name: 'Pink', + hex: '#FFC0CB', + }, + { + name: 'Pink (Pantone)', + hex: '#D74894', + }, + { + name: 'Pink Flamingo', + hex: '#FC74FD', + }, + { + name: 'Pink Lace', + hex: '#FFDDF4', + }, + { + name: 'Pink Lavender', + hex: '#D8B2D1', + }, + { + name: 'Pink-Orange', + hex: '#FF9966', + }, + { + name: 'Pink Pearl', + hex: '#E7ACCF', + }, + { + name: 'Pink Raspberry', + hex: '#980036', + }, + { + name: 'Pink Sherbet', + hex: '#F78FA7', + }, + { + name: 'Pistachio', + hex: '#93C572', + }, + { + name: 'Pixie Powder', + hex: '#391285', + }, + { + name: 'Platinum', + hex: '#E5E4E2', + }, + { + name: 'Plum', + hex: '#8E4585', + }, + { + name: 'Plum (Web)', + hex: '#DDA0DD', + }, + { + name: 'Plump Purple', + hex: '#5946B2', + }, + { + name: 'Polished Pine', + hex: '#5DA493', + }, + { + name: 'Pomp And Power', + hex: '#86608E', + }, + { + name: 'Popstar', + hex: '#BE4F62', + }, + { + name: 'Portland Orange', + hex: '#FF5A36', + }, + { + name: 'Powder Blue', + hex: '#B0E0E6', + }, + { + name: 'Princess Perfume', + hex: '#FF85CF', + }, + { + name: 'Princeton Orange', + hex: '#F58025', + }, + { + name: 'Prune', + hex: '#701C1C', + }, + { + name: 'Prussian Blue', + hex: '#003153', + }, + { + name: 'Psychedelic Purple', + hex: '#DF00FF', + }, + { + name: 'Puce', + hex: '#CC8899', + }, + { + name: 'Puce Red', + hex: '#722F37', + }, + { + name: 'Pullman Brown (UPS Brown)', + hex: '#644117', + }, + { + name: 'Pullman Green', + hex: '#3B331C', + }, + { + name: 'Pumpkin', + hex: '#FF7518', + }, + { + name: 'Purple (HTML)', + hex: '#800080', + }, + { + name: 'Purple (Munsell)', + hex: '#9F00C5', + }, + { + name: 'Purple (X11)', + hex: '#A020F0', + }, + { + name: 'Purple Heart', + hex: '#69359C', + }, + { + name: 'Purple Mountain Majesty', + hex: '#9678B6', + }, + { + name: 'Purple Navy', + hex: '#4E5180', + }, + { + name: 'Purple Pizzazz', + hex: '#FE4EDA', + }, + { + name: 'Purple Plum', + hex: '#9C51B6', + }, + { + name: 'Purple Taupe', + hex: '#50404D', + }, + { + name: 'Purpureus', + hex: '#9A4EAE', + }, + { + name: 'Quartz', + hex: '#51484F', + }, + { + name: 'Queen Blue', + hex: '#436B95', + }, + { + name: 'Queen Pink', + hex: '#E8CCD7', + }, + { + name: 'Quick Silver', + hex: '#A6A6A6', + }, + { + name: 'Quinacridone Magenta', + hex: '#8E3A59', + }, + { + name: 'Rackley', + hex: '#5D8AA8', + }, + { + name: 'Radical Red', + hex: '#FF355E', + }, + { + name: 'Raisin Black', + hex: '#242124', + }, + { + name: 'Rajah', + hex: '#FBAB60', + }, + { + name: 'Raspberry', + hex: '#E30B5D', + }, + { + name: 'Raspberry Glace', + hex: '#915F6D', + }, + { + name: 'Raspberry Pink', + hex: '#E25098', + }, + { + name: 'Raspberry Rose', + hex: '#B3446C', + }, + { + name: 'Raw Sienna', + hex: '#D68A59', + }, + { + name: 'Raw Umber', + hex: '#826644', + }, + { + name: 'Razzle Dazzle Rose', + hex: '#FF33CC', + }, + { + name: 'Razzmatazz', + hex: '#E3256B', + }, + { + name: 'Razzmic Berry', + hex: '#8D4E85', + }, + { + name: 'Rebecca Purple', + hex: '#663399', + }, + { + name: 'Red', + hex: '#FF0000', + }, + { + name: 'Red (Crayola)', + hex: '#EE204D', + }, + { + name: 'Red (Munsell)', + hex: '#F2003C', + }, + { + name: 'Red (NCS)', + hex: '#C40233', + }, + { + name: 'Red (Pantone)', + hex: '#ED2939', + }, + { + name: 'Red (Pigment)', + hex: '#ED1C24', + }, + { + name: 'Red (RYB)', + hex: '#FE2712', + }, + { + name: 'Red-Brown', + hex: '#A52A2A', + }, + { + name: 'Red Devil', + hex: '#860111', + }, + { + name: 'Red-Orange', + hex: '#FF5349', + }, + { + name: 'Red-Purple', + hex: '#E40078', + }, + { + name: 'Red Salsa', + hex: '#FD3A4A', + }, + { + name: 'Red-Violet', + hex: '#C71585', + }, + { + name: 'Redwood', + hex: '#A45A52', + }, + { + name: 'Regalia', + hex: '#522D80', + }, + { + name: 'Registration Black', + hex: '#000000', + }, + { + name: 'Resolution Blue', + hex: '#002387', + }, + { + name: 'Rhythm', + hex: '#777696', + }, + { + name: 'Rich Black', + hex: '#004040', + }, + { + name: 'Rich Black (FOGRA29)', + hex: '#010B13', + }, + { + name: 'Rich Black (FOGRA39)', + hex: '#010203', + }, + { + name: 'Rich Brilliant Lavender', + hex: '#F1A7FE', + }, + { + name: 'Rich Carmine', + hex: '#D70040', + }, + { + name: 'Rich Electric Blue', + hex: '#0892D0', + }, + { + name: 'Rich Lavender', + hex: '#A76BCF', + }, + { + name: 'Rich Lilac', + hex: '#B666D2', + }, + { + name: 'Rich Maroon', + hex: '#B03060', + }, + { + name: 'Rifle Green', + hex: '#444C38', + }, + { + name: 'Roast Coffee', + hex: '#704241', + }, + { + name: 'Robin Egg Blue', + hex: '#00CCCC', + }, + { + name: 'Rocket Metallic', + hex: '#8A7F80', + }, + { + name: 'Roman Silver', + hex: '#838996', + }, + { + name: 'Rose', + hex: '#FF007F', + }, + { + name: 'Rose Bonbon', + hex: '#F9429E', + }, + { + name: 'Rose Dust', + hex: '#9E5E6F', + }, + { + name: 'Rose Ebony', + hex: '#674846', + }, + { + name: 'Rose Gold', + hex: '#B76E79', + }, + { + name: 'Rose Madder', + hex: '#E32636', + }, + { + name: 'Rose Pink', + hex: '#FF66CC', + }, + { + name: 'Rose Quartz', + hex: '#AA98A9', + }, + { + name: 'Rose Red', + hex: '#C21E56', + }, + { + name: 'Rose Taupe', + hex: '#905D5D', + }, + { + name: 'Rose Vale', + hex: '#AB4E52', + }, + { + name: 'Rosewood', + hex: '#65000B', + }, + { + name: 'Rosso Corsa', + hex: '#D40000', + }, + { + name: 'Rosy Brown', + hex: '#BC8F8F', + }, + { + name: 'Royal Azure', + hex: '#0038A8', + }, + { + name: 'Royal Blue', + hex: '#002366', + }, + { + name: 'Royal Blue', + hex: '#4169E1', + }, + { + name: 'Royal Fuchsia', + hex: '#CA2C92', + }, + { + name: 'Royal Purple', + hex: '#7851A9', + }, + { + name: 'Royal Yellow', + hex: '#FADA5E', + }, + { + name: 'Ruber', + hex: '#CE4676', + }, + { + name: 'Rubine Red', + hex: '#D10056', + }, + { + name: 'Ruby', + hex: '#E0115F', + }, + { + name: 'Ruby Red', + hex: '#9B111E', + }, + { + name: 'Ruddy', + hex: '#FF0028', + }, + { + name: 'Ruddy Brown', + hex: '#BB6528', + }, + { + name: 'Ruddy Pink', + hex: '#E18E96', + }, + { + name: 'Rufous', + hex: '#A81C07', + }, + { + name: 'Russet', + hex: '#80461B', + }, + { + name: 'Russian Green', + hex: '#679267', + }, + { + name: 'Russian Violet', + hex: '#32174D', + }, + { + name: 'Rust', + hex: '#B7410E', + }, + { + name: 'Rusty Red', + hex: '#DA2C43', + }, + { + name: 'Sacramento State Green', + hex: '#00563F', + }, + { + name: 'Saddle Brown', + hex: '#8B4513', + }, + { + name: 'Safety Orange', + hex: '#FF7800', + }, + { + name: 'Safety Orange (Blaze Orange)', + hex: '#FF6700', + }, + { + name: 'Safety Yellow', + hex: '#EED202', + }, + { + name: 'Saffron', + hex: '#F4C430', + }, + { + name: 'Sage', + hex: '#BCB88A', + }, + { + name: "St. Patrick's Blue", + hex: '#23297A', + }, + { + name: 'Salmon', + hex: '#FA8072', + }, + { + name: 'Salmon Pink', + hex: '#FF91A4', + }, + { + name: 'Sand', + hex: '#C2B280', + }, + { + name: 'Sand Dune', + hex: '#967117', + }, + { + name: 'Sandstorm', + hex: '#ECD540', + }, + { + name: 'Sandy Brown', + hex: '#F4A460', + }, + { + name: 'Sandy Tan', + hex: '#FDD9B5', + }, + { + name: 'Sandy Taupe', + hex: '#967117', + }, + { + name: 'Sangria', + hex: '#92000A', + }, + { + name: 'Sap Green', + hex: '#507D2A', + }, + { + name: 'Sapphire', + hex: '#0F52BA', + }, + { + name: 'Sapphire Blue', + hex: '#0067A5', + }, + { + name: 'Sasquatch Socks', + hex: '#FF4681', + }, + { + name: 'Satin Sheen Gold', + hex: '#CBA135', + }, + { + name: 'Scarlet', + hex: '#FF2400', + }, + { + name: 'Scarlet', + hex: '#FD0E35', + }, + { + name: 'Schauss Pink', + hex: '#FF91AF', + }, + { + name: 'School Bus Yellow', + hex: '#FFD800', + }, + { + name: "Screamin' Green", + hex: '#66FF66', + }, + { + name: 'Sea Blue', + hex: '#006994', + }, + { + name: 'Sea Foam Green', + hex: '#9FE2BF', + }, + { + name: 'Sea Green', + hex: '#2E8B57', + }, + { + name: 'Sea Serpent', + hex: '#4BC7CF', + }, + { + name: 'Seal Brown', + hex: '#59260B', + }, + { + name: 'Seashell', + hex: '#FFF5EE', + }, + { + name: 'Selective Yellow', + hex: '#FFBA00', + }, + { + name: 'Sepia', + hex: '#704214', + }, + { + name: 'Shadow', + hex: '#8A795D', + }, + { + name: 'Shadow Blue', + hex: '#778BA5', + }, + { + name: 'Shampoo', + hex: '#FFCFF1', + }, + { + name: 'Shamrock Green', + hex: '#009E60', + }, + { + name: 'Sheen Green', + hex: '#8FD400', + }, + { + name: 'Shimmering Blush', + hex: '#D98695', + }, + { + name: 'Shiny Shamrock', + hex: '#5FA778', + }, + { + name: 'Shocking Pink', + hex: '#FC0FC0', + }, + { + name: 'Shocking Pink (Crayola)', + hex: '#FF6FFF', + }, + { + name: 'Sienna', + hex: '#882D17', + }, + { + name: 'Silver', + hex: '#C0C0C0', + }, + { + name: 'Silver Chalice', + hex: '#ACACAC', + }, + { + name: 'Silver Lake Blue', + hex: '#5D89BA', + }, + { + name: 'Silver Pink', + hex: '#C4AEAD', + }, + { + name: 'Silver Sand', + hex: '#BFC1C2', + }, + { + name: 'Sinopia', + hex: '#CB410B', + }, + { + name: 'Sizzling Red', + hex: '#FF3855', + }, + { + name: 'Sizzling Sunrise', + hex: '#FFDB00', + }, + { + name: 'Skobeloff', + hex: '#007474', + }, + { + name: 'Sky Blue', + hex: '#87CEEB', + }, + { + name: 'Sky Magenta', + hex: '#CF71AF', + }, + { + name: 'Slate Blue', + hex: '#6A5ACD', + }, + { + name: 'Slate Gray', + hex: '#708090', + }, + { + name: 'Smalt (Dark Powder Blue)', + hex: '#003399', + }, + { + name: 'Slimy Green', + hex: '#299617', + }, + { + name: 'Smashed Pumpkin', + hex: '#FF6D3A', + }, + { + name: 'Smitten', + hex: '#C84186', + }, + { + name: 'Smoke', + hex: '#738276', + }, + { + name: 'Smokey Topaz', + hex: '#832A0D', + }, + { + name: 'Smoky Black', + hex: '#100C08', + }, + { + name: 'Smoky Topaz', + hex: '#933D41', + }, + { + name: 'Snow', + hex: '#FFFAFA', + }, + { + name: 'Soap', + hex: '#CEC8EF', + }, + { + name: 'Solid Pink', + hex: '#893843', + }, + { + name: 'Sonic Silver', + hex: '#757575', + }, + { + name: 'Spartan Crimson', + hex: '#9E1316', + }, + { + name: 'Space Cadet', + hex: '#1D2951', + }, + { + name: 'Spanish Bistre', + hex: '#807532', + }, + { + name: 'Spanish Blue', + hex: '#0070B8', + }, + { + name: 'Spanish Carmine', + hex: '#D10047', + }, + { + name: 'Spanish Crimson', + hex: '#E51A4C', + }, + { + name: 'Spanish Gray', + hex: '#989898', + }, + { + name: 'Spanish Green', + hex: '#009150', + }, + { + name: 'Spanish Orange', + hex: '#E86100', + }, + { + name: 'Spanish Pink', + hex: '#F7BFBE', + }, + { + name: 'Spanish Red', + hex: '#E60026', + }, + { + name: 'Spanish Sky Blue', + hex: '#00FFFF', + }, + { + name: 'Spanish Violet', + hex: '#4C2882', + }, + { + name: 'Spanish Viridian', + hex: '#007F5C', + }, + { + name: 'Spicy Mix', + hex: '#8B5f4D', + }, + { + name: 'Spiro Disco Ball', + hex: '#0FC0FC', + }, + { + name: 'Spring Bud', + hex: '#A7FC00', + }, + { + name: 'Spring Frost', + hex: '#87FF2A', + }, + { + name: 'Spring Green', + hex: '#00FF7F', + }, + { + name: 'Star Command Blue', + hex: '#007BB8', + }, + { + name: 'Steel Blue', + hex: '#4682B4', + }, + { + name: 'Steel Pink', + hex: '#CC33CC', + }, + { + name: 'Steel Teal', + hex: '#5F8A8B', + }, + { + name: 'Stil De Grain Yellow', + hex: '#FADA5E', + }, + { + name: 'Stizza', + hex: '#990000', + }, + { + name: 'Stormcloud', + hex: '#4F666A', + }, + { + name: 'Straw', + hex: '#E4D96F', + }, + { + name: 'Strawberry', + hex: '#FC5A8D', + }, + { + name: 'Sugar Plum', + hex: '#914E75', + }, + { + name: 'Sunburnt Cyclops', + hex: '#FF404C', + }, + { + name: 'Sunglow', + hex: '#FFCC33', + }, + { + name: 'Sunny', + hex: '#F2F27A', + }, + { + name: 'Sunray', + hex: '#E3AB57', + }, + { + name: 'Sunset', + hex: '#FAD6A5', + }, + { + name: 'Sunset Orange', + hex: '#FD5E53', + }, + { + name: 'Super Pink', + hex: '#CF6BA9', + }, + { + name: 'Sweet Brown', + hex: '#A83731', + }, + { + name: 'Tan', + hex: '#D2B48C', + }, + { + name: 'Tangelo', + hex: '#F94D00', + }, + { + name: 'Tangerine', + hex: '#F28500', + }, + { + name: 'Tangerine Yellow', + hex: '#FFCC00', + }, + { + name: 'Tango Pink', + hex: '#E4717A', + }, + { + name: 'Tart Orange', + hex: '#FB4D46', + }, + { + name: 'Taupe', + hex: '#483C32', + }, + { + name: 'Taupe Gray', + hex: '#8B8589', + }, + { + name: 'Tea Green', + hex: '#D0F0C0', + }, + { + name: 'Tea Rose', + hex: '#F88379', + }, + { + name: 'Tea Rose', + hex: '#F4C2C2', + }, + { + name: 'Teal', + hex: '#008080', + }, + { + name: 'Teal Blue', + hex: '#367588', + }, + { + name: 'Teal Deer', + hex: '#99E6B3', + }, + { + name: 'Teal Green', + hex: '#00827F', + }, + { + name: 'Telemagenta', + hex: '#CF3476', + }, + { + name: 'Tenne (Tawny)', + hex: '#CD5700', + }, + { + name: 'Terra Cotta', + hex: '#E2725B', + }, + { + name: 'Thistle', + hex: '#D8BFD8', + }, + { + name: 'Thulian Pink', + hex: '#DE6FA1', + }, + { + name: 'Tickle Me Pink', + hex: '#FC89AC', + }, + { + name: 'Tiffany Blue', + hex: '#0ABAB5', + }, + { + name: "Tiger's Eye", + hex: '#E08D3C', + }, + { + name: 'Timberwolf', + hex: '#DBD7D2', + }, + { + name: 'Titanium Yellow', + hex: '#EEE600', + }, + { + name: 'Tomato', + hex: '#FF6347', + }, + { + name: 'Toolbox', + hex: '#746CC0', + }, + { + name: 'Topaz', + hex: '#FFC87C', + }, + { + name: 'Tractor Red', + hex: '#FD0E35', + }, + { + name: 'Trolley Grey', + hex: '#808080', + }, + { + name: 'Tropical Rain Forest', + hex: '#00755E', + }, + { + name: 'Tropical Violet', + hex: '#CDA4DE', + }, + { + name: 'True Blue', + hex: '#0073CF', + }, + { + name: 'Tufts Blue', + hex: '#3E8EDE', + }, + { + name: 'Tulip', + hex: '#FF878D', + }, + { + name: 'Tumbleweed', + hex: '#DEAA88', + }, + { + name: 'Turkish Rose', + hex: '#B57281', + }, + { + name: 'Turquoise', + hex: '#40E0D0', + }, + { + name: 'Turquoise Blue', + hex: '#00FFEF', + }, + { + name: 'Turquoise Green', + hex: '#A0D6B4', + }, + { + name: 'Turquoise Surf', + hex: '#00C5CD', + }, + { + name: 'Turtle Green', + hex: '#8A9A5B', + }, + { + name: 'Tuscan', + hex: '#FAD6A5', + }, + { + name: 'Tuscan Brown', + hex: '#6F4E37', + }, + { + name: 'Tuscan Red', + hex: '#7C4848', + }, + { + name: 'Tuscan Tan', + hex: '#A67B5B', + }, + { + name: 'Tuscany', + hex: '#C09999', + }, + { + name: 'Twilight Lavender', + hex: '#8A496B', + }, + { + name: 'Tyrian Purple', + hex: '#66023C', + }, + { + name: 'UA Blue', + hex: '#0033AA', + }, + { + name: 'UA Red', + hex: '#D9004C', + }, + { + name: 'Ube', + hex: '#8878C3', + }, + { + name: 'UCLA Blue', + hex: '#536895', + }, + { + name: 'UCLA Gold', + hex: '#FFB300', + }, + { + name: 'UFO Green', + hex: '#3CD070', + }, + { + name: 'Ultramarine', + hex: '#3F00FF', + }, + { + name: 'Ultramarine Blue', + hex: '#4166F5', + }, + { + name: 'Ultra Pink', + hex: '#FF6FFF', + }, + { + name: 'Ultra Red', + hex: '#FC6C85', + }, + { + name: 'Umber', + hex: '#635147', + }, + { + name: 'Unbleached Silk', + hex: '#FFDDCA', + }, + { + name: 'United Nations Blue', + hex: '#5B92E5', + }, + { + name: 'University Of California Gold', + hex: '#B78727', + }, + { + name: 'Unmellow Yellow', + hex: '#FFFF66', + }, + { + name: 'UP Forest Green', + hex: '#014421', + }, + { + name: 'UP Maroon', + hex: '#7B1113', + }, + { + name: 'Upsdell Red', + hex: '#AE2029', + }, + { + name: 'Urobilin', + hex: '#E1AD21', + }, + { + name: 'USAFA Blue', + hex: '#004F98', + }, + { + name: 'USC Cardinal', + hex: '#990000', + }, + { + name: 'USC Gold', + hex: '#FFCC00', + }, + { + name: 'University Of Tennessee Orange', + hex: '#F77F00', + }, + { + name: 'Utah Crimson', + hex: '#D3003F', + }, + { + name: 'Van Dyke Brown', + hex: '#664228', + }, + { + name: 'Vanilla', + hex: '#F3E5AB', + }, + { + name: 'Vanilla Ice', + hex: '#F38FA9', + }, + { + name: 'Vegas Gold', + hex: '#C5B358', + }, + { + name: 'Venetian Red', + hex: '#C80815', + }, + { + name: 'Verdigris', + hex: '#43B3AE', + }, + { + name: 'Vermilion', + hex: '#E34234', + }, + { + name: 'Vermilion', + hex: '#D9381E', + }, + { + name: 'Veronica', + hex: '#A020F0', + }, + { + name: 'Very Light Azure', + hex: '#74BBFB', + }, + { + name: 'Very Light Blue', + hex: '#6666FF', + }, + { + name: 'Very Light Malachite Green', + hex: '#64E986', + }, + { + name: 'Very Light Tangelo', + hex: '#FFB077', + }, + { + name: 'Very Pale Orange', + hex: '#FFDFBF', + }, + { + name: 'Very Pale Yellow', + hex: '#FFFFBF', + }, + { + name: 'Violet', + hex: '#8F00FF', + }, + { + name: 'Violet (Color Wheel)', + hex: '#7F00FF', + }, + { + name: 'Violet (RYB)', + hex: '#8601AF', + }, + { + name: 'Violet (Web)', + hex: '#EE82EE', + }, + { + name: 'Violet-Blue', + hex: '#324AB2', + }, + { + name: 'Violet-Red', + hex: '#F75394', + }, + { + name: 'Viridian', + hex: '#40826D', + }, + { + name: 'Viridian Green', + hex: '#009698', + }, + { + name: 'Vista Blue', + hex: '#7C9ED9', + }, + { + name: 'Vivid Amber', + hex: '#CC9900', + }, + { + name: 'Vivid Auburn', + hex: '#922724', + }, + { + name: 'Vivid Burgundy', + hex: '#9F1D35', + }, + { + name: 'Vivid Cerise', + hex: '#DA1D81', + }, + { + name: 'Vivid Cerulean', + hex: '#00AAEE', + }, + { + name: 'Vivid Crimson', + hex: '#CC0033', + }, + { + name: 'Vivid Gamboge', + hex: '#FF9900', + }, + { + name: 'Vivid Lime Green', + hex: '#A6D608', + }, + { + name: 'Vivid Malachite', + hex: '#00CC33', + }, + { + name: 'Vivid Mulberry', + hex: '#B80CE3', + }, + { + name: 'Vivid Orange', + hex: '#FF5F00', + }, + { + name: 'Vivid Orange Peel', + hex: '#FFA000', + }, + { + name: 'Vivid Orchid', + hex: '#CC00FF', + }, + { + name: 'Vivid Raspberry', + hex: '#FF006C', + }, + { + name: 'Vivid Red', + hex: '#F70D1A', + }, + { + name: 'Vivid Red-Tangelo', + hex: '#DF6124', + }, + { + name: 'Vivid Sky Blue', + hex: '#00CCFF', + }, + { + name: 'Vivid Tangelo', + hex: '#F07427', + }, + { + name: 'Vivid Tangerine', + hex: '#FFA089', + }, + { + name: 'Vivid Vermilion', + hex: '#E56024', + }, + { + name: 'Vivid Violet', + hex: '#9F00FF', + }, + { + name: 'Vivid Yellow', + hex: '#FFE302', + }, + { + name: 'Volt', + hex: '#CEFF00', + }, + { + name: 'Wageningen Green', + hex: '#34B233', + }, + { + name: 'Warm Black', + hex: '#004242', + }, + { + name: 'Waterspout', + hex: '#A4F4F9', + }, + { + name: 'Weldon Blue', + hex: '#7C98AB', + }, + { + name: 'Wenge', + hex: '#645452', + }, + { + name: 'Wheat', + hex: '#F5DEB3', + }, + { + name: 'White', + hex: '#FFFFFF', + }, + { + name: 'White Smoke', + hex: '#F5F5F5', + }, + { + name: 'Wild Blue Yonder', + hex: '#A2ADD0', + }, + { + name: 'Wild Orchid', + hex: '#D470A2', + }, + { + name: 'Wild Strawberry', + hex: '#FF43A4', + }, + { + name: 'Wild Watermelon', + hex: '#FC6C85', + }, + { + name: 'Willpower Orange', + hex: '#FD5800', + }, + { + name: 'Windsor Tan', + hex: '#A75502', + }, + { + name: 'Wine', + hex: '#722F37', + }, + { + name: 'Wine Dregs', + hex: '#673147', + }, + { + name: 'Winter Sky', + hex: '#FF007C', + }, + { + name: 'Winter Wizard', + hex: '#A0E6FF', + }, + { + name: 'Wintergreen Dream', + hex: '#56887D', + }, + { + name: 'Wisteria', + hex: '#C9A0DC', + }, + { + name: 'Wood Brown', + hex: '#C19A6B', + }, + { + name: 'Xanadu', + hex: '#738678', + }, + { + name: 'Yale Blue', + hex: '#0F4D92', + }, + { + name: 'Yankees Blue', + hex: '#1C2841', + }, + { + name: 'Yellow', + hex: '#FFFF00', + }, + { + name: 'Yellow (Crayola)', + hex: '#FCE883', + }, + { + name: 'Yellow (Munsell)', + hex: '#EFCC00', + }, + { + name: 'Yellow (NCS)', + hex: '#FFD300', + }, + { + name: 'Yellow (Pantone)', + hex: '#FEDF00', + }, + { + name: 'Yellow (Process)', + hex: '#FFEF00', + }, + { + name: 'Yellow (RYB)', + hex: '#FEFE33', + }, + { + name: 'Yellow-Green', + hex: '#9ACD32', + }, + { + name: 'Yellow Orange', + hex: '#FFAE42', + }, + { + name: 'Yellow Rose', + hex: '#FFF000', + }, + { + name: 'Yellow Sunshine', + hex: '#FFF700', + }, + { + name: 'Zaffre', + hex: '#0014A8', + }, + { + name: 'Zinnwaldite Brown', + hex: '#2C1608', + }, + { + name: 'Zomp', + hex: '#39A78E', + }, +]; diff --git a/packages/components/src/include.css b/packages/components/src/include.css new file mode 100644 index 00000000..c9bc585e --- /dev/null +++ b/packages/components/src/include.css @@ -0,0 +1,6 @@ +/* Temporary fix for a size issue with FlatUiTable loading indicator on Firefox */ +@layer base { + svg[tw^='animate-pulse w-12'] { + max-width: 100px; + } +} diff --git a/packages/components/src/index.css b/packages/components/src/index.css index c61c638e..7a21fb11 100644 --- a/packages/components/src/index.css +++ b/packages/components/src/index.css @@ -1,10 +1,7 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; -/* Temporary fix for a size issue with FlatUiTable loading indicator on Firefox */ -@layer base { - svg[tw^='animate-pulse w-12'] { - max-width: 100px; - } -} +@import "tailwindcss/base"; +@import "tailwindcss/components"; +@import "leaflet"; +@import "include"; +@import "tailwindcss/utilities"; + diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index b0e5e0b5..1302d7e7 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -4,3 +4,5 @@ export * from "./components/LineChart"; export * from "./components/Vega"; export * from "./components/VegaLite"; export * from "./components/FlatUiTable"; +export * from './components/OpenLayers/OpenLayers'; +export * from "./components/Map"; diff --git a/packages/components/src/types/GeoJSON.tsx b/packages/components/src/types/GeoJSON.tsx new file mode 100644 index 00000000..8b751514 --- /dev/null +++ b/packages/components/src/types/GeoJSON.tsx @@ -0,0 +1,171 @@ +/** + * Typescript types for the GeoJSON RFC7946 specification. This is not fully RFC-compliant due to lack of support for + * ranged number data types. + * + * See https://tools.ietf.org/html/rfc7946 + */ +export declare namespace GeoJSON { + /** + * Inside this document, the term "geometry type" refers to seven case-sensitive strings: "Point", "MultiPoint", + * "LineString", "MultiLineString", "Polygon", "MultiPolygon", and "GeometryCollection". + */ + export type Geometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon + | GeometryCollection; + export type GeometryType = Geometry["type"]; + + /** + * ...the term "GeoJSON types" refers to nine case-sensitive strings: "Feature", "FeatureCollection", and the + * geometry types listed above. + */ + export type GeoJson = Geometry | Feature | FeatureCollection; + export type GeoJsonType = GeoJson["type"]; + + // types + + /** + * A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and + * latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY + * be included as an optional third element. + * + * Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are + * unspecified and ambiguous. + */ + export type Position = [longitude: number, latitude: number, elevation?: number] + + export type Record = { [key in string | number]: unknown }; + + /** + * Properties inherit to all GeoJSON types + */ + export interface GeometryBase extends Record { + /** + * A GeoJSON object MAY have a member named "bbox" to include information on the coordinate range for its + * Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n + * where n is the number of dimensions represented in the contained geometries, with all axes of the most + * southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows + * the axes order of geometries. + */ + bbox?: number[]; + + /** + * A GeoJSON object MAY have other members. + * + * Members not described in this specification ("foreign members") MAY be used in a GeoJSON document. Note that + * support for foreign members can vary across implementations, and no normative processing model for foreign + * members is defined. + */ + } + + // geometry types + + export interface Point extends GeometryBase { + type: "Point"; + /** + * For type "Point", the "coordinates" member is a single position. + */ + coordinates: Position; + } + + export interface MultiPoint extends GeometryBase { + type: "MultiPoint"; + /** + * For type "MultiPoint", the "coordinates" member is an array of positions. + */ + coordinates: Position[]; + } + + export interface LineString extends GeometryBase { + type: "LineString"; + /** + * For type "LineString", the "coordinates" member is an array of two or more positions. + */ + coordinates: { 0: Position, 1: Position } & Position[] + } + + export interface MultiLineString extends GeometryBase { + type: "MultiLineString"; + /** + * For type "MultiLineString", the "coordinates" member is an array of LineString coordinate arrays. + */ + coordinates: LineString["coordinates"][]; + } + + /** + * To specify a constraint specific to Polygons, it is useful to introduce the concept of a linear ring: + * - A linear ring is a closed LineString with four or more positions. + * - The first and last positions are equivalent, and they MUST contain identical values; their representation + * SHOULD also be identical. + * - A linear ring is the boundary of a surface or the boundary of a hole in a surface. + * - A linear ring MUST follow the right-hand rule with respect to the area it bounds, i.e., exterior rings are + * counterclockwise, and holes are clockwise. + */ + export type LinearRing = { 0: Position, 1: Position, 2: Position, 3: Position } & Position[]; + + export interface Polygon extends GeometryBase { + type: "Polygon"; + /** + * For type "Polygon", the "coordinates" member MUST be an array of linear ring coordinate arrays. + * + * For Polygons with more than one of these rings, the first MUST be the exterior ring, and any others MUST be + * interior rings. The exterior ring bounds the surface, and the interior rings (if present) bound holes within + * the surface. + */ + coordinates: LinearRing[]; + } + + export interface MultiPolygon extends GeometryBase { + type: "MultiPolygon"; + /** + * For type "MultiPolygon", the "coordinates" member is an array of Polygon coordinate arrays. + */ + coordinates: Polygon["coordinates"][]; + } + + export interface GeometryCollection { + /** + * A GeoJSON object with type "GeometryCollection" is a Geometry object. + */ + type: "GeometryCollection"; + /** + * A GeometryCollection has a member with the name "geometries". The value of "geometries" is an array. Each + * element of this array is a GeoJSON Geometry object. It is possible for this array to be empty. + */ + geometries: Geometry[]; + } + + // GeoJSON types + + export interface Feature { + /** + * A Feature object has a "type" member with the value "Feature". + */ + type: "Feature"; + /** + * If a Feature has a commonly used identifier, that identifier SHOULD be included as a member of the Feature object + * with the name "id", and the value of this member is either a JSON string or number. + */ + id?: string | number; + /** + * A Feature object has a member with the name "geometry". The value of the geometry member SHALL be either a + * Geometry object as defined above or, in the case that the Feature is unlocated, a JSON null value. + */ + geometry: Geometry | null; + /** + * A Feature object has a member with the name "properties". The value of the properties member is an object + * (any JSON object or a JSON null value). + */ + properties: Record | null; + } + + export interface FeatureCollection { + /** + * A GeoJSON object with the type "FeatureCollection" is a FeatureCollection object. + */ + type: "FeatureCollection"; + /** + * A FeatureCollection object has a member with the name "features". The value of "features" is a JSON array. Each + * element of the array is a Feature object as defined above. It is possible for this array to be empty. + */ + features: Feature[]; + } +} diff --git a/packages/components/stories/Map.stories.ts b/packages/components/stories/Map.stories.ts new file mode 100644 index 00000000..c39cdc9e --- /dev/null +++ b/packages/components/stories/Map.stories.ts @@ -0,0 +1,55 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import { Map, MapProps } from '../src/components/Map'; + +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction +const meta: Meta = { + title: 'Components/Map', + component: Map, + tags: ['autodocs'], + argTypes: { + data: { + description: + 'Data to be displayed.\n\n GeoJSON Object \n\nOR\n\n URL to GeoJSON Object', + }, + title: { + description: 'Title to display on the map. Optional.', + }, + center: { + description: 'Initial coordinates of the center of the map', + }, + zoom: { + description: 'Zoom level', + }, + tooltip: { + description: 'Tooltip settings' + } + }, +}; + +export default meta; + +type Story = StoryObj; + +// More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args +export const GeoJSONPolygons: Story = { + name: 'GeoJSON polygons map', + args: { + data: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_geography_marine_polys.geojson', + title: 'Seas and Oceans Map', + center: { latitude: 45, longitude: 0 }, + zoom: 2, + tooltip: { prop: 'name' }, + }, +}; + +export const GeoJSONPoints: Story = { + name: 'GeoJSON points map', + args: { + data: 'https://opendata.arcgis.com/datasets/9c58741995174fbcb017cf46c8a42f4b_25.geojson', + title: 'Roads in York', + center: { latitude: 53.9614, longitude: -1.0739 }, + zoom: 12, + tooltip: { prop: 'Location' }, + }, +}; diff --git a/packages/components/stories/OpenLayers.stories.tsx b/packages/components/stories/OpenLayers.stories.tsx new file mode 100644 index 00000000..101d4740 --- /dev/null +++ b/packages/components/stories/OpenLayers.stories.tsx @@ -0,0 +1,136 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; +import OpenLayers from '../src/components/OpenLayers/OpenLayers'; + +const meta: Meta = { + title: 'Components/OpenLayers', + component: OpenLayers, + argTypes: { + layers: { + description: 'Layers to be added to the map', + control: { + type: 'array', + }, + }, + center: { + description: 'Center of the map', + defaultValue: [0, 0], + control: { + type: 'array', + }, + }, + zoom: { + description: 'Zoom level of the map', + defaultValue: 1, + control: { + type: 'number', + }, + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Secondary: Story = { + name: 'Map with OpenLayers', + args: { + layers: [ + { + url: 'https://openlayers.org/data/vector/ecoregions.json', + name: 'Ecoregions', + }, + ], + }, +}; + +export const Primary: Story = { + name: 'Map with OpenLayers 2', + args: { + layers: [ + { + url: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_geography_marine_polys.geojson', + name: 'Marine regions', + }, + ], + }, +}; + +export const MapWithPopover: Story = { + name: 'Map with popup', + args: { + layers: [ + { + url: 'https://openlayers.org/data/vector/ecoregions.json', + name: 'Ecoregions', + }, + ], + popup: (feature: any) => { + return ( +
+ Biome name + {feature.values_.BIOME_NAME} +
+ ); + }, + }, +}; + +export const Third: Story = { + name: 'Map with two layers', + args: { + layers: [ + { + url: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_geography_marine_polys.geojson', + name: 'Marine regions', + }, + { + url: 'https://openlayers.org/data/vector/ecoregions.json', + name: 'Ecoregions', + }, + ], + }, +}; + +export const CustomCenter: Story = { + name: 'Map with custom center and zoom', + args: { + layers: [ + { + url: 'https://openlayers.org/data/vector/ecoregions.json', + name: 'Ecoregions', + }, + ], + center: [-15, 20], + zoom: 4, + }, +}; + +export const PointsOnMap: Story = { + name: 'Map with points on', + args: { + layers: [ + { + url: 'https://opendata.arcgis.com/datasets/9c58741995174fbcb017cf46c8a42f4b_25.geojson', + name: 'E-Scooter Parking Bays', + }, + ], + center: [-1.055429957881787, 53.963900188025301], + zoom: 12, + }, +}; + +export const KMLFile: Story = { + name: 'Map with KML File', + args: { + layers: [ + { + url: 'https://openlayers.org/en/latest/examples/data/kml/2012_Earthquakes_Mag5.kml', + name: '2012 Earthquakes M5+', + format: 'kml', + heatmap: true, + }, + ], + }, +}; diff --git a/packages/components/tailwind.config.js b/packages/components/tailwind.config.js index d21f1cda..98fd9860 100644 --- a/packages/components/tailwind.config.js +++ b/packages/components/tailwind.config.js @@ -1,8 +1,6 @@ /** @type {import('tailwindcss').Config} */ export default { content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], - theme: { - extend: {}, - }, + theme: {}, plugins: [], }; diff --git a/packages/components/vite.config.ts b/packages/components/vite.config.ts index ddc2109f..a0604ea1 100644 --- a/packages/components/vite.config.ts +++ b/packages/components/vite.config.ts @@ -1,29 +1,15 @@ -import react from '@vitejs/plugin-react' -import path from 'node:path' -import { defineConfig } from 'vitest/config' -import dts from 'vite-plugin-dts' -import tailwindcss from 'tailwindcss' -import { UserConfigExport } from 'vite' -import replace from "rollup-plugin-re" +import react from '@vitejs/plugin-react-swc'; +import path from 'node:path'; +import { defineConfig } from 'vitest/config'; +import dts from 'vite-plugin-dts'; +import tailwindcss from 'tailwindcss'; +import { UserConfigExport } from 'vite'; +import replace from 'rollup-plugin-re'; const app = async (): Promise => { return defineConfig({ plugins: [ react(), - replace({ - patterns: [ - { - match: /js-sha256/, - test: `eval("require('crypto')")`, - replace: `require('crypto')`, - }, - { - match: /js-sha256/, - test: `eval("require('buffer').Buffer")`, - replace: `require('buffer').Buffer`, - }, - ], - }), dts({ insertTypesEntry: true, }), @@ -34,6 +20,7 @@ const app = async (): Promise => { }, }, build: { + target: 'es2020', lib: { entry: path.resolve(__dirname, 'src/index.ts'), name: 'components', @@ -41,12 +28,27 @@ const app = async (): Promise => { fileName: (format) => `components.${format}.js`, }, rollupOptions: { - external: ['react', 'react-dom', 'tailwindcss', 'vega-lite', 'vega', 'react-vega'], + external: [ + 'react', + 'ol-mapbox-style', + 'react-dom', + 'tailwindcss', + 'vega-lite', + 'vega', + 'react-vega', + 'ol', + 'leaflet' + ], output: { + manualChunks: undefined, globals: { react: 'React', + ol: 'ol', + 'ol-mapbox-style': 'ol-mapbox-style', + 'react-vega': 'react-vega', 'react-dom': 'ReactDOM', tailwindcss: 'tailwindcss', + leaflet: 'leaflet' }, }, }, @@ -55,7 +57,7 @@ const app = async (): Promise => { globals: true, environment: 'jsdom', }, - }) -} + }); +}; // https://vitejs.dev/config/ -export default app +export default app; diff --git a/packages/components/vite.config.ts.timestamp-1688577409260-11eb314b205fb.mjs b/packages/components/vite.config.ts.timestamp-1688577409260-11eb314b205fb.mjs new file mode 100644 index 00000000..c5af1bba --- /dev/null +++ b/packages/components/vite.config.ts.timestamp-1688577409260-11eb314b205fb.mjs @@ -0,0 +1,64 @@ +// vite.config.ts +import react from "file:///home/urutu-branco/Projetos/portaljs/node_modules/@vitejs/plugin-react-swc/index.mjs"; +import path from "node:path"; +import { defineConfig } from "file:///home/urutu-branco/Projetos/portaljs/node_modules/vitest/dist/config.js"; +import dts from "file:///home/urutu-branco/Projetos/portaljs/node_modules/vite-plugin-dts/dist/index.mjs"; +import tailwindcss from "file:///home/urutu-branco/Projetos/portaljs/node_modules/tailwindcss/lib/index.js"; +var __vite_injected_original_dirname = "/home/urutu-branco/Projetos/portaljs/packages/components"; +var app = async () => { + return defineConfig({ + plugins: [ + react(), + dts({ + insertTypesEntry: true + }) + ], + css: { + postcss: { + plugins: [tailwindcss] + } + }, + build: { + target: "es2020", + lib: { + entry: path.resolve(__vite_injected_original_dirname, "src/index.ts"), + name: "components", + formats: ["es", "umd"], + fileName: (format) => `components.${format}.js` + }, + rollupOptions: { + external: [ + "react", + "ol-mapbox-style", + "react-dom", + "tailwindcss", + "vega-lite", + "vega", + "react-vega", + "ol", + "ol/dom.js" + ], + output: { + manualChunks: void 0, + globals: { + react: "React", + ol: "ol", + "ol/dom.js": "ol/dom.js", + "react-vega": "react-vega", + "react-dom": "ReactDOM", + tailwindcss: "tailwindcss" + } + } + } + }, + test: { + globals: true, + environment: "jsdom" + } + }); +}; +var vite_config_default = app; +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS91cnV0dS1icmFuY28vUHJvamV0b3MvcG9ydGFsanMvcGFja2FnZXMvY29tcG9uZW50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2hvbWUvdXJ1dHUtYnJhbmNvL1Byb2pldG9zL3BvcnRhbGpzL3BhY2thZ2VzL2NvbXBvbmVudHMvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2hvbWUvdXJ1dHUtYnJhbmNvL1Byb2pldG9zL3BvcnRhbGpzL3BhY2thZ2VzL2NvbXBvbmVudHMvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgcmVhY3QgZnJvbSAnQHZpdGVqcy9wbHVnaW4tcmVhY3Qtc3djJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlc3QvY29uZmlnJztcbmltcG9ydCBkdHMgZnJvbSAndml0ZS1wbHVnaW4tZHRzJztcbmltcG9ydCB0YWlsd2luZGNzcyBmcm9tICd0YWlsd2luZGNzcyc7XG5pbXBvcnQgeyBVc2VyQ29uZmlnRXhwb3J0IH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgcmVwbGFjZSBmcm9tICdyb2xsdXAtcGx1Z2luLXJlJztcblxuY29uc3QgYXBwID0gYXN5bmMgKCk6IFByb21pc2U8VXNlckNvbmZpZ0V4cG9ydD4gPT4ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBwbHVnaW5zOiBbXG4gICAgICByZWFjdCgpLFxuICAgICAgZHRzKHtcbiAgICAgICAgaW5zZXJ0VHlwZXNFbnRyeTogdHJ1ZSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgY3NzOiB7XG4gICAgICBwb3N0Y3NzOiB7XG4gICAgICAgIHBsdWdpbnM6IFt0YWlsd2luZGNzc10sXG4gICAgICB9LFxuICAgIH0sXG4gICAgYnVpbGQ6IHtcbiAgICAgIHRhcmdldDogJ2VzMjAyMCcsXG4gICAgICBsaWI6IHtcbiAgICAgICAgZW50cnk6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdzcmMvaW5kZXgudHMnKSxcbiAgICAgICAgbmFtZTogJ2NvbXBvbmVudHMnLFxuICAgICAgICBmb3JtYXRzOiBbJ2VzJywgJ3VtZCddLFxuICAgICAgICBmaWxlTmFtZTogKGZvcm1hdCkgPT4gYGNvbXBvbmVudHMuJHtmb3JtYXR9LmpzYCxcbiAgICAgIH0sXG4gICAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICAgIGV4dGVybmFsOiBbXG4gICAgICAgICAgJ3JlYWN0JyxcbiAgICAgICAgICAnb2wtbWFwYm94LXN0eWxlJyxcbiAgICAgICAgICAncmVhY3QtZG9tJyxcbiAgICAgICAgICAndGFpbHdpbmRjc3MnLFxuICAgICAgICAgICd2ZWdhLWxpdGUnLFxuICAgICAgICAgICd2ZWdhJyxcbiAgICAgICAgICAncmVhY3QtdmVnYScsXG4gICAgICAgICAgJ29sJyxcbiAgICAgICAgICAnb2wvZG9tLmpzJyxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgbWFudWFsQ2h1bmtzOiB1bmRlZmluZWQsXG4gICAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgICAgICAgICBvbDogJ29sJyxcbiAgICAgICAgICAgICdvbC9kb20uanMnOiAnb2wvZG9tLmpzJyxcbiAgICAgICAgICAgICdyZWFjdC12ZWdhJzogJ3JlYWN0LXZlZ2EnLFxuICAgICAgICAgICAgJ3JlYWN0LWRvbSc6ICdSZWFjdERPTScsXG4gICAgICAgICAgICB0YWlsd2luZGNzczogJ3RhaWx3aW5kY3NzJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHRlc3Q6IHtcbiAgICAgIGdsb2JhbHM6IHRydWUsXG4gICAgICBlbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICB9LFxuICB9KTtcbn07XG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgYXBwO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUEwVixPQUFPLFdBQVc7QUFDNVcsT0FBTyxVQUFVO0FBQ2pCLFNBQVMsb0JBQW9CO0FBQzdCLE9BQU8sU0FBUztBQUNoQixPQUFPLGlCQUFpQjtBQUp4QixJQUFNLG1DQUFtQztBQVF6QyxJQUFNLE1BQU0sWUFBdUM7QUFDakQsU0FBTyxhQUFhO0FBQUEsSUFDbEIsU0FBUztBQUFBLE1BQ1AsTUFBTTtBQUFBLE1BQ04sSUFBSTtBQUFBLFFBQ0Ysa0JBQWtCO0FBQUEsTUFDcEIsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILFNBQVM7QUFBQSxRQUNQLFNBQVMsQ0FBQyxXQUFXO0FBQUEsTUFDdkI7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixLQUFLO0FBQUEsUUFDSCxPQUFPLEtBQUssUUFBUSxrQ0FBVyxjQUFjO0FBQUEsUUFDN0MsTUFBTTtBQUFBLFFBQ04sU0FBUyxDQUFDLE1BQU0sS0FBSztBQUFBLFFBQ3JCLFVBQVUsQ0FBQyxXQUFXLGNBQWM7QUFBQSxNQUN0QztBQUFBLE1BQ0EsZUFBZTtBQUFBLFFBQ2IsVUFBVTtBQUFBLFVBQ1I7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0Y7QUFBQSxRQUNBLFFBQVE7QUFBQSxVQUNOLGNBQWM7QUFBQSxVQUNkLFNBQVM7QUFBQSxZQUNQLE9BQU87QUFBQSxZQUNQLElBQUk7QUFBQSxZQUNKLGFBQWE7QUFBQSxZQUNiLGNBQWM7QUFBQSxZQUNkLGFBQWE7QUFBQSxZQUNiLGFBQWE7QUFBQSxVQUNmO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixTQUFTO0FBQUEsTUFDVCxhQUFhO0FBQUEsSUFDZjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsSUFBTyxzQkFBUTsiLAogICJuYW1lcyI6IFtdCn0K