diff --git a/.github/workflows/feature-branch_deploy.yml b/.github/workflows/feature-branch_deploy.yml index 1b249592f4..750c560221 100644 --- a/.github/workflows/feature-branch_deploy.yml +++ b/.github/workflows/feature-branch_deploy.yml @@ -38,7 +38,7 @@ jobs: uses: datamonsters/replace-action@v2 with: files: 'app/dist/shConfig.js' - replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}' + replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_EOX }}' # Upload build client to S3 - name: sync client s3 diff --git a/.github/workflows/gtif-demo_deploy.yml b/.github/workflows/gtif-demo_deploy.yml index b73c55911b..ba253cc569 100644 --- a/.github/workflows/gtif-demo_deploy.yml +++ b/.github/workflows/gtif-demo_deploy.yml @@ -37,7 +37,7 @@ jobs: uses: datamonsters/replace-action@v2 with: files: 'app/dist/shConfig.js' - replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}' + replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_RACE }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_GTIF }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_TRILATERAL }}' # Upload build client to S3 - name: sync client s3 diff --git a/.github/workflows/gtif-staging_deploy.yml b/.github/workflows/gtif-staging_deploy.yml index 8e3a834ff5..d98e172799 100644 --- a/.github/workflows/gtif-staging_deploy.yml +++ b/.github/workflows/gtif-staging_deploy.yml @@ -37,7 +37,7 @@ jobs: uses: datamonsters/replace-action@v2 with: files: 'app/dist/shConfig.js' - replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}' + replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_EOX }}' # Upload build client to S3 - name: sync client s3 diff --git a/.github/workflows/production_deploy.yml b/.github/workflows/production_deploy.yml index a1920f44b5..dee2ad485e 100644 --- a/.github/workflows/production_deploy.yml +++ b/.github/workflows/production_deploy.yml @@ -37,7 +37,7 @@ jobs: uses: datamonsters/replace-action@v2 with: files: 'app/dist/shConfig.js' - replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}' + replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_RACE }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_GTIF }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_TRILATERAL }}' # Upload to S3 - name: sync s3 diff --git a/.github/workflows/staging_deploy.yml b/.github/workflows/staging_deploy.yml index 90bb9edae6..33fc88af0a 100644 --- a/.github/workflows/staging_deploy.yml +++ b/.github/workflows/staging_deploy.yml @@ -37,7 +37,7 @@ jobs: uses: datamonsters/replace-action@v2 with: files: 'app/dist/shConfig.js' - replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}' + replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_EOX }}' # Upload build client to S3 - name: sync client s3 diff --git a/app/package-lock.json b/app/package-lock.json index 3857e0564f..1c9bffa282 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -9,12 +9,13 @@ "version": "4.0.0", "dependencies": { "@chenfengyuan/vue-countdown": "^1.1.5", + "@eox/geosearch": "^0.1.2", "@eox/itemfilter": "0.14.0", - "@eox/jsonform": "^0.6.1", + "@eox/jsonform": "^0.7.0", "@eox/layercontrol": "^0.17.3", - "@eox/map": "^1.6.1", + "@eox/map": "^1.8.2", "@eox/stacinfo": "^0.3.3", - "@eox/storytelling": "^0.5.0", + "@eox/storytelling": "^1.0.2", "@turf/difference": "^6.5.0", "axios": "^0.21.1", "chart.js": "2.9.3", @@ -36,7 +37,7 @@ "luxon": "^1.28.1", "marked": "^4.0.10", "medium-zoom": "^1.0.6", - "ol": "^9.1.0", + "ol": "^9.2.4", "ol-mapbox-style": "^11.0.0", "proj4": "^2.8.0", "regl": "^2.1.0", @@ -1975,6 +1976,20 @@ "ms": "^2.1.1" } }, + "node_modules/@eox/geosearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eox/geosearch/-/geosearch-0.1.2.tgz", + "integrity": "sha512-Mnni+xeDY+6gQfXk31KifiYP5RMmLpz+LFrMWurd7mWyFYkqfSfOmgwlorcs1BWIiQOk4PUKt0G5LBEIrWTaZQ==", + "dependencies": { + "lit": "^3.1.3", + "lodash.debounce": "^4.0.8", + "proj4": "^2.11.0" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + } + }, "node_modules/@eox/itemfilter": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@eox/itemfilter/-/itemfilter-0.14.0.tgz", @@ -1994,11 +2009,12 @@ } }, "node_modules/@eox/jsonform": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.6.1.tgz", - "integrity": "sha512-pBCm0wKCaou+XyArvo07alVqcKr4yhXM4KP3+S9yzimXIs55NJN3N5w3PZLuzf1/JuF8RSovCjk4bu0W2gMAzQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.7.0.tgz", + "integrity": "sha512-tGDAtuBGn9Fxfr7rlP/Hmi7UPqU6mE6GzYUM7UVFQquSzmI8KQL5EHzb+sRSGfH+vuxqTDo6vUQD+j/aU75hsw==", "dependencies": { "@json-editor/json-editor": "^2.11.0", + "easymde": "^2.18.0", "toolcool-range-slider": "^4.0.28" }, "engines": { @@ -2022,9 +2038,9 @@ } }, "node_modules/@eox/map": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.6.1.tgz", - "integrity": "sha512-ynPBR9zqGOh1tnyuKXoy2ECnvRzO6py8cjB/GGCGzdKL4T9krsFlIUBTPK/sRGwO2tOhl0NBthK00gG/CPLPyg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.8.2.tgz", + "integrity": "sha512-9ofpFXTSAXTfTT1sJz1gd2a2Oz64NeoXsZMwld/s90Umh7x10lL5lVKybT8eyJj2ID6qw5voU3QcBww/RxUA/A==", "dependencies": { "lit": "^3.0.2", "ol": "^9.0.0", @@ -2050,13 +2066,14 @@ } }, "node_modules/@eox/storytelling": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-0.5.0.tgz", - "integrity": "sha512-SwayHqiHviklP/qqs3BQCL3uzywmtmIS1uNR3+z27QNr8oDAuGl8r/1eaI5qlBXTS/2FqvHhGblYOU7BSn0QaA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-1.0.2.tgz", + "integrity": "sha512-61DMpjsPSFQUrEGY9NRmFEkRo0vXoL9ExdonYHuUOqHwAHTFYvN0Lpc0cXukJ/0Yino11ymuxwljklfvr5v3LA==", "dependencies": { "@sindresorhus/slugify": "^2.2.1", "glightbox": "^3.3.0", "isomorphic-dompurify": "^2.4.0", + "joi": "^17.12.3", "js-yaml": "^4.1.0", "lit": "^3.0.2", "markdown-it": "^14.0.0" @@ -2227,16 +2244,16 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz", - "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" }, "node_modules/@lit/reactive-element": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.2.tgz", - "integrity": "sha512-SVOwLAWUQg3Ji1egtOt1UiFe4zdDpnWHyc5qctSceJ5XIu0Uc76YmGpIjZgx9YJ0XtdW0Jm507sDvjOu+HnB8w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.2" + "@lit-labs/ssr-dom-shim": "^1.2.0" } }, "node_modules/@mapbox/jsonlint-lines-primitives": { @@ -2497,6 +2514,29 @@ } } }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/address/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "node_modules/@sindresorhus/slugify": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", @@ -2824,6 +2864,14 @@ "moment": "^2.10.2" } }, + "node_modules/@types/codemirror": { + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", + "dependencies": { + "@types/tern": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -2851,6 +2899,11 @@ "@types/trusted-types": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -2917,6 +2970,11 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/marked": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz", + "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==" + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -3010,6 +3068,14 @@ "integrity": "sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==", "dev": true }, + "node_modules/@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -6717,6 +6783,19 @@ "node": ">=0.10.0" } }, + "node_modules/codemirror": { + "version": "5.65.16", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", + "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==" + }, + "node_modules/codemirror-spell-checker": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz", + "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==", + "dependencies": { + "typo-js": "*" + } + }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -8964,6 +9043,18 @@ "node": ">=6.0.0" } }, + "node_modules/easymde": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz", + "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==", + "dependencies": { + "@types/codemirror": "^5.60.4", + "@types/marked": "^4.0.7", + "codemirror": "^5.63.1", + "codemirror-spell-checker": "1.1.2", + "marked": "^4.1.0" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -12708,6 +12799,31 @@ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", "dev": true }, + "node_modules/joi": { + "version": "17.13.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz", + "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/joi/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/joi/node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, "node_modules/jquery": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", @@ -13240,29 +13356,29 @@ } }, "node_modules/lit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", - "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz", + "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==", "dependencies": { - "@lit/reactive-element": "^2.0.0", - "lit-element": "^4.0.0", - "lit-html": "^3.1.0" + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.0.4", + "lit-html": "^3.1.2" } }, "node_modules/lit-element": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.2.tgz", - "integrity": "sha512-/W6WQZUa5VEXwC7H9tbtDMdSs9aWil3Ou8hU6z2cOKWbsm/tXPAcsoaHVEtrDo0zcOIE5GF6QgU55tlGL2Nihg==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz", + "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.2", - "@lit/reactive-element": "^2.0.0", - "lit-html": "^3.1.0" + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" } }, "node_modules/lit-html": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.0.tgz", - "integrity": "sha512-FwAjq3iNsaO6SOZXEIpeROlJLUlrbyMkn4iuv4f4u1H40Jw8wkeR/OUXZUHUoiYabGk8Y4Y0F/rgq+R4MrOLmA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz", + "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -14719,9 +14835,9 @@ "dev": true }, "node_modules/ol": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/ol/-/ol-9.1.0.tgz", - "integrity": "sha512-nDrkJ2tzZNpo/wzN/PpHV5zdxbnXZaFktoMaD2cFLEc6gCwlgLY21Yd8wnt/4FjaVYwLBnbN9USXSwIBGcyksQ==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/ol/-/ol-9.2.4.tgz", + "integrity": "sha512-bsbu4ObaAlbELMIZWnYEvX4Z9jO+OyCBshtODhDKmqYTPEfnKOX3RieCr97tpJkqWTZvyV4tS9UQDvHoCdxS+A==", "dependencies": { "color-rgba": "^3.0.0", "color-space": "^2.0.1", @@ -19434,6 +19550,11 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, + "node_modules/typo-js": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.2.4.tgz", + "integrity": "sha512-Oy/k+tFle5NAA3J/yrrYGfvEnPVrDZ8s8/WCwjUE75k331QyKIsFss7byQ/PzBmXLY6h1moRnZbnaxWBe3I3CA==" + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -23261,6 +23382,16 @@ } } }, + "@eox/geosearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eox/geosearch/-/geosearch-0.1.2.tgz", + "integrity": "sha512-Mnni+xeDY+6gQfXk31KifiYP5RMmLpz+LFrMWurd7mWyFYkqfSfOmgwlorcs1BWIiQOk4PUKt0G5LBEIrWTaZQ==", + "requires": { + "lit": "^3.1.3", + "lodash.debounce": "^4.0.8", + "proj4": "^2.11.0" + } + }, "@eox/itemfilter": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@eox/itemfilter/-/itemfilter-0.14.0.tgz", @@ -23276,11 +23407,12 @@ } }, "@eox/jsonform": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.6.1.tgz", - "integrity": "sha512-pBCm0wKCaou+XyArvo07alVqcKr4yhXM4KP3+S9yzimXIs55NJN3N5w3PZLuzf1/JuF8RSovCjk4bu0W2gMAzQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.7.0.tgz", + "integrity": "sha512-tGDAtuBGn9Fxfr7rlP/Hmi7UPqU6mE6GzYUM7UVFQquSzmI8KQL5EHzb+sRSGfH+vuxqTDo6vUQD+j/aU75hsw==", "requires": { "@json-editor/json-editor": "^2.11.0", + "easymde": "^2.18.0", "toolcool-range-slider": "^4.0.28" } }, @@ -23296,9 +23428,9 @@ } }, "@eox/map": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.6.1.tgz", - "integrity": "sha512-ynPBR9zqGOh1tnyuKXoy2ECnvRzO6py8cjB/GGCGzdKL4T9krsFlIUBTPK/sRGwO2tOhl0NBthK00gG/CPLPyg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.8.2.tgz", + "integrity": "sha512-9ofpFXTSAXTfTT1sJz1gd2a2Oz64NeoXsZMwld/s90Umh7x10lL5lVKybT8eyJj2ID6qw5voU3QcBww/RxUA/A==", "requires": { "lit": "^3.0.2", "ol": "^9.0.0", @@ -23316,13 +23448,14 @@ } }, "@eox/storytelling": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-0.5.0.tgz", - "integrity": "sha512-SwayHqiHviklP/qqs3BQCL3uzywmtmIS1uNR3+z27QNr8oDAuGl8r/1eaI5qlBXTS/2FqvHhGblYOU7BSn0QaA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-1.0.2.tgz", + "integrity": "sha512-61DMpjsPSFQUrEGY9NRmFEkRo0vXoL9ExdonYHuUOqHwAHTFYvN0Lpc0cXukJ/0Yino11ymuxwljklfvr5v3LA==", "requires": { "@sindresorhus/slugify": "^2.2.1", "glightbox": "^3.3.0", "isomorphic-dompurify": "^2.4.0", + "joi": "^17.12.3", "js-yaml": "^4.1.0", "lit": "^3.0.2", "markdown-it": "^14.0.0" @@ -23468,16 +23601,16 @@ } }, "@lit-labs/ssr-dom-shim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz", - "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" }, "@lit/reactive-element": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.2.tgz", - "integrity": "sha512-SVOwLAWUQg3Ji1egtOt1UiFe4zdDpnWHyc5qctSceJ5XIu0Uc76YmGpIjZgx9YJ0XtdW0Jm507sDvjOu+HnB8w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", "requires": { - "@lit-labs/ssr-dom-shim": "^1.1.2" + "@lit-labs/ssr-dom-shim": "^1.2.0" } }, "@mapbox/jsonlint-lines-primitives": { @@ -23670,6 +23803,31 @@ "any-observable": "^0.3.0" } }, + "@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "requires": { + "@hapi/hoek": "^9.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + } + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "@sindresorhus/slugify": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", @@ -23916,6 +24074,14 @@ "moment": "^2.10.2" } }, + "@types/codemirror": { + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", + "requires": { + "@types/tern": "*" + } + }, "@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -23943,6 +24109,11 @@ "@types/trusted-types": "*" } }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -24009,6 +24180,11 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/marked": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz", + "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==" + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -24102,6 +24278,14 @@ "integrity": "sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==", "dev": true }, + "@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "requires": { + "@types/estree": "*" + } + }, "@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -27089,6 +27273,19 @@ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true }, + "codemirror": { + "version": "5.65.16", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", + "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==" + }, + "codemirror-spell-checker": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz", + "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==", + "requires": { + "typo-js": "*" + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -28859,6 +29056,18 @@ "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", "dev": true }, + "easymde": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz", + "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==", + "requires": { + "@types/codemirror": "^5.60.4", + "@types/marked": "^4.0.7", + "codemirror": "^5.63.1", + "codemirror-spell-checker": "1.1.2", + "marked": "^4.1.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -31748,6 +31957,33 @@ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", "dev": true }, + "joi": { + "version": "17.13.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz", + "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", + "requires": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + } + } + }, "jquery": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", @@ -32166,29 +32402,29 @@ } }, "lit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", - "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz", + "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==", "requires": { - "@lit/reactive-element": "^2.0.0", - "lit-element": "^4.0.0", - "lit-html": "^3.1.0" + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.0.4", + "lit-html": "^3.1.2" } }, "lit-element": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.2.tgz", - "integrity": "sha512-/W6WQZUa5VEXwC7H9tbtDMdSs9aWil3Ou8hU6z2cOKWbsm/tXPAcsoaHVEtrDo0zcOIE5GF6QgU55tlGL2Nihg==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz", + "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==", "requires": { - "@lit-labs/ssr-dom-shim": "^1.1.2", - "@lit/reactive-element": "^2.0.0", - "lit-html": "^3.1.0" + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" } }, "lit-html": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.0.tgz", - "integrity": "sha512-FwAjq3iNsaO6SOZXEIpeROlJLUlrbyMkn4iuv4f4u1H40Jw8wkeR/OUXZUHUoiYabGk8Y4Y0F/rgq+R4MrOLmA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz", + "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==", "requires": { "@types/trusted-types": "^2.0.2" } @@ -33336,9 +33572,9 @@ "dev": true }, "ol": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/ol/-/ol-9.1.0.tgz", - "integrity": "sha512-nDrkJ2tzZNpo/wzN/PpHV5zdxbnXZaFktoMaD2cFLEc6gCwlgLY21Yd8wnt/4FjaVYwLBnbN9USXSwIBGcyksQ==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/ol/-/ol-9.2.4.tgz", + "integrity": "sha512-bsbu4ObaAlbELMIZWnYEvX4Z9jO+OyCBshtODhDKmqYTPEfnKOX3RieCr97tpJkqWTZvyV4tS9UQDvHoCdxS+A==", "requires": { "color-rgba": "^3.0.0", "color-space": "^2.0.1", @@ -37134,6 +37370,11 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, + "typo-js": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.2.4.tgz", + "integrity": "sha512-Oy/k+tFle5NAA3J/yrrYGfvEnPVrDZ8s8/WCwjUE75k331QyKIsFss7byQ/PzBmXLY6h1moRnZbnaxWBe3I3CA==" + }, "uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", diff --git a/app/package.json b/app/package.json index 21985ab3d3..0613cdc6a9 100644 --- a/app/package.json +++ b/app/package.json @@ -16,12 +16,13 @@ }, "dependencies": { "@chenfengyuan/vue-countdown": "^1.1.5", + "@eox/geosearch": "^0.1.2", "@eox/itemfilter": "0.14.0", - "@eox/jsonform": "^0.6.1", + "@eox/jsonform": "^0.7.0", "@eox/layercontrol": "^0.17.3", "@eox/stacinfo": "^0.3.3", - "@eox/map": "^1.6.1", - "@eox/storytelling": "^0.5.0", + "@eox/map": "^1.8.2", + "@eox/storytelling": "^1.0.2", "@turf/difference": "^6.5.0", "axios": "^0.21.1", "chart.js": "2.9.3", @@ -43,7 +44,7 @@ "luxon": "^1.28.1", "marked": "^4.0.10", "medium-zoom": "^1.0.6", - "ol": "^9.1.0", + "ol": "^9.2.4", "ol-mapbox-style": "^11.0.0", "proj4": "^2.8.0", "regl": "^2.1.0", diff --git a/app/public/data/dashboards/6be3fcfd33789f76.json b/app/public/data/dashboards/6be3fcfd33789f76.json index 53cfe40ce7..19e1d045b7 100644 --- a/app/public/data/dashboards/6be3fcfd33789f76.json +++ b/app/public/data/dashboards/6be3fcfd33789f76.json @@ -23,7 +23,7 @@ }, "dataLayerTime": null }, - "id": "W10-SITI", + "id": "World-SITI", "title": "World, Sea Ice Thickness (ICESat-2)" }, { @@ -36,20 +36,36 @@ { "width": 3, "mapInfo": { - "position": null, - "right": null, - "up": null, - "direction": null + "position": [ + 1231034.0739326647, + -6122683.800696974, + 17717773.571757164 + ], + "right": [ + 0.9803800948855829, + 0.19711638580324986, + 3.122502256758253e-16 + ], + "up": [ + -0.1860106965891978, + 0.9251447241624721, + 0.33091881195958767 + ], + "direction": [ + -0.06522952020777888, + 0.32442621626836493, + -0.9436592286897083 + ] }, - "id": "W9-SIC", + "id": "World-SIC", "title": "World, Sea Ice Thickness (Cryosat)" }, { "width": 1, - "text": " ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.\n \nResearchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.\n\n\n## Explore Datasets \n   \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=W9-SIC)   \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=W8-SIE)   \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=W10-SITI)\n  \n[Sea Ice Concentration Antarctic from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_sea_ice_concentration_arctic)", + "text": " ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.\n \nResearchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.\n\n\n## Explore Datasets \n   \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=World-SIC)   \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=World-SIE)   \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=World-SITI)\n  \n[Sea Ice Concentration Antarctic from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_1_sea_ice_concentration_arctic)", "id": "Envisat-1652251767198", "title": "Envisat", - "__generatedText__": "

ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.

\n

Researchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.

\n

Explore Datasets

\n

 
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:

\n

Sea Ice Thickness from Cryosat  
Sea Ice Thickness from Envisat  
Sea Ice Thickness from IceSAT-2\n 
Sea Ice Concentration Antarctic from GCOM-W

\n" + "__generatedText__": "

ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.

\n

Researchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.

\n

Explore Datasets

\n

 
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:

\n

Sea Ice Thickness from Cryosat  
Sea Ice Thickness from Envisat  
Sea Ice Thickness from IceSAT-2\n 
Sea Ice Concentration Antarctic from GCOM-W

\n" }, { "width": 3, @@ -75,7 +91,7 @@ -0.9436592286897083 ] }, - "id": "W8-SIE", + "id": "World-SIE", "title": "World, Sea Ice Thickness (Envisat)" } ], diff --git a/app/public/data/dashboards/e45036dd512afea1.json b/app/public/data/dashboards/e45036dd512afea1.json index cd66426ed3..45a9569493 100644 --- a/app/public/data/dashboards/e45036dd512afea1.json +++ b/app/public/data/dashboards/e45036dd512afea1.json @@ -34,7 +34,7 @@ "up": null, "direction": null }, - "id": "World-N12_sea_ice_concentration_arctic", + "id": "World-N12_1_sea_ice_concentration_arctic", "title": "Global, Sea Ice Concentration (GCOM-W)" }, { @@ -67,10 +67,10 @@ }, { "width": 4, - "text": "## Explore Datasets \n   \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=W9-SIC)   \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=W8-SIE)   \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=W10-SITI)\n  \n[Sea Ice Concentration from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_sea_ice_concentration_arctic)", + "text": "## Explore Datasets \n   \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=World-SIC)   \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=World-SIE)   \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=World-SITI)\n  \n[Sea Ice Concentration from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_1_sea_ice_concentration_arctic)", "id": " -1652890242032", "title": " ", - "__generatedText__": "

Explore Datasets

\n

 
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:

\n

Sea Ice Thickness from Cryosat  
Sea Ice Thickness from Envisat  
Sea Ice Thickness from IceSAT-2\n 
Sea Ice Concentration from GCOM-W

\n" + "__generatedText__": "

Explore Datasets

\n

 
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:

\n

Sea Ice Thickness from Cryosat  
Sea Ice Thickness from Envisat  
Sea Ice Thickness from IceSAT-2\n 
Sea Ice Concentration from GCOM-W

\n" } ], "title": "Cryo - JAXA 1" diff --git a/app/public/data/trilateral/Science-Hub_Challenge2_240502.png b/app/public/data/trilateral/Science-Hub_Challenge2_240502.png new file mode 100644 index 0000000000..0406460474 Binary files /dev/null and b/app/public/data/trilateral/Science-Hub_Challenge2_240502.png differ diff --git a/app/public/shConfig.js b/app/public/shConfig.js index 4f6d7344cb..881afe5aec 100644 --- a/app/public/shConfig.js +++ b/app/public/shConfig.js @@ -4,5 +4,8 @@ const shConfig = { geodbInstanceId: '$GEODB_INSTANCE_ID', listmonkApiKey: '$LISTMONK_API_KEY', statApiClientId: '$STAT_API_CLIENT_ID', - statApiClientSecret: '$STAT_API_CLIENT_SECRET' + statApiClientSecret: '$STAT_API_CLIENT_SECRET', + opencageRACE: '$OPENCAGE_RACE', + opencageGTIF: '$OPENCAGE_GTIF', + opencageTrilateral: '$OPENCAGE_TRILATERAL', }; diff --git a/app/src/appConfig.js b/app/src/appConfig.js index 8d1156429c..0ca37de6f9 100644 --- a/app/src/appConfig.js +++ b/app/src/appConfig.js @@ -6,6 +6,8 @@ module.exports = [ staging: 2, production: 4, }, + + geosearchEndpoint: 'https://api.opencagedata.com/geocode/v1/json?limit=5&bounds=-27.42188,24.20689,53.08594,71.46912', match: ['race.esa.int', 'eodash.eox.at', 'eodash-staging.eox.at', 'eodash-testing.eox.at', 'race.eox.world', 'race.localhost', 'race.eox.home'], branding: { appName: 'Rapid Action for Citizens with Earth Observation', @@ -146,6 +148,7 @@ module.exports = [ staging: 3, production: 5, }, + geosearchEndpoint: 'https://api.opencagedata.com/geocode/v1/json?limit=5', match: ['eodashboard.org', 'www.eodashboard.org', 'eodash-trilateral.eox.at', 'eodash-trilateral-staging.eox.at', 'eodash-trilateral-testing.eox.at', 'trilateral.eox.world', 'trilateral.localhost', 'trilateral.eox.home'], branding: { appName: 'Earth Observing Dashboard', @@ -153,8 +156,8 @@ module.exports = [ secondaryColor: '#004170', headerLogo: './data/trilateral/Trilateral_Logo.svg', faviconPath: './public/img/trilateral/favicon.ico', - name: 'Earth Observing Dashboard', - subname: 'Global environmental changes observed by NASA, ESA, and JAXA', + title: 'Earth Observing Dashboard', + subtitle: 'Global environmental changes observed by NASA, ESA, and JAXA', coverImage: '/data/story-images/EO_Dashboard_kv_no logos.png', storiesHeader: 'Stories', headerHeight: '50vh', @@ -345,6 +348,7 @@ module.exports = [ staging: 6, production: 7, }, + geosearchEndpoint: 'https://api.opencagedata.com/geocode/v1/json?limit=5&countrycode=AT', match: ['gtif.esa.int', 'gtif.eox.at', 'gtif-demo.eox.at', 'gtif-staging.eox.at', 'gtif-testing.eox.at', 'gtif.eox.world', 'gtif.localhost', 'gtif.eox.home'], branding: { appName: 'Green Transition Information Factory', @@ -352,8 +356,8 @@ module.exports = [ secondaryColor: '#00ae9d', headerLogo: './data/gtif/images/gtif_attributions_logo.png', faviconPath: './public/img/ESA/favicon.ico', - name: 'Green Transition Information Factory', - subname: 'Key element of the ESA Space For Green Future Accelerator', + title: 'Green Transition Information Factory', + subtitle: 'Key element of the ESA Space For Green Future Accelerator', coverImage: './data/gtif/images/image1.png', storiesHeader: 'Subdomains', headerHeight: '30vh', diff --git a/app/src/components/CustomDashboardGrid.vue b/app/src/components/CustomDashboardGrid.vue index 9c77f66650..8f589f85d4 100644 --- a/app/src/components/CustomDashboardGrid.vue +++ b/app/src/components/CustomDashboardGrid.vue @@ -659,8 +659,8 @@ export default { ]), onMapReady(poi) { setTimeout(() => { - this.localCenter[poi].lat = this.serverCenter[poi].lat; - this.localCenter[poi].lng = this.serverCenter[poi].lng; + this.localCenter[poi].lat = this.serverCenter[poi]?.lat; + this.localCenter[poi].lng = this.serverCenter[poi]?.lng; this.localZoom[poi] = this.serverZoom[poi]; this.localDirection[poi] = this.serverDirection[poi]; this.localPosition[poi] = this.serverPosition[poi]; diff --git a/app/src/components/DataPanel.vue b/app/src/components/DataPanel.vue index 7de5441aa3..ce98ecce89 100644 --- a/app/src/components/DataPanel.vue +++ b/app/src/components/DataPanel.vue @@ -1,11 +1,19 @@ + + + + diff --git a/app/src/components/StacInfo.vue b/app/src/components/StacInfo.vue index c7ed2fcac9..70c9d2fac3 100644 --- a/app/src/components/StacInfo.vue +++ b/app/src/components/StacInfo.vue @@ -151,6 +151,7 @@

Dataset metadata @@ -191,6 +192,7 @@ export default { stacInfoLoaded: null, themesInStacInfo: [], linksInStacInfo: [], + refreshKey: 0, }), computed: { ...mapState('config', [ @@ -259,28 +261,31 @@ export default { this.stacInfoLoaded = true; }); }, - getAdditionalGTIFDataInfos() { - this.additionalGtifDataInfoContent = []; - for (let i = 0; i < this.additionalGTIFDataInfos.length; i++) { - try { - const markdownUrl = `//raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/gtif-datainfo/${this.additionalGTIFDataInfos[i].dataInfo}.md`; - fetch(markdownUrl) - .then((response) => { - if (!response.ok) { - console.error('Fetching DataInfo failed'); - } - return response.text(); - }) - .then((text) => { - const markdown = { default: text }; - this.additionalGtifDataInfoContent.push(this.$marked(markdown.default)); - }); - } catch { - // just an empty catch to "fill in empty content" - this.additionalGtifDataInfoContent.push(''); - } + async fetchDataInfo(dataInfoObject, i) { + try { + const markdownUrl = `//raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/gtif-datainfo/${dataInfoObject.dataInfo}.md`; + await fetch(markdownUrl) + .then((response) => { + if (!response.ok) { + console.error('Fetching DataInfo failed'); + } + return response.text(); + }) + .then((text) => { + const markdown = { default: text }; + this.additionalGtifDataInfoContent[i] = this.$marked(markdown.default); + }); + } catch { + // just an empty catch } }, + getAdditionalGTIFDataInfos() { + this.additionalGtifDataInfoContent = Array(this.additionalGTIFDataInfos.length).fill(''); + Promise.all(this.additionalGTIFDataInfos.map((item, i) => this.fetchDataInfo(item, i))) + .then(() => { + this.refreshKey = Math.random(); + }); + }, }, }; diff --git a/app/src/components/ThemesLandingPage/StoriesNews.vue b/app/src/components/ThemesLandingPage/StoriesNews.vue index 1dfdfd19ab..f4b22564f4 100644 --- a/app/src/components/ThemesLandingPage/StoriesNews.vue +++ b/app/src/components/ThemesLandingPage/StoriesNews.vue @@ -4,6 +4,26 @@ style="max-width: 1400px;" >

News

+ + +

+ 2024-05-10: 3rd Earth System Science Challenge on EO data analysis and storytelling +

+

+ ESA’s Science Hub hosts the 3rd edition of the Earth System Science Challenges from 13-17 May 2024 in ESRIN, Frascati, Italy. PhD students from University of Edinburgh and University of Leeds will solve EO data science challenges to address impactful topics.
Their stories will be featured on EO Dashboard. +

+

Read more here: https://sciencehub.esa.int/2024/05/09/3rd-earth-system-science-challenge +

+
+ + + +
+
+

diff --git a/app/src/components/UiPanelsLayout.vue b/app/src/components/UiPanelsLayout.vue index 319329e723..7c66d47d33 100644 --- a/app/src/components/UiPanelsLayout.vue +++ b/app/src/components/UiPanelsLayout.vue @@ -55,6 +55,7 @@ export default { id: 1, title: this.indicatorPanelheader, heightPercentage: 100, + heightPercentageBothOpen: 70, }, ]; this.panels.right = []; diff --git a/app/src/components/map/FullScreenControl.vue b/app/src/components/map/FullScreenControl.vue index b8283f5905..87f6346844 100644 --- a/app/src/components/map/FullScreenControl.vue +++ b/app/src/components/map/FullScreenControl.vue @@ -21,6 +21,10 @@ export default { components: {}, props: { mapId: String, + selector: { + type: String, + default: '', + }, }, data() { return { @@ -31,7 +35,12 @@ export default { mounted() {}, methods: { setFullScreen() { - const elem = getMapInstance(this.mapId).map.getTargetElement(); + let elem; + if (this.selector) { + elem = document.querySelector(this.selector); + } else { + elem = getMapInstance(this.mapId).map.getTargetElement(); + } if (elem) { if (this.fullscreen) { if (document.exitFullscreen) { diff --git a/app/src/components/map/Map.vue b/app/src/components/map/Map.vue index 13c92d451f..8834519806 100644 --- a/app/src/components/map/Map.vue +++ b/app/src/components/map/Map.vue @@ -1,188 +1,226 @@