diff --git a/ui/index.html b/ui/index.html index ef439f68..34702d60 100644 --- a/ui/index.html +++ b/ui/index.html @@ -6,6 +6,9 @@ + + + diff --git a/ui/package-lock.json b/ui/package-lock.json index a604173a..4d55b0c7 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -13,6 +13,9 @@ "@babel/core": "^7.14.0", "@babel/preset-react": "^7.13.13", "@babel/preset-typescript": "^7.13.0", + "@rollup/plugin-babel": "^5.3.0", + "@vitejs/plugin-react-refresh": "^1.3.3", + "autoprefixer": "^10.2.5", "babel-eslint": "^10.1.0", "babel-jest": "^26.6.3", "babel-plugin-graphql-tag": "^3.2.0", @@ -31,6 +34,7 @@ "fs-extra": "^10.0.0", "i18next": "^20.2.2", "mapbox-gl": "^2.2.0", + "postcss": "^8.3.0", "prop-types": "^15.7.2", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -44,8 +48,10 @@ "semantic-ui-react": "^2.0.3", "styled-components": "^5.3.0", "subscriptions-transport-ws": "^0.9.18", + "tailwindcss": "^2.1.2", "typescript": "^4.2.4", - "url-join": "^4.0.1" + "url-join": "^4.0.1", + "vite": "^2.3.3" }, "devDependencies": { "@babel/plugin-transform-runtime": "^7.13.15", @@ -64,17 +70,12 @@ "@types/url-join": "^4.0.0", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", - "@vitejs/plugin-react-refresh": "^1.3.3", - "autoprefixer": "^10.2.5", "eslint-config-prettier": "^8.3.0", "husky": "^6.0.0", "jest": "^26.6.3", "lint-staged": "^11.0.0", - "postcss": "^8.3.0", "prettier": "^2.3.0", - "tailwindcss": "^2.1.2", - "tsc-files": "^1.1.2", - "vite": "^2.3.3" + "tsc-files": "^1.1.2" } }, "node_modules/@apollo/client": { @@ -1194,7 +1195,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1206,7 +1206,6 @@ "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz", "integrity": "sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" }, @@ -1680,7 +1679,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz", "integrity": "sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA==", - "dev": true, "dependencies": { "purgecss": "^3.1.3" } @@ -2529,6 +2527,44 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, "node_modules/@semantic-ui-react/event-stack": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.2.tgz", @@ -2802,6 +2838,11 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, "node_modules/@types/geojson": { "version": "7946.0.7", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", @@ -3204,7 +3245,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.3.tgz", "integrity": "sha512-J3KFwSQKrEK7fgOwTx0PMTlsolZORUch6BswjsM50q+Y7zSvX1ROIRn+tK2VE8SCvbYRHtzEKFlYW3vsWyTosQ==", - "dev": true, "dependencies": { "@babel/core": "^7.12.13", "@babel/plugin-transform-react-jsx-self": "^7.12.13", @@ -3292,7 +3332,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, "dependencies": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -3303,7 +3342,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -3544,7 +3582,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, "engines": { "node": ">= 4.0.0" } @@ -3564,7 +3601,6 @@ "version": "10.2.5", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.5.tgz", "integrity": "sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA==", - "dev": true, "dependencies": { "browserslist": "^4.16.3", "caniuse-lite": "^1.0.30001196", @@ -3980,7 +4016,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -4070,7 +4105,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -4118,7 +4152,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "engines": { "node": ">= 6" } @@ -4176,7 +4209,6 @@ "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", @@ -4197,7 +4229,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4210,7 +4241,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -4222,7 +4252,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4234,7 +4263,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -4243,7 +4271,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -4375,7 +4402,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "dev": true, "dependencies": { "color-convert": "^1.9.1", "color-string": "^1.5.4" @@ -4398,7 +4424,6 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", - "dev": true, "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -4433,7 +4458,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, "engines": { "node": ">= 6" } @@ -4562,8 +4586,7 @@ "node_modules/css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "dev": true + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" }, "node_modules/css.escape": { "version": "1.5.1", @@ -4599,7 +4622,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -4744,8 +4766,7 @@ "node_modules/defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, "node_modules/delayed-stream": { "version": "1.0.0", @@ -4769,7 +4790,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, "dependencies": { "acorn-node": "^1.6.1", "defined": "^1.0.0", @@ -4785,8 +4805,7 @@ "node_modules/didyoumean": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", - "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=", - "dev": true + "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=" }, "node_modules/diff-sequences": { "version": "26.6.2", @@ -4819,8 +4838,7 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -5442,6 +5460,11 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5980,7 +6003,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.0.tgz", "integrity": "sha512-o9lSKpK0TDqDwTL24Hxqi6I99s942l6TYkfl6WvGWgLOIFz/YonSGKfiSeMadoiNvTfqnfOa9mjb5SGVbBK9/w==", - "dev": true, "engines": { "node": "*" } @@ -6139,7 +6161,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, "dependencies": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" @@ -6152,7 +6173,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, "dependencies": { "is-glob": "^2.0.0" } @@ -6161,7 +6181,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6170,7 +6189,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "dependencies": { "is-extglob": "^1.0.0" }, @@ -6397,7 +6415,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "dev": true, "engines": { "node": ">=8" } @@ -6596,7 +6613,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6727,7 +6743,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9605,14 +9620,12 @@ "node_modules/lodash.toarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" }, "node_modules/lodash.topath": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=", - "dev": true + "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=" }, "node_modules/lodash.truncate": { "version": "4.4.2", @@ -10011,7 +10024,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", - "dev": true, "engines": { "node": ">=6" }, @@ -10033,7 +10045,6 @@ "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -10076,7 +10087,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", - "dev": true, "dependencies": { "lodash.toarray": "^4.4.0" } @@ -10190,7 +10200,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10278,7 +10287,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", - "dev": true, "engines": { "node": ">= 6" } @@ -10520,7 +10528,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, "dependencies": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -10535,7 +10542,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10544,7 +10550,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "dependencies": { "is-extglob": "^1.0.0" }, @@ -10683,7 +10688,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", - "dev": true, "dependencies": { "colorette": "^1.2.2", "nanoid": "^3.1.23", @@ -10701,7 +10705,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", "integrity": "sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=", - "dev": true, "dependencies": { "glob": "^7.1.2", "object-assign": "^4.1.1", @@ -10713,7 +10716,6 @@ "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, "dependencies": { "chalk": "^2.4.1", "source-map": "^0.6.1", @@ -10726,14 +10728,12 @@ "node_modules/postcss-functions/node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, "node_modules/postcss-functions/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10742,7 +10742,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, "dependencies": { "camelcase-css": "^2.0.1", "postcss": "^8.1.6" @@ -10759,7 +10758,6 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz", "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -10778,7 +10776,6 @@ "version": "6.0.6", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10868,7 +10865,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true, "engines": { "node": ">= 0.8" } @@ -10936,7 +10932,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-3.1.3.tgz", "integrity": "sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ==", - "dev": true, "dependencies": { "commander": "^6.0.0", "glob": "^7.0.0", @@ -10979,7 +10974,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, "engines": { "node": ">=10" }, @@ -11080,7 +11074,6 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11254,7 +11247,6 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -11279,7 +11271,6 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", - "dev": true, "dependencies": { "css-unit-converter": "^1.1.1", "postcss-value-parser": "^3.3.0" @@ -11288,8 +11279,7 @@ "node_modules/reduce-css-calc/node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, "node_modules/regenerate": { "version": "1.4.2", @@ -11618,7 +11608,6 @@ "version": "2.47.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", - "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -11895,7 +11884,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, "dependencies": { "is-arrayish": "^0.3.1" } @@ -11903,8 +11891,7 @@ "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/sisteransi": { "version": "1.0.5", @@ -12113,7 +12100,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -12639,7 +12625,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.1.2.tgz", "integrity": "sha512-T5t+wwd+/hsOyRw2HJuFuv0LTUm3MUdHm2DJ94GPVgzqwPPFa9XxX0KlwLWupUuiOUj6uiKURCzYPHFcuPch/w==", - "dev": true, "dependencies": { "@fullhuman/postcss-purgecss": "^3.1.3", "bytes": "^3.0.0", @@ -12685,7 +12670,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12700,7 +12684,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12716,7 +12699,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12727,14 +12709,12 @@ "node_modules/tailwindcss/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/tailwindcss/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -12749,7 +12729,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -12758,7 +12737,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -13240,7 +13218,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.3.tgz", "integrity": "sha512-eO1iwRbn3/BfkNVMNJDeANAFCZ5NobYOFPu7IqfY7DcI7I9nFGjJIZid0EViTmLDGwwSUPmRAq3cRBbO3+DsMA==", - "dev": true, "dependencies": { "esbuild": "^0.11.23", "postcss": "^8.2.10", @@ -13440,7 +13417,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "engines": { "node": ">=0.4" } @@ -14429,7 +14405,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -14438,7 +14413,6 @@ "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz", "integrity": "sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0" } @@ -14848,7 +14822,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz", "integrity": "sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA==", - "dev": true, "requires": { "purgecss": "^3.1.3" } @@ -15524,6 +15497,25 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, "@semantic-ui-react/event-stack": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.2.tgz", @@ -15745,6 +15737,11 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, "@types/geojson": { "version": "7946.0.7", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", @@ -16064,7 +16061,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.3.tgz", "integrity": "sha512-J3KFwSQKrEK7fgOwTx0PMTlsolZORUch6BswjsM50q+Y7zSvX1ROIRn+tK2VE8SCvbYRHtzEKFlYW3vsWyTosQ==", - "dev": true, "requires": { "@babel/core": "^7.12.13", "@babel/plugin-transform-react-jsx-self": "^7.12.13", @@ -16138,7 +16134,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, "requires": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -16148,8 +16143,7 @@ "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, "aggregate-error": { "version": "3.1.0", @@ -16330,8 +16324,7 @@ "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "atob": { "version": "2.1.2", @@ -16342,7 +16335,6 @@ "version": "10.2.5", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.5.tgz", "integrity": "sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA==", - "dev": true, "requires": { "browserslist": "^4.16.3", "caniuse-lite": "^1.0.30001196", @@ -16685,8 +16677,7 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "brace-expansion": { "version": "1.1.11", @@ -16758,8 +16749,7 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cache-base": { "version": "1.0.1", @@ -16794,8 +16784,7 @@ "camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, "camelize": { "version": "1.0.0", @@ -16841,7 +16830,6 @@ "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", @@ -16857,7 +16845,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -16867,7 +16854,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -16876,7 +16862,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -16884,14 +16869,12 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -16996,7 +16979,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "dev": true, "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.4" @@ -17019,7 +17001,6 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", - "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -17047,8 +17028,7 @@ "commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" }, "component-emitter": { "version": "1.3.0", @@ -17174,8 +17154,7 @@ "css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "dev": true + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" }, "css.escape": { "version": "1.5.1", @@ -17191,8 +17170,7 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "csstype": { "version": "3.0.4", @@ -17298,8 +17276,7 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, "delayed-stream": { "version": "1.0.0", @@ -17317,7 +17294,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, "requires": { "acorn-node": "^1.6.1", "defined": "^1.0.0", @@ -17327,8 +17303,7 @@ "didyoumean": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", - "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=", - "dev": true + "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=" }, "diff-sequences": { "version": "26.6.2", @@ -17352,8 +17327,7 @@ "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "doctrine": { "version": "3.0.0", @@ -17801,6 +17775,11 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -18232,8 +18211,7 @@ "fraction.js": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.0.tgz", - "integrity": "sha512-o9lSKpK0TDqDwTL24Hxqi6I99s942l6TYkfl6WvGWgLOIFz/YonSGKfiSeMadoiNvTfqnfOa9mjb5SGVbBK9/w==", - "dev": true + "integrity": "sha512-o9lSKpK0TDqDwTL24Hxqi6I99s942l6TYkfl6WvGWgLOIFz/YonSGKfiSeMadoiNvTfqnfOa9mjb5SGVbBK9/w==" }, "fragment-cache": { "version": "0.2.1", @@ -18356,7 +18334,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" @@ -18366,7 +18343,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, "requires": { "is-glob": "^2.0.0" } @@ -18374,14 +18350,12 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -18558,8 +18532,7 @@ "html-tags": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "dev": true + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==" }, "http-signature": { "version": "1.2.0", @@ -18704,7 +18677,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -18793,8 +18765,7 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" }, "is-extendable": { "version": "0.1.1", @@ -21031,14 +21002,12 @@ "lodash.toarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" }, "lodash.topath": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=", - "dev": true + "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=" }, "lodash.truncate": { "version": "4.4.2", @@ -21345,8 +21314,7 @@ "modern-normalize": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", - "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", - "dev": true + "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==" }, "ms": { "version": "2.1.2", @@ -21361,8 +21329,7 @@ "nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", - "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", - "dev": true + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==" }, "nanomatch": { "version": "1.2.13", @@ -21396,7 +21363,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", - "dev": true, "requires": { "lodash.toarray": "^4.4.0" } @@ -21487,8 +21453,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, "npm-run-path": { "version": "4.0.1", @@ -21555,8 +21520,7 @@ "object-hash": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", - "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", - "dev": true + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==" }, "object-inspect": { "version": "1.9.0", @@ -21728,7 +21692,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -21739,14 +21702,12 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -21853,7 +21814,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", - "dev": true, "requires": { "colorette": "^1.2.2", "nanoid": "^3.1.23", @@ -21864,7 +21824,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", "integrity": "sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=", - "dev": true, "requires": { "glob": "^7.1.2", "object-assign": "^4.1.1", @@ -21876,7 +21835,6 @@ "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, "requires": { "chalk": "^2.4.1", "source-map": "^0.6.1", @@ -21886,14 +21844,12 @@ "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -21901,7 +21857,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, "requires": { "camelcase-css": "^2.0.1", "postcss": "^8.1.6" @@ -21911,7 +21866,6 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz", "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==", - "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" } @@ -21920,7 +21874,6 @@ "version": "6.0.6", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -21990,8 +21943,7 @@ "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" }, "progress": { "version": "2.0.3", @@ -22047,7 +21999,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-3.1.3.tgz", "integrity": "sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ==", - "dev": true, "requires": { "commander": "^6.0.0", "glob": "^7.0.0", @@ -22069,8 +22020,7 @@ "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "quickselect": { "version": "2.0.0", @@ -22144,8 +22094,7 @@ "react-refresh": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" }, "react-router": { "version": "5.2.0", @@ -22305,7 +22254,6 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -22324,7 +22272,6 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", - "dev": true, "requires": { "css-unit-converter": "^1.1.1", "postcss-value-parser": "^3.3.0" @@ -22333,8 +22280,7 @@ "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" } } }, @@ -22593,7 +22539,6 @@ "version": "2.47.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", - "dev": true, "requires": { "fsevents": "~2.3.1" } @@ -22808,7 +22753,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, "requires": { "is-arrayish": "^0.3.1" }, @@ -22816,8 +22760,7 @@ "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" } } }, @@ -22987,8 +22930,7 @@ "source-map-js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" }, "source-map-resolve": { "version": "0.5.3", @@ -23405,7 +23347,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.1.2.tgz", "integrity": "sha512-T5t+wwd+/hsOyRw2HJuFuv0LTUm3MUdHm2DJ94GPVgzqwPPFa9XxX0KlwLWupUuiOUj6uiKURCzYPHFcuPch/w==", - "dev": true, "requires": { "@fullhuman/postcss-purgecss": "^3.1.3", "bytes": "^3.0.0", @@ -23440,7 +23381,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -23449,7 +23389,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -23459,7 +23398,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -23467,14 +23405,12 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -23485,14 +23421,12 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -23881,7 +23815,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.3.tgz", "integrity": "sha512-eO1iwRbn3/BfkNVMNJDeANAFCZ5NobYOFPu7IqfY7DcI7I9nFGjJIZid0EViTmLDGwwSUPmRAq3cRBbO3+DsMA==", - "dev": true, "requires": { "esbuild": "^0.11.23", "fsevents": "~2.3.1", @@ -24053,8 +23986,7 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", diff --git a/ui/package.json b/ui/package.json index 20b4da49..12fab618 100644 --- a/ui/package.json +++ b/ui/package.json @@ -13,6 +13,9 @@ "@babel/core": "^7.14.0", "@babel/preset-react": "^7.13.13", "@babel/preset-typescript": "^7.13.0", + "@rollup/plugin-babel": "^5.3.0", + "@vitejs/plugin-react-refresh": "^1.3.3", + "autoprefixer": "^10.2.5", "babel-eslint": "^10.1.0", "babel-jest": "^26.6.3", "babel-plugin-graphql-tag": "^3.2.0", @@ -31,6 +34,7 @@ "fs-extra": "^10.0.0", "i18next": "^20.2.2", "mapbox-gl": "^2.2.0", + "postcss": "^8.3.0", "prop-types": "^15.7.2", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -44,8 +48,10 @@ "semantic-ui-react": "^2.0.3", "styled-components": "^5.3.0", "subscriptions-transport-ws": "^0.9.18", + "tailwindcss": "^2.1.2", "typescript": "^4.2.4", - "url-join": "^4.0.1" + "url-join": "^4.0.1", + "vite": "^2.3.3" }, "scripts": { "start": "vite", @@ -78,17 +84,12 @@ "@types/url-join": "^4.0.0", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", - "@vitejs/plugin-react-refresh": "^1.3.3", - "autoprefixer": "^10.2.5", "eslint-config-prettier": "^8.3.0", "husky": "^6.0.0", "jest": "^26.6.3", "lint-staged": "^11.0.0", - "postcss": "^8.3.0", "prettier": "^2.3.0", - "tailwindcss": "^2.1.2", - "tsc-files": "^1.1.2", - "vite": "^2.3.3" + "tsc-files": "^1.1.2" }, "prettier": { "trailingComma": "es5", diff --git a/ui/src/Pages/AllAlbumsPage/AlbumsPage.tsx b/ui/src/Pages/AllAlbumsPage/AlbumsPage.tsx index 581804c2..b043fc94 100644 --- a/ui/src/Pages/AllAlbumsPage/AlbumsPage.tsx +++ b/ui/src/Pages/AllAlbumsPage/AlbumsPage.tsx @@ -4,6 +4,7 @@ import Layout from '../../components/layout/Layout' import { useQuery, gql } from '@apollo/client' import LazyLoad from '../../helpers/LazyLoad' import { useTranslation } from 'react-i18next' +import { getMyAlbums } from './__generated__/getMyAlbums' const getAlbumsQuery = gql` query getMyAlbums { @@ -20,8 +21,7 @@ const getAlbumsQuery = gql` ` const AlbumsPage = () => { - const { t } = useTranslation() - const { loading, error, data } = useQuery(getAlbumsQuery) + const { loading, error, data } = useQuery(getAlbumsQuery) useEffect(() => { return () => LazyLoad.disconnect() @@ -33,14 +33,7 @@ const AlbumsPage = () => { return ( -

{t('albums_page.title', 'Albums')}

- {!loading && ( - - )} +
) } diff --git a/ui/src/Pages/LoginPage/LoginPage.tsx b/ui/src/Pages/LoginPage/LoginPage.tsx index ce677e83..f1f02d43 100644 --- a/ui/src/Pages/LoginPage/LoginPage.tsx +++ b/ui/src/Pages/LoginPage/LoginPage.tsx @@ -66,6 +66,8 @@ const LoginForm = () => { }) } + console.log('errors', formErrors) + const errorMessage = data && !data.authorizeUser.success ? data.authorizeUser.status : null @@ -78,14 +80,23 @@ const LoginForm = () => { { - const { t } = useTranslation() - - return ( - setOnlyFavorites(result.checked)} - /> - ) -} - -FavoritesCheckbox.propTypes = { - onlyFavorites: PropTypes.bool.isRequired, - setOnlyFavorites: PropTypes.func.isRequired, -} - -const OrderDirectionButton = styled(Button)` - padding: 0.88em; - margin-left: 10px !important; -` - -const SortByLabel = styled.strong` - margin-left: 4px; - margin-right: 6px; -` - -const AlbumFilter = ({ - onlyFavorites, - setOnlyFavorites, - setOrdering, - ordering, -}) => { - const { t } = useTranslation() - const onChangeOrderDirection = (e, data) => { - const direction = data.children.props.name === 'arrow up' ? 'DESC' : 'ASC' - setOrdering({ orderDirection: direction }) - } - - const sortingOptions = [ - { - key: 'date_shot', - value: 'date_shot', - text: t('album_filter.sorting_options.date_shot', 'Date shot'), - }, - { - key: 'updated_at', - value: 'updated_at', - text: t('album_filter.sorting_options.date_imported', 'Date imported'), - }, - { - key: 'title', - value: 'title', - text: t('album_filter.sorting_options.title', 'Title'), - }, - { - key: 'type', - value: 'type', - text: t('album_filter.sorting_options.type', 'Kind'), - }, - ] - - return ( - <> - {authToken() && setOnlyFavorites && ( - - )} - {t('album_filter.sort_by', 'Sort by')} - e.value === ordering.orderBy)?.value || - sortingOptions[0].value - } - onChange={(e, data) => { - setOrdering({ orderBy: data.value }) - }} - /> - - - - - ) -} - -AlbumFilter.propTypes = { - onlyFavorites: PropTypes.bool, - setOnlyFavorites: PropTypes.func, - setOrdering: PropTypes.func, - ordering: PropTypes.object, -} - -export default AlbumFilter diff --git a/ui/src/components/AlbumFilter.tsx b/ui/src/components/AlbumFilter.tsx new file mode 100644 index 00000000..d391cded --- /dev/null +++ b/ui/src/components/AlbumFilter.tsx @@ -0,0 +1,104 @@ +import React from 'react' +import { authToken } from '../helpers/authentication' +import { useTranslation } from 'react-i18next' +import { OrderDirection } from '../../__generated__/globalTypes' +import { MediaOrdering, SetOrderingFn } from '../hooks/useOrderingParams' + +type FavoriteCheckboxProps = { + onlyFavorites: boolean + setOnlyFavorites(favorites: boolean): void +} + +export const FavoritesCheckbox = ({ + onlyFavorites, + setOnlyFavorites, +}: FavoriteCheckboxProps) => { + const { t } = useTranslation() + + return ( + + ) +} + +type AlbumFilterProps = { + onlyFavorites: boolean + setOnlyFavorites?(favorites: boolean): void + ordering?: MediaOrdering + setOrdering?: SetOrderingFn +} + +const AlbumFilter = ({ + onlyFavorites, + setOnlyFavorites, + setOrdering, + ordering, +}: AlbumFilterProps) => { + const { t } = useTranslation() + + const changeOrderDirection = () => { + if (setOrdering && ordering) { + setOrdering({ + orderDirection: + ordering.orderDirection == OrderDirection.ASC + ? OrderDirection.DESC + : OrderDirection.ASC, + }) + } + } + + const changeOrderBy = (e: React.ChangeEvent) => { + if (setOrdering) { + setOrdering({ orderBy: e.target.value }) + } + } + + const sortingOptions = [ + { + value: 'date_shot', + text: t('album_filter.sorting_options.date_shot', 'Date shot'), + }, + { + value: 'updated_at', + text: t('album_filter.sorting_options.date_imported', 'Date imported'), + }, + { + value: 'title', + text: t('album_filter.sorting_options.title', 'Title'), + }, + { + value: 'type', + text: t('album_filter.sorting_options.type', 'Kind'), + }, + ] + + return ( + <> + {authToken() && setOnlyFavorites && ( + + )} + {t('album_filter.sort_by', 'Sort by')} + + + + + + ) +} + +export default AlbumFilter diff --git a/ui/src/components/AlbumTitle.tsx b/ui/src/components/AlbumTitle.tsx index 4cf5604c..5c6fd7aa 100644 --- a/ui/src/components/AlbumTitle.tsx +++ b/ui/src/components/AlbumTitle.tsx @@ -1,42 +1,24 @@ import React, { useEffect, useContext } from 'react' -import PropTypes from 'prop-types' -import { Breadcrumb, IconProps } from 'semantic-ui-react' import { Link } from 'react-router-dom' import styled from 'styled-components' -import { Icon } from 'semantic-ui-react' import { SidebarContext } from './sidebar/Sidebar' import AlbumSidebar from './sidebar/AlbumSidebar' import { useLazyQuery, gql } from '@apollo/client' import { authToken } from '../helpers/authentication' import { albumPathQuery } from './__generated__/albumPathQuery' -const Header = styled.h1` - margin: 24px 0 8px 0 !important; - - & a { - color: black; - - &:hover { - text-decoration: underline; - } +const BreadcrumbList = styled.ol` + & li::after { + content: ''; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5px' height='6px' viewBox='0 0 5 6'%3E%3Cpolyline fill='none' stroke='%23979797' points='0.74 0.167710644 3.57228936 3 0.74 5.83228936' /%3E%3C/svg%3E"); + width: 5px; + height: 6px; + display: inline-block; + margin: 6px; + vertical-align: middle; } ` -const StyledIcon = styled(Icon)` - margin-left: 8px !important; - display: inline-block; - color: #888; - cursor: pointer; - - &:hover { - color: #1e70bf; - } -` - -const SettingsIcon = (props: IconProps) => { - return -} - const ALBUM_PATH_QUERY = gql` query albumPathQuery($id: ID!) { album(id: $id) { @@ -58,9 +40,8 @@ type AlbumTitleProps = { } const AlbumTitle = ({ album, disableLink = false }: AlbumTitleProps) => { - const [fetchPath, { data: pathData }] = useLazyQuery( - ALBUM_PATH_QUERY - ) + const [fetchPath, { data: pathData }] = + useLazyQuery(ALBUM_PATH_QUERY) const { updateSidebar } = useContext(SidebarContext) useEffect(() => { @@ -85,12 +66,9 @@ const AlbumTitle = ({ album, disableLink = false }: AlbumTitleProps) => { .slice() .reverse() .map(x => ( - - - {x.title} - - - +
  • + {x.title} +
  • )) if (!disableLink) { @@ -98,25 +76,24 @@ const AlbumTitle = ({ album, disableLink = false }: AlbumTitleProps) => { } return ( - <> -
    - {breadcrumbSections} - {title} - {authToken() && ( - { - updateSidebar() - }} - /> - )} -
    - +
    +
    + +

    {title}

    +
    + {authToken() && ( + + )} +
    ) } -AlbumTitle.propTypes = { - album: PropTypes.object, - disableLink: PropTypes.bool, -} - export default AlbumTitle diff --git a/ui/src/components/albumGallery/AlbumBox.tsx b/ui/src/components/albumGallery/AlbumBox.tsx index f8d3d0f4..6bb0d864 100644 --- a/ui/src/components/albumGallery/AlbumBox.tsx +++ b/ui/src/components/albumGallery/AlbumBox.tsx @@ -1,52 +1,8 @@ import React, { useState } from 'react' -import styled from 'styled-components' import { Link } from 'react-router-dom' import { ProtectedImage } from '../photoGallery/ProtectedMedia' import { albumQuery_album_subAlbums } from '../../Pages/AlbumPage/__generated__/albumQuery' -const AlbumBoxLink = styled(Link)` - width: 240px; - height: 240px; - display: inline-block; - text-align: center; - color: #222; -` - -const ImageWrapper = styled.div` - width: 240px; - height: 220px; - padding: 0 10px; - position: relative; -` - -const Image = styled(ProtectedImage)` - width: 220px; - height: 220px; - margin: auto; - border-radius: 4%; - object-fit: cover; - object-position: center; -` - -const Placeholder = styled.div<{ overlap?: boolean; loaded?: boolean }>` - width: 220px; - height: 220px; - border-radius: 4%; - margin: auto; - background: linear-gradient(#f7f7f7 0%, #eee 100%); - - ${({ overlap, loaded }) => - overlap && - ` - position: absolute; - top: 0; - left: 10px; - opacity: ${loaded ? 0 : 1}; - - transition: opacity 200ms; - `} -` - interface AlbumBoxImageProps { src?: string } @@ -54,16 +10,31 @@ interface AlbumBoxImageProps { const AlbumBoxImage = ({ src, ...props }: AlbumBoxImageProps) => { const [loaded, setLoaded] = useState(false) + let image = null if (src) { - return ( - - setLoaded(true)} src={src} /> - - + image = ( + setLoaded(true)} + src={src} + /> ) } - return + let placeholder = null + if (!loaded) { + placeholder = ( +
    + ) + } + + return ( +
    + {image} + {placeholder} +
    + ) } type AlbumBoxProps = { @@ -72,20 +43,24 @@ type AlbumBoxProps = { } export const AlbumBox = ({ album, customLink, ...props }: AlbumBoxProps) => { - if (!album) { + const wrapperClasses = 'inline-block text-center text-gray-900 mx-3 my-2 h-60' + + if (album) { return ( - - - + + +

    {album.title}

    + ) } - const thumbnail = album.thumbnail?.thumbnail?.url - return ( - - -

    {album.title}

    -
    +
    + +
    ) } diff --git a/ui/src/components/albumGallery/AlbumBoxes.tsx b/ui/src/components/albumGallery/AlbumBoxes.tsx index 74b5360a..f71de07b 100644 --- a/ui/src/components/albumGallery/AlbumBoxes.tsx +++ b/ui/src/components/albumGallery/AlbumBoxes.tsx @@ -1,15 +1,8 @@ import React from 'react' -import styled from 'styled-components' import { albumQuery_album_subAlbums } from '../../Pages/AlbumPage/__generated__/albumQuery' import { AlbumBox } from './AlbumBox' -const Container = styled.div` - margin: 20px -10px; - position: relative; -` - type AlbumBoxesProps = { - loading: boolean error?: Error albums?: albumQuery_album_subAlbums[] getCustomLink?(albumID: string): string @@ -20,7 +13,7 @@ const AlbumBoxes = ({ error, albums, getCustomLink }: AlbumBoxesProps) => { let albumElements = [] - if (albums) { + if (albums !== undefined) { albumElements = albums.map(album => ( { } } - return {albumElements} + return
    {albumElements}
    } export default AlbumBoxes diff --git a/ui/src/components/albumGallery/AlbumGallery.tsx b/ui/src/components/albumGallery/AlbumGallery.tsx index 92b64f41..7f196351 100644 --- a/ui/src/components/albumGallery/AlbumGallery.tsx +++ b/ui/src/components/albumGallery/AlbumGallery.tsx @@ -4,11 +4,11 @@ import PhotoGallery from '../photoGallery/PhotoGallery' import AlbumBoxes from './AlbumBoxes' import AlbumFilter from '../AlbumFilter' import { albumQuery_album } from '../../Pages/AlbumPage/__generated__/albumQuery' -import { OrderDirection } from '../../../__generated__/globalTypes' import { photoGalleryReducer, urlPresentModeSetupHook, } from '../photoGallery/photoGalleryReducer' +import { MediaOrdering, SetOrderingFn } from '../../hooks/useOrderingParams' type AlbumGalleryProps = { album?: albumQuery_album @@ -16,8 +16,8 @@ type AlbumGalleryProps = { customAlbumLink?(albumID: string): string showFilter?: boolean setOnlyFavorites?(favorites: boolean): void - setOrdering?(ordering: { orderBy: string }): void - ordering?: { orderBy: string | null; orderDirection: OrderDirection | null } + setOrdering?: SetOrderingFn + ordering?: MediaOrdering onlyFavorites?: boolean onFavorite?(): void } @@ -61,19 +61,17 @@ const AlbumGallery = React.forwardRef( if (album.subAlbums.length > 0) { subAlbumElement = ( ) } } else { - subAlbumElement = + subAlbumElement = } return (
    - {showFilter && ( )} + {subAlbumElement} - { -

    0 ? 'block' : 'none', - }} - > - Images -

    - } { const mapboxEnabled = !!mapboxQuery?.data?.mapboxToken return ( -
    +
      ) + photoElements.push() } } return ( - + <> - - {t('general.loading.media', 'Loading media')} - {photoElements} @@ -128,7 +120,7 @@ const PhotoGallery = ({ dispatchMedia={dispatchMedia} /> )} - + ) } diff --git a/ui/src/components/timelineGallery/TimelineGallery.tsx b/ui/src/components/timelineGallery/TimelineGallery.tsx index 5e287b8a..a8efc5ac 100644 --- a/ui/src/components/timelineGallery/TimelineGallery.tsx +++ b/ui/src/components/timelineGallery/TimelineGallery.tsx @@ -173,9 +173,6 @@ const TimelineGallery = () => { return ( <> - - {t('general.loading.timeline', 'Loading timeline')} - \ No newline at end of file diff --git a/ui/src/hooks/useOrderingParams.ts b/ui/src/hooks/useOrderingParams.ts index 79f1758d..b1b353f9 100644 --- a/ui/src/hooks/useOrderingParams.ts +++ b/ui/src/hooks/useOrderingParams.ts @@ -2,18 +2,23 @@ import { useCallback } from 'react' import { OrderDirection } from '../../__generated__/globalTypes' import { UrlKeyValuePair, UrlParams } from './useURLParameters' +export type MediaOrdering = { + orderBy: string | null + orderDirection: OrderDirection | null +} + +export type SetOrderingFn = (args: { + orderBy?: string + orderDirection?: OrderDirection +}) => void + function useOrderingParams({ getParam, setParams }: UrlParams) { const orderBy = getParam('orderBy', 'date_shot') const orderDirStr = getParam('orderDirection', 'ASC') || 'hello' const orderDirection = orderDirStr as OrderDirection - type setOrderingFn = (args: { - orderBy?: string - orderDirection?: OrderDirection - }) => void - - const setOrdering: setOrderingFn = useCallback( + const setOrdering: SetOrderingFn = useCallback( ({ orderBy, orderDirection }) => { const updatedParams: UrlKeyValuePair[] = [] if (orderBy !== undefined) { diff --git a/ui/src/primitives/form/Input.tsx b/ui/src/primitives/form/Input.tsx index aae2b5f7..ce2b14d5 100644 --- a/ui/src/primitives/form/Input.tsx +++ b/ui/src/primitives/form/Input.tsx @@ -1,45 +1,51 @@ -import React from 'react' +import React, { forwardRef } from 'react' type TextFieldProps = { label?: string error?: string } & React.InputHTMLAttributes -export const TextField = ({ - label, - error, - className, - ...inputProps -}: TextFieldProps) => { - const input = ( - - ) +export const TextField = forwardRef( + ( + { label, error, className, ...inputProps }: TextFieldProps, + ref: React.ForwardedRef + ) => { + let variant = 'bg-white border-gray-200 focus:border-blue-400' + if (error) + variant = + 'bg-red-50 border-red-200 focus:border-red-400 focus:ring-red-100' - let errorElm = null - if (error) errorElm =
      {error}
      + const input = ( + + ) + + let errorElm = null + if (error) errorElm =
      {error}
      + + if (label) { + return ( + + ) + } - if (label) { return ( -