From 9c78c9d109affb88f450b74627e917a0c7c571fa Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 13:39:50 +0300 Subject: [PATCH 001/175] deps were updated --- package-lock.json | 6634 ++++++++++++++------------------- package.json | 70 +- src/assets/icons/Asterisk.jsx | 2 +- src/assets/icons/Sync.jsx | 2 +- src/assets/icons/index.js | 8 +- 5 files changed, 2760 insertions(+), 3956 deletions(-) diff --git a/package-lock.json b/package-lock.json index e36c14b5..ef004303 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,75 +14,66 @@ } }, "@babel/compat-data": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz", - "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", "dev": true, "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.9.1", "invariant": "^2.2.4", "semver": "^5.5.0" }, "dependencies": { "browserslist": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.0.tgz", - "integrity": "sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", + "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001030", - "electron-to-chromium": "^1.3.361", - "node-releases": "^1.1.50" + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.380", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" } }, "caniuse-lite": { - "version": "1.0.30001030", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", - "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", + "version": "1.0.30001038", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", "dev": true }, "electron-to-chromium": { - "version": "1.3.362", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz", - "integrity": "sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg==", + "version": "1.3.390", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", + "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", "dev": true }, "node-releases": { - "version": "1.1.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz", - "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true } } }, "@babel/core": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", - "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", - "@babel/helpers": "^7.8.4", - "@babel/parser": "^7.8.4", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", - "json5": "^2.1.0", + "json5": "^2.1.2", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", @@ -90,40 +81,62 @@ }, "dependencies": { "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.9.0", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.9.0", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -172,78 +185,94 @@ } }, "@babel/helper-builder-react-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz", - "integrity": "sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", "dev": true, "requires": { - "@babel/types": "^7.8.3", - "esutils": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/types": "^7.9.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, - "@babel/helper-call-delegate": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", - "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz", + "integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/types": "^7.9.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz", - "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.4", - "browserslist": "^4.8.5", + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { "browserslist": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.0.tgz", - "integrity": "sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", + "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001030", - "electron-to-chromium": "^1.3.361", - "node-releases": "^1.1.50" + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.380", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" } }, "caniuse-lite": { - "version": "1.0.30001030", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", - "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", + "version": "1.0.30001038", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", "dev": true }, "electron-to-chromium": { - "version": "1.3.362", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz", - "integrity": "sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg==", + "version": "1.3.390", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", + "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", "dev": true }, "node-releases": { - "version": "1.1.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz", - "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true } } }, @@ -262,13 +291,14 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", - "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", "dev": true, "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.6.0" + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { @@ -340,17 +370,95 @@ } }, "@babel/helper-module-transforms": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz", - "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", "@babel/helper-simple-access": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/generator": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { @@ -421,6 +529,12 @@ "@babel/types": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "dev": true + }, "@babel/helper-wrap-function": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", @@ -434,51 +548,62 @@ } }, "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", "dev": true, "requires": { "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" }, "dependencies": { "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.9.0", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.9.0", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -566,10 +691,20 @@ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, - "@babel/plugin-proposal-object-rest-spread": { + "@babel/plugin-proposal-numeric-separator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -587,9 +722,9 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", - "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -597,12 +732,12 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", - "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-create-regexp-features-plugin": "^7.8.8", "@babel/helper-plugin-utils": "^7.8.3" } }, @@ -687,6 +822,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", @@ -763,9 +907,9 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz", - "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.8.3", @@ -773,9 +917,75 @@ "@babel/helper-function-name": "^7.8.3", "@babel/helper-optimise-call-expression": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", "@babel/helper-split-export-declaration": "^7.8.3", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-computed-properties": { @@ -788,9 +998,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", - "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -826,9 +1036,9 @@ } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz", - "integrity": "sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -836,9 +1046,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz", - "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -873,47 +1083,47 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", - "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", - "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "@babel/helper-simple-access": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", - "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", - "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3" } }, @@ -946,12 +1156,11 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz", - "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==", + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.8.3", "@babel/helper-get-function-arity": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" } @@ -966,12 +1175,11 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz", - "integrity": "sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz", + "integrity": "sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" } }, @@ -985,20 +1193,32 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz", - "integrity": "sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.9.0", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz", + "integrity": "sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.8.3", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "@babel/plugin-syntax-jsx": "^7.8.3" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz", - "integrity": "sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz", + "integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -1006,9 +1226,9 @@ } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz", - "integrity": "sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", + "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -1016,12 +1236,12 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", - "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { @@ -1034,9 +1254,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz", - "integrity": "sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", + "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.8.3", @@ -1103,37 +1323,39 @@ } }, "@babel/polyfill": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.8.3.tgz", - "integrity": "sha512-0QEgn2zkCzqGIkSWWAEmvxD7e00Nm9asTtQvi7HdlYvMhjy/J38V/1Y9ode0zEJeIuxAI0uftiAzqc7nVeWUGg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.8.7.tgz", + "integrity": "sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w==", "dev": true, "requires": { "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "@babel/preset-env": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz", - "integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.4", - "@babel/helper-compilation-targets": "^7.8.4", + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", "@babel/helper-module-imports": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", "@babel/plugin-proposal-async-generator-functions": "^7.8.3", "@babel/plugin-proposal-dynamic-import": "^7.8.3", "@babel/plugin-proposal-json-strings": "^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", "@babel/plugin-syntax-async-generators": "^7.8.0", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", @@ -1142,26 +1364,26 @@ "@babel/plugin-transform-async-to-generator": "^7.8.3", "@babel/plugin-transform-block-scoped-functions": "^7.8.3", "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", "@babel/plugin-transform-computed-properties": "^7.8.3", "@babel/plugin-transform-destructuring": "^7.8.3", "@babel/plugin-transform-dotall-regex": "^7.8.3", "@babel/plugin-transform-duplicate-keys": "^7.8.3", "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.8.4", + "@babel/plugin-transform-for-of": "^7.9.0", "@babel/plugin-transform-function-name": "^7.8.3", "@babel/plugin-transform-literals": "^7.8.3", "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.8.3", - "@babel/plugin-transform-modules-commonjs": "^7.8.3", - "@babel/plugin-transform-modules-systemjs": "^7.8.3", - "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", "@babel/plugin-transform-new-target": "^7.8.3", "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.4", + "@babel/plugin-transform-parameters": "^7.8.7", "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", "@babel/plugin-transform-reserved-words": "^7.8.3", "@babel/plugin-transform-shorthand-properties": "^7.8.3", "@babel/plugin-transform-spread": "^7.8.3", @@ -1169,85 +1391,111 @@ "@babel/plugin-transform-template-literals": "^7.8.3", "@babel/plugin-transform-typeof-symbol": "^7.8.4", "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/types": "^7.8.3", - "browserslist": "^4.8.5", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "browserslist": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.0.tgz", - "integrity": "sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", + "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001030", - "electron-to-chromium": "^1.3.361", - "node-releases": "^1.1.50" + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.380", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" } }, "caniuse-lite": { - "version": "1.0.30001030", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", - "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", + "version": "1.0.30001038", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", "dev": true }, "electron-to-chromium": { - "version": "1.3.362", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz", - "integrity": "sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg==", + "version": "1.3.390", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", + "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", "dev": true }, "node-releases": { - "version": "1.1.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz", - "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true } } }, "@babel/preset-flow": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.8.3.tgz", - "integrity": "sha512-iCXFk+T4demnq+dNLLvlGOgvYF6sPZ/hS1EmswugOqh1Ysp2vuiqJzpgsnp5rW8+6dLJT/0CXDzye28ZH6BAfQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.9.0.tgz", + "integrity": "sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-flow-strip-types": "^7.8.3" + "@babel/plugin-transform-flow-strip-types": "^7.9.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, "@babel/preset-react": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.8.3.tgz", - "integrity": "sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz", + "integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", "@babel/plugin-transform-react-display-name": "^7.8.3", - "@babel/plugin-transform-react-jsx": "^7.8.3", - "@babel/plugin-transform-react-jsx-self": "^7.8.3", - "@babel/plugin-transform-react-jsx-source": "^7.8.3" + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" } }, "@babel/runtime": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", - "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz", + "integrity": "sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA==", + "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { @@ -1295,33 +1543,10 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@chromaui/localtunnel": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@chromaui/localtunnel/-/localtunnel-1.10.1.tgz", - "integrity": "sha512-LXhAogVc9SOQ45+mtk2mhcQxW4bE8aadfx9WbDzuDlBXcDgDMFBaxOmd5VYsPxQYA+cLFkKeuKOpROzsZSEySA==", - "dev": true, - "requires": { - "axios": "0.19.0", - "debug": "^3.0.1", - "openurl": "1.1.1", - "yargs": "6.6.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { "exec-sh": "^0.3.2", @@ -1329,9 +1554,9 @@ } }, "@emotion/cache": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.27.tgz", - "integrity": "sha512-Zp8BEpbMunFsTcqAK4D7YTm3MvCp1SekflSLJH8lze2fCcSZ/yMkXHo8kb3t1/1Tdd3hAqf3Fb7z9VZ+FMiC9w==", + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", "dev": true, "requires": { "@emotion/sheet": "0.9.4", @@ -1341,9 +1566,9 @@ } }, "@emotion/core": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.27.tgz", - "integrity": "sha512-XbD5R36pVbohQMnKfajHv43g8EbN4NHdF6Zh9zg/C0nr0jqwOw3gYnC07Xj3yG43OYSRyrGsoQ5qPwc8ycvLZw==", + "version": "10.0.28", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz", + "integrity": "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==", "dev": true, "requires": { "@babel/runtime": "^7.5.5", @@ -1366,15 +1591,16 @@ } }, "@emotion/hash": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.4.tgz", - "integrity": "sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", "dev": true }, "@emotion/is-prop-valid": { "version": "0.8.6", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz", "integrity": "sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ==", + "dev": true, "requires": { "@emotion/memoize": "0.7.4" } @@ -1385,12 +1611,12 @@ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" }, "@emotion/serialize": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.15.tgz", - "integrity": "sha512-YE+qnrmGwyR+XB5j7Bi+0GT1JWsdcjM/d4POu+TXkcnrRs4RFCCsi3d/Ebf+wSStHqAlTT2+dfd+b9N9EO2KBg==", + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", "dev": true, "requires": { - "@emotion/hash": "0.7.4", + "@emotion/hash": "0.8.0", "@emotion/memoize": "0.7.4", "@emotion/unitless": "0.7.5", "@emotion/utils": "0.11.3", @@ -1414,15 +1640,26 @@ } }, "@emotion/styled-base": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.27.tgz", - "integrity": "sha512-ufHM/HhE3nr309hJG9jxuFt71r6aHn7p+bwXduFxcwPFEfBIqvmZUMtZ9YxIsY61PVwK3bp4G1XhaCzy9smVvw==", + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", + "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", "dev": true, "requires": { "@babel/runtime": "^7.5.5", - "@emotion/is-prop-valid": "0.8.6", + "@emotion/is-prop-valid": "0.8.8", "@emotion/serialize": "^0.11.15", "@emotion/utils": "0.11.3" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + } } }, "@emotion/stylis": { @@ -1467,12 +1704,6 @@ "resolve-from": "^5.0.0" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -1516,14 +1747,14 @@ "dev": true }, "@jest/console": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.1.0.tgz", - "integrity": "sha512-3P1DpqAMK/L07ag/Y9/Jup5iDEG9P4pRAuZiMQnU0JB3UOvCyYCjCoxr7sIA80SeyUCUKrr24fKAxVpmBgQonA==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.2.3.tgz", + "integrity": "sha512-k+37B1aSvOt9tKHWbZZSOy1jdgzesB0bj96igCVUG1nAH1W5EoUfgc5EXbBVU08KSLvkVdWopLXaO3xfVGlxtQ==", "dev": true, "requires": { - "@jest/source-map": "^25.1.0", + "@jest/source-map": "^25.2.1", "chalk": "^3.0.0", - "jest-util": "^25.1.0", + "jest-util": "^25.2.3", "slash": "^3.0.0" }, "dependencies": { @@ -1586,62 +1817,41 @@ } }, "@jest/core": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.1.0.tgz", - "integrity": "sha512-iz05+NmwCmZRzMXvMo6KFipW7nzhbpEawrKrkkdJzgytavPse0biEnCNr2wRlyCsp3SmKaEY+SGv7YWYQnIdig==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.2.4.tgz", + "integrity": "sha512-WcWYShl0Bqfcb32oXtjwbiR78D/djhMdJW+ulp4/bmHgeODcsieqUJfUH+kEv8M7VNV77E6jds5aA+WuGh1nmg==", "dev": true, "requires": { - "@jest/console": "^25.1.0", - "@jest/reporters": "^25.1.0", - "@jest/test-result": "^25.1.0", - "@jest/transform": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/console": "^25.2.3", + "@jest/reporters": "^25.2.4", + "@jest/test-result": "^25.2.4", + "@jest/transform": "^25.2.4", + "@jest/types": "^25.2.3", "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.3", - "jest-changed-files": "^25.1.0", - "jest-config": "^25.1.0", - "jest-haste-map": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-regex-util": "^25.1.0", - "jest-resolve": "^25.1.0", - "jest-resolve-dependencies": "^25.1.0", - "jest-runner": "^25.1.0", - "jest-runtime": "^25.1.0", - "jest-snapshot": "^25.1.0", - "jest-util": "^25.1.0", - "jest-validate": "^25.1.0", - "jest-watcher": "^25.1.0", + "jest-changed-files": "^25.2.3", + "jest-config": "^25.2.4", + "jest-haste-map": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-regex-util": "^25.2.1", + "jest-resolve": "^25.2.3", + "jest-resolve-dependencies": "^25.2.4", + "jest-runner": "^25.2.4", + "jest-runtime": "^25.2.4", + "jest-snapshot": "^25.2.4", + "jest-util": "^25.2.3", + "jest-validate": "^25.2.3", + "jest-watcher": "^25.2.4", "micromatch": "^4.0.2", "p-each-series": "^2.1.0", - "realpath-native": "^1.1.0", + "realpath-native": "^2.0.0", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -1690,9 +1900,9 @@ "dev": true }, "rimraf": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", - "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -1725,187 +1935,40 @@ } }, "@jest/environment": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.1.0.tgz", - "integrity": "sha512-cTpUtsjU4cum53VqBDlcW0E4KbQF03Cn0jckGPW/5rrE9tb+porD3+hhLtHAwhthsqfyF+bizyodTlsRA++sHg==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.2.4.tgz", + "integrity": "sha512-wA4xlhD19/gukkDpJ5HQsTle0pgnzI5qMFEjw267lpTDC8d9N7Ihqr5pI+l0p8Qn1SQhai+glSqxrGdzKy4jxw==", "dev": true, "requires": { - "@jest/fake-timers": "^25.1.0", - "@jest/types": "^25.1.0", - "jest-mock": "^25.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/fake-timers": "^25.2.4", + "@jest/types": "^25.2.3", + "jest-mock": "^25.2.3" } }, "@jest/fake-timers": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.1.0.tgz", - "integrity": "sha512-Eu3dysBzSAO1lD7cylZd/CVKdZZ1/43SF35iYBNV1Lvvn2Undp3Grwsv8PrzvbLhqwRzDd4zxrY4gsiHc+wygQ==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.2.4.tgz", + "integrity": "sha512-oC1TJiwfMcBttVN7Wz+VZnqEAgYTiEMu0QLOXpypR89nab0uCB31zm/QeBZddhSstn20qe3yqOXygp6OwvKT/Q==", "dev": true, "requires": { - "@jest/types": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-mock": "^25.1.0", - "jest-util": "^25.1.0", + "@jest/types": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-mock": "^25.2.3", + "jest-util": "^25.2.3", "lolex": "^5.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "@jest/reporters": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.1.0.tgz", - "integrity": "sha512-ORLT7hq2acJQa8N+NKfs68ZtHFnJPxsGqmofxW7v7urVhzJvpKZG9M7FAcgh9Ee1ZbCteMrirHA3m5JfBtAaDg==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.2.4.tgz", + "integrity": "sha512-VHbLxM03jCc+bTLOluW/IqHR2G0Cl0iATwIQbuZtIUast8IXO4fD0oy4jpVGpG5b20S6REA8U3BaQoCW/CeVNQ==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^25.1.0", - "@jest/environment": "^25.1.0", - "@jest/test-result": "^25.1.0", - "@jest/transform": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/console": "^25.2.3", + "@jest/test-result": "^25.2.4", + "@jest/transform": "^25.2.4", + "@jest/types": "^25.2.3", "chalk": "^3.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -1915,11 +1978,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.0", - "jest-haste-map": "^25.1.0", - "jest-resolve": "^25.1.0", - "jest-runtime": "^25.1.0", - "jest-util": "^25.1.0", - "jest-worker": "^25.1.0", + "jest-haste-map": "^25.2.3", + "jest-resolve": "^25.2.3", + "jest-util": "^25.2.3", + "jest-worker": "^25.2.1", "node-notifier": "^6.0.0", "slash": "^3.0.0", "source-map": "^0.6.0", @@ -1928,27 +1990,6 @@ "v8-to-istanbul": "^4.0.1" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -1990,16 +2031,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2018,9 +2049,9 @@ } }, "@jest/source-map": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.1.0.tgz", - "integrity": "sha512-ohf2iKT0xnLWcIUhL6U6QN+CwFWf9XnrM2a6ybL9NXxJjgYijjLSitkYHIdzkd8wFliH73qj/+epIpTiWjRtAA==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.2.1.tgz", + "integrity": "sha512-PgScGJm1U27+9Te/cxP4oUFqJ2PX6NhBL2a6unQ7yafCgs8k02c0LSyjSIx/ao0AwcAdCczfAPDf5lJ7zoB/7A==", "dev": true, "requires": { "callsites": "^3.0.0", @@ -2029,148 +2060,54 @@ } }, "@jest/test-result": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.1.0.tgz", - "integrity": "sha512-FZzSo36h++U93vNWZ0KgvlNuZ9pnDnztvaM7P/UcTx87aPDotG18bXifkf1Ji44B7k/eIatmMzkBapnAzjkJkg==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.2.4.tgz", + "integrity": "sha512-AI7eUy+q2lVhFnaibDFg68NGkrxVWZdD6KBr9Hm6EvN0oAe7GxpEwEavgPfNHQjU2mi6g+NsFn/6QPgTUwM1qg==", "dev": true, "requires": { - "@jest/console": "^25.1.0", - "@jest/transform": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/console": "^25.2.3", + "@jest/transform": "^25.2.4", + "@jest/types": "^25.2.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "@jest/test-sequencer": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.1.0.tgz", - "integrity": "sha512-WgZLRgVr2b4l/7ED1J1RJQBOharxS11EFhmwDqknpknE0Pm87HLZVS2Asuuw+HQdfQvm2aXL2FvvBLxOD1D0iw==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.2.4.tgz", + "integrity": "sha512-TEZm/Rkd6YgskdpTJdYLBtu6Gc11tfWPuSpatq0duH77ekjU8dpqX2zkPdY/ayuHxztV5LTJoV5BLtI9mZfXew==", "dev": true, "requires": { - "@jest/test-result": "^25.1.0", - "jest-haste-map": "^25.1.0", - "jest-runner": "^25.1.0", - "jest-runtime": "^25.1.0" + "@jest/test-result": "^25.2.4", + "jest-haste-map": "^25.2.3", + "jest-runner": "^25.2.4", + "jest-runtime": "^25.2.4" } }, "@jest/transform": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.1.0.tgz", - "integrity": "sha512-4ktrQ2TPREVeM+KxB4zskAT84SnmG1vaz4S+51aTefyqn3zocZUnliLLm5Fsl85I3p/kFPN4CRp1RElIfXGegQ==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.2.4.tgz", + "integrity": "sha512-6eRigvb+G6bs4kW5j1/y8wu4nCrmVuIe0epPBbiWaYlwawJ8yi1EIyK3d/btDqmBpN5GpN4YhR6iPPnDmkYdTA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "babel-plugin-istanbul": "^6.0.0", "chalk": "^3.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.3", - "jest-haste-map": "^25.1.0", - "jest-regex-util": "^25.1.0", - "jest-util": "^25.1.0", + "jest-haste-map": "^25.2.3", + "jest-regex-util": "^25.2.1", + "jest-util": "^25.2.3", "micromatch": "^4.0.2", "pirates": "^4.0.1", - "realpath-native": "^1.1.0", + "realpath-native": "^2.0.0", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -2230,9 +2167,9 @@ } }, "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.2.3.tgz", + "integrity": "sha512-6oLQwO9mKif3Uph3RX5J1i3S7X7xtDHWBaaaoeKw8hOzV6YUd0qDcYcHZ6QXMHDIzSr7zzrEa51o2Ovlj6AtKQ==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -2338,9 +2275,9 @@ } }, "@reach/router": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.1.tgz", - "integrity": "sha512-Ov1j1J+pSgXliJHFL7XWhjyREwc6GxeWfgBTa5MMH5eRmYtHbPhaovba4xKo7aTVCg8fxkt2yDMNSpvwfUP+pA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz", + "integrity": "sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw==", "dev": true, "requires": { "create-react-context": "0.3.0", @@ -2358,12 +2295,6 @@ "any-observable": "^0.3.0" } }, - "@sheerun/mutationobserver-shim": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz", - "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==", - "dev": true - }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", @@ -2372,26 +2303,26 @@ "optional": true }, "@sinonjs/commons": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz", - "integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz", + "integrity": "sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@storybook/addon-actions": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.3.14.tgz", - "integrity": "sha512-4lKrTMzw/r6VQiBY24v72WC3jibW7pc9BIJgtPpTmTUQWTxPnkmxDfT81pV4BjS1GFH9VCnU6f5fWK+5lrQlsw==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.3.17.tgz", + "integrity": "sha512-06HQSBqWFyXcqV418Uv3oMHomNy9g3uCt0FHrqY3BAc7PldY1X0tW65oy//uBueaRaYKdhtRrrjfXRaPQWmDbA==", "dev": true, "requires": { - "@storybook/addons": "5.3.14", - "@storybook/api": "5.3.14", - "@storybook/client-api": "5.3.14", - "@storybook/components": "5.3.14", - "@storybook/core-events": "5.3.14", - "@storybook/theming": "5.3.14", + "@storybook/addons": "5.3.17", + "@storybook/api": "5.3.17", + "@storybook/client-api": "5.3.17", + "@storybook/components": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/theming": "5.3.17", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", @@ -2411,17 +2342,17 @@ } }, "@storybook/addon-knobs": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.3.14.tgz", - "integrity": "sha512-pBpFOdeCR8n8w6QHK1adABt6YKf+Q4itfX0+AtZRGLvbGum9O+paihvP9EVYPlKiG+0T7Zv2vFCl6q6qFjF/Mw==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.3.17.tgz", + "integrity": "sha512-SMjvH3EjUbt4Xn1Q22thXVQSDrJRUB3IAzhUNdBovFB3RwOXmRFd0iSHC3TTKJfW2TYPssl8cnNGQTH6O2d14g==", "dev": true, "requires": { - "@storybook/addons": "5.3.14", - "@storybook/api": "5.3.14", - "@storybook/client-api": "5.3.14", - "@storybook/components": "5.3.14", - "@storybook/core-events": "5.3.14", - "@storybook/theming": "5.3.14", + "@storybook/addons": "5.3.17", + "@storybook/api": "5.3.17", + "@storybook/client-api": "5.3.17", + "@storybook/components": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/theming": "5.3.17", "@types/react-color": "^3.0.1", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", @@ -2445,15 +2376,15 @@ } }, "@storybook/addons": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.14.tgz", - "integrity": "sha512-zoN1MYlArdThp93i+Ogil/pihyx8n7nkrdSO0j9HUh6jUsGeFFEluPQZdRFte9NIoY6ZWSWwuEMDgrv2Pw9r2Q==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.17.tgz", + "integrity": "sha512-zg6O1bmffRsHXJOWAnSD2O3tPnVMoD8Yfu+a5zBVXDiUP1E/TGzgjjjYBUUCU3yQg1Ted5rIn4o6ql/rZNNlgA==", "dev": true, "requires": { - "@storybook/api": "5.3.14", - "@storybook/channels": "5.3.14", - "@storybook/client-logger": "5.3.14", - "@storybook/core-events": "5.3.14", + "@storybook/api": "5.3.17", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", "core-js": "^3.0.1", "global": "^4.3.2", "util-deprecate": "^1.0.2" @@ -2468,18 +2399,18 @@ } }, "@storybook/api": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.14.tgz", - "integrity": "sha512-ANWRMTLEoAfu0IsXqbxmbTpxS8xTByZgLj20tH96bxgH1rJo9KAZnJ8A9kGYr+zklU8QnYvVIgmV3HESXII9zg==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.17.tgz", + "integrity": "sha512-G40jtXFY10hQo6GSw5JeFYt41loD4+7s0uU18Rm6lfa/twOgp6vqqyDCWDvpRRxRBB5uDIKKHLt13X9gWe8tQQ==", "dev": true, "requires": { "@reach/router": "^1.2.1", - "@storybook/channels": "5.3.14", - "@storybook/client-logger": "5.3.14", - "@storybook/core-events": "5.3.14", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", "@storybook/csf": "0.0.1", - "@storybook/router": "5.3.14", - "@storybook/theming": "5.3.14", + "@storybook/router": "5.3.17", + "@storybook/theming": "5.3.17", "@types/reach__router": "^1.2.3", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", @@ -2510,13 +2441,13 @@ } }, "@storybook/channel-postmessage": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.14.tgz", - "integrity": "sha512-XKHxMSwW3movfTDOashuYlVCX3Hp7+X+amXc/xhDDzbiYjy3/CVm3LlkkM6v451IVEdK6pue4ewqZQWJAYAAEQ==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.17.tgz", + "integrity": "sha512-1aSQNeO2+roPRgMFjW3AWTO3uS93lbCMUTYCBdi20md4bQ9SutJy33rynCQcWuMj1prCQ2Ekz4BGhdcIQVKlzg==", "dev": true, "requires": { - "@storybook/channels": "5.3.14", - "@storybook/client-logger": "5.3.14", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", "core-js": "^3.0.1", "global": "^4.3.2", "telejson": "^3.2.0" @@ -2531,9 +2462,9 @@ } }, "@storybook/channels": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.14.tgz", - "integrity": "sha512-k9QBf9Kwe+iGmdEK/kW5xprqem2SPfBVwET6LWvJkWOl9UQ9VoMuCHgV55p0tzjcugaqWWKoF9+FRMWxWRfsQg==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.17.tgz", + "integrity": "sha512-5hlBRbyk+YxC4KgecYG8wWwB2v1BzRJXhSlemFDOQk9wx37gVpne+rBydEtNFO4InmaZf6tKbBcpH0wBFLdWYA==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2548,16 +2479,16 @@ } }, "@storybook/client-api": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.14.tgz", - "integrity": "sha512-1qx1NIwto5F9N24Fb6VzKyDzeaZHtWTZ7afPrg56e1tUu7jbog7rELdRezk8+YAujveyMDJu4MxnOSP01sv7YQ==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.17.tgz", + "integrity": "sha512-oe55FPTGVL2k+j45eCN3oE7ePkE4VpgUQ/dhJbjU0R2L+HyRyBhd0wnMYj1f5E8uVNbtjFYAtbjjgcf1R1imeg==", "dev": true, "requires": { - "@storybook/addons": "5.3.14", - "@storybook/channel-postmessage": "5.3.14", - "@storybook/channels": "5.3.14", - "@storybook/client-logger": "5.3.14", - "@storybook/core-events": "5.3.14", + "@storybook/addons": "5.3.17", + "@storybook/channel-postmessage": "5.3.17", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", "@storybook/csf": "0.0.1", "@types/webpack-env": "^1.15.0", "core-js": "^3.0.1", @@ -2581,9 +2512,9 @@ } }, "@storybook/client-logger": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.14.tgz", - "integrity": "sha512-YCHEsOvo6zPb4udlyAwqr5W0Kv9mAEQmcX73w9IDvAxbjR00T7empW7qmbjvviftKB/5MEgDdiYbj64ccs3aqg==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.17.tgz", + "integrity": "sha512-GYYvVGIOs+fq11LXXy7x2sr3hhC9LMI1jtIckjKV1dsY9MJ5g22M+Wl5Iw4nf6VMWsqcN9LSlYE+u/H+Q2uCHw==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2598,14 +2529,14 @@ } }, "@storybook/components": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.14.tgz", - "integrity": "sha512-AsjkIFBrrqcBDLxGdmUHiauZo5gOL65eXx8WA7/yJDF8s45VVZX5Z0buOnjFyEhGVus02gwTov8da2irjL862A==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.17.tgz", + "integrity": "sha512-M5oqbzcqFX4VDNI8siT3phT7rmFwChQ/xPwX9ygByBsZCoNuLMzafavfTOhZvxCPiliFbBxmxtK/ibCsSzuKZg==", "dev": true, "requires": { - "@storybook/client-logger": "5.3.14", - "@storybook/theming": "5.3.14", - "@types/react-syntax-highlighter": "11.0.2", + "@storybook/client-logger": "5.3.17", + "@storybook/theming": "5.3.17", + "@types/react-syntax-highlighter": "11.0.4", "@types/react-textarea-autosize": "^4.3.3", "core-js": "^3.0.1", "global": "^4.3.2", @@ -2635,9 +2566,9 @@ } }, "@storybook/core": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.14.tgz", - "integrity": "sha512-Y57cchCRw1vvZe8OhMmgAkaHciGLm2eztdfzZMUmeHH8csBt/0RO5gYzOhWDGgdC2D9HSlaysZEDJ6sH3PChlw==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.17.tgz", + "integrity": "sha512-H6G8ygjb4RSVSKPdWz6su3Nvzxm8CfrHuCyUo4DLC46mirXfYRrJV1HiwXriViqoZV4gFbpaNKTDzTl/QKFDAg==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.7.0", @@ -2645,16 +2576,16 @@ "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-env": "^7.4.5", - "@storybook/addons": "5.3.14", - "@storybook/channel-postmessage": "5.3.14", - "@storybook/client-api": "5.3.14", - "@storybook/client-logger": "5.3.14", - "@storybook/core-events": "5.3.14", + "@storybook/addons": "5.3.17", + "@storybook/channel-postmessage": "5.3.17", + "@storybook/client-api": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", "@storybook/csf": "0.0.1", - "@storybook/node-logger": "5.3.14", - "@storybook/router": "5.3.14", - "@storybook/theming": "5.3.14", - "@storybook/ui": "5.3.14", + "@storybook/node-logger": "5.3.17", + "@storybook/router": "5.3.17", + "@storybook/theming": "5.3.17", + "@storybook/ui": "5.3.17", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "autoprefixer": "^9.7.2", @@ -2715,6 +2646,18 @@ "webpack-virtual-modules": "^0.2.0" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -2762,6 +2705,12 @@ "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", "dev": true }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "file-loader": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", @@ -2819,12 +2768,12 @@ "dev": true }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, @@ -2857,9 +2806,9 @@ } }, "@storybook/core-events": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.14.tgz", - "integrity": "sha512-VCPLKqRugsOSx/smMJiJOvRgAzTrMpsbRuFw48kBGkQMP9TEV82Qe/341dv+f4GllPyBZyANG0p0m5+w7ZCURQ==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.17.tgz", + "integrity": "sha512-DOeX9fpeGW4o9Gocxa4VW9wAlAyfIVNDTzq0wVvvMBthTTo9u58NmndglEMDgDa2Cq6iAIPh7vz2bRJCNexzLw==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2883,9 +2832,9 @@ } }, "@storybook/node-logger": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.14.tgz", - "integrity": "sha512-/phRS49/hMZ5SU4EKUxX2kFepm9iw1cJBzggOz0GA1Yj4r9g1TA1H+OD7QvZvVTC3AESf/ZUJyaqnXEh/l+hpg==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.17.tgz", + "integrity": "sha512-onfcxl37BYZI1HGuPI9MelkyUWjn7NpfN8RUYdqG9P6WKiIY5xbpG0V6qod5jvIKIypK0NmfJTtneOu46L/oDg==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -2955,17 +2904,17 @@ } }, "@storybook/react": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.3.14.tgz", - "integrity": "sha512-8n0oCkaxFMrimngxnISEQFkHGSF5z65Lh1XPypjIndIJ0b/IVWRJcUEh3M3xOaydFatEG+lfQbF/5OznyYEefA==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.3.17.tgz", + "integrity": "sha512-FQLH3q2Ge68oLBaTge7wl5Y1KkB+pqL36llor7TOO9IxGLF6o2t2qillWnrgX6yZUpkvJK8MgkZW1/N3tslw4Q==", "dev": true, "requires": { "@babel/plugin-transform-react-constant-elements": "^7.6.3", "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", - "@storybook/addons": "5.3.14", - "@storybook/core": "5.3.14", - "@storybook/node-logger": "5.3.14", + "@storybook/addons": "5.3.17", + "@storybook/core": "5.3.17", + "@storybook/node-logger": "5.3.17", "@svgr/webpack": "^4.0.3", "@types/webpack-env": "^1.15.0", "babel-plugin-add-react-displayname": "^0.0.5", @@ -3010,9 +2959,9 @@ } }, "@storybook/router": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.14.tgz", - "integrity": "sha512-O0KwQFncdBeq+O2Aq8UAFBVWjWmP5rtqoacUOFSGkXgObOnyniEraLiPH7rPtq2dAlSpgYI9+srQAZfo52Hz2A==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.17.tgz", + "integrity": "sha512-ANsiehGRTVSremgTW0Vt47dQ4JA86a4/w/4G6QqHU8Cm4jO3cw/wAcCxlzfcgCXOUiq+SuyPTU43+0O5uBx33g==", "dev": true, "requires": { "@reach/router": "^1.2.1", @@ -3035,14 +2984,14 @@ } }, "@storybook/theming": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.14.tgz", - "integrity": "sha512-raqXC3yJycEt1CrCAfnBYUA6pyJI80E9M26EeQl3UfytJOL6euprOi+D17QvxqBn7jmmf9ZDw5XRkvJhQ17Y7Q==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.17.tgz", + "integrity": "sha512-4JeOZnDDHtb4LOt5sXe/s1Jhbb2UPsr8zL9NWmKJmTsgnyTvBipNHOmFYDUsIacB5K4GXSqm+cZ7Z4AkUgWCDw==", "dev": true, "requires": { "@emotion/core": "^10.0.20", "@emotion/styled": "^10.0.17", - "@storybook/client-logger": "5.3.14", + "@storybook/client-logger": "5.3.17", "core-js": "^3.0.1", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.19", @@ -3063,20 +3012,20 @@ } }, "@storybook/ui": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.14.tgz", - "integrity": "sha512-4zQOxpcvbKqRevmFw3Er6AWr2MeEMQfnuYh4Vm5G5YpiTyM6PU0VTVRzKnkEbNBcgjClD7nwXSbkUJjW6MJ8SA==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.17.tgz", + "integrity": "sha512-5S9r70QbtNKu8loa5pfO5lLX9coF/ZqesEKcanfvuSwqCSg/Z51UwFCuO6eNhVlpXzyZXi5d8qKbZlbf+uvDAA==", "dev": true, "requires": { "@emotion/core": "^10.0.20", - "@storybook/addons": "5.3.14", - "@storybook/api": "5.3.14", - "@storybook/channels": "5.3.14", - "@storybook/client-logger": "5.3.14", - "@storybook/components": "5.3.14", - "@storybook/core-events": "5.3.14", - "@storybook/router": "5.3.14", - "@storybook/theming": "5.3.14", + "@storybook/addons": "5.3.17", + "@storybook/api": "5.3.17", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/components": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/router": "5.3.17", + "@storybook/theming": "5.3.17", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", "core-js-pure": "^3.0.1", @@ -3119,210 +3068,475 @@ } }, "@styled-icons/boxicons-logos": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/boxicons-logos/-/boxicons-logos-9.4.1.tgz", - "integrity": "sha512-DN6Za9paJeWkoIXI1newSSfDALIR8ecaAsgzP3ZD+NRJHy6idW+1ouC5p3DlRM29+Cp4yJ/z3bH9whBDbd7YXQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/boxicons-logos/-/boxicons-logos-10.0.0.tgz", + "integrity": "sha512-su7cuMcn1rOxUcq9IxqW6LafOGfD20NAzewzJErktUPx/i+d9Hu380lIoKmvLAH1lXEdGggTGlYBgu0vbIRyMw==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/boxicons-regular": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/boxicons-regular/-/boxicons-regular-9.4.1.tgz", - "integrity": "sha512-910zIWCB0JkEgk9I7zIIEdPc8xibg3xrT4Wo7gIu4lGEr4u9OOQT3c0ajJD7F+JlhWcWBVumzjfjOT8A5UjPJw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/boxicons-regular/-/boxicons-regular-10.0.0.tgz", + "integrity": "sha512-/AlI3YTCdHvQDxJJRh6AAL0NaU8lwle3gXJ1I0f1I/MHhPO7N7VAB1jN3fcqj6i3Cwvz88HJ9DC+Mx+wQAUKAg==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/boxicons-solid": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/boxicons-solid/-/boxicons-solid-9.4.1.tgz", - "integrity": "sha512-7FvU6KSnxBprsidta3/0grTkimYWDUnSZCyLscT1OwjmfyFPpnLNmJASQDrEtORF2GPw5Y2gc/q6h2RI4OnYcA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/boxicons-solid/-/boxicons-solid-10.0.0.tgz", + "integrity": "sha512-gz8swxbEpKNPmdoeIwfV3gQuHb1BpesuEpeeJ3fbtvOOltho8JAxvhE7fDX1b5FHXZl5DOsPqI86N/QSo/3dqg==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/crypto": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/crypto/-/crypto-9.4.1.tgz", - "integrity": "sha512-qIjzvaw0kFykDN7PTGD8d3HvFVoX7kW7nwlvvzW/pGhVzpUHE7Mh2Syc04HpoknCgO0fCjAzXaxi9Igu3nS9NA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/crypto/-/crypto-10.0.0.tgz", + "integrity": "sha512-lIqg7wwrt9sP1wDrm9suARojs2e9TS4v/6NCmX7GsBzz+iP+iNbMSwsntTX6SAVxsNIADkMPdf47yF3GLoID1A==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/entypo": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/entypo/-/entypo-9.5.0.tgz", - "integrity": "sha512-gy/CXs45g1o5c61BnSnpd/cb84sXIARPByOa354FkN0aUHqepbF2qtBjZ3Udho6zWpm1nGOOUiawQb53PnG9vg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/entypo/-/entypo-10.0.0.tgz", + "integrity": "sha512-MMQOb/BPKRBIVpUI5DAFKK6dqdTvLkMbm/WttCKRZSIFxgZfBG9CYnjB1yydqlC3bWWhJsmhOdM5PzKTXvxb/w==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/entypo-social": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/entypo-social/-/entypo-social-9.5.0.tgz", - "integrity": "sha512-yEpaJtTUriZSZPT/iqxgNONgxDYr0MHXANvoUW2CB0Ey4zTZst+2x7EJ9KgL2CjdBgA0bs8hnx5etGHUi8BtuA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/entypo-social/-/entypo-social-10.0.0.tgz", + "integrity": "sha512-H1uFWET+J+R5pVtRkRsPUbpGkkNCdDBhsXVDAF5M9nVEUx76Dmcl0mfRFg7+tfMvQjvfi/V30Sj/tacLXoTj+w==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, - "@styled-icons/evil": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/evil/-/evil-9.4.1.tgz", - "integrity": "sha512-ejCBH+aXrjtBM+iMJomYlZ/xiJ+NGHVlIfQmkgD6roxtJzMzAmhwXgC5S3p0no2n1EXluUdJiufrI/QtP7iNbA==", + "@styled-icons/evaicons-outline": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@styled-icons/evaicons-outline/-/evaicons-outline-10.2.0.tgz", + "integrity": "sha512-TOPl//uVmDzbpDueQnNdie2jh7wjf1AwPxdbv/kEIHzxZyLcCZwHJGYC+zQfV6ByLWimaaPnUq7dAr0cD+lUTA==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" - } + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@styled-icons/evaicons-solid": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@styled-icons/evaicons-solid/-/evaicons-solid-10.2.0.tgz", + "integrity": "sha512-Yd3F+jvjHkI8iqDnoqhg2sFyGe9+NVxFDfjmUKL3wBH8e59tPFAHzX3ATsCE3dGyFOWtvyaKc5mKf0PculvHSw==", + "requires": { + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@styled-icons/evil": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/evil/-/evil-10.0.0.tgz", + "integrity": "sha512-cVr8I6bF1jphAcUIQOM5ziqa2h3FXhNq+JrBjsizdWO8iK/cXeZ7eTxrqRJ3RnXED15Q5f0Oh55hw8r2MSVACg==", + "requires": { + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } }, "@styled-icons/fa-brands": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/fa-brands/-/fa-brands-9.4.1.tgz", - "integrity": "sha512-zqlS/Y3mQLdBgRhZo1op5+twKYYwfS7OjqL90N+etokIWPqv1b7nwPWzwKoRpqDfCt/gyqmgxXqWufFd0CAx7Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/fa-brands/-/fa-brands-10.0.0.tgz", + "integrity": "sha512-OzTXI7czu2B0XSHeVqS8QqutsYKGxy1FgY6Hq+QX11iktrOnti9wxz2fvb0CyrJT3jHm2eGb6nP6xXIgjA4YUg==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/fa-regular": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/fa-regular/-/fa-regular-9.4.1.tgz", - "integrity": "sha512-tpgLOUPECtWNwVs7G82IaDkb1T13yNyDNZBB85sEO02ldHAZe6tt0Yi5gGCBExtU/p+4/jLTcU+pcoh/mySlVg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/fa-regular/-/fa-regular-10.0.0.tgz", + "integrity": "sha512-LgDxi+sqTF4//LYBQ1rfy4yqCoNyUPuYoPVz9y1EWKwK15I5UDeCI+ycHXGlXLAqlipX0lSTrAkAOJyVAXQ0mw==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/fa-solid": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/fa-solid/-/fa-solid-9.4.1.tgz", - "integrity": "sha512-ZyPxbCFmuuy3XotCI0SgHyUn3gTvQXm+iVnh+8r0gR8Kd88iTTubTqxgtdS0lrefaB4ayl6vEg20Dv9e9PvYVg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/fa-solid/-/fa-solid-10.0.0.tgz", + "integrity": "sha512-ZfRhJNHudVLYoqHANjNt0UifFrmkiWAJi6SkAcPujX9iwxBdC3bDMQm+J9j7Z1XWstVIusZoLJ7Ax3rdywpK/A==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/feather": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/feather/-/feather-9.4.1.tgz", - "integrity": "sha512-ucMOPhvaCp6N4lxL+z/66Kech20jAdMfewER732jhjV8P3FknoAY2+0CXXE+tBvJoJ/SOJZDOsW58Gr7yAWXOQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/feather/-/feather-10.0.0.tgz", + "integrity": "sha512-ubgZH0Irx4L0Q02WJtg7f+IFRBRA8YtNZCOCezFPS9Bqdq3IV76NrYK1/+yP6ZTEyxurxjJdzVot8JMwUhgicA==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/foundation": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/foundation/-/foundation-9.5.0.tgz", - "integrity": "sha512-O4Y62bfZfZjhZDXYtJYd/RsID1vpmMtgLSP54b0KbvY70hjdlFQZ0ZVR2fAzA0YSK90VjbYBbQDCCyqim4v3qA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/foundation/-/foundation-10.0.0.tgz", + "integrity": "sha512-uAaJL16vBg3YG/G3IU0stH/8HVsAttUmJe3u2kiVapol8Tk/mscTlwdS95MhFpoDZ8fWWhivJcWcJ5kaqf08wQ==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/heroicons-outline": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/heroicons-outline/-/heroicons-outline-9.5.0.tgz", - "integrity": "sha512-MMY5NjVVimhTHhk+ADR4/a2KpjIjbmzW+SNPRCKMWgGyqXx1NjBrD72bnvrzApLdMnDvEsM/DYK6DVUW7UZhKw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/heroicons-outline/-/heroicons-outline-10.0.0.tgz", + "integrity": "sha512-N/foqMX0/2RkeREYD5heTbrX61pWlpq25Fvd88L+k1/S63f/uyRQWLrKzh5ydzzjsioKzSzvYtLsuIcJ92wRTg==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/heroicons-solid": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/heroicons-solid/-/heroicons-solid-9.5.0.tgz", - "integrity": "sha512-dYQYdxZ0BkGpl3nGQmkvONF1+Yq+E6I9S7snba1mirCDWQpIdgylGm+Z9CM/OvdIlhr5da00D4oZu+2CiGdCFQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/heroicons-solid/-/heroicons-solid-10.0.0.tgz", + "integrity": "sha512-pzAVHSazKhyBjGBMg6UMX/hwnrWJNvQeW0oS5oSSeQnwjCYSyAP7fd2aqZQKWg/LGymep4f/ZYADVzoxlQwNqA==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/icomoon": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/icomoon/-/icomoon-9.4.1.tgz", - "integrity": "sha512-oEw84P55EahJFdhQPBnUbvQqB08LuJKq75AkwaCSqk6w1DIEDbjY72lb6mbAwZB/AwNYeRVJJhTHaF1MNY103A==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/icomoon/-/icomoon-10.0.0.tgz", + "integrity": "sha512-3gcCl8LO/vkkctCm3TqLftVSqcWZanUuc4n7f2q5oeU5wVeBMsOkCLVmHIh0Z9I7UXYBKAzsFB1YRr7fOxwtWA==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/material": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/material/-/material-9.4.1.tgz", - "integrity": "sha512-7Ucsm7RxCrnznZb+WDptBrGE45ZVBODm6J0e+fy0hvO9sjWAcuoKffYTcQEhDS2pqC1Rcc/nSZHDbqwZrpGJVw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/material/-/material-10.0.0.tgz", + "integrity": "sha512-RNPlB7AUhPWQYLEH1/zNSu8fv7Hpdp7ylFMtMjgEyZNf25jW1NLwBBoGEZmUixc5uyIRmNk7JC/Jj2SoymAtJA==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@styled-icons/material-outlined": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/material-outlined/-/material-outlined-10.0.0.tgz", + "integrity": "sha512-QHKP4iCLMZAOEP5CaQ/YS12O7kaE2txIQmqUqaFJTgcX8P10UhkuSfBrafVRFRPiEPGWvoWNLWi6oxkyoiVATg==", + "requires": { + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@styled-icons/material-rounded": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/material-rounded/-/material-rounded-10.0.0.tgz", + "integrity": "sha512-f84febrgHalRwlVqJrjLJczW5/gp9chEv9RE0B+N6ks91V90sYNzrg5AcsfQjvZjUjTxSlJD4sZfph/2gs5S0A==", + "requires": { + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@styled-icons/material-sharp": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/material-sharp/-/material-sharp-10.0.0.tgz", + "integrity": "sha512-5gUiw0KsFY0BBUl/+Yn2KlbOEtyNh15O4NsrK7egOGC5L52LKWyScfYdzBh25MEjd+qOY3FhR64rufVnl65Xxg==", + "requires": { + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@styled-icons/material-twotone": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/material-twotone/-/material-twotone-10.0.0.tgz", + "integrity": "sha512-bAASpDp2pN+XospcBJvlsJHsPVistv8glmN6GpbsXVgKxFUCGqIE6sV5MOGKylJtAlvfv6zge0b+H0w8QmOSXA==", + "requires": { + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/octicons": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/octicons/-/octicons-9.4.1.tgz", - "integrity": "sha512-MHiMMah2agDpmk8JcNLgeZab74TO3elM8CIYIQahrucyVbHfCY7mX1z8OOyXZwrf/hgrBKK4nUM4jf0wxk70+Q==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@styled-icons/octicons/-/octicons-10.1.0.tgz", + "integrity": "sha512-1ThTFhAZbxz9XEGgasOZY4OGsvkUZm50PaHHjhqsMS448ZxTx99cLQ0O8PLjIuhrasO6i1rP4WCUOUWzb20aRw==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/open-iconic": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/open-iconic/-/open-iconic-9.5.0.tgz", - "integrity": "sha512-mSDnCPDKYXhXY+oNfgNKMj2+ltl63k8QIC6bCDsX18bYXDqkeEwKthfNw0minabyP4Tq+yJe/B03RH+EdQWmDg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/open-iconic/-/open-iconic-10.0.0.tgz", + "integrity": "sha512-dHs+3uLaXAzwPl8wJbE793I7VMcsgxgEIgHo3cff+kbCOPEa29C97qmsYU8lcnuvce7twJYT6ViaUKc3skhYZw==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/remix-fill": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/remix-fill/-/remix-fill-9.4.1.tgz", - "integrity": "sha512-OlxQudeM/u+IAHacSVwwiuSYBDSsQNKA4gr8WSFHpy1CEciLc/hE/aNJP+SLcBETdg/C/kJIj8JNme5B8aYIeg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/remix-fill/-/remix-fill-10.0.0.tgz", + "integrity": "sha512-w1JuoufsEMa3LoLk943mH8KFynqAjywdZjsvdJW7ir4ufPkCw+ZS/4jRBG5qZ3oWSTuEFJzBs/RlBoTbh/X1rg==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/remix-line": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/remix-line/-/remix-line-9.4.1.tgz", - "integrity": "sha512-NAdR8LD7ugeUhmd6W3v+GA5/6OBexe15fjQTt1kFHYclS+2nrLQ7MA4kF5SkwsRQNGPy+3CMN5cQoMy5R8NAtQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/remix-line/-/remix-line-10.0.0.tgz", + "integrity": "sha512-8Q2ch6eGm5lZiPLBGkyrPVJ0UpSM+VEtxhIrRJJFtfJmLOJegJEIfOuu42BMdXmHqS16TFQZPTP7+0BMn0Qtgw==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/styled-icon": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/styled-icon/-/styled-icon-9.4.1.tgz", - "integrity": "sha512-qF0E2QOcyR1e6rh1QkKGsFt9vuayhZBJEKRa8erbHpOYLRNiEmoF1dLEVVMUKjnj5jAzzk0fNd8jSz0su3kpKg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/styled-icon/-/styled-icon-10.0.0.tgz", + "integrity": "sha512-owIKYlIOv+daYscp6vnymOXiOAR6lsDoB2HYI10KrreovX0Ny48qbyqKjirvtxLFyEiHoz8QXSNO6QbanINv9Q==", "requires": { - "@emotion/is-prop-valid": "^0.8.6", - "tslib": "^1.9.3" + "@emotion/is-prop-valid": "^0.8.7", + "tslib": "^1.11.1" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/typicons": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@styled-icons/typicons/-/typicons-9.4.1.tgz", - "integrity": "sha512-gV3W836B7k7FuNjZJt2H7WYcV+wPf7L5RYJQUL99lPdvADeOUhG2hIVIKvmS4F2Tc3XbyYbRmSBPTHtu4Fcftg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/typicons/-/typicons-10.0.0.tgz", + "integrity": "sha512-Laaj996ZQmMpk3zU/F92S2aOfNmNoerqOPogM5I0AjwNXX9TdmrajV68kov5Sa3JnodbYSB/zrhoV9ED2OOX/w==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@styled-icons/zondicons": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@styled-icons/zondicons/-/zondicons-9.5.0.tgz", - "integrity": "sha512-26PYTzSr85tf1+P/N1zaqbLuJLG1YP9rp3QN1TsCcM19gT0Y3WzVUmiNHdv15jGO9bH/jpV9b7TjuT+1gkMPCw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@styled-icons/zondicons/-/zondicons-10.0.0.tgz", + "integrity": "sha512-uKr8LQjsj0awENj/8uoapfejAjwsLPuAkjOQxECGRY7qsAggdqV1F0YYo/BaV8oc0eSQ4RJmp7Fv76ecxs7uew==", "requires": { - "@styled-icons/styled-icon": "^9.4.1", - "tslib": "^1.9.3" + "@styled-icons/styled-icon": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "@svgr/babel-plugin-add-jsx-attribute": { @@ -3400,12 +3614,6 @@ "cosmiconfig": "^5.2.1" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -3535,74 +3743,32 @@ } }, "@testing-library/dom": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.12.2.tgz", - "integrity": "sha512-KCnvHra5fV+wDxg3wJObGvZFxq7v1DJt829GNFLuRDjKxVNc/B5AdsylNF5PMHFbWMXDsHwM26d2NZcZO9KjbQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.1.3.tgz", + "integrity": "sha512-wFMQdKrTwTTlTe6n0KN+KjOtgOV0viIyfr+f+7Csq+1pD0o+ho7FrjCjkNpx6NEsx8jHDtZ4WU3cGOuLc9LvQg==", "dev": true, "requires": { - "@babel/runtime": "^7.6.2", - "@sheerun/mutationobserver-shim": "^0.3.2", - "@types/testing-library__dom": "^6.0.0", - "aria-query": "3.0.0", - "pretty-format": "^24.9.0", - "wait-for-expect": "^3.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "@babel/runtime": "^7.9.2", + "@types/testing-library__dom": "^7.0.0", + "aria-query": "^4.0.2", + "dom-accessibility-api": "^0.4.2", + "pretty-format": "^25.1.0" } }, "@testing-library/jest-dom": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.1.1.tgz", - "integrity": "sha512-7xnmBFcUmmUVAUhFiZ/u3CxFh1e46THAwra4SiiKNCW4By26RedCRwEk0rtleFPZG0wlTSNOKDvJjWYy93dp0w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.3.0.tgz", + "integrity": "sha512-Cdhpc3BHL888X55qBNyra9eM0UG63LCm/FqCWTa1Ou/0MpsUbQTM9vW1NU6/jBQFoSLgkFfDG5XVpm2V0dOm/A==", "dev": true, "requires": { - "@babel/runtime": "^7.8.3", - "@types/testing-library__jest-dom": "^5.0.0", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.0.2", "chalk": "^3.0.0", "css": "^2.2.4", "css.escape": "^1.5.1", "jest-diff": "^25.1.0", "jest-matcher-utils": "^25.1.0", "lodash": "^4.17.15", - "pretty-format": "^25.1.0", "redent": "^3.0.0" }, "dependencies": { @@ -3659,14 +3825,14 @@ } }, "@testing-library/react": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.4.1.tgz", - "integrity": "sha512-sta3ui24HPgW92quHyQj6gpOkNgLNx8BX/QOU4k1bddo43ZdqlGwmzCYwL93bExfhergwiau+IzBGl7TCsSFeA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.0.1.tgz", + "integrity": "sha512-sMHWud2dcymOzq2AhEniICSijEwKeTiBX+K0y36FYNY7wH2t0SIP1o732Bf5dDY0jYoMC2hj2UJSVpZC/rDsWg==", "dev": true, "requires": { - "@babel/runtime": "^7.8.3", - "@testing-library/dom": "^6.11.0", - "@types/testing-library__react": "^9.1.2" + "@babel/runtime": "^7.8.7", + "@testing-library/dom": "^7.0.2", + "@types/testing-library__react": "^9.1.3" } }, "@types/anymatch": { @@ -3676,9 +3842,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", + "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -3708,9 +3874,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", - "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", + "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -3745,6 +3911,12 @@ "integrity": "sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw==", "dev": true }, + "@types/html-minifier-terser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.0.0.tgz", + "integrity": "sha512-q95SP4FdkmF0CwO0F2q0H6ZgudsApaY/yCtAQNRn1gduef5fGpyEphzy0YCq/N0UFvDSnLg5V8jFK/YGXlDiCw==", + "dev": true + }, "@types/is-function": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.0.tgz", @@ -3758,9 +3930,9 @@ "dev": true }, "@types/istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" @@ -3777,9 +3949,9 @@ } }, "@types/jest": { - "version": "25.1.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.1.3.tgz", - "integrity": "sha512-jqargqzyJWgWAJCXX96LBGR/Ei7wQcZBvRv0PLEu9ZByMfcs23keUJrKv9FMR6YZf9YCbfqDqgmY+JUBsnqhrg==", + "version": "25.1.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.1.4.tgz", + "integrity": "sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw==", "dev": true, "requires": { "jest-diff": "^25.1.0", @@ -3815,6 +3987,12 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", + "dev": true + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -3828,9 +4006,9 @@ "dev": true }, "@types/reach__router": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.0.tgz", - "integrity": "sha512-0aL79bFPJzJOJOOMZm2301ErQVaveBdpW88uuavXymUlcYIAOCmI1ujJ2XLH6Mzn76O94eQCHIl1FDzNNKJCYA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.1.tgz", + "integrity": "sha512-E51ntVeunnxofXmOoPFiOvElHWf+jBEs3B56gGx7XhPHOkJdjWxWDY4V1AsUiwhtOCXPM7atFy30wj7glyv2Fg==", "dev": true, "requires": { "@types/history": "*", @@ -3838,9 +4016,9 @@ } }, "@types/react": { - "version": "16.9.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.23.tgz", - "integrity": "sha512-SsGVT4E7L2wLN3tPYLiF20hmZTPGuzaayVunfgXzUn1x4uHVsKH6QDJQ/TdpHqwsTLd4CwrmQ2vOgxN7gE24gw==", + "version": "16.9.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.27.tgz", + "integrity": "sha512-j+RvQb9w7a2kZFBOgTh+s/elCwtqWUMN6RJNdmz0ntmwpeoMHKnyhUcmYBu7Yw94Rtj9938D+TJSn6WGcq2+OA==", "dev": true, "requires": { "@types/prop-types": "*", @@ -3866,9 +4044,9 @@ } }, "@types/react-syntax-highlighter": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz", - "integrity": "sha512-iMNcixH8330f2dq0RY+VOXCP8JFehgmOhLOtnO85Ty+qu0fHXJNEqWx5VuFv8v0aEq0U/N9d/k1yvA+c6PEmPw==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz", + "integrity": "sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg==", "dev": true, "requires": { "@types/react": "*" @@ -3902,71 +4080,32 @@ "dev": true }, "@types/testing-library__dom": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.12.1.tgz", - "integrity": "sha512-cgqnEjxKk31tQt29j4baSWaZPNjQf3bHalj2gcHQTpW5SuHRal76gOpF0vypeEo6o+sS5inOvvNdzLY0B3FB2A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-7.0.0.tgz", + "integrity": "sha512-1TEPWyqQ6IQ7R1hCegZmFSA3KrBQjdzJW7yC9ybpRcFst5XuPOqBGNr0mTAKbxwI/TrTyc1skeyLJrpcvAf93w==", "dev": true, "requires": { - "pretty-format": "^24.3.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "pretty-format": "^25.1.0" } }, "@types/testing-library__jest-dom": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.1.tgz", - "integrity": "sha512-GiPXQBVF9O4DG9cssD2d266vozBJvC5Tnv6aeH5ujgYJgys1DYm9AFCz7YC+STR5ksGxq3zCt+yP8T1wbk2DFg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.2.tgz", + "integrity": "sha512-dZP+/WHndgCSmdaImITy0KhjGAa9c0hlGGkzefbtrPFpnGEPZECDA0zyvfSp8RKhHECJJSKHFExjOwzo0rHyIA==", "dev": true, "requires": { "@types/jest": "*" } }, "@types/testing-library__react": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz", - "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz", + "integrity": "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==", "dev": true, "requires": { "@types/react-dom": "*", - "@types/testing-library__dom": "*" + "@types/testing-library__dom": "*", + "pretty-format": "^25.1.0" } }, "@types/uglify-js": { @@ -4025,185 +4164,184 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, "@xobotyi/scrollbar-width": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.3.tgz", - "integrity": "sha512-15JdCA3BjDktOdJ9xRdxkZcd2ZiHHbb3ycSPtC9JCjwkHzvrPr3n8uZoNw9CYF6UhkIMnW85d+P9mi3eXaKcFg==" + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", + "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" }, "@xtuc/ieee754": { "version": "1.2.0", @@ -4234,9 +4372,9 @@ } }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "acorn-globals": { @@ -4247,14 +4385,6 @@ "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", - "dev": true - } } }, "acorn-jsx": { @@ -4542,13 +4672,13 @@ } }, "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.0.2.tgz", + "integrity": "sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w==", "dev": true, "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "@babel/runtime": "^7.7.4", + "@babel/runtime-corejs3": "^7.7.4" } }, "arr-diff": { @@ -4719,15 +4849,9 @@ "dev": true }, "ast-types": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", - "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", "dev": true }, "astral-regex": { @@ -4757,15 +4881,6 @@ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, - "async-retry": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz", - "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==", - "dev": true, - "requires": { - "retry": "0.12.0" - } - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -4779,23 +4894,81 @@ "dev": true }, "attr-accept": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.0.0.tgz", - "integrity": "sha512-I9SDP4Wvh2ItYYoafEg8hFpsBe96pfQ+eabceShXt3sw2fbIP96+Aoj9zZE0vkZNAkXXzHJATVRuWz+h9FxJxQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.1.0.tgz", + "integrity": "sha512-sLzVM3zCCmmDtDNhI0i96k6PUztkotSOXqE4kDGQt/6iDi5M+H0srjeF+QC6jN581l4X/Zq3Zu/tgcErEssavg==" }, "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", - "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.5.tgz", + "integrity": "sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==", "dev": true, "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", + "browserslist": "^4.11.0", + "caniuse-lite": "^1.0.30001036", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + }, + "dependencies": { + "browserslist": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", + "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.380", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001038", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.390", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", + "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", + "dev": true + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "aws-sign2": { @@ -4810,16 +4983,6 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, - "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", - "dev": true, - "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -4921,41 +5084,20 @@ "dev": true }, "babel-jest": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.1.0.tgz", - "integrity": "sha512-tz0VxUhhOE2y+g8R2oFrO/2VtVjA1lkJeavlhExuRBg3LdNJY9gwQ+Vcvqt9+cqy71MCTJhewvTB7Qtnnr9SWg==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.2.4.tgz", + "integrity": "sha512-+yDzlyJVWrqih9i2Cvjpt7COaN8vUwCsKGtxJLzg6I0xhxD54K8mvDUCliPKLufyzHh/c5C4MRj4Vk7VMjOjIg==", "dev": true, "requires": { - "@jest/transform": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/transform": "^25.2.4", + "@jest/types": "^25.2.3", "@types/babel__core": "^7.1.0", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^25.1.0", + "babel-preset-jest": "^25.2.1", "chalk": "^3.0.0", "slash": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -5015,17 +5157,42 @@ } }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -5037,11 +5204,58 @@ "pkg-dir": "^3.0.0" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } } } }, @@ -5061,15 +5275,15 @@ } }, "babel-plugin-emotion": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.27.tgz", - "integrity": "sha512-SUNYcT4FqhOqvwv0z1oeYhqgheU8qrceLojuHyX17ngo7WtWqN5I9l3IGHzf21Xraj465CVzF4IvOlAF+3ed0A==", + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.29.tgz", + "integrity": "sha512-7Jpi1OCxjyz0k163lKtqP+LHMg5z3S6A7vMBfHnF06l2unmtsOmFDzZBpGf0CWo1G4m8UACfVcDJiSiRuu/cSw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.7.4", + "@emotion/hash": "0.8.0", "@emotion/memoize": "0.7.4", - "@emotion/serialize": "^0.11.15", + "@emotion/serialize": "^0.11.16", "babel-plugin-macros": "^2.0.0", "babel-plugin-syntax-jsx": "^6.18.0", "convert-source-map": "^1.5.0", @@ -5100,9 +5314,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.1.0.tgz", - "integrity": "sha512-oIsopO41vW4YFZ9yNYoLQATnnN46lp+MZ6H4VvPKFkcc2/fkl3CfE/NZZSmnEIEsJRmJAgkVEK0R7Zbl50CpTw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.1.tgz", + "integrity": "sha512-HysbCQfJhxLlyxDbKcB2ucGYV0LjqK4h6dBoI3RtFuOxTiTWK6XGZMsHb0tGh8iJdV4hC6Z2GCHzVvDeh9i0lQ==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" @@ -5333,14 +5547,14 @@ "dev": true }, "babel-preset-jest": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz", - "integrity": "sha512-eCGn64olaqwUMaugXsTtGAM2I0QTahjEtnRu0ql8Ie+gDWAc1N6wqN0k2NilnyTunM69Pad7gJY7LOtwLimoFQ==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.2.1.tgz", + "integrity": "sha512-zXHJBM5iR8oEO4cvdF83AQqqJf3tJrXy3x8nfu2Nlqvn4cneg4Ca8M7cQvC5S9BzDDy1O0tZ9iXru9J6E3ym+A==", "dev": true, "requires": { "@babel/plugin-syntax-bigint": "^7.0.0", "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^25.1.0" + "babel-plugin-jest-hoist": "^25.2.1" } }, "babel-preset-minify": { @@ -5956,12 +6170,6 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -6087,9 +6295,9 @@ "integrity": "sha1-JFUm+YH6/sZbjfIb7Cl3H1RsAWA=" }, "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, "browser-resolve": { @@ -6268,9 +6476,9 @@ "dev": true }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -6288,14 +6496,6 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" - }, - "dependencies": { - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - } } }, "cache-base": { @@ -6437,9 +6637,9 @@ } }, "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { @@ -6755,9 +6955,9 @@ "dev": true }, "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "dev": true, "optional": true, "requires": { @@ -6767,14 +6967,54 @@ } }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "clone-deep": { @@ -6790,12 +7030,6 @@ "shallow-clone": "^0.1.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -7522,18 +7756,26 @@ } }, "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", + "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } } }, "csstype": { @@ -7587,19 +7829,6 @@ "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } } }, "date-fns": { @@ -7609,9 +7838,9 @@ "dev": true }, "dayjs": { - "version": "1.8.21", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.21.tgz", - "integrity": "sha512-1kbWK0hziklUHkGgiKr7xm59KwAg/K3Tp7H/8X+f58DnNCwY3pKYjOCJpIlVs125FRBukGVZdKZojC073D0IeQ==" + "version": "1.8.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", + "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ==" }, "debug": { "version": "4.1.1", @@ -7937,12 +8166,6 @@ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", - "dev": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -8011,9 +8234,9 @@ } }, "diff-sequences": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.1.0.tgz", - "integrity": "sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.1.tgz", + "integrity": "sha512-foe7dXnGlSh3jR1ovJmdv+77VQj98eKCHHwJPbZ2eEf0fHwKbkZicpPxEch9smZ+n2dnF6QFwkOQdLq9hpeJUg==", "dev": true }, "diffie-hellman": { @@ -8063,6 +8286,12 @@ "esutils": "^2.0.2" } }, + "dom-accessibility-api": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz", + "integrity": "sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA==", + "dev": true + }, "dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -8159,27 +8388,6 @@ "requires": { "no-case": "^3.0.3", "tslib": "^1.10.0" - }, - "dependencies": { - "lower-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", - "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", - "dev": true, - "requires": { - "tslib": "^1.10.0" - } - }, - "no-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", - "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", - "dev": true, - "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" - } - } } }, "dot-prop": { @@ -8275,9 +8483,9 @@ } }, "downshift": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.0.3.tgz", - "integrity": "sha512-J6cfEcv0qbCUuI4yUhdoj08aJ025MxjLe+GkQ53eY5iC1NrjMj+FgjGkA0dGsyHm5JzVuKTJFd5wQNWOvsLP0g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.0.5.tgz", + "integrity": "sha512-V1idov3Rkvz1YWA1K67aIx51EgokIDvep4x6KmU7HhsayI8DvTEZBeH4O92zeFVGximKujRO7ChBzBAf4PKWFA==", "requires": { "@babel/runtime": "^7.4.5", "compute-scroll-into-view": "^1.0.9", @@ -8435,16 +8643,6 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, - "env-ci": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-2.6.0.tgz", - "integrity": "sha512-tnOi9qgtDxY3mvf69coXLHbSZtFMNGAJ1s/huirAhJZTx9rs/1qgFjl+6Z5ULQCfpDmlsf34L7wm+eJGwMazYg==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "java-properties": "^0.2.9" - } - }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", @@ -8512,9 +8710,9 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -8550,9 +8748,9 @@ } }, "es5-shim": { - "version": "4.5.13", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz", - "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.14.tgz", + "integrity": "sha512-7SwlpL+2JpymWTt8sNLuC2zdhhc+wrfe5cMPI2j0o6WsPdfAiPwmFy2f0AocPB4RQVBOZ9kNTgi5YF7TdhkvEg==", "dev": true }, "es6-shim": { @@ -8574,12 +8772,12 @@ "dev": true }, "escodegen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.1.tgz", - "integrity": "sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", "dev": true, "requires": { - "esprima": "^3.1.3", + "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", @@ -8689,9 +8887,9 @@ } }, "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz", + "integrity": "sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -8725,9 +8923,9 @@ } }, "eslint-module-utils": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", - "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -8810,9 +9008,9 @@ } }, "eslint-plugin-import": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", - "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -8972,9 +9170,9 @@ } }, "eslint-plugin-react": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz", - "integrity": "sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", "dev": true, "requires": { "array-includes": "^3.1.1", @@ -8985,8 +9183,10 @@ "object.fromentries": "^2.0.2", "object.values": "^1.1.1", "prop-types": "^15.7.2", - "resolve": "^1.14.2", - "string.prototype.matchall": "^4.0.2" + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" }, "dependencies": { "doctrine": { @@ -8997,13 +9197,28 @@ "requires": { "esutils": "^2.0.2" } + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "eslint-plugin-react-hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.0.tgz", - "integrity": "sha512-bzvdX47Jx847bgAYf0FPX3u1oxU+mKU8tqrpj4UX9A96SbAmj/HVEefEy6rJUog5u8QIlOPTKZcBpGn5kkKfAQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-3.0.0.tgz", + "integrity": "sha512-EjxTHxjLKIBWFgDJdhKKzLh5q+vjTFrqNZX36uIxWS4OfyXe5DawqPj3U5qeJ1ngLwatjzQnmR0Lz0J0YH3kxw==", "dev": true }, "eslint-scope": { @@ -9051,9 +9266,9 @@ } }, "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { @@ -9296,46 +9511,19 @@ } }, "expect": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-25.1.0.tgz", - "integrity": "sha512-wqHzuoapQkhc3OKPlrpetsfueuEiMf3iWh0R8+duCu9PIjXoP7HgD5aeypwTnXUAjC8aMsiVDaWwlbJ1RlQ38g==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.2.4.tgz", + "integrity": "sha512-hfuPhPds4yOsZtIw4kwAg70r0hqGmpqekgA+VX7pf/3wZ6FY+xIOXZhNsPMMMsspYG/YIsbAiwqsdnD4Ht+bCA==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "ansi-styles": "^4.0.0", - "jest-get-type": "^25.1.0", - "jest-matcher-utils": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-regex-util": "^25.1.0" + "jest-get-type": "^25.2.1", + "jest-matcher-utils": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-regex-util": "^25.2.1" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -9346,16 +9534,6 @@ "color-convert": "^2.0.1" } }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -9370,69 +9548,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "diff-sequences": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.1.0.tgz", - "integrity": "sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==", - "dev": true - }, - "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 - }, - "jest-diff": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.1.0.tgz", - "integrity": "sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "diff-sequences": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - } - }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "jest-matcher-utils": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz", - "integrity": "sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "jest-diff": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - } - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", - "dev": true, - "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -9671,12 +9786,6 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "fake-tag": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fake-tag/-/fake-tag-1.0.1.tgz", - "integrity": "sha512-qmewZoBpa71mM+y6oxXYW/d1xOYQmeIvnEXAt1oCmdP0sqcogWYLepR87QL1jQVLSVMVYDq2cjY6ec/Wu8/4pg==", - "dev": true - }, "faker": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/faker/-/faker-4.1.0.tgz", @@ -9732,12 +9841,6 @@ } } }, - "fast-json-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", - "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true - }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -9750,12 +9853,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-safe-stringify": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", - "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==", - "dev": true - }, "fast-shallow-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", @@ -9813,9 +9910,9 @@ } }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { @@ -9837,48 +9934,57 @@ } }, "file-loader": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-5.1.0.tgz", - "integrity": "sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", "dev": true, "requires": { - "loader-utils": "^1.4.0", - "schema-utils": "^2.5.0" + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" } }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -9915,15 +10021,6 @@ "path-is-absolute": "^1.0.0", "rimraf": "^2.2.8" } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } } } }, @@ -10021,9 +10118,9 @@ } }, "find-cache-dir": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz", - "integrity": "sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -10102,6 +10199,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, + "optional": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -10173,12 +10271,6 @@ } } }, - "flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", - "dev": true - }, "flatted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", @@ -10196,9 +10288,9 @@ } }, "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-3.0.0.tgz", + "integrity": "sha512-eNMNr5exLoavuAMhIUVsOKF79SWd/zG104ef6sxBTSw+cZc6BXdQXDvYcGvp0VbxVVSp1XDUNoz7mg1xMtSznA==" }, "focus-lock": { "version": "0.6.6", @@ -10206,32 +10298,6 @@ "integrity": "sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw==", "dev": true }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -10372,6 +10438,17 @@ "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" + }, + "dependencies": { + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } } }, "fs-minipass": { @@ -10402,9 +10479,9 @@ "dev": true }, "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "dev": true, "optional": true, "requires": { @@ -10458,7 +10535,7 @@ } }, "chownr": { - "version": "1.1.3", + "version": "1.1.4", "bundled": true, "dev": true, "optional": true @@ -10630,7 +10707,7 @@ } }, "minimist": { - "version": "0.0.8", + "version": "1.2.5", "bundled": true, "dev": true, "optional": true @@ -10655,12 +10732,12 @@ } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "ms": { @@ -10670,7 +10747,7 @@ "optional": true }, "needle": { - "version": "2.4.0", + "version": "2.3.3", "bundled": true, "dev": true, "optional": true, @@ -10699,7 +10776,7 @@ } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "dev": true, "optional": true, @@ -10724,13 +10801,14 @@ "optional": true }, "npm-packlist": { - "version": "1.4.7", + "version": "1.4.8", "bundled": true, "dev": true, "optional": true, "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npmlog": { @@ -10810,18 +10888,10 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "dev": true, "optional": true, @@ -10989,9 +11059,9 @@ "dev": true }, "fuse.js": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.4.6.tgz", - "integrity": "sha512-H6aJY4UpLFwxj1+5nAvufom5b2BT2v45P1MkPvdGIK8fWjQx/7o6tTT1+ALV0yawQvbmvCF0ufl2et8eJ7v7Cg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz", + "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==", "dev": true }, "gauge": { @@ -11017,9 +11087,9 @@ "dev": true }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-own-enumerable-property-symbols": { @@ -11446,15 +11516,15 @@ } }, "hast-util-parse-selector": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.3.tgz", - "integrity": "sha512-nxbeqjQNxsvo/uYYAw9kij6td05YVUlf1qti09rVfbWSLT5H6wo3c+USIwX6nzXWk5kFZzXnEqO82856r0aM2Q==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz", + "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==", "dev": true }, "hastscript": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.1.tgz", - "integrity": "sha512-xHo1Hkcqd0LlWNuDL3/BxwhgAGp3d7uEvCMgCTrBY+zsOooPPH+8KAvW8PCgl+GB8H3H44nfSaF0A4BQ+4xlYg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", "dev": true, "requires": { "comma-separated-tokens": "^1.0.0", @@ -11570,15 +11640,15 @@ "dev": true }, "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "html-minifier-terser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz", - "integrity": "sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz", + "integrity": "sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew==", "dev": true, "requires": { "camel-case": "^4.1.1", @@ -11595,16 +11665,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true - }, - "param-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", - "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", - "dev": true, - "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" - } } } }, @@ -11617,17 +11677,36 @@ } }, "html-webpack-plugin": { - "version": "4.0.0-beta.11", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", - "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.3.tgz", + "integrity": "sha512-XCm5MGK6Yv/ey30fbhqjKIGm1r6G1HxmNorJ/xUdL/Zj3mOLtb9ZHEEIw0e4h3VzgyUrp8szCJh3VN9z1LNx7A==", "dev": true, "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", "html-minifier-terser": "^5.0.1", "loader-utils": "^1.2.3", "lodash": "^4.17.15", "pretty-error": "^2.1.1", "tapable": "^1.1.3", "util.promisify": "1.0.0" + }, + "dependencies": { + "@types/webpack": { + "version": "4.41.9", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.9.tgz", + "integrity": "sha512-R68AotLGtaVL6HGfZRvEyYKsWcMv0CBFfSr4gxoYzhMn3LnjLV/ksP4dNi9de8dVG+Dn/GuDr1NwB/sDApB3pA==", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + } + } } }, "htmlparser2": { @@ -11839,9 +11918,9 @@ "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" }, "i18next": { - "version": "19.3.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.3.2.tgz", - "integrity": "sha512-QDBQ8MqFWi4+L9OQjjZEKVyg9uSTy3NTU3Ri53QHe7nxtV+KD4PyLB8Kxu58gr6b9y5l8cU3mCiNHVeoxPMzAQ==", + "version": "19.3.4", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.3.4.tgz", + "integrity": "sha512-ef7AxxutzdhBsBNugE9jgqsbwesG1muJOtZ9ZrPARPs/jXegViTp4+8JCeMp8BAyTIo1Zn0giqc8+2UpqFjU0w==", "requires": { "@babel/runtime": "^7.3.1" } @@ -12332,12 +12411,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -12351,9 +12424,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, "is-absolute-url": { @@ -12426,9 +12499,9 @@ } }, "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-callable": { @@ -12842,7 +12915,8 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "dev": true, + "optional": true }, "is-window": { "version": "1.0.2", @@ -12892,9 +12966,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz", - "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { "@babel/core": "^7.7.5", @@ -12932,9 +13006,9 @@ "dev": true }, "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { "semver": "^6.0.0" @@ -12969,9 +13043,9 @@ } }, "istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-Vm9xwCiQ8t2cNNnckyeAV0UdxKpcQUz4nMxsBvIu8n2kmPSiyb5uaF/8LpmKr+yqL/MdOXaX2Nmdo4Qyxium9Q==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -13005,50 +13079,17 @@ "iterate-iterator": "^1.0.1" } }, - "java-properties": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-0.2.10.tgz", - "integrity": "sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w==", - "dev": true - }, "jest": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-25.1.0.tgz", - "integrity": "sha512-FV6jEruneBhokkt9MQk0WUFoNTwnF76CLXtwNMfsc0um0TlB/LG2yxUd0KqaFjEJ9laQmVWQWS0sG/t2GsuI0w==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.2.4.tgz", + "integrity": "sha512-Lu4LXxf4+durzN/IFilcAoQSisOwgHIXgl9vffopePpSSwFqfj1Pj4y+k3nL8oTbnvjxgDIsEcepy6he4bWqnQ==", "dev": true, "requires": { - "@jest/core": "^25.1.0", + "@jest/core": "^25.2.4", "import-local": "^3.0.2", - "jest-cli": "^25.1.0" + "jest-cli": "^25.2.4" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -13059,12 +13100,6 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -13075,17 +13110,6 @@ "supports-color": "^7.1.0" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -13101,12 +13125,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -13117,12 +13135,6 @@ "path-exists": "^4.0.0" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -13139,31 +13151,25 @@ "resolve-cwd": "^3.0.0" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "jest-cli": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.1.0.tgz", - "integrity": "sha512-p+aOfczzzKdo3AsLJlhs8J5EW6ffVidfSZZxXedJ0mHPBOln1DccqFmGCoO8JWd4xRycfmwy1eoQkMsF8oekPg==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.2.4.tgz", + "integrity": "sha512-zeY2pRDWKj2LZudIncvvguwLMEdcnJqc2jJbwza1beqi80qqLvkPF/BjbFkK2sIV3r+mfTJS+7ITrvK6pCdRjg==", "dev": true, "requires": { - "@jest/core": "^25.1.0", - "@jest/test-result": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/core": "^25.2.4", + "@jest/test-result": "^25.2.4", + "@jest/types": "^25.2.3", "chalk": "^3.0.0", "exit": "^0.1.2", "import-local": "^3.0.2", "is-ci": "^2.0.0", - "jest-config": "^25.1.0", - "jest-util": "^25.1.0", - "jest-validate": "^25.1.0", + "jest-config": "^25.2.4", + "jest-util": "^25.2.3", + "jest-validate": "^25.2.3", "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^15.0.0" + "realpath-native": "^2.0.0", + "yargs": "^15.3.1" } }, "locate-path": { @@ -13199,12 +13205,6 @@ "find-up": "^4.0.0" } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -13214,26 +13214,6 @@ "resolve-from": "^5.0.0" } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -13242,143 +13222,35 @@ "requires": { "has-flag": "^4.0.0" } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", - "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^16.1.0" - } - }, - "yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "jest-changed-files": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.1.0.tgz", - "integrity": "sha512-bdL1aHjIVy3HaBO3eEQeemGttsq1BDlHgWcOjEOIAcga7OOEGWHD2WSu8HhL7I1F0mFFyci8VKU4tRNk+qtwDA==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.2.3.tgz", + "integrity": "sha512-EFxy94dvvbqRB36ezIPLKJ4fDIC+jAdNs8i8uTwFpaXd6H3LVc3ova1lNS4ZPWk09OCR2vq5kSdSQgar7zMORg==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "execa": "^3.2.0", "throat": "^5.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -13402,12 +13274,6 @@ "pump": "^3.0.0" } }, - "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 - }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -13450,15 +13316,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -13471,57 +13328,31 @@ } }, "jest-config": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.1.0.tgz", - "integrity": "sha512-tLmsg4SZ5H7tuhBC5bOja0HEblM0coS3Wy5LTCb2C8ZV6eWLewHyK+3qSq9Bi29zmWQ7ojdCd3pxpx4l4d2uGw==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.2.4.tgz", + "integrity": "sha512-fxy3nIpwJqOUQJRVF/q+pNQb6dv5b9YufOeCbpPZJ/md1zXpiupbhfehpfODhnKOfqbzSiigtSLzlWWmbRxnqQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^25.1.0", - "@jest/types": "^25.1.0", - "babel-jest": "^25.1.0", + "@jest/test-sequencer": "^25.2.4", + "@jest/types": "^25.2.3", + "babel-jest": "^25.2.4", "chalk": "^3.0.0", + "deepmerge": "^4.2.2", "glob": "^7.1.1", - "jest-environment-jsdom": "^25.1.0", - "jest-environment-node": "^25.1.0", - "jest-get-type": "^25.1.0", - "jest-jasmine2": "^25.1.0", - "jest-regex-util": "^25.1.0", - "jest-resolve": "^25.1.0", - "jest-util": "^25.1.0", - "jest-validate": "^25.1.0", + "jest-environment-jsdom": "^25.2.4", + "jest-environment-node": "^25.2.4", + "jest-get-type": "^25.2.1", + "jest-jasmine2": "^25.2.4", + "jest-regex-util": "^25.2.1", + "jest-resolve": "^25.2.3", + "jest-util": "^25.2.3", + "jest-validate": "^25.2.3", "micromatch": "^4.0.2", - "pretty-format": "^25.1.0", - "realpath-native": "^1.1.0" + "pretty-format": "^25.2.3", + "realpath-native": "^2.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -13557,30 +13388,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "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 }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", - "dev": true, - "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -13593,15 +13412,15 @@ } }, "jest-diff": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.1.0.tgz", - "integrity": "sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.2.3.tgz", + "integrity": "sha512-VtZ6LAQtaQpFsmEzps15dQc5ELbJxy4L2DOSo2Ev411TUEtnJPkAMD7JneVypeMJQ1y3hgxN9Ao13n15FAnavg==", "dev": true, "requires": { "chalk": "^3.0.0", - "diff-sequences": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" + "diff-sequences": "^25.2.1", + "jest-get-type": "^25.2.1", + "pretty-format": "^25.2.3" }, "dependencies": { "ansi-styles": { @@ -13657,54 +13476,27 @@ } }, "jest-docblock": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.1.0.tgz", - "integrity": "sha512-370P/mh1wzoef6hUKiaMcsPtIapY25suP6JqM70V9RJvdKLrV4GaGbfUseUVk4FZJw4oTZ1qSCJNdrClKt5JQA==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.2.3.tgz", + "integrity": "sha512-d3/tmjLLrH5fpRGmIm3oFa3vOaD/IjPxtXVOrfujpfJ9y1tCDB1x/tvunmdOVAyF03/xeMwburl6ITbiQT1mVA==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.1.0.tgz", - "integrity": "sha512-R9EL8xWzoPySJ5wa0DXFTj7NrzKpRD40Jy+zQDp3Qr/2QmevJgkN9GqioCGtAJ2bW9P/MQRznQHQQhoeAyra7A==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.2.3.tgz", + "integrity": "sha512-RTlmCjsBDK2c9T5oO4MqccA3/5Y8BUtiEy7OOQik1iyCgdnNdHbI0pNEpyapZPBG0nlvZ4mIu7aY6zNUvLraAQ==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "chalk": "^3.0.0", - "jest-get-type": "^25.1.0", - "jest-util": "^25.1.0", - "pretty-format": "^25.1.0" + "jest-get-type": "^25.2.1", + "jest-util": "^25.2.3", + "pretty-format": "^25.2.3" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -13746,24 +13538,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", - "dev": true, - "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -13776,46 +13550,126 @@ } }, "jest-environment-jsdom": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.1.0.tgz", - "integrity": "sha512-ILb4wdrwPAOHX6W82GGDUiaXSSOE274ciuov0lztOIymTChKFtC02ddyicRRCdZlB5YSrv3vzr1Z5xjpEe1OHQ==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.2.4.tgz", + "integrity": "sha512-5dm+tNwrLmhELdjAwiQnVGf/U9iFMWdTL4/wyrMg2HU6RQnCiuxpWbIigLHUhuP1P2Ak0F4k3xhjrikboKyShA==", + "dev": true, + "requires": { + "@jest/environment": "^25.2.4", + "@jest/fake-timers": "^25.2.4", + "@jest/types": "^25.2.3", + "jest-mock": "^25.2.3", + "jest-util": "^25.2.3", + "jsdom": "^15.2.1" + } + }, + "jest-environment-jsdom-global": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-global/-/jest-environment-jsdom-global-1.2.1.tgz", + "integrity": "sha512-XK/ddDfv8rURHoyfZwmhePv1mof3XFlPvkGfywIYU5Ype4/S/SRA0KNAdma9CuLV/KI+1jQh5BrGM3AqpJ/jRA==", + "dev": true + }, + "jest-environment-node": { + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.2.4.tgz", + "integrity": "sha512-Jkc5Y8goyXPrLRHnrUlqC7P4o5zn2m4zw6qWoRJ59kxV1f2a5wK+TTGhrhCwnhW/Ckpdl/pm+LufdvhJkvJbiw==", + "dev": true, + "requires": { + "@jest/environment": "^25.2.4", + "@jest/fake-timers": "^25.2.4", + "@jest/types": "^25.2.3", + "jest-mock": "^25.2.3", + "jest-util": "^25.2.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-get-type": { + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.1.tgz", + "integrity": "sha512-EYjTiqcDTCRJDcSNKbLTwn/LcDPEE7ITk8yRMNAOjEsN6yp+Uu+V1gx4djwnuj/DvWg0YGmqaBqPVGsPxlvE7w==", + "dev": true + }, + "jest-haste-map": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.2.3.tgz", + "integrity": "sha512-pAP22OHtPr4qgZlJJFks2LLgoQUr4XtM1a+F5UaPIZNiCRnePA0hM3L7aiJ0gzwiNIYwMTfKRwG/S1L28J3A3A==", "dev": true, "requires": { - "@jest/environment": "^25.1.0", - "@jest/fake-timers": "^25.1.0", - "@jest/types": "^25.1.0", - "jest-mock": "^25.1.0", - "jest-util": "^25.1.0", - "jsdom": "^15.1.1" + "@jest/types": "^25.2.3", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.3", + "jest-serializer": "^25.2.1", + "jest-util": "^25.2.3", + "jest-worker": "^25.2.1", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "@types/yargs-parser": "*" + "isexe": "^2.0.0" } - }, - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true - }, + } + } + }, + "jest-jasmine2": { + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.2.4.tgz", + "integrity": "sha512-juoKrmNmLwaheNbAg71SuUF9ovwUZCFNTpKVhvCXWk+SSeORcIUMptKdPCoLXV3D16htzhTSKmNxnxSk4SrTjA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.2.4", + "@jest/source-map": "^25.2.1", + "@jest/test-result": "^25.2.4", + "@jest/types": "^25.2.3", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.2.4", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.2.3", + "jest-matcher-utils": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-runtime": "^25.2.4", + "jest-snapshot": "^25.2.4", + "jest-util": "^25.2.3", + "pretty-format": "^25.2.3", + "throat": "^5.0.0" + }, + "dependencies": { "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -13851,75 +13705,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", - "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, "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 }, - "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -13928,77 +13719,31 @@ "requires": { "has-flag": "^4.0.0" } - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz", - "integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A==", - "dev": true } } }, - "jest-environment-jsdom-global": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-global/-/jest-environment-jsdom-global-1.2.1.tgz", - "integrity": "sha512-XK/ddDfv8rURHoyfZwmhePv1mof3XFlPvkGfywIYU5Ype4/S/SRA0KNAdma9CuLV/KI+1jQh5BrGM3AqpJ/jRA==", - "dev": true + "jest-leak-detector": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.2.3.tgz", + "integrity": "sha512-yblCMPE7NJKl7778Cf/73yyFWAas5St0iiEBwq7RDyaz6Xd4WPFnPz2j7yDb/Qce71A1IbDoLADlcwD8zT74Aw==", + "dev": true, + "requires": { + "jest-get-type": "^25.2.1", + "pretty-format": "^25.2.3" + } }, - "jest-environment-node": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.1.0.tgz", - "integrity": "sha512-U9kFWTtAPvhgYY5upnH9rq8qZkj6mYLup5l1caAjjx9uNnkLHN2xgZy5mo4SyLdmrh/EtB9UPpKFShvfQHD0Iw==", + "jest-matcher-utils": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.2.3.tgz", + "integrity": "sha512-ZmiXiwQRVM9MoKjGMP5YsGGk2Th5ncyRxfXKz5AKsmU8m43kgNZirckVzaP61MlSa9LKmXbevdYqVp1ZKAw2Rw==", "dev": true, "requires": { - "@jest/environment": "^25.1.0", - "@jest/fake-timers": "^25.1.0", - "@jest/types": "^25.1.0", - "jest-mock": "^25.1.0", - "jest-util": "^25.1.0" + "chalk": "^3.0.0", + "jest-diff": "^25.2.3", + "jest-get-type": "^25.2.1", + "pretty-format": "^25.2.3" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -14051,491 +13796,22 @@ } } }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "jest-haste-map": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.1.0.tgz", - "integrity": "sha512-/2oYINIdnQZAqyWSn1GTku571aAfs8NxzSErGek65Iu5o8JYb+113bZysRMcC/pjE5v9w0Yz+ldbj9NxrFyPyw==", + "jest-message-util": { + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.2.4.tgz", + "integrity": "sha512-9wWMH3Bf+GVTv0GcQLmH/FRr0x0toptKw9TA8U5YFLVXx7Tq9pvcNzTyJrcTJ+wLqNbMPPJlJNft4MnlcrtF5Q==", "dev": true, "requires": { - "@jest/types": "^25.1.0", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.3", - "jest-serializer": "^25.1.0", - "jest-util": "^25.1.0", - "jest-worker": "^25.1.0", + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^25.2.4", + "@jest/types": "^25.2.3", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" + "slash": "^3.0.0", + "stack-utils": "^1.0.1" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, - "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 - }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-jasmine2": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.1.0.tgz", - "integrity": "sha512-GdncRq7jJ7sNIQ+dnXvpKO2MyP6j3naNK41DTTjEAhLEdpImaDA9zSAZwDhijjSF/D7cf4O5fdyUApGBZleaEg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^25.1.0", - "@jest/source-map": "^25.1.0", - "@jest/test-result": "^25.1.0", - "@jest/types": "^25.1.0", - "chalk": "^3.0.0", - "co": "^4.6.0", - "expect": "^25.1.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^25.1.0", - "jest-matcher-utils": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-runtime": "^25.1.0", - "jest-snapshot": "^25.1.0", - "jest-util": "^25.1.0", - "pretty-format": "^25.1.0", - "throat": "^5.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "diff-sequences": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.1.0.tgz", - "integrity": "sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==", - "dev": true - }, - "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 - }, - "jest-diff": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.1.0.tgz", - "integrity": "sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "diff-sequences": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - } - }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "jest-matcher-utils": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz", - "integrity": "sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "jest-diff": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - } - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", - "dev": true, - "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-leak-detector": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.1.0.tgz", - "integrity": "sha512-3xRI264dnhGaMHRvkFyEKpDeaRzcEBhyNrOG5oT8xPxOyUAblIAQnpiR3QXu4wDor47MDTiHbiFcbypdLcLW5w==", - "dev": true, - "requires": { - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", - "dev": true, - "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-matcher-utils": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz", - "integrity": "sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "jest-diff": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-message-util": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.1.0.tgz", - "integrity": "sha512-Nr/Iwar2COfN22aCqX0kCVbXgn8IBm9nWf4xwGr5Olv/KZh0CZ32RKgZWMVDXGdOahicM10/fgjdimGNX/ttCQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^25.1.0", - "@jest/types": "^25.1.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^3.0.0", - "micromatch": "^4.0.2", - "slash": "^3.0.0", - "stack-utils": "^1.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -14595,85 +13871,12 @@ } }, "jest-mock": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.1.0.tgz", - "integrity": "sha512-28/u0sqS+42vIfcd1mlcg4ZVDmSUYuNvImP4X2lX5hRMLW+CN0BeiKVD4p+ujKKbSPKd3rg/zuhCF+QBLJ4vag==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.2.3.tgz", + "integrity": "sha512-xlf+pyY0j47zoCs8zGGOGfWyxxLximE8YFOfEK8s4FruR8DtM/UjNj61um+iDuMAFEBDe1bhCXkqiKoCmWjJzg==", "dev": true, "requires": { - "@jest/types": "^25.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/types": "^25.2.3" } }, "jest-pnp-resolver": { @@ -14683,45 +13886,25 @@ "dev": true }, "jest-regex-util": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.1.0.tgz", - "integrity": "sha512-9lShaDmDpqwg+xAd73zHydKrBbbrIi08Kk9YryBEBybQFg/lBWR/2BDjjiSE7KIppM9C5+c03XiDaZ+m4Pgs1w==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.1.tgz", + "integrity": "sha512-wroFVJw62LdqTdkL508ZLV82FrJJWVJMIuYG7q4Uunl1WAPTf4ftPKrqqfec4SvOIlvRZUdEX2TFpWR356YG/w==", "dev": true }, "jest-resolve": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.1.0.tgz", - "integrity": "sha512-XkBQaU1SRCHj2Evz2Lu4Czs+uIgJXWypfO57L7JYccmAXv4slXA6hzNblmcRmf7P3cQ1mE7fL3ABV6jAwk4foQ==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.2.3.tgz", + "integrity": "sha512-1vZMsvM/DBH258PnpUNSXIgtzpYz+vCVCj9+fcy4akZl4oKbD+9hZSlfe9RIDpU0Fc28ozHQrmwX3EqFRRIHGg==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "browser-resolve": "^1.11.3", "chalk": "^3.0.0", "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "realpath-native": "^2.0.0", + "resolve": "^1.15.1" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -14763,6 +13946,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -14775,137 +13967,43 @@ } }, "jest-resolve-dependencies": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.1.0.tgz", - "integrity": "sha512-Cu/Je38GSsccNy4I2vL12ZnBlD170x2Oh1devzuM9TLH5rrnLW1x51lN8kpZLYTvzx9j+77Y5pqBaTqfdzVzrw==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.2.4.tgz", + "integrity": "sha512-qhUnK4PfNHzNdca7Ub1mbAqE0j5WNyMTwxBZZJjQlUrdqsiYho/QGK65FuBkZuSoYtKIIqriR9TpGrPEc3P5Gg==", "dev": true, "requires": { - "@jest/types": "^25.1.0", - "jest-regex-util": "^25.1.0", - "jest-snapshot": "^25.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/types": "^25.2.3", + "jest-regex-util": "^25.2.1", + "jest-snapshot": "^25.2.4" } }, "jest-runner": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.1.0.tgz", - "integrity": "sha512-su3O5fy0ehwgt+e8Wy7A8CaxxAOCMzL4gUBftSs0Ip32S0epxyZPDov9Znvkl1nhVOJNf4UwAsnqfc3plfQH9w==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.2.4.tgz", + "integrity": "sha512-5xaIfqqxck9Wg2CV4b9KmJtf/sWO7zWQx7O+34GCLGPzoPcVmB3mZtdrQI1/jS3Reqjru9ycLjgLHSf6XoxRqA==", "dev": true, "requires": { - "@jest/console": "^25.1.0", - "@jest/environment": "^25.1.0", - "@jest/test-result": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/console": "^25.2.3", + "@jest/environment": "^25.2.4", + "@jest/test-result": "^25.2.4", + "@jest/types": "^25.2.3", "chalk": "^3.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.3", - "jest-config": "^25.1.0", - "jest-docblock": "^25.1.0", - "jest-haste-map": "^25.1.0", - "jest-jasmine2": "^25.1.0", - "jest-leak-detector": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-resolve": "^25.1.0", - "jest-runtime": "^25.1.0", - "jest-util": "^25.1.0", - "jest-worker": "^25.1.0", + "jest-config": "^25.2.4", + "jest-docblock": "^25.2.3", + "jest-haste-map": "^25.2.3", + "jest-jasmine2": "^25.2.4", + "jest-leak-detector": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-resolve": "^25.2.3", + "jest-runtime": "^25.2.4", + "jest-util": "^25.2.3", + "jest-worker": "^25.2.1", "source-map-support": "^0.5.6", "throat": "^5.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -14947,16 +14045,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -14969,65 +14057,38 @@ } }, "jest-runtime": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.1.0.tgz", - "integrity": "sha512-mpPYYEdbExKBIBB16ryF6FLZTc1Rbk9Nx0ryIpIMiDDkOeGa0jQOKVI/QeGvVGlunKKm62ywcioeFVzIbK03bA==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.2.4.tgz", + "integrity": "sha512-6ehOUizgIghN+aV5YSrDzTZ+zJ9omgEjJbTHj3Jqes5D52XHfhzT7cSfdREwkNjRytrR7mNwZ7pRauoyNLyJ8Q==", "dev": true, "requires": { - "@jest/console": "^25.1.0", - "@jest/environment": "^25.1.0", - "@jest/source-map": "^25.1.0", - "@jest/test-result": "^25.1.0", - "@jest/transform": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/console": "^25.2.3", + "@jest/environment": "^25.2.4", + "@jest/source-map": "^25.2.1", + "@jest/test-result": "^25.2.4", + "@jest/transform": "^25.2.4", + "@jest/types": "^25.2.3", "@types/yargs": "^15.0.0", "chalk": "^3.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.3", - "jest-config": "^25.1.0", - "jest-haste-map": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-mock": "^25.1.0", - "jest-regex-util": "^25.1.0", - "jest-resolve": "^25.1.0", - "jest-snapshot": "^25.1.0", - "jest-util": "^25.1.0", - "jest-validate": "^25.1.0", - "realpath-native": "^1.1.0", + "jest-config": "^25.2.4", + "jest-haste-map": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-mock": "^25.2.3", + "jest-regex-util": "^25.2.1", + "jest-resolve": "^25.2.3", + "jest-snapshot": "^25.2.4", + "jest-util": "^25.2.3", + "jest-validate": "^25.2.3", + "realpath-native": "^2.0.0", "slash": "^3.0.0", "strip-bom": "^4.0.0", - "yargs": "^15.0.0" + "yargs": "^15.3.1" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -15038,12 +14099,6 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15054,17 +14109,6 @@ "supports-color": "^7.1.0" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -15080,95 +14124,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "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 - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } + "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "strip-bom": { "version": "4.0.0", @@ -15184,115 +14150,37 @@ "requires": { "has-flag": "^4.0.0" } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", - "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^16.1.0" - } - }, - "yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "jest-serializer": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.1.0.tgz", - "integrity": "sha512-20Wkq5j7o84kssBwvyuJ7Xhn7hdPeTXndnwIblKDR2/sy1SUm6rWWiG9kSCgJPIfkDScJCIsTtOKdlzfIHOfKA==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.2.1.tgz", + "integrity": "sha512-fibDi7M5ffx6c/P66IkvR4FKkjG5ldePAK1WlbNoaU4GZmIAkS9Le/frAwRUFEX0KdnisSPWf+b1RC5jU7EYJQ==", "dev": true }, "jest-snapshot": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.1.0.tgz", - "integrity": "sha512-xZ73dFYN8b/+X2hKLXz4VpBZGIAn7muD/DAg+pXtDzDGw3iIV10jM7WiHqhCcpDZfGiKEj7/2HXAEPtHTj0P2A==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.2.4.tgz", + "integrity": "sha512-nIwpW7FZCq5p0AE3Oyqyb6jL0ENJixXzJ5/CD/XRuOqp3gS5OM3O/k+NnTrniCXxPFV4ry6s9HNfiPQBi0wcoA==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", + "@types/prettier": "^1.19.0", "chalk": "^3.0.0", - "expect": "^25.1.0", - "jest-diff": "^25.1.0", - "jest-get-type": "^25.1.0", - "jest-matcher-utils": "^25.1.0", - "jest-message-util": "^25.1.0", - "jest-resolve": "^25.1.0", - "mkdirp": "^0.5.1", + "expect": "^25.2.4", + "jest-diff": "^25.2.3", + "jest-get-type": "^25.2.1", + "jest-matcher-utils": "^25.2.3", + "jest-message-util": "^25.2.4", + "jest-resolve": "^25.2.3", + "make-dir": "^3.0.0", "natural-compare": "^1.4.0", - "pretty-format": "^25.1.0", - "semver": "^7.1.1" + "pretty-format": "^25.2.3", + "semver": "^6.3.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -15328,64 +14216,25 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "diff-sequences": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.1.0.tgz", - "integrity": "sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==", - "dev": true - }, "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 }, - "jest-diff": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.1.0.tgz", - "integrity": "sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "diff-sequences": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - } - }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "jest-matcher-utils": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz", - "integrity": "sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "jest-diff": "^25.1.0", - "jest-get-type": "^25.1.0", - "pretty-format": "^25.1.0" - } - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" + "semver": "^6.0.0" } }, "semver": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.1.tgz", - "integrity": "sha512-WfuG+fl6eh3eZ2qAf6goB7nhiCd7NPXhmyFxigB/TOkQyeLP8w8GsVehvtGNtnNmyboz4TgeK40B1Kbql/8c5A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "supports-color": { @@ -15409,38 +14258,17 @@ } }, "jest-util": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.1.0.tgz", - "integrity": "sha512-7did6pLQ++87Qsj26Fs/TIwZMUFBXQ+4XXSodRNy3luch2DnRXsSnmpVtxxQ0Yd6WTipGpbhh2IFP1mq6/fQGw==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.2.3.tgz", + "integrity": "sha512-7tWiMICVSo9lNoObFtqLt9Ezt5exdFlWs5fLe1G4XLY2lEbZc814cw9t4YHScqBkWMfzth8ASHKlYBxiX2rdCw==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "chalk": "^3.0.0", "is-ci": "^2.0.0", - "mkdirp": "^0.5.1" + "make-dir": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -15482,6 +14310,21 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -15494,46 +14337,19 @@ } }, "jest-validate": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.1.0.tgz", - "integrity": "sha512-kGbZq1f02/zVO2+t1KQGSVoCTERc5XeObLwITqC6BTRH3Adv7NZdYqCpKIZLUgpLXf2yISzQ465qOZpul8abXA==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.2.3.tgz", + "integrity": "sha512-GObn91jzU0B0Bv4cusAwjP6vnWy78hJUM8MOSz7keRfnac/ZhQWIsUjvk01IfeXNTemCwgR57EtdjQMzFZGREg==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "camelcase": "^5.3.1", "chalk": "^3.0.0", - "jest-get-type": "^25.1.0", + "jest-get-type": "^25.2.1", "leven": "^3.1.0", - "pretty-format": "^25.1.0" + "pretty-format": "^25.2.3" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -15544,12 +14360,6 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15581,24 +14391,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-get-type": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", - "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", - "dev": true - }, - "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", - "dev": true, - "requires": { - "@jest/types": "^25.1.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -15611,40 +14403,19 @@ } }, "jest-watcher": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.1.0.tgz", - "integrity": "sha512-Q9eZ7pyaIr6xfU24OeTg4z1fUqBF/4MP6J801lyQfg7CsnZ/TCzAPvCfckKdL5dlBBEKBeHV0AdyjFZ5eWj4ig==", + "version": "25.2.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.2.4.tgz", + "integrity": "sha512-p7g7s3zqcy69slVzQYcphyzkB2FBmJwMbv6k6KjI5mqd6KnUnQPfQVKuVj2l+34EeuxnbXqnrjtUFmxhcL87rg==", "dev": true, "requires": { - "@jest/test-result": "^25.1.0", - "@jest/types": "^25.1.0", + "@jest/test-result": "^25.2.4", + "@jest/types": "^25.2.3", "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", - "jest-util": "^25.1.0", + "jest-util": "^25.2.3", "string-length": "^3.1.0" }, "dependencies": { - "@jest/types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", - "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -15698,9 +14469,9 @@ } }, "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.2.1.tgz", + "integrity": "sha512-IHnpekk8H/hCUbBlfeaPZzU6v75bqwJp3n4dUrQuQOAgOneI4tx3jV2o8pvlXnDfcRsfkFIUD//HWXpCmR+evQ==", "dev": true, "requires": { "merge-stream": "^2.0.0", @@ -15759,37 +14530,45 @@ "dev": true }, "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "dev": true, "requires": { "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", "domexception": "^1.0.1", - "escodegen": "^1.9.1", + "escodegen": "^1.11.1", "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", + "tough-cookie": "^3.0.1", "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + } } }, "jsesc": { @@ -15842,18 +14621,26 @@ "dev": true }, "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { "graceful-fs": "^4.1.6" @@ -15966,21 +14753,6 @@ } } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -16013,9 +14785,9 @@ "dev": true }, "lint-staged": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.8.tgz", - "integrity": "sha512-Oa9eS4DJqvQMVdywXfEor6F4vP+21fPHF8LUXgBbVWUSWBddjqsvO6Bv1LwMChmgQZZqwUvgJSHlu8HFHAPZmA==", + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.10.tgz", + "integrity": "sha512-91vNy3eYStExElLWw1Idva5lghKpFaXh9AJqjcyrJXf7AYZrThi4EhQ+GpmiHdPmJJauKhZMMSzQR1bMB90MtA==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -16341,6 +15113,7 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -16354,6 +15127,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, + "optional": true, "requires": { "error-ex": "^1.2.0" } @@ -16609,10 +15383,13 @@ } }, "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "lowercase-keys": { "version": "1.0.1", @@ -16699,12 +15476,6 @@ "tmpl": "1.0.x" } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -16753,11 +15524,11 @@ } }, "match-sorter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.0.2.tgz", - "integrity": "sha512-5EcCLEmPgfvq2hg1DAgAG7zqqS9bnZmRXzLR3md0xRi3Q1oGnnze6HuY+4bDRtm+X2lTsVZL8oG9FOkALFT4vw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.1.0.tgz", + "integrity": "sha512-DCzT9JVO2FWVOTfsKqIqVhu/skFa3bK0lQom70j6Co9yKX9bPn2gRtn9BFD9ykkM8F/USjTQeId+nlFfTVvz+w==", "requires": { - "@babel/runtime": "^7.5.5", + "@babel/runtime": "^7.9.2", "remove-accents": "0.4.2" } }, @@ -16903,12 +15674,6 @@ "kind-of": "^3.0.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -17340,20 +16105,15 @@ "dev": true }, "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", "dev": true, "requires": { - "lower-case": "^1.1.1" + "lower-case": "^2.0.1", + "tslib": "^1.10.0" } }, - "node-ask": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/node-ask/-/node-ask-1.0.1.tgz", - "integrity": "sha1-yqoQdsxY4DZCZ6CQPj6t+sFYOWs=", - "dev": true - }, "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", @@ -17414,17 +16174,6 @@ } } }, - "node-loggly-bulk": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/node-loggly-bulk/-/node-loggly-bulk-2.2.4.tgz", - "integrity": "sha512-DfhtsDfkSBU6Dp1zvK+H1MgHRcA2yb4z07ctyA6uo+bNwKtv1exhohN910zcWNkdSYq1TImCq+O+3bOTuYHvmQ==", - "dev": true, - "requires": { - "json-stringify-safe": "5.0.x", - "moment": "^2.18.1", - "request": ">=2.76.0 <3.0.0" - } - }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", @@ -17515,9 +16264,9 @@ } }, "nouislider": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-14.1.1.tgz", - "integrity": "sha512-3/+Z/pTBoWoJf2YXSEWRmS27LW2XxOBmGEzkPyRzB/J6QvL+0mS3QwcQp0SmWhgO5CMzbSxPmb1lDDD4HP12bg==" + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-14.2.0.tgz", + "integrity": "sha512-IeDy8kA3uEtQIS35izyWg9tF0ycNTXvXPxB1SpEAxGGty2MqOIqkyMpOjCqT7Oag99fPRGRGuzHuuemU9+hCmw==" }, "nouislider-react": { "version": "3.3.7", @@ -17765,9 +16514,9 @@ } }, "open": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.2.tgz", - "integrity": "sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -17794,12 +16543,6 @@ "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", - "dev": true - }, "optimize-css-assets-webpack-plugin": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", @@ -17861,15 +16604,6 @@ "arch": "^2.1.0" } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -18021,12 +16755,13 @@ } }, "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", "dev": true, "requires": { - "no-case": "^2.2.0" + "dot-case": "^3.0.3", + "tslib": "^1.10.0" } }, "parent-module": { @@ -18085,9 +16820,9 @@ "dev": true }, "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "dev": true }, "parseurl": { @@ -18104,27 +16839,6 @@ "requires": { "no-case": "^3.0.3", "tslib": "^1.10.0" - }, - "dependencies": { - "lower-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", - "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", - "dev": true, - "requires": { - "tslib": "^1.10.0" - } - }, - "no-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", - "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", - "dev": true, - "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" - } - } } }, "pascalcase": { @@ -18150,6 +16864,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, + "optional": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -18236,37 +16951,10 @@ "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pino": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/pino/-/pino-4.10.2.tgz", - "integrity": "sha512-hNNDgOju2UvK4iKqXR3ZwEutoOujBRN9jfQgty/X4B3q1QOqpWqvmVn+GT/a20o8Jw5Wd7VkGJAdgFQg55a+mw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "fast-json-parse": "^1.0.0", - "fast-safe-stringify": "^1.2.1", - "flatstr": "^1.0.4", - "pump": "^1.0.3", - "quick-format-unescaped": "^1.1.1", - "split2": "^2.2.0" - }, - "dependencies": { - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" } }, "pirates": { @@ -18299,62 +16987,22 @@ } }, "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^3.0.0" }, "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "locate-path": "^3.0.0" } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true } } }, @@ -18421,12 +17069,12 @@ } }, "polished": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.4.tgz", - "integrity": "sha512-x9PKeExyI9AhWrJP3Q57I1k7GInujjiVBJMPFmycj9hX1yCOo/X9eu9eZwxgOziiXge3WbFQ5XOmkzunOntBSA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.5.1.tgz", + "integrity": "sha512-GVbvskpBiDV5TknurGL6OyFfLHsCknxbU8w5iMppT8rW0tLEoQHrIRfrPNPqGXNj3HGhkjRvhmg59Fy7HSnCAw==", "dev": true, "requires": { - "@babel/runtime": "^7.6.3" + "@babel/runtime": "^7.8.7" } }, "popper.js": { @@ -19125,12 +17773,12 @@ } }, "pretty-format": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", - "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.2.3.tgz", + "integrity": "sha512-IP4+5UOAVGoyqC/DiomOeHBUKN6q00gfyT2qpAsRH64tgOKB2yF7FHJXC18OCiU0/YFierACup/zdCOWw0F/0w==", "dev": true, "requires": { - "@jest/types": "^25.1.0", + "@jest/types": "^25.2.3", "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^16.12.0" @@ -19208,16 +17856,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "progress-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", - "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=", - "dev": true, - "requires": { - "speedometer": "~1.0.0", - "through2": "~2.0.3" - } - }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -19249,13 +17887,13 @@ } }, "prompts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz", - "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", "dev": true, "requires": { "kleur": "^3.0.3", - "sisteransi": "^1.0.3" + "sisteransi": "^1.0.4" } }, "prop-types": { @@ -19269,9 +17907,9 @@ } }, "property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", - "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.2.tgz", + "integrity": "sha512-bc/5ggaYZxNkFKj374aLbEDqVADdYaLcFo8XBkishUWbaAdjlphaBFns9TvRA2pUseVL/wMFmui9X3IdNDU37g==" }, "property-information": { "version": "5.4.0", @@ -19290,13 +17928,13 @@ "optional": true }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -19313,9 +17951,9 @@ "optional": true }, "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "public-encrypt": { @@ -19383,9 +18021,9 @@ "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" }, "qs": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", - "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", "dev": true }, "query-string": { @@ -19416,15 +18054,6 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, - "quick-format-unescaped": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", - "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", - "dev": true, - "requires": { - "fast-safe-stringify": "^1.0.8" - } - }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -19486,13 +18115,31 @@ "schema-utils": "^2.0.1" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -19743,6 +18390,66 @@ "is-wsl": "^1.1.0" } }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + } + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -19844,9 +18551,9 @@ } }, "react-dropzone": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-10.2.1.tgz", - "integrity": "sha512-Me5nOu8hK9/Xyg5easpdfJ6SajwUquqYR/2YTdMotsCUgJ1pHIIwNsv0n+qcIno0tWR2V2rVQtj2r/hXYs2TnQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-10.2.2.tgz", + "integrity": "sha512-U5EKckXVt6IrEyhMMsgmHQiWTGLudhajPPG77KFSvgsMqNEHSyGpqWvOMc5+DhEah/vH4E1n+J5weBNLd5VtyA==", "requires": { "attr-accept": "^2.0.0", "file-selector": "^0.1.12", @@ -19854,9 +18561,9 @@ } }, "react-error-overlay": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.6.tgz", - "integrity": "sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", + "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==", "dev": true }, "react-fast-compare": { @@ -19902,9 +18609,9 @@ } }, "react-i18next": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.3.3.tgz", - "integrity": "sha512-sGnPwJ0Kf8qTRLTnTRk030KiU6WYEZ49rP9ILPvCnsmgEKyucQfTxab+klSYnCSKYija+CWL+yo+c9va9BmJeg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.3.4.tgz", + "integrity": "sha512-IRZMD7PAM3C+fJNzRbyLNi1ZD0kc3Z3obBspJjEl+9H+ME41PhVor3BpdIqv/Rm7lUoGhMjmpu42J45ooJ61KA==", "requires": { "@babel/runtime": "^7.3.1", "html-parse-stringify2": "2.0.1" @@ -19920,15 +18627,14 @@ } }, "react-inspector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-4.0.0.tgz", - "integrity": "sha512-heh4THBeJg0HLYO/3VBAOaFPkdEHoTZq9VFgP4rOzGw/jyqdVd5spfXSl3LNB1fwrwaWef75Q1hCuwlY4GaKjQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-4.0.1.tgz", + "integrity": "sha512-xSiM6CE79JBqSj8Fzd9dWBHv57tLTH7OM57GP3VrE5crzVF3D5Khce9w1Xcw75OAbvrA0Mi2vBneR1OajKmXFg==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", + "@babel/runtime": "^7.6.3", "is-dom": "^1.0.9", - "prop-types": "^15.6.1", - "storybook-chromatic": "^2.2.2" + "prop-types": "^15.6.1" } }, "react-is": { @@ -19957,13 +18663,13 @@ } }, "react-popper-tooltip": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.10.1.tgz", - "integrity": "sha512-cib8bKiyYcrIlHo9zXx81G0XvARfL8Jt+xum709MFCgQa3HTqTi4au3iJ9tm7vi7WU7ngnqbpWkMinBOtwo+IQ==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.11.0.tgz", + "integrity": "sha512-Xxe08mAW990/NKYTEcZmdqchmB70hxQEPT7q7BMLGy3IkeNJI6ZaLODnzadTx1b7FGka8CLXyV/3g8EPaFJaig==", "dev": true, "requires": { - "@babel/runtime": "^7.7.4", - "react-popper": "^1.3.6" + "@babel/runtime": "^7.9.2", + "react-popper": "^1.3.7" } }, "react-qr-svg": { @@ -20026,9 +18732,9 @@ } }, "react-select": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-3.0.8.tgz", - "integrity": "sha512-v9LpOhckLlRmXN5A6/mGGEft4FMrfaBFTGAnuPHcUgVId7Je42kTq9y0Z+Ye5z8/j0XDT3zUqza8gaRaI1PZIg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-3.1.0.tgz", + "integrity": "sha512-wBFVblBH1iuCBprtpyGtd1dGMadsG36W5/t2Aj8OE6WbByDg5jIFyT7X5gT+l0qmT5TqWhxX+VsKJvCEl2uL9g==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -20038,30 +18744,7 @@ "memoize-one": "^5.0.0", "prop-types": "^15.6.0", "react-input-autosize": "^2.2.2", - "react-transition-group": "^2.2.1" - }, - "dependencies": { - "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.1.2" - } - }, - "react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", - "dev": true, - "requires": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" - } - } + "react-transition-group": "^4.3.0" } }, "react-sizeme": { @@ -20111,12 +18794,12 @@ } }, "react-use": { - "version": "13.26.3", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-13.26.3.tgz", - "integrity": "sha512-81I+p1F7LFxdkGM3qiLjF9NUi2mTupvaiN76IAWL5JMY7BHTGSk6PFdzByqJrxnTJ/RBrbIVttmqvYKHOz/9Tw==", + "version": "13.27.1", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-13.27.1.tgz", + "integrity": "sha512-bAwdqDMXs5lovEanXnL1izledfrPEUUv1afoTVB59eUiYcDyKul+M/dT/2WcgHjoY/R6QlrTcZoW4R7ifwvBfw==", "requires": { "@types/js-cookie": "2.2.5", - "@xobotyi/scrollbar-width": "1.9.3", + "@xobotyi/scrollbar-width": "1.9.5", "copy-to-clipboard": "^3.2.0", "fast-deep-equal": "^3.1.1", "fast-shallow-equal": "^1.0.0", @@ -20159,6 +18842,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, + "optional": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -20170,6 +18854,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -20183,6 +18868,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, + "optional": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -20238,13 +18924,10 @@ } }, "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", + "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", + "dev": true }, "recast": { "version": "0.14.7", @@ -20263,12 +18946,6 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true } } }, @@ -20329,26 +19006,27 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", "dev": true, "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" } }, "regex-not": { @@ -20378,17 +19056,17 @@ "dev": true }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { @@ -20398,9 +19076,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", - "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -20473,9 +19151,9 @@ "dev": true }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -20485,7 +19163,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -20495,17 +19173,11 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -20513,13 +19185,13 @@ "dev": true }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } } } @@ -20542,6 +19214,18 @@ "request-promise-core": "1.1.3", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } } }, "require-directory": { @@ -20551,9 +19235,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { @@ -20673,12 +19357,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -21090,12 +19768,6 @@ "mixin-object": "^2.0.1" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", @@ -21237,9 +19909,9 @@ } }, "sisteransi": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz", - "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "slash": { @@ -21528,12 +20200,6 @@ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, - "speedometer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", - "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI=", - "dev": true - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -21543,15 +20209,6 @@ "extend-shallow": "^3.0.0" } }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -21711,59 +20368,11 @@ "dev": true }, "store2": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.10.0.tgz", - "integrity": "sha512-tWEpK0snS2RPUq1i3R6OahfJNjWCQYNxq0+by1amCSuw0mXtymJpzmZIeYpA1UAa+7B0grCpNYIbDcd7AgTbFg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.11.0.tgz", + "integrity": "sha512-WeIZ5+c/KzBSutSqOjUCAkk1qTLVBcYUuvrhNx8ndjLZKdZRfP6Vv7AOxlynuL6tVU/6zt6e2CTHwWI5KE+fKg==", "dev": true }, - "storybook-chromatic": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/storybook-chromatic/-/storybook-chromatic-2.2.2.tgz", - "integrity": "sha512-n79eX0MQEHzDCnXqgOjvDOQ1xfBOTyQHy1RNxEMQvZolfAle8YVS0NnRpcW0xh/Ye621Iote3dwFI3uQmlcqPw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "@chromaui/localtunnel": "1.10.1", - "async-retry": "^1.1.4", - "commander": "^2.9.0", - "debug": "^3.0.1", - "denodeify": "^1.2.1", - "env-ci": "^2.1.0", - "fake-tag": "^1.0.0", - "jsdom": "^11.5.1", - "jsonfile": "^4.0.0", - "minimatch": "^3.0.4", - "node-ask": "^1.0.1", - "node-fetch": "^2.6.0", - "node-loggly-bulk": "^2.2.4", - "param-case": "^2.1.1", - "pino": "4.10.2", - "progress": "^2.0.3", - "progress-stream": "^2.0.0", - "semver": "^6.2.0", - "strip-color": "^0.1.0", - "tmp": "^0.1.0", - "tree-kill": "^1.1.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "storybook-react-router": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/storybook-react-router/-/storybook-react-router-1.0.8.tgz", @@ -21950,16 +20559,11 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, + "optional": true, "requires": { "is-utf8": "^0.2.0" } }, - "strip-color": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", - "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=", - "dev": true - }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -22048,34 +20652,47 @@ } }, "styled-icons": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/styled-icons/-/styled-icons-9.5.0.tgz", - "integrity": "sha512-nby51U6+SRY5010P15XogBZubrqblqXTV50+lA/xBkC1QrTap1BIgCvoJwH9FF5kYI+LKFl/xeco/drwqIR2Pw==", - "requires": { - "@styled-icons/boxicons-logos": "^9.4.1", - "@styled-icons/boxicons-regular": "^9.4.1", - "@styled-icons/boxicons-solid": "^9.4.1", - "@styled-icons/crypto": "^9.4.1", - "@styled-icons/entypo": "^9.5.0", - "@styled-icons/entypo-social": "^9.5.0", - "@styled-icons/evil": "^9.4.1", - "@styled-icons/fa-brands": "^9.4.1", - "@styled-icons/fa-regular": "^9.4.1", - "@styled-icons/fa-solid": "^9.4.1", - "@styled-icons/feather": "^9.4.1", - "@styled-icons/foundation": "^9.5.0", - "@styled-icons/heroicons-outline": "^9.5.0", - "@styled-icons/heroicons-solid": "^9.5.0", - "@styled-icons/icomoon": "^9.4.1", - "@styled-icons/material": "^9.4.1", - "@styled-icons/octicons": "^9.4.1", - "@styled-icons/open-iconic": "^9.5.0", - "@styled-icons/remix-fill": "^9.4.1", - "@styled-icons/remix-line": "^9.4.1", - "@styled-icons/styled-icon": "^9.4.1", - "@styled-icons/typicons": "^9.4.1", - "@styled-icons/zondicons": "^9.5.0", - "tslib": "^1.9.3" + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/styled-icons/-/styled-icons-10.2.1.tgz", + "integrity": "sha512-QzAJYhDpw+ouTUi1HU6cOwfBitWf5FhvBBZ8i2wGTdl6WnlOJOTaZpVpsyruhoyJyagbLg7snDMby8B7n74j2A==", + "requires": { + "@styled-icons/boxicons-logos": "^10.0.0", + "@styled-icons/boxicons-regular": "^10.0.0", + "@styled-icons/boxicons-solid": "^10.0.0", + "@styled-icons/crypto": "^10.0.0", + "@styled-icons/entypo": "^10.0.0", + "@styled-icons/entypo-social": "^10.0.0", + "@styled-icons/evaicons-outline": "^10.2.0", + "@styled-icons/evaicons-solid": "^10.2.0", + "@styled-icons/evil": "^10.0.0", + "@styled-icons/fa-brands": "^10.0.0", + "@styled-icons/fa-regular": "^10.0.0", + "@styled-icons/fa-solid": "^10.0.0", + "@styled-icons/feather": "^10.0.0", + "@styled-icons/foundation": "^10.0.0", + "@styled-icons/heroicons-outline": "^10.0.0", + "@styled-icons/heroicons-solid": "^10.0.0", + "@styled-icons/icomoon": "^10.0.0", + "@styled-icons/material": "^10.0.0", + "@styled-icons/material-outlined": "^10.0.0", + "@styled-icons/material-rounded": "^10.0.0", + "@styled-icons/material-sharp": "^10.0.0", + "@styled-icons/material-twotone": "^10.0.0", + "@styled-icons/octicons": "^10.1.0", + "@styled-icons/open-iconic": "^10.0.0", + "@styled-icons/remix-fill": "^10.0.0", + "@styled-icons/remix-line": "^10.0.0", + "@styled-icons/styled-icon": "^10.0.0", + "@styled-icons/typicons": "^10.0.0", + "@styled-icons/zondicons": "^10.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } } }, "styled-normalize": { @@ -22127,9 +20744,9 @@ } }, "supports-hyperlinks": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.0.0.tgz", - "integrity": "sha512-bFhn0MQ8qefLyJ3K7PpHiPUTuTVPWw6RXfaMeV6xgJLXtBbszyboz1bvGTVv4R0YpQm2DqlXXn0fFHhxUHVE5w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -22154,9 +20771,9 @@ } }, "svg-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.3.tgz", - "integrity": "sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", "dev": true }, "svgo": { @@ -22380,9 +20997,9 @@ } }, "terser": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.4.tgz", - "integrity": "sha512-5fqgBPLgVHZ/fVvqRhhUp9YUiGXhFJ9ZkrZWD9vQtFBR4QIGTnbsb+/kKqSqfgp3WnBwGWAFnedGTtmX1YTn0w==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", + "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", "dev": true, "requires": { "commander": "^2.20.0", @@ -22407,6 +21024,18 @@ "webpack-sources": "^1.4.3" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "cacache": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", @@ -22433,13 +21062,19 @@ "unique-filename": "^1.1.1" } }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, @@ -22555,15 +21190,6 @@ "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", "dev": true }, - "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "dev": true, - "requires": { - "rimraf": "^2.6.3" - } - }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -22654,11 +21280,12 @@ "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "dev": true, "requires": { + "ip-regex": "^2.1.0", "psl": "^1.1.28", "punycode": "^2.1.1" } @@ -22672,12 +21299,6 @@ "punycode": "^2.1.0" } }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -22713,9 +21334,9 @@ "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" }, "ts-pnp": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", - "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true }, "tslib": { @@ -22843,15 +21464,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { @@ -22994,29 +21615,58 @@ } }, "url-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-3.0.0.tgz", - "integrity": "sha512-a84JJbIA5xTFTWyjjcPdnsu+41o/SNE8SpXMdUvXs6Q+LuhCD9E2+0VCiuDWqgo3GGXVlFHzArDmBpj9PgWn4A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.0.0.tgz", + "integrity": "sha512-sPsoBs8NkSJt9k/2zLUMDAf0rYaG00EtrFQpHRIphKrR6stGsO92LUJf/uUeQNKEoxqoJ4R4qDLqHl+AOEqolA==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.26", + "schema-utils": "^2.6.5" }, "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "schema-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.2.tgz", - "integrity": "sha512-sazKNMBX/jwrXRkOI7N6dtiTVYqzSckzol8SGuHt0lE/v3xSW6cUkOqzu6Bq2tW+dlUzq3CWIqHU3ZKauliqdg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -23139,9 +21789,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.0.1.tgz", - "integrity": "sha512-x0yZvZAkjJwdD3fPiJzYP37aod0ati4LlmD2RmpKjqewjKAov/u/ytZ8ViIZb07cN4cePKzl9ijiUi7C1LQ8hQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz", + "integrity": "sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -23208,12 +21858,12 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" }, "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "^1.0.0" } }, "w3c-xmlserializer": { @@ -23227,12 +21877,6 @@ "xml-name-validator": "^3.0.0" } }, - "wait-for-expect": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", - "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==", - "dev": true - }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -23252,12 +21896,12 @@ } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^2.1.8", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" } @@ -23269,15 +21913,15 @@ "dev": true }, "webpack": { - "version": "4.41.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.6.tgz", - "integrity": "sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA==", + "version": "4.42.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz", + "integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", "acorn": "^6.2.1", "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", @@ -23289,7 +21933,7 @@ "loader-utils": "^1.2.3", "memory-fs": "^0.4.1", "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "neo-async": "^2.6.1", "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", @@ -23299,12 +21943,6 @@ "webpack-sources": "^1.4.1" }, "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", - "dev": true - }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -23337,6 +21975,21 @@ "to-regex": "^3.0.2" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "terser-webpack-plugin": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", @@ -23357,13 +22010,13 @@ } }, "webpack-bundle-analyzer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", - "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz", + "integrity": "sha512-Nfd8HDwfSx1xBwC+P8QMGvHAOITxNBSvu/J/mCJvOwv+G4VWkU7zir9SSenTtyCi0LnVtmsc7G5SZo1uV+bxRw==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", "bfj": "^6.1.1", "chalk": "^2.4.1", "commander": "^2.18.0", @@ -23378,9 +22031,15 @@ }, "dependencies": { "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", "dev": true }, "ws": { @@ -23701,9 +22360,9 @@ "dev": true }, "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -23721,9 +22380,9 @@ } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "which-pm-runs": { @@ -23815,13 +22474,79 @@ } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "wrappy": { @@ -23840,9 +22565,9 @@ } }, "write-file-atomic": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", - "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -23852,13 +22577,10 @@ } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", + "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==", + "dev": true }, "xml-name-validator": { "version": "3.0.0", @@ -23872,6 +22594,15 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -23879,9 +22610,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -23900,33 +22631,106 @@ } }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "yauzl": { @@ -23941,16 +22745,16 @@ } }, "yup": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.28.1.tgz", - "integrity": "sha512-xSHMZA7UyecSG/CCTDCtnYZMjBrYDR/C7hu0fMsZ6UcS/ngko4qCVFbw+CAmNtHlbItKkvQ3YXITODeTj/dUkw==", + "version": "0.28.3", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.28.3.tgz", + "integrity": "sha512-amVkCgFWe5bGjrrUiODkbIzrSwtB8JpZrQYSrfj2YsbRdrV+tn9LquWdZDlfOx2HXyfEA8FGnlwidE/bFDxO7Q==", "requires": { - "@babel/runtime": "^7.0.0", - "fn-name": "~2.0.1", - "lodash": "^4.17.11", + "@babel/runtime": "^7.8.7", + "fn-name": "~3.0.0", + "lodash": "^4.17.15", "lodash-es": "^4.17.11", - "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.6", + "property-expr": "^2.0.0", + "synchronous-promise": "^2.0.10", "toposort": "^2.0.2" } } diff --git a/package.json b/package.json index e8a1a136..44a6285d 100644 --- a/package.json +++ b/package.json @@ -58,48 +58,48 @@ "styled-components": ">=5.0" }, "dependencies": { - "@babel/runtime": "^7.8.4", + "@babel/runtime": "^7.9.2", "browser-cookie-lite": "^1.0.4", - "dayjs": "^1.8.21", - "downshift": "^5.0.3", - "i18next": "^19.3.2", + "dayjs": "^1.8.23", + "downshift": "^5.0.5", + "i18next": "^19.3.4", "jump.js": "^1.0.2", "lodash-es": "^4.17.15", - "match-sorter": "^4.0.2", + "match-sorter": "^4.1.0", "moment": "^2.24.0", - "nouislider": "^14.1.1", + "nouislider": "^14.2.0", "nouislider-react": "^3.3.7", "rc-notification": "^4.0.0", - "react-dropzone": "^10.2.1", - "react-i18next": "^11.3.3", + "react-dropzone": "^10.2.2", + "react-i18next": "^11.3.4", "react-qr-svg": "^2.2.1", "react-transition-group": "^4.3.0", - "react-use": "^13.26.3", + "react-use": "^13.27.1", "react-useportal": "^1.0.13", - "styled-icons": "^9.5.0", + "styled-icons": "^10.2.1", "styled-normalize": "^8.0.7", "styled-theming": "^2.2.0", "uuid-validate": "0.0.3", - "yup": "^0.28.1" + "yup": "^0.28.3" }, "devDependencies": { - "@babel/core": "^7.8.4", + "@babel/core": "^7.9.0", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.8.3", - "@babel/polyfill": "^7.8.3", - "@babel/preset-env": "^7.8.4", - "@babel/preset-react": "^7.8.3", - "@storybook/addon-actions": "^5.3.14", - "@storybook/addon-knobs": "^5.3.14", - "@storybook/react": "^5.3.14", - "@testing-library/jest-dom": "^5.1.1", - "@testing-library/react": "^9.4.1", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/polyfill": "^7.8.7", + "@babel/preset-env": "^7.9.0", + "@babel/preset-react": "^7.9.4", + "@storybook/addon-actions": "^5.3.17", + "@storybook/addon-knobs": "^5.3.17", + "@storybook/react": "^5.3.17", + "@testing-library/jest-dom": "^5.3.0", + "@testing-library/react": "^10.0.1", "babel-eslint": "^10.1.0", - "babel-jest": "^25.1.0", - "babel-loader": "^8.0.6", + "babel-jest": "^25.2.4", + "babel-loader": "^8.1.0", "babel-plugin-dynamic-import-node": "^2.3.0", "babel-plugin-styled-components": "^1.10.7", "babel-plugin-syntax-dynamic-import": "^6.18.0", @@ -108,22 +108,22 @@ "clean-webpack-plugin": "^3.0.0", "css-loader": "^3.4.2", "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.0", - "eslint-plugin-import": "^2.20.1", + "eslint-config-prettier": "^6.10.1", + "eslint-plugin-import": "^2.20.2", "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-react": "^7.18.3", - "eslint-plugin-react-hooks": "^2.5.0", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-react-hooks": "^3.0.0", "extract-text-webpack-plugin": "^4.0.0-beta.0", - "file-loader": "^5.1.0", + "file-loader": "^6.0.0", "formik": "^2.1.3", "husky": "^4.2.3", "identity-obj-proxy": "^3.0.0", "image-webpack-loader": "^6.0.0", - "jest": "^25.1.0", - "jest-environment-jsdom": "^25.1.0", + "jest": "^25.2.4", + "jest-environment-jsdom": "^25.2.4", "jest-environment-jsdom-global": "^1.2.1", "jest-styled-components": "^7.0.0", - "lint-staged": "^10.0.8", + "lint-staged": "^10.0.10", "mini-css-extract-plugin": "^0.9.0", "optimize-css-assets-webpack-plugin": "^5.0.3", "prettier": "^1.19.1", @@ -135,9 +135,9 @@ "style-loader": "^1.1.3", "styled-components": "^5.0.0", "test-data-bot": "^0.8.0", - "url-loader": "^3.0.0", - "webpack": "^4.41.6", - "webpack-bundle-analyzer": "^3.6.0", + "url-loader": "^4.0.0", + "webpack": "^4.42.1", + "webpack-bundle-analyzer": "^3.6.1", "webpack-cli": "^3.3.11" } } diff --git a/src/assets/icons/Asterisk.jsx b/src/assets/icons/Asterisk.jsx index f63bc3e0..c89f8d50 100644 --- a/src/assets/icons/Asterisk.jsx +++ b/src/assets/icons/Asterisk.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { Asterisk } from "styled-icons/fa-solid/Asterisk"; +import { Asterisk } from "@styled-icons/fa-solid/Asterisk"; import { spin } from "../animations"; const AsteriskIcon = styled(Asterisk)` diff --git a/src/assets/icons/Sync.jsx b/src/assets/icons/Sync.jsx index df570461..39401258 100644 --- a/src/assets/icons/Sync.jsx +++ b/src/assets/icons/Sync.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { SyncAlt } from "styled-icons/fa-solid/SyncAlt"; +import { SyncAlt } from "@styled-icons/fa-solid/SyncAlt"; import { spin } from "../animations"; const SyncIcon = styled(SyncAlt)` diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index ce03a114..025a6f2b 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -25,25 +25,25 @@ export { Qrcode, Ban, Trash, -} from "styled-icons/fa-solid"; +} from "@styled-icons/fa-solid"; export { RightArrow as BoxRightArrow, LeftArrow as BoxLeftArrow, -} from "styled-icons/boxicons-solid"; +} from "@styled-icons/boxicons-solid"; export { TimesCircle, ArrowAltCircleDown, ArrowAltCircleRight, -} from "styled-icons/fa-regular"; +} from "@styled-icons/fa-regular"; export { KeyboardArrowRight, KeyboardArrowLeft, PlaylistAdd, PlaylistAddCheck, -} from "styled-icons/material"; +} from "@styled-icons/material"; export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; From daf59552eee114cdf32fb040c7e59193bc2f1293 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 13:49:35 +0300 Subject: [PATCH 002/175] colors: grayMedium color was added --- .../DynamicListItem/DynamicListItemLink.jsx | 4 ++- .../StyledListLayoutListItem.jsx | 4 ++- .../ListLayoutList/StyledListLayoutList.jsx | 4 ++- .../FormCheckbox/CheckboxThemes.jsx | 6 ++-- src/themes/colors.js | 28 +++++++++++-------- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx b/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx index 2d8e9abc..cb15e2b2 100644 --- a/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx +++ b/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx @@ -2,6 +2,8 @@ import { NavLink } from "react-router-dom"; import styled from "styled-components"; +import { colors } from "../../../themes/colors"; + const DynamicListItemLink = styled(NavLink)` display: block; width: 100%; @@ -10,7 +12,7 @@ const DynamicListItemLink = styled(NavLink)` height: 33px; &:not(:last-child) { - border-bottom: 1px solid #dadada; + border-bottom: 1px solid ${colors.grayMedium}; } `; diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx index abb04ce8..235a3df5 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx @@ -1,9 +1,11 @@ import styled from "styled-components"; +import { colors } from "../../../../themes/colors"; + export const StyledListLayoutListItem = styled.li` height: 50px; padding: 10px 0; - border-bottom: 1px solid #dadada; + border-bottom: 1px solid ${colors.grayMedium}; display: flex; align-items: center; box-sizing: border-box; diff --git a/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx b/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx index cc4f90b1..cf16f46c 100644 --- a/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx +++ b/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx @@ -1,5 +1,7 @@ import styled from "styled-components"; +import { colors } from "../../../themes/colors"; + export const StyledListLayoutList = styled.ul` padding-left: 0; margin: 0; @@ -18,6 +20,6 @@ export const StyledListLayoutList = styled.ul` } &:not(:first-child) { - border-top: 1px solid #dadada; + border-top: 1px solid ${colors.grayMedium}; } `; diff --git a/src/components/form/components/FormCheckbox/CheckboxThemes.jsx b/src/components/form/components/FormCheckbox/CheckboxThemes.jsx index fddb8ec3..fe34f848 100644 --- a/src/components/form/components/FormCheckbox/CheckboxThemes.jsx +++ b/src/components/form/components/FormCheckbox/CheckboxThemes.jsx @@ -9,7 +9,7 @@ const lightTheme = css` if (disabled) { return css` background-color: ${colors.grayLight}; - border-color: #dadada; + border-color: ${colors.grayMedium}; `; } @@ -40,7 +40,7 @@ const darkTheme = css` if (disabled) { return css` background-color: ${colors.grayLight}; - border-color: #dadada; + border-color: ${colors.grayMedium}; `; } @@ -58,7 +58,7 @@ const darkTheme = css` return css` background-color: ${colors.whiteSimple}; - border-color: #dadada; + border-color: ${colors.grayMedium}; &:hover { background-color: #f2f5f7; diff --git a/src/themes/colors.js b/src/themes/colors.js index 89f4a5e8..364273e0 100644 --- a/src/themes/colors.js +++ b/src/themes/colors.js @@ -5,6 +5,7 @@ export const colors = { whiteGrayDark: "#f2f2f2", whiteBlue: "#f2f6fa", whiteYellow: "#f8f8ee", + /* for types of records */ navyBlue: "#1e8ab9", darkBlue: "#1A5D7B", @@ -13,13 +14,15 @@ export const colors = { greenish: "#3f9655", lightYellow: "#ffc228", lightRed: "#f65502", + + slate: "#3b4b5a", gray: "#5d7784", - graySimpleLight: "#ddd", - graySimple: "#bbb", - grayWhite: "#aaa", + grayMedium: "#dadada", + graySimpleLight: "#dddddd", + graySimple: "#bbbbbb", + grayWhite: "#aaaaaa", grayMiddle: "#6a6e71", grayLight: "#f3f3f3", - slate: "#3b4b5a", grayBlueLight: "#6b7d86", grayBlueLight2: "#e2e5e8", grayBlueMiddle: "#bec9ce", @@ -27,31 +30,32 @@ export const colors = { grayBlueDarkLight: "#798990", grayBlueDark: "#687d90", grayBlueDark2: "#ebf0f2", - grayRedLight: "#eee", + grayRedLight: "#eeeeee", grayRedDark: "#dedede", - grayRedMiddle: "#ccc", + grayRedMiddle: "#cccccc", + brownSimple: "#AC3D03", - black: "#000", + brownGray: "#aaaaaa", + simpleBlue: "#4c6a95", + middleBlue: "#42608C", blueWhite: "#e4e9eb", blueGray: "#6a8694", - brownGray: "#aaaaaa", veryLightBlue: "#e4e9ec", - darkestBlue: "#2e4669", - middleBlue: "#42608C", - simpleBlue: "#4c6a95", iceBlue: "#f0f1f2", darkestPink: "#b6245e", middlePink: "#be2c66", simplePink: "#d2477e", - darkBlack: "#222", bloodOrange: "#ef5305", orangeSimple: "#f89406", orangeDark: "#fabf29", + black: "#000000", + darkBlack: "#222222", + red: "#dc0909", green: "#008000", }; From 928b59cbc2b67798d561cecd6b04e19500d7e454 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 13:50:36 +0300 Subject: [PATCH 003/175] FormSwitch: styles were changed --- .../FormSwitch/FormSwitch.stories.js | 3 - .../components/FormSwitch/FormSwitchLabel.jsx | 55 +++++-------------- .../FormSwitch/StyledFormSwitch.jsx | 5 +- .../form/components/FormSwitch/index.jsx | 4 -- 4 files changed, 16 insertions(+), 51 deletions(-) diff --git a/src/components/form/components/FormSwitch/FormSwitch.stories.js b/src/components/form/components/FormSwitch/FormSwitch.stories.js index 18811c37..3f0d0fae 100644 --- a/src/components/form/components/FormSwitch/FormSwitch.stories.js +++ b/src/components/form/components/FormSwitch/FormSwitch.stories.js @@ -1,6 +1,5 @@ import React from "react"; import { storiesOf } from "@storybook/react"; -import { select } from "@storybook/addon-knobs"; import { useState } from "react"; @@ -15,8 +14,6 @@ storiesOf("Form Components| FormSwitch", module).add("default", () => { name="form-switch" checked={value} onChange={({ target: { checked } }) => setValue(checked)} - size={select("Size", ["m", "l"], "m")} - theme={select("Theme", ["blue", "dark-gray"], "blue")} /> ); } diff --git a/src/components/form/components/FormSwitch/FormSwitchLabel.jsx b/src/components/form/components/FormSwitch/FormSwitchLabel.jsx index 025b25b4..65ee57f1 100644 --- a/src/components/form/components/FormSwitch/FormSwitchLabel.jsx +++ b/src/components/form/components/FormSwitch/FormSwitchLabel.jsx @@ -1,66 +1,39 @@ -import styled, { css } from "styled-components"; +import styled from "styled-components"; import { colors } from "../../../../themes/colors"; - -const checkedColors = { - blue: "#34a7c1", - "dark-gray": colors.gray, -}; -const backColors = { - blue: "#eeeeee", - "dark-gray": "#DDDDDD", -}; +import { widths } from "./StyledFormSwitch"; const circleSizes = { - s: 18, - m: 22, -}; - -const barHeights = { - s: 12, m: 16, }; -const barWidths = { - s: 28, - m: 40, +const barHeights = { + m: 24, }; -const checkedStyles = css` - border-color: #34a7c1; - background-color: ${({ theme }) => checkedColors[theme]}; - box-shadow: 3px 2px 18px 0 rgba(0, 0, 0, 0.2); -`; - const calcOffset = ({ checked, size }) => { - return !checked ? "0px" : barWidths[size] - circleSizes[size] / 2 - 3 + "px"; + return !checked ? "4px" : widths[size] - circleSizes[size] - 4 + "px"; }; const FormSwitchLabel = styled.div` cursor: pointer; - padding: 0; - border: 0 solid ${({ checked }) => (checked ? "#34a7c1" : "#eeeeee")}; - border-radius: 22px; - background-color: ${({ theme }) => backColors[theme]}; height: ${({ size }) => barHeights[size] + "px"}; - width: ${({ size }) => barWidths[size] + "px"}; + border-radius: 20px; + background-color: ${({ checked }) => + checked ? colors.slate : colors.grayMedium}; &:before { content: ""; display: block; - height: ${({ size }) => circleSizes[size] + "px"}; - width: ${({ size }) => circleSizes[size] + "px"}; - margin: -3px; - background: #9ba7ac; position: absolute; - top: 0; - bottom: 0; left: ${calcOffset}; - transition: left 120ms ease-in-out; + top: 50%; + transform: translateY(-50%); + height: ${({ size }) => circleSizes[size] + "px"}; + width: ${({ size }) => circleSizes[size] + "px"}; border-radius: 50%; - box-shadow: 0 2px 8px 0 #aaa; - - ${({ checked }) => (checked ? checkedStyles : "")} + background-color: ${colors.whiteSimple}; + transition: left 120ms ease-in-out; } `; diff --git a/src/components/form/components/FormSwitch/StyledFormSwitch.jsx b/src/components/form/components/FormSwitch/StyledFormSwitch.jsx index 8291c04a..c2db3264 100644 --- a/src/components/form/components/FormSwitch/StyledFormSwitch.jsx +++ b/src/components/form/components/FormSwitch/StyledFormSwitch.jsx @@ -1,8 +1,7 @@ import styled from "styled-components"; const widths = { - s: 28, - m: 40, + m: 44, }; const StyledFormSwitch = styled.label` @@ -12,4 +11,4 @@ const StyledFormSwitch = styled.label` user-select: none; `; -export { StyledFormSwitch }; +export { StyledFormSwitch, widths }; diff --git a/src/components/form/components/FormSwitch/index.jsx b/src/components/form/components/FormSwitch/index.jsx index 38c3b713..975cbcf2 100644 --- a/src/components/form/components/FormSwitch/index.jsx +++ b/src/components/form/components/FormSwitch/index.jsx @@ -10,7 +10,6 @@ import { getTestId } from "../../utils"; function FormSwitch({ name, size, - theme, checked, onChange, className, @@ -37,7 +36,6 @@ function FormSwitch({ @@ -49,14 +47,12 @@ FormSwitch.propTypes = { checked: PropTypes.bool.isRequired, name: PropTypes.string.isRequired, size: PropTypes.oneOf(["s", "m"]), - theme: PropTypes.oneOf(["blue", "dark-gray"]), className: PropTypes.string, "data-testid": PropTypes.string, }; FormSwitch.defaultProps = { size: "m", - theme: "blue", }; export { FormSwitch, StyledFormSwitch }; From 536f4436a8d9028f9d403b11a0be5a6dae37c1e0 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 14:06:09 +0300 Subject: [PATCH 004/175] colors: duplicate brownGray color was removed --- src/components/CardSmall/CardSmall.stories.js | 2 +- src/components/CardSmall/StyledCardSmall.jsx | 2 +- .../Entries/EntryPersonCard/StyledEntryPersonCard.jsx | 2 +- .../EntryCardContainer/StyledEntryCardContainer.jsx | 2 +- .../EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx | 2 +- .../PersonCardDetailedDataItemLabel.jsx | 2 +- .../StyledPersonsGroupListPersonInfoIdxid.jsx | 2 +- .../PersonsGroupListPersonTypeSelectLabel.jsx | 4 ++-- .../PersonsGroupPerson/StyledPersonsGroupPerson.jsx | 2 +- src/components/UIBadge/UIBadgeThemes.jsx | 2 +- src/themes/colors.js | 1 - 11 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/components/CardSmall/CardSmall.stories.js b/src/components/CardSmall/CardSmall.stories.js index 948090e1..01683f20 100644 --- a/src/components/CardSmall/CardSmall.stories.js +++ b/src/components/CardSmall/CardSmall.stories.js @@ -8,7 +8,7 @@ import { CardSmall } from "./index"; import { personMock } from "../../../test/__mocks__"; import { PlaylistAdd } from "../../assets/icons"; -import { colors } from "../../themes/index"; +import { colors } from "../../themes/colors"; storiesOf("Basic UI|CardSmall", module) .add("default", () => { diff --git a/src/components/CardSmall/StyledCardSmall.jsx b/src/components/CardSmall/StyledCardSmall.jsx index 2e9ca856..0640201e 100644 --- a/src/components/CardSmall/StyledCardSmall.jsx +++ b/src/components/CardSmall/StyledCardSmall.jsx @@ -6,7 +6,7 @@ import { CardSmallData } from "./index"; const themes = { light: { backgroundColor: colors.iceBlue, - textColor: colors.brownGray, + textColor: colors.grayWhite, }, dark: { backgroundColor: colors.slate, diff --git a/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx b/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx index 3c6bf3fd..1238e9a2 100644 --- a/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx +++ b/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx @@ -11,7 +11,7 @@ import { StyledEntryCardLiveness, } from "../components"; -import { colors } from "../../../themes/index"; +import { colors } from "../../../themes/colors"; const themes = { light: { diff --git a/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx b/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx index 9a6e3dec..a6491587 100644 --- a/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx +++ b/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx @@ -9,7 +9,7 @@ import { import { StyledEntryCardInfoItem } from "../EntryCardInfoItem"; import { StyledEntryCardLiveness } from "../EntryCardLiveness"; -import { colors } from "../../../../themes/index"; +import { colors } from "../../../../themes/colors"; const themes = { light: { diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx index a89f5056..978ad7a9 100644 --- a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import { FaceSize } from "../../../../FaceSize"; -import { colors } from "../../../../../themes/index"; +import { colors } from "../../../../../themes/colors"; const EntryCardPhotoFaceSize = styled(FaceSize)` top: -7px; diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx index 6bd9357c..1fce9fdf 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx @@ -8,7 +8,7 @@ const PersonCardDetailedDataItemLabel = styled.span` min-width: 94px; margin-right: 40px; font-size: 13px; - color: ${colors.brownGray}; + color: ${colors.grayWhite}; `; export { PersonCardDetailedDataItemLabel }; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx index f489c24a..23bbaf28 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx @@ -5,7 +5,7 @@ import { colors } from "../../../../../themes/colors"; export const StyledPersonsGroupListPersonInfoIdxid = styled.span` font-size: 13px; line-height: 1.38; - color: ${colors.brownGray}; + color: ${colors.grayWhite}; span { color: ${colors.black}; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx index b2caae60..fc705d9c 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx @@ -1,9 +1,9 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/index"; +import { colors } from "../../../../themes/colors"; export const PersonsGroupListPersonTypeSelectLabel = styled.label` font-size: 13px; - color: ${colors.brownGray}; + color: ${colors.grayWhite}; margin-bottom: 5px; display: inline-block; `; diff --git a/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx b/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx index d6c3a495..43029ce4 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx @@ -13,7 +13,7 @@ function getStyles({ isActive }) { } ` : css` - color: ${colors.brownGray}; + color: ${colors.grayWhite}; background-color: ${colors.iceBlue}; b { diff --git a/src/components/UIBadge/UIBadgeThemes.jsx b/src/components/UIBadge/UIBadgeThemes.jsx index 132690ab..364d9d45 100644 --- a/src/components/UIBadge/UIBadgeThemes.jsx +++ b/src/components/UIBadge/UIBadgeThemes.jsx @@ -8,7 +8,7 @@ const blueTheme = css` `; const grayTheme = css` - background-color: ${colors.brownGray}; + background-color: ${colors.grayWhite}; color: ${colors.whiteSimple}; `; diff --git a/src/themes/colors.js b/src/themes/colors.js index 364273e0..15872640 100644 --- a/src/themes/colors.js +++ b/src/themes/colors.js @@ -35,7 +35,6 @@ export const colors = { grayRedMiddle: "#cccccc", brownSimple: "#AC3D03", - brownGray: "#aaaaaa", simpleBlue: "#4c6a95", middleBlue: "#42608C", From f354cf5a1bc624252eae4596b8a0d1d74c718ec6 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 14:06:26 +0300 Subject: [PATCH 005/175] FormInputToggle: component was removed --- .../FormInputToggle.stories.js | 35 ------ .../FormInputToggle/FormInputToggleButton.jsx | 22 ---- .../FormInputToggle/StyledFormInputToggle.jsx | 20 --- .../__tests__/FormInputToggle.js | 114 ------------------ .../form/components/FormInputToggle/index.jsx | 104 ---------------- src/components/form/components/index.js | 1 - 6 files changed, 296 deletions(-) delete mode 100644 src/components/form/components/FormInputToggle/FormInputToggle.stories.js delete mode 100644 src/components/form/components/FormInputToggle/FormInputToggleButton.jsx delete mode 100644 src/components/form/components/FormInputToggle/StyledFormInputToggle.jsx delete mode 100644 src/components/form/components/FormInputToggle/__tests__/FormInputToggle.js delete mode 100644 src/components/form/components/FormInputToggle/index.jsx diff --git a/src/components/form/components/FormInputToggle/FormInputToggle.stories.js b/src/components/form/components/FormInputToggle/FormInputToggle.stories.js deleted file mode 100644 index 8785ea4c..00000000 --- a/src/components/form/components/FormInputToggle/FormInputToggle.stories.js +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { storiesOf } from "@storybook/react"; -import { number, text, boolean } from "@storybook/addon-knobs"; -import { action } from "@storybook/addon-actions"; - -import { useState } from "react"; - -import { FormInputToggle } from "./index"; - -storiesOf("Form Components| FormInputToggle", module).add("default", () => { - function ComponentWrapper() { - const [value, setValue] = useState(""); - - return ( - { - const { - target: { value }, - } = ev; - setValue(value); - action("On change")(ev); - }} - onBlur={action("On blur")} - placeholder={text("placeholder", "enter smth")} - valuePlaceholder={text("value placeholder", "touch me")} - disabled={boolean("disabled", false)} - width={number("width", 200)} - /> - ); - } - - return ; -}); diff --git a/src/components/form/components/FormInputToggle/FormInputToggleButton.jsx b/src/components/form/components/FormInputToggle/FormInputToggleButton.jsx deleted file mode 100644 index a5be9285..00000000 --- a/src/components/form/components/FormInputToggle/FormInputToggleButton.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import styled from "styled-components"; - -import { Button } from "../../../Button"; -import { FormUneditableFieldStyles } from "../FormUneditableField/StyledFormUneditableField"; - -import { colors } from "../../../../themes/colors"; - -const FormInputToggleButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", - isRounded: false, -}))` - ${FormUneditableFieldStyles} - /* 11px - смещение инпута влево */ - /* текст переносится на другую строку */ - /* width: calc(100% - 11px); */ - width: 100%; - text-decoration: underline dotted; - border-bottom: 1px dotted - ${({ hasContent }) => (hasContent ? "transparent" : colors.black)}; -`; - -export { FormInputToggleButton }; diff --git a/src/components/form/components/FormInputToggle/StyledFormInputToggle.jsx b/src/components/form/components/FormInputToggle/StyledFormInputToggle.jsx deleted file mode 100644 index 39b2f5fa..00000000 --- a/src/components/form/components/FormInputToggle/StyledFormInputToggle.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import styled from "styled-components"; - -import { StyledFormInput } from "../FormInput"; - -const StyledFormInputToggle = styled.span` - height: 24px; - line-height: 24px; - display: inline-block; - width: ${props => (props.width ? props.width + "px" : "auto")}; - min-width: ${({ hasValue }) => (hasValue ? "auto" : "100px")}; - cursor: pointer; - - ${StyledFormInput} { - width: ${props => (props.width ? "100%" : "auto")}; - position: relative; - left: -11px; - } -`; - -export { StyledFormInputToggle }; diff --git a/src/components/form/components/FormInputToggle/__tests__/FormInputToggle.js b/src/components/form/components/FormInputToggle/__tests__/FormInputToggle.js deleted file mode 100644 index f0cc5fe8..00000000 --- a/src/components/form/components/FormInputToggle/__tests__/FormInputToggle.js +++ /dev/null @@ -1,114 +0,0 @@ -import React, { useState } from "react"; - -import { FormInputToggle } from "../index"; - -import { fireEvent } from "@testing-library/react"; -import { render } from "../../../../../../test/utils"; - -const onChangeMock = jest.fn(); -const onBlurMock = jest.fn(); - -const componentName = "test-form-input"; - -afterEach(() => { - onChangeMock.mockClear(); - onBlurMock.mockClear(); -}); - -afterAll(() => { - onChangeMock.mockReset(); - onBlurMock.mockReset(); -}); - -function renderFormInputToggle(props) { - function FormInputToggleWrapper() { - const [value, setValue] = useState(null); - - return ( -
- { - setValue(ev.target.value); - onChangeMock(ev); - }} - onBlur={onBlurMock} - {...props} - /> - - ); - } - - return render(); -} - -describe("FormInputToggle tests", () => { - test("FormInputToggle should hide button and render input on click", () => { - const { queryByTestId, getByTestId } = renderFormInputToggle(); - - expect(queryByTestId(`${componentName}-input`)).not.toBeInTheDocument(); - expect(queryByTestId(`${componentName}-button`)).toBeInTheDocument(); - - fireEvent.click(getByTestId(componentName)); - - expect(queryByTestId(`${componentName}-input`)).toBeInTheDocument(); - expect(queryByTestId(`${componentName}-button`)).not.toBeInTheDocument(); - }); - - test("FormInputToggle should focus on input after render it", () => { - const { queryByTestId, getByTestId } = renderFormInputToggle(); - - fireEvent.click(getByTestId(componentName)); - - expect(queryByTestId(`${componentName}-input`)).toHaveFocus(); - }); - - test("FormInputToggle should not hide input and render button on click inside", () => { - const { queryByTestId, getByTestId } = renderFormInputToggle(); - - fireEvent.click(getByTestId(componentName)); - fireEvent.click(getByTestId(componentName)); - - expect(queryByTestId(`${componentName}-input`)).toBeInTheDocument(); - expect(queryByTestId(`${componentName}-button`)).not.toBeInTheDocument(); - }); - - test("FormInputToggle should change input value correctly", () => { - const { queryByTestId, getByTestId } = renderFormInputToggle(); - - fireEvent.click(getByTestId(componentName)); - fireEvent.change(getByTestId(`${componentName}-input`), { - target: { value: "jane_doe" }, - }); - - expect(queryByTestId(`${componentName}-input`)).toBeInTheDocument(); - expect(queryByTestId(`${componentName}-button`)).not.toBeInTheDocument(); - - fireEvent.blur(getByTestId(`${componentName}-input`)); - - expect(queryByTestId(`${componentName}-button`)).toHaveTextContent( - "jane_doe" - ); - expect(onChangeMock.mock.calls).toHaveLength(1); - }); - - test("FormInputToggle should call onBlur callback correctly", () => { - const { getByTestId } = renderFormInputToggle(); - - fireEvent.click(getByTestId(componentName)); - fireEvent.blur(getByTestId(`${componentName}-input`)); - - expect(onBlurMock.mock.calls).toHaveLength(1); - }); - - test("FormInputToggle should hide input and render button on click outside", () => { - const { queryByTestId, getByTestId } = renderFormInputToggle(); - - fireEvent.click(getByTestId(componentName)); - fireEvent.blur(getByTestId(`${componentName}-input`)); - - expect(queryByTestId(`${componentName}-input`)).not.toBeInTheDocument(); - expect(queryByTestId(`${componentName}-button`)).toBeInTheDocument(); - }); -}); diff --git a/src/components/form/components/FormInputToggle/index.jsx b/src/components/form/components/FormInputToggle/index.jsx deleted file mode 100644 index f63c78be..00000000 --- a/src/components/form/components/FormInputToggle/index.jsx +++ /dev/null @@ -1,104 +0,0 @@ -import React, { useEffect } from "react"; -import PropTypes from "prop-types"; - -import { useRef, useState } from "react"; - -import { FormInput } from "../FormInput"; -import { StyledFormInputToggle } from "./StyledFormInputToggle"; -import { FormInputToggleButton } from "./FormInputToggleButton"; - -import { getTestId } from "../../utils"; - -function FormInputToggle({ - initialOpen, - name, - width, - value, - onChange, - onBlur, - disabled, - type, - placeholder, - buttonText, - valuePlaceholder, - className, - "data-testid": testId, -}) { - testId = getTestId(name, testId); - - const [isOpen, setIsOpen] = useState(initialOpen); - const inputRef = useRef(null); - - useEffect(() => { - if (isOpen && inputRef.current) { - inputRef.current.focus(); - } - }, [isOpen]); - - const buttonContent = buttonText || value || valuePlaceholder; - const hasValue = value !== undefined && value !== null && value !== ""; - - return ( - { - setIsOpen(true); - }} - > - {isOpen ? ( - { - setIsOpen(false); - if (onBlur) { - onBlur(ev); - } - }} - value={hasValue ? value : ""} - innerRef={inputRef} - disabled={disabled} - data-testid={testId + "-input"} - /> - ) : ( - - {buttonContent} - - )} - - ); -} - -FormInputToggle.propTypes = { - onChange: PropTypes.func.isRequired, - onBlur: PropTypes.func, - value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - name: PropTypes.string.isRequired, - placeholder: PropTypes.string, - type: PropTypes.oneOf(["text", "password", "email", "number"]), - initialOpen: PropTypes.bool, - width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - disabled: PropTypes.bool, - className: PropTypes.string, - valuePlaceholder: PropTypes.string, - buttonText: PropTypes.string, - "data-testid": PropTypes.string, -}; - -FormInputToggle.defaultProps = { - type: "text", - initialOpen: false, -}; - -export { FormInputToggle, StyledFormInputToggle }; diff --git a/src/components/form/components/index.js b/src/components/form/components/index.js index d09e62a2..0f7e27a7 100644 --- a/src/components/form/components/index.js +++ b/src/components/form/components/index.js @@ -1,7 +1,6 @@ export * from "./FormField"; export * from "./FormLabel"; export * from "./FormInput"; -export * from "./FormInputToggle"; export * from "./FormSwitch"; export * from "./FormDropdown"; export * from "./FormCheckbox"; From 36a1c6b3e748af35f372208f05a31e36bea68aed Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 14:06:41 +0300 Subject: [PATCH 006/175] FormInput: styles were changed --- .../PageFiltersListSearch/index.jsx | 2 +- .../components/FormInput/FormInput.stories.js | 5 ++- .../components/FormInput/StyledFormInput.jsx | 32 ++++++++++++++++++ .../form/components/FormInput/index.jsx | 33 +++++-------------- 4 files changed, 46 insertions(+), 26 deletions(-) create mode 100644 src/components/form/components/FormInput/StyledFormInput.jsx diff --git a/src/components/PageFiltersList/PageFiltersListSearch/index.jsx b/src/components/PageFiltersList/PageFiltersListSearch/index.jsx index ac1ea176..9ef51206 100644 --- a/src/components/PageFiltersList/PageFiltersListSearch/index.jsx +++ b/src/components/PageFiltersList/PageFiltersListSearch/index.jsx @@ -43,7 +43,7 @@ function PageFiltersListSearch({ className={className} iconSize={iconSize} data-testid={testId} - innerRef={inputRef} + ref={inputRef} value={searchQuery} placeholder={textPlaceholder} onChange={handleChange} diff --git a/src/components/form/components/FormInput/FormInput.stories.js b/src/components/form/components/FormInput/FormInput.stories.js index a7ef3fdf..47fc7e5d 100644 --- a/src/components/form/components/FormInput/FormInput.stories.js +++ b/src/components/form/components/FormInput/FormInput.stories.js @@ -1,11 +1,13 @@ import React, { useState } from "react"; + import { storiesOf } from "@storybook/react"; -import { boolean } from "@storybook/addon-knobs"; +import { boolean, text } from "@storybook/addon-knobs"; import { FormInput } from "./index"; storiesOf("Form Components| FormInput", module).add("default", () => { const isDisabled = boolean("Disabled", false); + const placeholder = text("Placeholder", "enter smth"); function ComponentWrapper() { const [value, setValue] = useState(""); @@ -14,6 +16,7 @@ storiesOf("Form Components| FormInput", module).add("default", () => { setValue(value)} disabled={isDisabled} /> diff --git a/src/components/form/components/FormInput/StyledFormInput.jsx b/src/components/form/components/FormInput/StyledFormInput.jsx new file mode 100644 index 00000000..93d41ac7 --- /dev/null +++ b/src/components/form/components/FormInput/StyledFormInput.jsx @@ -0,0 +1,32 @@ +import styled from "styled-components"; + +import { colors } from "../../../../themes/colors"; + +const StyledFormInput = styled.input` + box-sizing: border-box; + padding: 6px 16px; + height: 30px; + background-color: ${colors.whiteGrayLight}; + border-radius: 5px; + font-size: 14px; + line-height: 18px; + color: ${colors.darkBlack}; + border: 1px solid transparent; + + &[type="number"]::-webkit-inner-spin-button, + &[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; + } + + &:focus { + outline: none; + border: 1px solid ${colors.grayMedium}; + } + + &:disabled { + color: ${colors.grayWhite}; + } +`; + +export { StyledFormInput }; diff --git a/src/components/form/components/FormInput/index.jsx b/src/components/form/components/FormInput/index.jsx index dd928440..3799ad49 100644 --- a/src/components/form/components/FormInput/index.jsx +++ b/src/components/form/components/FormInput/index.jsx @@ -1,33 +1,19 @@ import React from "react"; import PropTypes from "prop-types"; -import styled from "styled-components"; -import { getTestId } from "../../utils"; - -const StyledFormInput = styled.input` - box-sizing: border-box; - border: 1px solid #9aa7b3; - border-radius: 3px; - padding: 2px 10px; - - &:focus { - outline: none; - } +import { StyledFormInput } from "./StyledFormInput"; - &[type="number"]::-webkit-inner-spin-button, - &[type="number"]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; - } -`; - -function FormInput(props) { - const testId = getTestId(props.name, props["data-testid"]); +import { getTestId } from "../../utils"; +const FormInput = React.forwardRef((props, ref) => { return ( - + ); -} +}); FormInput.propTypes = { onChange: PropTypes.func.isRequired, @@ -39,7 +25,6 @@ FormInput.propTypes = { disabled: PropTypes.bool, "data-testid": PropTypes.string, className: PropTypes.string, - innerRef: PropTypes.object, }; FormInput.defaultProps = { From a7587451990f290e42773621c32f41913c0b1478 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 15:23:41 +0300 Subject: [PATCH 007/175] icons: Check icon was replaced with custom icon --- src/assets/icons/Check.jsx | 33 +++++++++++++++++++++++++++++++++ src/assets/icons/index.js | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/assets/icons/Check.jsx diff --git a/src/assets/icons/Check.jsx b/src/assets/icons/Check.jsx new file mode 100644 index 00000000..4158b2e7 --- /dev/null +++ b/src/assets/icons/Check.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function Check({ size, className }) { + return ( + + + + ); +} + +Check.propTypes = { + size: PropTypes.number.isRequired, + className: PropTypes.string, +}; + +Check.defaultProps = { + size: 10, +}; + +export default Check; diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index 025a6f2b..70511101 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -3,7 +3,6 @@ export { Eye, EyeSlash, Camera, - Check, Video, VideoSlash, User, @@ -45,5 +44,6 @@ export { PlaylistAddCheck, } from "@styled-icons/material"; +export { default as Check } from "./Check"; export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; From 90dfc4b785b737aee7661ca2e113d6eeaba3465f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 15:25:52 +0300 Subject: [PATCH 008/175] FormCheckbox: styles were changed --- .../CardSmall/CardSmallCheckbox/index.jsx | 8 +- .../components/FormCheckbox/CheckboxSizes.jsx | 30 -------- .../FormCheckbox/CheckboxThemes.jsx | 77 ------------------- .../FormCheckbox/FormCheckbox.stories.js | 10 +-- .../FormCheckbox/FormCheckboxCheckedIcon.jsx | 7 ++ .../FormCheckbox/FormCheckboxFlag.jsx | 21 ----- .../FormCheckbox/StyledFormCheckbox.jsx | 37 +++++++-- .../form/components/FormCheckbox/index.jsx | 37 ++++----- .../__tests__/FormCheckboxGroup.js | 4 +- src/themes/colors.js | 3 +- 10 files changed, 58 insertions(+), 176 deletions(-) delete mode 100644 src/components/form/components/FormCheckbox/CheckboxSizes.jsx delete mode 100644 src/components/form/components/FormCheckbox/CheckboxThemes.jsx create mode 100644 src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx delete mode 100644 src/components/form/components/FormCheckbox/FormCheckboxFlag.jsx diff --git a/src/components/CardSmall/CardSmallCheckbox/index.jsx b/src/components/CardSmall/CardSmallCheckbox/index.jsx index 0bffbbf6..8d979e3e 100644 --- a/src/components/CardSmall/CardSmallCheckbox/index.jsx +++ b/src/components/CardSmall/CardSmallCheckbox/index.jsx @@ -14,13 +14,7 @@ function CardSmallCheckbox({ name, onChange, checked, isHidden }) { }} isHidden={isHidden} > - + ); } diff --git a/src/components/form/components/FormCheckbox/CheckboxSizes.jsx b/src/components/form/components/FormCheckbox/CheckboxSizes.jsx deleted file mode 100644 index c8aec4f0..00000000 --- a/src/components/form/components/FormCheckbox/CheckboxSizes.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import { css } from "styled-components"; - -import { FormCheckboxFlag } from "./FormCheckboxFlag"; - -const smallSize = css` - width: 22px; - height: 22px; - - ${FormCheckboxFlag}:before { - width: 6px; - height: 11px; - margin: 1px 0 0 6px; - } -`; - -const largeSize = css` - width: 24px; - height: 24px; - - ${FormCheckboxFlag}:before { - width: 6px; - height: 15px; - margin: 0px 0 0 7px; - } -`; - -export default { - small: smallSize, - large: largeSize, -}; diff --git a/src/components/form/components/FormCheckbox/CheckboxThemes.jsx b/src/components/form/components/FormCheckbox/CheckboxThemes.jsx deleted file mode 100644 index fe34f848..00000000 --- a/src/components/form/components/FormCheckbox/CheckboxThemes.jsx +++ /dev/null @@ -1,77 +0,0 @@ -import { css } from "styled-components"; - -import { FormCheckboxFlag } from "./FormCheckboxFlag"; - -import { colors } from "../../../../themes/colors"; - -const lightTheme = css` - ${({ checked, disabled }) => { - if (disabled) { - return css` - background-color: ${colors.grayLight}; - border-color: ${colors.grayMedium}; - `; - } - - if (checked) { - return css` - background-color: ${colors.whiteSimple}; - border-color: ${colors.slate}; - - &:hover { - background-color: #f2f5f7; - } - `; - } - - return css` - background-color: ${colors.whiteSimple}; - border-color: #9aa7b3; - `; - }} - - ${FormCheckboxFlag}:before { - border-color: ${colors.slate}; - } -`; - -const darkTheme = css` - ${({ checked, disabled }) => { - if (disabled) { - return css` - background-color: ${colors.grayLight}; - border-color: ${colors.grayMedium}; - `; - } - - if (checked) { - return css` - background-color: ${colors.slate}; - border-color: ${colors.slate}; - - &:hover { - background-color: #6e7b88; - border-color: #6e7b88; - } - `; - } - - return css` - background-color: ${colors.whiteSimple}; - border-color: ${colors.grayMedium}; - - &:hover { - background-color: #f2f5f7; - } - `; - }} - - ${FormCheckboxFlag}:before { - border-color: ${colors.whiteSimple}; - } -`; - -export default { - light: lightTheme, - dark: darkTheme, -}; diff --git a/src/components/form/components/FormCheckbox/FormCheckbox.stories.js b/src/components/form/components/FormCheckbox/FormCheckbox.stories.js index 9f65c5e0..a5d1c018 100644 --- a/src/components/form/components/FormCheckbox/FormCheckbox.stories.js +++ b/src/components/form/components/FormCheckbox/FormCheckbox.stories.js @@ -1,14 +1,12 @@ import React from "react"; import { storiesOf } from "@storybook/react"; -import { select, boolean } from "@storybook/addon-knobs"; +import { boolean } from "@storybook/addon-knobs"; import { useState } from "react"; import { FormCheckbox } from "./index"; storiesOf("Form Components| FormCheckbox", module).add("default", () => { - const checkboxTheme = select("Theme", ["light", "dark"], "light"); - const checkboxSize = select("Size", ["small", "large"], "small"); const isCheckboxDisabled = boolean("Disabled", false); const checkboxChecked = boolean("Checked", false); @@ -19,9 +17,9 @@ storiesOf("Form Components| FormCheckbox", module).add("default", () => { setChecked(!checked)} - checkboxTheme={checkboxTheme} - size={checkboxSize} + onChange={() => { + setChecked(checked => !checked); + }} disabled={isCheckboxDisabled} /> ); diff --git a/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx b/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx new file mode 100644 index 00000000..33fab2c2 --- /dev/null +++ b/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +import { Check } from "../../../../assets/icons"; + +const FormCheckboxCheckedIcon = styled(Check)``; + +export { FormCheckboxCheckedIcon }; diff --git a/src/components/form/components/FormCheckbox/FormCheckboxFlag.jsx b/src/components/form/components/FormCheckbox/FormCheckboxFlag.jsx deleted file mode 100644 index 3b99a9fd..00000000 --- a/src/components/form/components/FormCheckbox/FormCheckboxFlag.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import styled from "styled-components"; - -const FormCheckboxFlag = styled.div` - position: absolute; - width: 100%; - height: 100%; - - &:before { - content: ""; - display: block; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - transition: transform 120ms ease; - - transform: ${({ checked }) => - checked ? "rotate(45deg) scale(1)" : "rotate(45deg) scale(0)"}; - } -`; - -export { FormCheckboxFlag }; diff --git a/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx b/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx index 648e8beb..e29dad83 100644 --- a/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx +++ b/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx @@ -1,21 +1,42 @@ -import styled from "styled-components"; +import styled, { css } from "styled-components"; -import CheckboxThemes from "./CheckboxThemes"; -import CheckboxSizes from "./CheckboxSizes"; +import { FormCheckboxCheckedIcon } from "./FormCheckboxCheckedIcon"; + +import { colors } from "../../../../themes/colors"; + +function getStyles({ disabled }) { + if (disabled) { + return css` + background-color: ${colors.grayLight}; + border-color: ${colors.grayWhite}; + color: ${colors.grayWhite}; + `; + } + + return css` + background-color: ${colors.whiteSimple}; + border-color: ${colors.grayDark}; + color: ${colors.slate}; + `; +} const StyledFormCheckbox = styled.label` cursor: ${({ disabled }) => (disabled ? "not-allowed" : "pointer")}; position: relative; - box-sizing: border-box; display: block; - + text-align: center; border: 1px solid; - border-radius: 2px; + border-radius: 3px; transition: background-color 120ms ease-in-out, border-color 120ms ease-in-out; + width: 22px; + height: 22px; + + ${getStyles} - ${({ checkboxTheme }) => CheckboxThemes[checkboxTheme]}; - ${({ size }) => CheckboxSizes[size]}; + ${FormCheckboxCheckedIcon} { + width: 10px; + } `; export { StyledFormCheckbox }; diff --git a/src/components/form/components/FormCheckbox/index.jsx b/src/components/form/components/FormCheckbox/index.jsx index 8d0ceb08..872d3e75 100644 --- a/src/components/form/components/FormCheckbox/index.jsx +++ b/src/components/form/components/FormCheckbox/index.jsx @@ -2,36 +2,32 @@ import React from "react"; import PropTypes from "prop-types"; import { StyledFormCheckbox } from "./StyledFormCheckbox"; -import { FormCheckboxFlag } from "./FormCheckboxFlag"; +import { FormCheckboxCheckedIcon } from "./FormCheckboxCheckedIcon"; import { FormCheckboxInput } from "./FormCheckboxInput"; import { getTestId } from "../../utils"; -function FormCheckbox({ - checked, - onChange, - onBlur, - onClick, - name, - disabled, - checkboxTheme, - size, - className, - "data-testid": testId, -}) { - testId = getTestId(name, testId); +function FormCheckbox(props) { + const { + checked, + onChange, + onBlur, + onClick, + name, + disabled, + className, + } = props; + const testId = getTestId(props.name, props["data-testid"]); return ( - + {checked && } ); } -describe("FormCheckbox tests", () => { - test("FormCheckbox should change checked state by click", () => { +describe("FormCheckboxGroup tests", () => { + test("FormCheckboxGroup should change checked state by click", () => { const { getByTestId } = renderFormCheckboxGroup(); expect(getByTestId("test-form")).toHaveFormValues({ diff --git a/src/themes/colors.js b/src/themes/colors.js index 15872640..e12c1b66 100644 --- a/src/themes/colors.js +++ b/src/themes/colors.js @@ -18,10 +18,11 @@ export const colors = { slate: "#3b4b5a", gray: "#5d7784", grayMedium: "#dadada", - graySimpleLight: "#dddddd", graySimple: "#bbbbbb", + graySimpleLight: "#dddddd", grayWhite: "#aaaaaa", grayMiddle: "#6a6e71", + grayDark: "#A8B3BE", grayLight: "#f3f3f3", grayBlueLight: "#6b7d86", grayBlueLight2: "#e2e5e8", From 94385d705d40136537093cf38d187bfb35913b3f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 15:44:06 +0300 Subject: [PATCH 009/175] FormRangeSlider: styles were changed --- .../components/FormRangeSlider/styles.css | 76 +++++++------------ 1 file changed, 27 insertions(+), 49 deletions(-) diff --git a/src/components/form/components/FormRangeSlider/styles.css b/src/components/form/components/FormRangeSlider/styles.css index f12ae198..fa6f8789 100644 --- a/src/components/form/components/FormRangeSlider/styles.css +++ b/src/components/form/components/FormRangeSlider/styles.css @@ -3,69 +3,47 @@ display: none; } -.noUi-handle { - outline: none; - border: none; - background: #a1a1a1; - border-radius: 22px; - box-shadow: 0 2px 8px 0px #aaa; +.noUi-horizontal { + height: 4px; } +.noUi-connect { + background: #3b4b5a; +} +.noUi-target { + background: #e4e9eb; + border-radius: 6px; -.noUi-horizontal { - height: 8px; + box-shadow: none; + border: none; } +.noUi-handle { + cursor: pointer; + background-color: #3b4b5a; + border-radius: 50%; + + outline: none; + border: none; + box-shadow: none; +} .noUi-horizontal .noUi-handle { - /* left: -11px; */ - top: -7px; - width: 22px; - height: 22px; + top: -3px; + right: -5px; + width: 10px; + height: 10px; } .noUi-tooltip { - font-size: 12px; font-weight: 600; + font-size: 12px; + line-height: 16px; + color: #3b4b5a; + border: none; } - .noUi-horizontal .noUi-tooltip { transform: translate(-50%, 0); left: 50%; bottom: 120%; padding: 0; } - -html:not([dir="rtl"]) .noUi-horizontal .noUi-handle { - right: -11px; -} - -.noUi-connects { - border-radius: 3px; -} - -.noUi-connect { - background: #27a1ca; -} - -.noUi-target { - padding: 0 10px; - background: #ddd; - border-radius: 2px; - box-shadow: none; - border: none; -} -.noUi-base:before, -.noUi-base:after { - width: 11px; - content: ""; - position: absolute; - top: 0; - height: 100%; - display: block; -} -.noUi-base:before { - left: -11px; -} -.noUi-base:after { - left: 100%; -} From 522c4dd4ab1b7727b0ebe51093af705d474970c1 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 16:02:16 +0300 Subject: [PATCH 010/175] FormCheckbox: icon height fix --- .../form/components/FormCheckbox/StyledFormCheckbox.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx b/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx index e29dad83..a7d14565 100644 --- a/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx +++ b/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx @@ -36,6 +36,7 @@ const StyledFormCheckbox = styled.label` ${FormCheckboxCheckedIcon} { width: 10px; + height: 100%; } `; From ef9ca7f221827fdb6ef10f7a53f5f4e05da433bc Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 16:02:35 +0300 Subject: [PATCH 011/175] FormCheckboxGroup: styles were changed --- .../FormCheckboxGroup.stories.js | 4 +- .../FormCheckboxGroupItemTitle.jsx | 20 +++++++ .../StyledFormCheckboxGroupItem.jsx | 5 +- .../FormCheckboxGroupItem/index.jsx | 7 ++- .../StyledFormCheckboxGroup.jsx | 13 +++++ .../components/FormCheckboxGroup/index.jsx | 58 ++++++++++--------- 6 files changed, 71 insertions(+), 36 deletions(-) create mode 100644 src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/FormCheckboxGroupItemTitle.jsx create mode 100644 src/components/form/components/FormCheckboxGroup/StyledFormCheckboxGroup.jsx diff --git a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroup.stories.js b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroup.stories.js index 17dedc3f..28ae3246 100644 --- a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroup.stories.js +++ b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroup.stories.js @@ -32,7 +32,7 @@ storiesOf("Form Components| FormCheckboxGroup", module).add("default", () => {
Select all} + label="Select all" data-testid="test-group-select-all" checked={selectableProps.isAllSelected} onChange={({ target }) => { @@ -45,7 +45,7 @@ storiesOf("Form Components| FormCheckboxGroup", module).add("default", () => { /> Deselect all} + label="Deselect all" data-testid="test-group-deselect-all" checked={selectableProps.isAllDeselected} onChange={({ target }) => { diff --git a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/FormCheckboxGroupItemTitle.jsx b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/FormCheckboxGroupItemTitle.jsx new file mode 100644 index 00000000..8905d44f --- /dev/null +++ b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/FormCheckboxGroupItemTitle.jsx @@ -0,0 +1,20 @@ +import styled, { css } from "styled-components"; + +import { FormLabelTitle } from "../../FormLabel"; + +function getStyles({ checked }) { + return checked + ? css` + font-weight: bold; + ` + : null; +} + +const FormCheckboxGroupItemTitle = styled(FormLabelTitle)` + font-size: 16px; + line-height: 26px; + + ${getStyles} +`; + +export { FormCheckboxGroupItemTitle }; diff --git a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/StyledFormCheckboxGroupItem.jsx b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/StyledFormCheckboxGroupItem.jsx index 3fd3925e..4dfa95d6 100644 --- a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/StyledFormCheckboxGroupItem.jsx +++ b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/StyledFormCheckboxGroupItem.jsx @@ -1,8 +1,5 @@ import styled from "styled-components"; export const StyledFormCheckboxGroupItem = styled.div` - &:not(:last-of-type) { - margin-bottom: 10px; - line-height: 1.4; - } + height: 26px; `; diff --git a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/index.jsx b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/index.jsx index a5acfac5..b6f2b948 100644 --- a/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/index.jsx +++ b/src/components/form/components/FormCheckboxGroup/FormCheckboxGroupItem/index.jsx @@ -2,9 +2,10 @@ import React from "react"; import PropTypes from "prop-types"; import { FormCheckbox } from "../../FormCheckbox"; -import { FormLabel, FormLabelTitle } from "../../FormLabel"; +import { FormLabel } from "../../FormLabel"; import { StyledFormCheckboxGroupItem } from "./StyledFormCheckboxGroupItem"; +import { FormCheckboxGroupItemTitle } from "./FormCheckboxGroupItemTitle"; function FormCheckboxGroupItem({ label, @@ -18,7 +19,9 @@ function FormCheckboxGroupItem({ return ( - {label} + + {label} + { - return render({ - ...selectedListProps, - checkboxes: () => { - const { selected, handleCheckboxChange } = selectedListProps; - - return options.map(({ label, value: optionValue }) => { - return ( - - ); - }); - }, - }); - }} - /> + + { + return render({ + ...selectedListProps, + checkboxes: () => { + const { selected, handleCheckboxChange } = selectedListProps; + + return options.map(({ label, value: optionValue }) => { + return ( + + ); + }); + }, + }); + }} + /> + ); } From 6da38c9669a3bd9cb76793f96f4abc78628c82b7 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 17:13:00 +0300 Subject: [PATCH 012/175] FormRangeSlider: withClear prop was removed --- .../FormRangeSlider.stories.js | 3 +- .../FormRangeSliderResetButton.jsx | 18 ---------- .../__tests__/FormRangeSlider.js | 13 +++---- .../form/components/FormRangeSlider/index.jsx | 34 +++---------------- 4 files changed, 11 insertions(+), 57 deletions(-) delete mode 100644 src/components/form/components/FormRangeSlider/FormRangeSliderResetButton.jsx diff --git a/src/components/form/components/FormRangeSlider/FormRangeSlider.stories.js b/src/components/form/components/FormRangeSlider/FormRangeSlider.stories.js index 85ef85ef..380140cf 100644 --- a/src/components/form/components/FormRangeSlider/FormRangeSlider.stories.js +++ b/src/components/form/components/FormRangeSlider/FormRangeSlider.stories.js @@ -1,6 +1,6 @@ import React from "react"; import { storiesOf } from "@storybook/react"; -import { number, boolean } from "@storybook/addon-knobs"; +import { number } from "@storybook/addon-knobs"; import { useState } from "react"; @@ -19,7 +19,6 @@ storiesOf("Form Components| FormRangeSlider", module).add("default", () => { minFrom={number("min from", 0)} minTo={number("min from", 99)} width={number("width", 200)} - withClear={boolean("with clear", false)} />
); diff --git a/src/components/form/components/FormRangeSlider/FormRangeSliderResetButton.jsx b/src/components/form/components/FormRangeSlider/FormRangeSliderResetButton.jsx deleted file mode 100644 index 773f7188..00000000 --- a/src/components/form/components/FormRangeSlider/FormRangeSliderResetButton.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import styled, { css } from "styled-components"; - -import { Button } from "../../../Button"; - -const FormRangeSliderResetButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` - color: #6b787f; - font-size: 22px; - transition: opacity 120ms ease-in-out; - ${({ isHidden }) => - isHidden && - css` - opacity: 0; - `} -`; - -export { FormRangeSliderResetButton }; diff --git a/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js b/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js index 210240a2..e84e4ab7 100644 --- a/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js +++ b/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js @@ -52,12 +52,11 @@ describe("FormRangeSlider tests", () => { ).toHaveTextContent(99); }); - test("FormRangeSlider should render clear button corretly", () => { - const { getByTestId } = renderFormRangeSlider({ - withClear: true, - }); - - expect(getByTestId(`${componentName}-clear`)).not.toBeVisible(); + /** + * TODO: Подумать как написать этот тест + */ + test.skip("FormRangeSlider should change value correctly", () => { + const { getByTestId } = renderFormRangeSlider(); /** * реализация тестирования drag and drop @@ -75,7 +74,5 @@ describe("FormRangeSlider tests", () => { clientX: 1, clientY: 0, }); - - expect(getByTestId(`${componentName}-clear`)).toBeVisible(); }); }); diff --git a/src/components/form/components/FormRangeSlider/index.jsx b/src/components/form/components/FormRangeSlider/index.jsx index be132119..9def02b6 100644 --- a/src/components/form/components/FormRangeSlider/index.jsx +++ b/src/components/form/components/FormRangeSlider/index.jsx @@ -3,8 +3,6 @@ import PropTypes from "prop-types"; import { StyledFormRangeSlider } from "./StyledFormRangeSlider"; import { FormRangeSliderInner } from "./FormRangeSliderInner"; -import { FormRangeSliderResetButton } from "./FormRangeSliderResetButton"; -import { TimesCircle } from "../../../../assets/icons"; import { round } from "lodash"; import { getTestId } from "../../utils"; @@ -20,24 +18,14 @@ function formatter(decimals) { }; } -function FormRangeSlider({ - from, - to, - minFrom, - maxTo, - width, - onChange, - withClear, - className, - "data-testid": testId, -}) { - testId = getTestId(name, testId); - - const isClearButtonHidden = Boolean(minFrom === from && maxTo === to); +function FormRangeSlider(props) { + const { from, to, minFrom, maxTo, width, onChange, className } = props; + const testId = getTestId(props.name, props["data-testid"]); return ( - {withClear && ( - { - onChange([minFrom, maxTo]); - }} - isHidden={isClearButtonHidden} - data-testid={`${testId}-clear`} - > - - - )} ); } @@ -75,8 +52,8 @@ FormRangeSlider.propTypes = { maxTo: PropTypes.number, width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), onChange: PropTypes.func.isRequired, - withClear: PropTypes.bool, className: PropTypes.string, + name: PropTypes.string, "data-testid": PropTypes.string, }; @@ -85,7 +62,6 @@ FormRangeSlider.defaultProps = { maxTo: 99, from: 0, to: 99, - withClear: false, }; export { FormRangeSlider, StyledFormRangeSlider }; From 4fe10e3273d9d89d3883bcee16a0ab031c28224a Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 17:13:19 +0300 Subject: [PATCH 013/175] FormMultiSelect: styles were changed --- src/assets/icons/TimesDelete.jsx | 33 +++++++++++++++++++ src/assets/icons/index.js | 1 + .../FormMultiSelect/FormMultiSelectInput.jsx | 6 ++-- .../FormMultiSelectInputWrapper.jsx | 4 +-- .../FormMultiSelectOption.jsx | 2 +- .../FormMultiSelectMenu/index.jsx | 2 +- .../FormMultiSelectTagsItemCross.jsx | 26 --------------- .../FormMultiSelectTagsItemRemoveButton.jsx | 14 ++++++++ .../FormMultiSelectTagsItemTitle.jsx | 16 ++++++--- .../StyledFormMultiSelectTagsItem.jsx | 25 ++++++-------- .../FormMultiSelectTagsItem/index.jsx | 15 +++++---- .../FormMultiSelectTags/index.jsx | 23 ++++++++----- .../FormMultiSelect/StyledFormMultiSelect.jsx | 2 +- .../form/components/FormMultiSelect/index.jsx | 17 ++++------ 14 files changed, 109 insertions(+), 77 deletions(-) create mode 100644 src/assets/icons/TimesDelete.jsx delete mode 100644 src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemCross.jsx create mode 100644 src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx diff --git a/src/assets/icons/TimesDelete.jsx b/src/assets/icons/TimesDelete.jsx new file mode 100644 index 00000000..c891e6c2 --- /dev/null +++ b/src/assets/icons/TimesDelete.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function TimesDelete({ size, className }) { + return ( + + + + ); +} + +TimesDelete.propTypes = { + size: PropTypes.number.isRequired, + className: PropTypes.string, +}; + +TimesDelete.defaultProps = { + size: 10, +}; + +export default TimesDelete; diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index 70511101..50a432e8 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -44,6 +44,7 @@ export { PlaylistAddCheck, } from "@styled-icons/material"; +export { default as TimesDelete } from "./TimesDelete"; export { default as Check } from "./Check"; export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx index 3673309b..8496166a 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx @@ -7,12 +7,12 @@ const FormMultiSelectInput = styled.input` outline: none; display: inline-block; font-weight: 600; - line-height: 30px; color: #444; + padding-left: 3px; + ::placeholder { color: #444; } - padding-left: 3px; `; -export default FormMultiSelectInput; +export { FormMultiSelectInput }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx index 390d8a7d..33639e56 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx @@ -1,9 +1,9 @@ import styled from "styled-components"; -const FormMultiSelectInput = styled.li` +const FormMultiSelectInputWrapper = styled.li` margin-bottom: 8px; width: 130px; overflow: visible; `; -export default FormMultiSelectInput; +export { FormMultiSelectInputWrapper }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx index 6255da1e..02399854 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx @@ -17,4 +17,4 @@ const FormMultiSelectOption = styled.li` }}; `; -export default FormMultiSelectOption; +export { FormMultiSelectOption }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx index f786bc11..167ceceb 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx @@ -39,4 +39,4 @@ const FormMultiSelectMenu = styled.ul` } `; -export default FormMultiSelectMenu; +export { FormMultiSelectMenu }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemCross.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemCross.jsx deleted file mode 100644 index bc5491ec..00000000 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemCross.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import styled from "styled-components"; - -import Button from "../../../../../Button"; -import colors from "../../../../../../themes/colors"; - -const FormMultiSelectTagsItemCross = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` - margin-left: 4px; - padding: 0; - padding-top: 1px; - padding-left: 5px; - position: absolute; - right: 6px; - background: ${colors.whiteSimple}; - - &:before { - font-size: 18px; - color: #444; - content: "×"; - font-style: normal; - cursor: pointer; - } -`; - -export default FormMultiSelectTagsItemCross; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx new file mode 100644 index 00000000..45df4ee3 --- /dev/null +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx @@ -0,0 +1,14 @@ +import styled from "styled-components"; + +import { Button } from "../../../../../Button"; +import { colors } from "../../../../../../themes/colors"; + +const FormMultiSelectTagsItemRemoveButton = styled(Button).attrs(() => ({ + buttonTheme: "reset", +}))` + padding: 0; + display: flex; + background: ${colors.whiteSimple}; +`; + +export { FormMultiSelectTagsItemRemoveButton }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx index 7c176e13..c72784e4 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx @@ -1,13 +1,21 @@ import styled from "styled-components"; +import { textTrimStyles } from "../../../../../Text/TextTrim"; +import { colors } from "../../../../../../themes/colors"; + const FormMultiSelectTagsItemTitle = styled.span` margin-right: 4px; vertical-align: middle; display: inline-block; width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + color: ${colors.darkBlack}; + font-size: 12px; + + ${textTrimStyles} + + &:not(:last-child) { + margin-right: 8px; + } `; -export default FormMultiSelectTagsItemTitle; +export { FormMultiSelectTagsItemTitle }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx index 0a5de734..8dca6c51 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx @@ -1,21 +1,16 @@ import styled from "styled-components"; -const FormMultiSelectTagsItem = styled.li` - padding-left: 5px; - padding-right: 5px; - color: #444; - background: #fff; - white-space: nowrap; - overflow: hidden; +import { colors } from "../../../../../../themes/colors"; + +const StyledFormMultiSelectTagsItem = styled.li` + padding: 4px 6px; + background-color: ${colors.whiteSimple}; cursor: pointer; - border-radius: 6px; - max-width: 150px; - margin-bottom: 8px; + border-radius: 2px; + max-width: 180px; position: relative; - padding-right: 20px; - &:not(:last-child) { - margin-right: 10px; - } + display: flex; + align-items: center; `; -export default FormMultiSelectTagsItem; +export { StyledFormMultiSelectTagsItem }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx index bfd62ec9..6a3dd468 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx @@ -1,9 +1,10 @@ import React from "react"; import PropTypes from "prop-types"; -import StyledFormMultiSelectTagsItem from "./StyledFormMultiSelectTagsItem"; -import FormMultiSelectTagsItemTitle from "./FormMultiSelectTagsItemTitle"; -import FormMultiSelectTagsItemCross from "./FormMultiSelectTagsItemCross"; +import { StyledFormMultiSelectTagsItem } from "./StyledFormMultiSelectTagsItem"; +import { FormMultiSelectTagsItemTitle } from "./FormMultiSelectTagsItemTitle"; +import { FormMultiSelectTagsItemRemoveButton } from "./FormMultiSelectTagsItemRemoveButton"; +import { TimesDelete } from "../../../../../../assets/icons"; function FormMultiSelectTagsItem({ onCrossClick, @@ -13,10 +14,12 @@ function FormMultiSelectTagsItem({ return ( {title} - + > + + ); } @@ -27,4 +30,4 @@ FormMultiSelectTagsItem.propTypes = { onCrossClick: PropTypes.func.isRequired, }; -export default FormMultiSelectTagsItem; +export { FormMultiSelectTagsItem }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx index e9beed69..7d65b57f 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx @@ -1,21 +1,28 @@ import styled from "styled-components"; +import { StyledFormMultiSelectTagsItem } from "./FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem"; + +import { colors } from "../../../../../themes/colors"; + const FormMultiSelectTags = styled.ul` box-sizing: border-box; list-style-type: none; padding: 8px; + padding-bottom: 0; margin: 0; border-radius: 6px; cursor: text; - font-size: 16px; - font-weight: 600; - color: #555; - background: #f3f3f3; - line-height: 26px; + background: ${colors.grayLight}; display: flex; flex-wrap: wrap; - padding-left: 8px; - padding-bottom: 0; + + ${StyledFormMultiSelectTagsItem} { + margin-bottom: 8px; + + &:not(:last-child) { + margin-right: 10px; + } + } `; -export default FormMultiSelectTags; +export { FormMultiSelectTags }; diff --git a/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx b/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx index 886b5e04..f766c7e3 100644 --- a/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx +++ b/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx @@ -18,4 +18,4 @@ const StyledFormMultiSelect = styled.div` } `; -export default StyledFormMultiSelect; +export { StyledFormMultiSelect }; diff --git a/src/components/form/components/FormMultiSelect/index.jsx b/src/components/form/components/FormMultiSelect/index.jsx index f88085b0..4038c7a9 100644 --- a/src/components/form/components/FormMultiSelect/index.jsx +++ b/src/components/form/components/FormMultiSelect/index.jsx @@ -2,16 +2,13 @@ import React from "react"; import PropTypes from "prop-types"; import Downshift from "downshift"; - -import StyledFormMultiSelect from "./StyledFormMultiSelect"; -import FormMultiSelectInput from "./FormMultiSelectInput"; -import FormMultiSelectInputWrapper from "./FormMultiSelectInputWrapper"; - -import FormMultiSelectMenu from "./FormMultiSelectMenu"; -import FormMultiSelectOption from "./FormMultiSelectMenu/FormMultiSelectOption"; - -import FormMultiSelectTags from "./FormMultiSelectTags"; -import FormMultiSelectTagsItem from "./FormMultiSelectTags/FormMultiSelectTagsItem"; +import { StyledFormMultiSelect } from "./StyledFormMultiSelect"; +import { FormMultiSelectInput } from "./FormMultiSelectInput"; +import { FormMultiSelectInputWrapper } from "./FormMultiSelectInputWrapper"; +import { FormMultiSelectMenu } from "./FormMultiSelectMenu"; +import { FormMultiSelectOption } from "./FormMultiSelectMenu/FormMultiSelectOption"; +import { FormMultiSelectTags } from "./FormMultiSelectTags"; +import { FormMultiSelectTagsItem } from "./FormMultiSelectTags/FormMultiSelectTagsItem"; import { searchInList, From 5e00907ad1c50900a41a5354449fee3ceacbcbf7 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 17:17:19 +0300 Subject: [PATCH 014/175] FormMultiSelectTagsItemTitle: unused styles were removed --- .../FormMultiSelectTagsItemTitle.jsx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx index c72784e4..19cc892b 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx @@ -4,13 +4,8 @@ import { textTrimStyles } from "../../../../../Text/TextTrim"; import { colors } from "../../../../../../themes/colors"; const FormMultiSelectTagsItemTitle = styled.span` - margin-right: 4px; - vertical-align: middle; - display: inline-block; - width: 100%; - color: ${colors.darkBlack}; font-size: 12px; - + color: ${colors.darkBlack}; ${textTrimStyles} &:not(:last-child) { From a192a5ab91f60d51637b3c9d0d1d713bc145b02c Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 30 Mar 2020 17:17:48 +0300 Subject: [PATCH 015/175] FormInput: placeholder was removed --- src/components/form/components/FormInput/FormInput.stories.js | 4 +--- src/components/form/components/FormInput/index.jsx | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/form/components/FormInput/FormInput.stories.js b/src/components/form/components/FormInput/FormInput.stories.js index 47fc7e5d..116075df 100644 --- a/src/components/form/components/FormInput/FormInput.stories.js +++ b/src/components/form/components/FormInput/FormInput.stories.js @@ -1,13 +1,12 @@ import React, { useState } from "react"; import { storiesOf } from "@storybook/react"; -import { boolean, text } from "@storybook/addon-knobs"; +import { boolean } from "@storybook/addon-knobs"; import { FormInput } from "./index"; storiesOf("Form Components| FormInput", module).add("default", () => { const isDisabled = boolean("Disabled", false); - const placeholder = text("Placeholder", "enter smth"); function ComponentWrapper() { const [value, setValue] = useState(""); @@ -16,7 +15,6 @@ storiesOf("Form Components| FormInput", module).add("default", () => { setValue(value)} disabled={isDisabled} /> diff --git a/src/components/form/components/FormInput/index.jsx b/src/components/form/components/FormInput/index.jsx index 3799ad49..2170e1e6 100644 --- a/src/components/form/components/FormInput/index.jsx +++ b/src/components/form/components/FormInput/index.jsx @@ -20,7 +20,6 @@ FormInput.propTypes = { onBlur: PropTypes.func.isRequired, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, name: PropTypes.string.isRequired, - placeholder: PropTypes.string, type: PropTypes.oneOf(["text", "password", "email", "number"]), disabled: PropTypes.bool, "data-testid": PropTypes.string, From f7fabd3417aa8fc20077b795d5f625b0a977415e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 09:28:08 +0300 Subject: [PATCH 016/175] lint staged git add task removed --- .lintstagedrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.lintstagedrc b/.lintstagedrc index 11f90b2a..6b37c887 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,4 +1,4 @@ { - "*.{js,jsx}": ["eslint", "prettier --write", "git add"], - "*.{json}": ["prettier --write", "git add"] + "*.{js,jsx}": ["eslint", "prettier --write"], + "*.{json}": ["prettier --write"] } From 2a6419c4c2ee74ca74fd2ae285e7261fbcff23d5 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 09:38:18 +0300 Subject: [PATCH 017/175] husky update --- .huskyrc.json | 5 +++++ package.json | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .huskyrc.json diff --git a/.huskyrc.json b/.huskyrc.json new file mode 100644 index 00000000..4d077c82 --- /dev/null +++ b/.huskyrc.json @@ -0,0 +1,5 @@ +{ + "hooks": { + "pre-commit": "lint-staged" + } +} diff --git a/package.json b/package.json index 0169177c..e0630249 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,7 @@ "format": "npm run prettier -- --write", "validate": "npm run lint && npm run test && npm run prettier -- --list-different", "storybook": "start-storybook", - "build-storybook": "build-storybook -c .storybook -o docs", - "precommit": "lint-staged" + "build-storybook": "build-storybook -c .storybook -o docs" }, "betterScripts": { "test": { From bb55fdc71909dc011d616179732dc8bd3b00acca Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 10:20:58 +0300 Subject: [PATCH 018/175] tests now runs on precommit hook --- .huskyrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.huskyrc.json b/.huskyrc.json index 4d077c82..d210fb0c 100644 --- a/.huskyrc.json +++ b/.huskyrc.json @@ -1,5 +1,5 @@ { "hooks": { - "pre-commit": "lint-staged" + "pre-commit": "lint-staged && NODE_ENV=test jest --bail " } } From 5756d60e707412a0281c22e52642fd8480be9fce Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 10:45:39 +0300 Subject: [PATCH 019/175] Button: green theme was added --- src/components/Button/ButtonFits.jsx | 4 +++- src/components/Button/ButtonThemes.jsx | 7 +++++++ src/components/Button/index.jsx | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/Button/ButtonFits.jsx b/src/components/Button/ButtonFits.jsx index a65ec269..a59a0c95 100644 --- a/src/components/Button/ButtonFits.jsx +++ b/src/components/Button/ButtonFits.jsx @@ -2,7 +2,9 @@ import { css } from "styled-components"; const rectFit = css``; -const squareFit = css``; +const squareFit = css` + border-radius: 5px; +`; const circleFit = css` border-radius: 50%; diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index f5fe46fa..5ec0043f 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -122,6 +122,12 @@ const warningTheme = css` background-color: #ac3d03; `; +const greenTheme = css` + color: ${colors.whiteSimple}; + background-color: ${colors.lightGreen}; + ${getPseudoForShadow} +`; + const outlineTheme = css` color: ${colors.slate}; border: 1px solid ${colors.slate}; @@ -184,4 +190,5 @@ export default { "light-gray": lighterGrayTheme, outline: outlineTheme, "outline-accent": outlineAccentTheme, + green: greenTheme, }; diff --git a/src/components/Button/index.jsx b/src/components/Button/index.jsx index e9da5bb7..956f21ec 100644 --- a/src/components/Button/index.jsx +++ b/src/components/Button/index.jsx @@ -64,6 +64,7 @@ Button.propTypes = { "disabled", "outline", "outline-accent", + "green", ]), // Проперти добавлено для того, чтобы в FF не показывать аутлайн (работает только через !important) From 29484f1310e829f603ecaffa2e918eecb4ee2321 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 10:46:52 +0300 Subject: [PATCH 020/175] PageCard: styles were changed, title was removed --- src/components/PageCard/PageCard.stories.js | 23 ++-- src/components/PageCard/PageCardButton.jsx | 24 ---- src/components/PageCard/PageCardButtons.jsx | 12 +- src/components/PageCard/PageCardTitle.jsx | 25 ----- src/components/PageCard/StyledPageCard.jsx | 9 +- src/components/PageCard/index.jsx | 115 ++++++++++---------- 6 files changed, 78 insertions(+), 130 deletions(-) delete mode 100644 src/components/PageCard/PageCardButton.jsx delete mode 100644 src/components/PageCard/PageCardTitle.jsx diff --git a/src/components/PageCard/PageCard.stories.js b/src/components/PageCard/PageCard.stories.js index 465422eb..bff5578e 100644 --- a/src/components/PageCard/PageCard.stories.js +++ b/src/components/PageCard/PageCard.stories.js @@ -1,31 +1,24 @@ import React from "react"; +import styled from "styled-components"; + import { storiesOf } from "@storybook/react"; -import { text, select, boolean } from "@storybook/addon-knobs"; +import { boolean } from "@storybook/addon-knobs"; import { action } from "@storybook/addon-actions"; import { PageCard } from "./index.jsx"; -import colors from "../../themes/colors"; + +const StyledPageCard = styled(PageCard)` + height: 400px; +`; storiesOf("Page card", module).add("default", () => { const withButtons = boolean("With buttons", true); - const title = text("Title", "ID: 42"); - const titleColor = select( - "Title color", - { - Red: colors.brownSimple, - Blue: colors.navyBlue, - Yellow: colors.orangeSimple, - }, - colors.brownSimple - ); const isLoading = boolean("Is loading", false); return ( - - dark - ? "0 2px 5px 0 rgba(0, 0, 0, 0.26)" - : "0 2px 5px 0 rgba(0, 0, 0, 0.13)"}; - - &:not(:last-of-type) { - margin-bottom: 5px; - } - - &:hover { - opacity: 1; - } -`; - -export default PageCardButton; diff --git a/src/components/PageCard/PageCardButtons.jsx b/src/components/PageCard/PageCardButtons.jsx index a27dcacd..eb856df9 100644 --- a/src/components/PageCard/PageCardButtons.jsx +++ b/src/components/PageCard/PageCardButtons.jsx @@ -1,12 +1,20 @@ import styled from "styled-components"; +import { StyledButton } from "../Button"; + const PageCardButtons = styled.div` position: absolute; top: -4px; left: -10px; - z-index: 1000; + z-index: 1; display: flex; flex-direction: column; + + ${StyledButton} { + &:not(:last-of-type) { + margin-bottom: 8px; + } + } `; -export default PageCardButtons; +export { PageCardButtons }; diff --git a/src/components/PageCard/PageCardTitle.jsx b/src/components/PageCard/PageCardTitle.jsx deleted file mode 100644 index 8acb6eb4..00000000 --- a/src/components/PageCard/PageCardTitle.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import styled from "styled-components"; - -const PageCardTitle = styled.h1` - position: absolute; - top: 0px; - right: 0px; - color: #fff; - overflow: hidden; - background-color: ${({ titleColor }) => titleColor}; - width: 120px; - box-sizing: border-box; - line-height: 45px; - border-radius: 0 5px 0 10px; - text-align: center; - font-size: 14px; - font-weight: 700; - margin: 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - padding-left: 5px; - padding-right: 5px; -`; - -export default PageCardTitle; diff --git a/src/components/PageCard/StyledPageCard.jsx b/src/components/PageCard/StyledPageCard.jsx index c097f70b..3a8f553f 100644 --- a/src/components/PageCard/StyledPageCard.jsx +++ b/src/components/PageCard/StyledPageCard.jsx @@ -1,11 +1,10 @@ import styled from "styled-components"; -const PageCard = styled.section` +const StyledPageCard = styled.section` position: relative; box-sizing: border-box; - padding: 35px 75px; - border-radius: 5px; - box-shadow: 0px 0px 80px 0px rgba(162, 182, 189, 0.2); + padding: 32px 64px; + box-shadow: 0px 0px 80px rgba(162, 182, 189, 0.2); `; -export default PageCard; +export { StyledPageCard }; diff --git a/src/components/PageCard/index.jsx b/src/components/PageCard/index.jsx index 24db5fb2..f44271fb 100644 --- a/src/components/PageCard/index.jsx +++ b/src/components/PageCard/index.jsx @@ -1,70 +1,67 @@ import React from "react"; import PropTypes from "prop-types"; -import StyledPageCard from "./StyledPageCard"; -import PageCardButtons from "./PageCardButtons"; -import PageCardButton from "./PageCardButton"; -import PageCardTitle from "./PageCardTitle"; +import { useEffect } from "react"; -import { Sync, ArrowLeft } from "../../assets/icons"; +import { Button } from "../Button"; +import { StyledPageCard } from "./StyledPageCard"; +import { PageCardButtons } from "./PageCardButtons"; -class PageCard extends React.Component { - static propTypes = { - children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), - withButtons: PropTypes.bool, - onUpdate: PropTypes.func, - title: PropTypes.string, - titleColor: PropTypes.string, - isLoading: PropTypes.bool, - onBackButtonClick: PropTypes.func, - fetchError: PropTypes.object, - className: PropTypes.string, - }; +import { Check, ArrowLeft } from "../../assets/icons"; - componentDidUpdate(prevProps) { - if (!prevProps.fetchError && this.props.fetchError) { - this.props.onBackButtonClick(); +function PageCard({ + children, + withButtons, + onUpdate, + isLoading, + onBackButtonClick, + className, + fetchError, +}) { + useEffect(() => { + if (fetchError && onBackButtonClick) { + onBackButtonClick(); } - } + }, [fetchError]); - render() { - const { - children, - withButtons, - onUpdate, - title, - titleColor, - isLoading, - onBackButtonClick, - className, - } = this.props; - - return ( - - {title && ( - - {title} - - )} - {children} - {withButtons && ( - - - - - - - - - )} - - ); - } + return ( + + {children} + {withButtons && ( + + + + + )} + + ); } +PageCard.propTypes = { + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), + withButtons: PropTypes.bool, + onUpdate: PropTypes.func, + isLoading: PropTypes.bool, + onBackButtonClick: PropTypes.func, + fetchError: PropTypes.object, + className: PropTypes.string, +}; + export { PageCard, StyledPageCard }; From 3b2b7a234b8c7b818ceeb6c79227c81da2072993 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 10:51:47 +0300 Subject: [PATCH 021/175] FormActions: component was removed --- .../form/hooks/use-form-api-errors.js | 4 +++- .../form/layouts/FormActions/index.jsx | 20 ------------------- src/components/form/layouts/index.js | 1 - 3 files changed, 3 insertions(+), 22 deletions(-) delete mode 100644 src/components/form/layouts/FormActions/index.jsx diff --git a/src/components/form/hooks/use-form-api-errors.js b/src/components/form/hooks/use-form-api-errors.js index 63cdc7af..7deb5f70 100644 --- a/src/components/form/hooks/use-form-api-errors.js +++ b/src/components/form/hooks/use-form-api-errors.js @@ -2,6 +2,8 @@ import { useEffect } from "react"; export function useFormApiErrors(apiErrors, setErrors) { useEffect(() => { - setErrors(apiErrors); + if (setErrors) { + setErrors(apiErrors); + } }, [apiErrors]); } diff --git a/src/components/form/layouts/FormActions/index.jsx b/src/components/form/layouts/FormActions/index.jsx deleted file mode 100644 index 8bb51fc9..00000000 --- a/src/components/form/layouts/FormActions/index.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import styled from "styled-components"; - -import { StyledButton } from "../../../Button"; - -const FormActions = styled.div` - display: flex; - - ${StyledButton} { - height: 38px; - line-height: 38px; - width: 104px; - padding: 0 24px; - - &:not(:last-child) { - margin-right: 8px; - } - } -`; - -export { FormActions }; diff --git a/src/components/form/layouts/index.js b/src/components/form/layouts/index.js index 9d601abd..6b2c24cf 100644 --- a/src/components/form/layouts/index.js +++ b/src/components/form/layouts/index.js @@ -1,2 +1 @@ export * from "./FormFieldGroup"; -export * from "./FormActions"; From 811082fcda61092f6996a913b3f5da426ce93a68 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 12:18:52 +0300 Subject: [PATCH 022/175] FormField: styles changed --- .../form/components/FormField/FormFieldIcon.jsx | 14 +++++++++----- .../form/components/FormField/FormFieldTag.jsx | 8 ++++++-- src/components/form/components/FormField/index.jsx | 8 ++------ .../form/components/FormLabel/FormLabelTitle.jsx | 6 ++++++ src/components/form/components/FormLabel/index.jsx | 1 - .../layouts/FormFieldGroup/FormFieldGroupTitle.jsx | 1 + 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/components/form/components/FormField/FormFieldIcon.jsx b/src/components/form/components/FormField/FormFieldIcon.jsx index 8516f697..6716587c 100644 --- a/src/components/form/components/FormField/FormFieldIcon.jsx +++ b/src/components/form/components/FormField/FormFieldIcon.jsx @@ -1,9 +1,13 @@ import styled from "styled-components"; -const FormFieldIcon = styled.span` - display: inline-block; - margin-left: 5px; - color: #aeb9be; +import { InfoCircle } from "../../../../assets/icons"; + +import { colors } from "../../../../themes/colors"; + +const FormFieldIcon = styled(InfoCircle)` + align-self: flex-start; + color: ${colors.grayMedium}; + margin-left: 2px; `; -export default FormFieldIcon; +export { FormFieldIcon }; diff --git a/src/components/form/components/FormField/FormFieldTag.jsx b/src/components/form/components/FormField/FormFieldTag.jsx index 4a15c0fd..d18192d8 100644 --- a/src/components/form/components/FormField/FormFieldTag.jsx +++ b/src/components/form/components/FormField/FormFieldTag.jsx @@ -1,14 +1,18 @@ import styled from "styled-components"; +import { colors } from "../../../../themes/colors"; + const FormFieldTag = styled.span` display: inline-block; + align-self: center; margin-left: 6px; padding: 0 5px; font-size: 13px; + line-height: 1.5; font-weight: 700; - color: #fff; + color: ${colors.whiteSimple}; + background-color: ${colors.grayMedium}; border-radius: 3px; - background-color: #aeb9be; `; export default FormFieldTag; diff --git a/src/components/form/components/FormField/index.jsx b/src/components/form/components/FormField/index.jsx index c26e57e2..167719ef 100644 --- a/src/components/form/components/FormField/index.jsx +++ b/src/components/form/components/FormField/index.jsx @@ -7,12 +7,10 @@ import StyledFormField from "./StyledFormField"; import { FormLabel, FormLabelTitle } from "../FormLabel"; import { Tooltip } from "../../../Tooltip"; -import FormFieldIcon from "./FormFieldIcon"; +import { FormFieldIcon } from "./FormFieldIcon"; import FormFieldTag from "./FormFieldTag"; import FormFieldError from "./FormFieldError"; -import { InfoCircle } from "../../../../assets/icons"; - function FormField(props) { const { label, @@ -69,9 +67,7 @@ function FormField(props) { return ( tip && ( - - - + ) ); diff --git a/src/components/form/components/FormLabel/FormLabelTitle.jsx b/src/components/form/components/FormLabel/FormLabelTitle.jsx index 7e9dc839..4b5560c4 100644 --- a/src/components/form/components/FormLabel/FormLabelTitle.jsx +++ b/src/components/form/components/FormLabel/FormLabelTitle.jsx @@ -1,8 +1,14 @@ import styled from "styled-components"; +import { colors } from "../../../../themes/colors"; + const FormLabelTitle = styled.span` + display: flex; font-weight: ${({ bold }) => (bold ? 600 : 200)}; cursor: pointer; + font-size: 16px; + line-height: 26px; + color: ${colors.darkBlack}; `; export { FormLabelTitle }; diff --git a/src/components/form/components/FormLabel/index.jsx b/src/components/form/components/FormLabel/index.jsx index 49831f17..1e997c6b 100644 --- a/src/components/form/components/FormLabel/index.jsx +++ b/src/components/form/components/FormLabel/index.jsx @@ -4,7 +4,6 @@ const FormLabel = styled.label` display: inline-flex; flex-direction: ${({ direction }) => direction}; align-items: ${({ direction }) => direction === "row" && "center"}; - height: ${({ height }) => (height ? `${height}px` : "25px")}; `; const StyledFormLabel = FormLabel; diff --git a/src/components/form/layouts/FormFieldGroup/FormFieldGroupTitle.jsx b/src/components/form/layouts/FormFieldGroup/FormFieldGroupTitle.jsx index bd44f304..edcbab26 100644 --- a/src/components/form/layouts/FormFieldGroup/FormFieldGroupTitle.jsx +++ b/src/components/form/layouts/FormFieldGroup/FormFieldGroupTitle.jsx @@ -2,6 +2,7 @@ import styled from "styled-components"; const FormFieldGroupTitle = styled.h3` font-size: 15px; + line-height: 20px; font-weight: 700; text-transform: uppercase; margin-top: 0; From 3ce0a9a7fd64b4d73c610b029056fcaa4426a015 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 16:21:16 +0300 Subject: [PATCH 023/175] InfiniteMultiSelect: component was added --- src/components/InfiniteMultiSelect/index.jsx | 71 ++++++++++++++++++++ src/hooks/index.js | 1 + src/hooks/use-infinite-menu.js | 37 ++++++++++ 3 files changed, 109 insertions(+) create mode 100644 src/components/InfiniteMultiSelect/index.jsx create mode 100644 src/hooks/use-infinite-menu.js diff --git a/src/components/InfiniteMultiSelect/index.jsx b/src/components/InfiniteMultiSelect/index.jsx new file mode 100644 index 00000000..7ee20597 --- /dev/null +++ b/src/components/InfiniteMultiSelect/index.jsx @@ -0,0 +1,71 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { useInfiniteMenu } from "../../hooks"; + +import { InfiniteScroll } from "../InfiniteScroll"; +import { FormMultiSelect } from "../components/form"; + +function InfiniteMultiSelect({ + name, + placeholder, + options, + fetchOptions, + isFetching, + limit, + hasNext, + value, + onChange, + className, + "data-testid": testId, +}) { + const { searchOptions, fetchNext } = useInfiniteMenu({ + limit, + hasNext, + isFetching, + fetchOptions, + }); + + return ( + + {({ scrollerRef }) => ( + + )} + + ); +} + +InfiniteMultiSelect.Option = FormMultiSelect.Option; +InfiniteMultiSelect.Menu = FormMultiSelect.Menu; + +InfiniteMultiSelect.propTypes = { + value: PropTypes.object.isRequired, + onChange: PropTypes.func.isRequired, + fetchOptions: PropTypes.func.isRequired, + options: PropTypes.array.isRequired, + isFetching: PropTypes.bool.isRequired, + placeholder: PropTypes.string, + limit: PropTypes.number.isRequired, + "data-testid": PropTypes.string, + name: PropTypes.string, + className: PropTypes.string, + hasNext: PropTypes.bool.isRequired, +}; + +InfiniteMultiSelect.defaultProps = { + limit: 10, + "data-testid": "infinite-multi-select", +}; + +export { InfiniteMultiSelect }; diff --git a/src/hooks/index.js b/src/hooks/index.js index 9a155eff..9b31d374 100644 --- a/src/hooks/index.js +++ b/src/hooks/index.js @@ -4,4 +4,5 @@ export * from "./use-pagination"; export * from "./use-timeout"; export * from "./use-popup"; export * from "./use-position-popup"; +export * from "./use-infinite-menu"; export { useTranslation, withTranslation } from "react-i18next"; diff --git a/src/hooks/use-infinite-menu.js b/src/hooks/use-infinite-menu.js new file mode 100644 index 00000000..0b319b5e --- /dev/null +++ b/src/hooks/use-infinite-menu.js @@ -0,0 +1,37 @@ +import { useState, useEffect } from "react"; +import { useListFetch } from "./use-list-fetch"; + +function useInfiniteMenu({ limit, hasNext, fetchOptions }) { + const [isListEnds, setIsListEnds] = useState(hasNext); + + const { pagination, setPagination, setFetchParams } = useListFetch({ + fetchList: params => { + fetchOptions({ ...params, meta: { clearList: params.offset === 0 } }); + }, + pagination: { limit, offset: 0 }, + }); + + useEffect(() => { + setIsListEnds(hasNext); + }, [hasNext]); + + function searchOptions(value) { + setFetchParams({ + q: value, + offset: 0, + }); + } + + function fetchNext() { + if (!isListEnds) { + setPagination({ offset: pagination.offset + pagination.limit }); + } + } + + return { + searchOptions, + fetchNext, + }; +} + +export { useInfiniteMenu }; From e3780862ace9ab74afb496a40698ee3feda46a7a Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 16:22:38 +0300 Subject: [PATCH 024/175] InfiniteDropdown: component now uses useInfiniteMenu hook --- src/components/InfiniteDropdown/index.jsx | 41 ++++++----------------- src/components/index.js | 1 + 2 files changed, 11 insertions(+), 31 deletions(-) diff --git a/src/components/InfiniteDropdown/index.jsx b/src/components/InfiniteDropdown/index.jsx index e2367308..aaa72303 100644 --- a/src/components/InfiniteDropdown/index.jsx +++ b/src/components/InfiniteDropdown/index.jsx @@ -1,8 +1,7 @@ import React from "react"; import PropTypes from "prop-types"; -import { useState, useEffect } from "react"; -import { useListFetch } from "../../hooks"; +import { useInfiniteMenu } from "../../hooks"; import { InfiniteScroll } from "../index"; import { FormDropdown } from "../form/components"; @@ -13,7 +12,7 @@ function InfiniteDropdown({ options, fetchOptions, isFetching, - totalCount, + hasNext, limit, placeholder, "data-testid": testId, @@ -26,35 +25,15 @@ function InfiniteDropdown({ onStateChange, renderSelected, }) { - const [isListEnds, setIsListEnds] = useState(false); - - const { pagination, setPagination, setFetchParams } = useListFetch({ - fetchList: params => { - fetchOptions({ ...params, meta: { clearList: params.offset === 0 } }); - }, - pagination: { limit, offset: 0 }, + const { searchOptions, fetchNext } = useInfiniteMenu({ + limit, + hasNext, + isFetching, + fetchOptions, }); - useEffect(() => { - setIsListEnds(pagination.offset + pagination.limit > totalCount); - }, [options]); - - function handleSearch(value) { - setFetchParams({ - q: value, - offset: 0, - }); - } - return ( - { - if (!isListEnds) { - setPagination({ offset: pagination.offset + pagination.limit }); - } - }} - isFetching={isFetching} - > + {({ scrollerRef }) => ( Date: Tue, 31 Mar 2020 17:48:40 +0300 Subject: [PATCH 025/175] InfiniteMultiSelect: form/components import was fixed --- src/components/InfiniteMultiSelect/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/InfiniteMultiSelect/index.jsx b/src/components/InfiniteMultiSelect/index.jsx index 7ee20597..0617b3e7 100644 --- a/src/components/InfiniteMultiSelect/index.jsx +++ b/src/components/InfiniteMultiSelect/index.jsx @@ -4,7 +4,7 @@ import PropTypes from "prop-types"; import { useInfiniteMenu } from "../../hooks"; import { InfiniteScroll } from "../InfiniteScroll"; -import { FormMultiSelect } from "../components/form"; +import { FormMultiSelect } from "../form/components"; function InfiniteMultiSelect({ name, From 7471465a007d1922057d71f25c137ccc5b1199e2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 17:52:53 +0300 Subject: [PATCH 026/175] PageCard: onBack, onDone handlers were added --- src/components/PageCard/index.jsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/PageCard/index.jsx b/src/components/PageCard/index.jsx index f44271fb..e3d5a416 100644 --- a/src/components/PageCard/index.jsx +++ b/src/components/PageCard/index.jsx @@ -12,15 +12,15 @@ import { Check, ArrowLeft } from "../../assets/icons"; function PageCard({ children, withButtons, - onUpdate, isLoading, - onBackButtonClick, + onDone, + onBack, className, fetchError, }) { useEffect(() => { - if (fetchError && onBackButtonClick) { - onBackButtonClick(); + if (fetchError && onBack) { + onBack(); } }, [fetchError]); @@ -33,7 +33,7 @@ function PageCard({ fit="square" size="large" buttonTheme="dark" - onClick={onBackButtonClick} + onClick={onBack} data-testid="page-card-back-button" > @@ -42,7 +42,7 @@ function PageCard({ fit="square" size="large" buttonTheme="green" - onClick={onUpdate} + onClick={onDone} isDisabled={isLoading} data-testid="page-card-update-button" > @@ -57,9 +57,9 @@ function PageCard({ PageCard.propTypes = { children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), withButtons: PropTypes.bool, - onUpdate: PropTypes.func, + onDone: PropTypes.func, + onBack: PropTypes.func, isLoading: PropTypes.bool, - onBackButtonClick: PropTypes.func, fetchError: PropTypes.object, className: PropTypes.string, }; From b3769ad4ca40c5e1fa97c8a84b2c15b76e970b1f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 18:11:28 +0300 Subject: [PATCH 027/175] PageCard: buttons render moved to top --- src/components/PageCard/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PageCard/index.jsx b/src/components/PageCard/index.jsx index e3d5a416..3849e680 100644 --- a/src/components/PageCard/index.jsx +++ b/src/components/PageCard/index.jsx @@ -26,7 +26,6 @@ function PageCard({ return ( - {children} {withButtons && ( + + + } /> ); }); diff --git a/src/components/PageCard/index.jsx b/src/components/PageCard/index.jsx index 3849e680..a50f9a82 100644 --- a/src/components/PageCard/index.jsx +++ b/src/components/PageCard/index.jsx @@ -1,54 +1,13 @@ import React from "react"; import PropTypes from "prop-types"; -import { useEffect } from "react"; - -import { Button } from "../Button"; import { StyledPageCard } from "./StyledPageCard"; import { PageCardButtons } from "./PageCardButtons"; -import { Check, ArrowLeft } from "../../assets/icons"; - -function PageCard({ - children, - withButtons, - isLoading, - onDone, - onBack, - className, - fetchError, -}) { - useEffect(() => { - if (fetchError && onBack) { - onBack(); - } - }, [fetchError]); - +function PageCard({ children, className, buttons, "data-testid": testId }) { return ( - - {withButtons && ( - - - - - )} + + {buttons && {buttons}} {children} ); @@ -56,12 +15,9 @@ function PageCard({ PageCard.propTypes = { children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), - withButtons: PropTypes.bool, - onDone: PropTypes.func, - onBack: PropTypes.func, - isLoading: PropTypes.bool, - fetchError: PropTypes.object, + buttons: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), className: PropTypes.string, + "data-testid": PropTypes.string, }; export { PageCard, StyledPageCard }; From ea2648b7429ccac0dfe15eb44b7feceb4236d65d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 31 Mar 2020 22:52:41 +0300 Subject: [PATCH 032/175] useRedirectOnError hook added --- src/hooks/index.js | 1 + src/hooks/use-redirect-on-error.js | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 src/hooks/use-redirect-on-error.js diff --git a/src/hooks/index.js b/src/hooks/index.js index 9b31d374..8c58af47 100644 --- a/src/hooks/index.js +++ b/src/hooks/index.js @@ -5,4 +5,5 @@ export * from "./use-timeout"; export * from "./use-popup"; export * from "./use-position-popup"; export * from "./use-infinite-menu"; +export * from "./use-redirect-on-error"; export { useTranslation, withTranslation } from "react-i18next"; diff --git a/src/hooks/use-redirect-on-error.js b/src/hooks/use-redirect-on-error.js new file mode 100644 index 00000000..ad48a5c7 --- /dev/null +++ b/src/hooks/use-redirect-on-error.js @@ -0,0 +1,11 @@ +import { useEffect } from "react"; + +function useRedirectOnError({ error, redirect }) { + useEffect(() => { + if (error && redirect) { + redirect(); + } + }, [error]); +} + +export { useRedirectOnError }; From 9b98152a4147a5b47997572b84a9659d2a39d8e7 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 10:01:16 +0300 Subject: [PATCH 033/175] deps were updated --- package-lock.json | 403 ++++++++++++++++++++++++++-------------------- package.json | 18 +-- 2 files changed, 234 insertions(+), 187 deletions(-) diff --git a/package-lock.json b/package-lock.json index 45ad175e..6c325251 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1597,9 +1597,9 @@ "dev": true }, "@emotion/is-prop-valid": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz", - "integrity": "sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", "dev": true, "requires": { "@emotion/memoize": "0.7.4" @@ -1649,17 +1649,6 @@ "@emotion/is-prop-valid": "0.8.8", "@emotion/serialize": "^0.11.15", "@emotion/utils": "0.11.3" - }, - "dependencies": { - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "dev": true, - "requires": { - "@emotion/memoize": "0.7.4" - } - } } }, "@emotion/stylis": { @@ -2312,17 +2301,17 @@ } }, "@storybook/addon-actions": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.3.17.tgz", - "integrity": "sha512-06HQSBqWFyXcqV418Uv3oMHomNy9g3uCt0FHrqY3BAc7PldY1X0tW65oy//uBueaRaYKdhtRrrjfXRaPQWmDbA==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.3.18.tgz", + "integrity": "sha512-jdBVCcfyWin274Lkwg5cL+1fJ651NCuIWxuJVsmHQtIl2xTjf2MyoMoKQZNdt4xtE+W9w+rS4bYt04elrizThg==", "dev": true, "requires": { - "@storybook/addons": "5.3.17", - "@storybook/api": "5.3.17", - "@storybook/client-api": "5.3.17", - "@storybook/components": "5.3.17", - "@storybook/core-events": "5.3.17", - "@storybook/theming": "5.3.17", + "@storybook/addons": "5.3.18", + "@storybook/api": "5.3.18", + "@storybook/client-api": "5.3.18", + "@storybook/components": "5.3.18", + "@storybook/core-events": "5.3.18", + "@storybook/theming": "5.3.18", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", @@ -2342,17 +2331,17 @@ } }, "@storybook/addon-knobs": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.3.17.tgz", - "integrity": "sha512-SMjvH3EjUbt4Xn1Q22thXVQSDrJRUB3IAzhUNdBovFB3RwOXmRFd0iSHC3TTKJfW2TYPssl8cnNGQTH6O2d14g==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.3.18.tgz", + "integrity": "sha512-X0WxGKoso3j5mS4c4enM8BvCjbO6Wwfxc++swQTqtANpBZ8k+w0piiEF1fiJf+ssgEAWe5brgIqnQ9kiBGLqKA==", "dev": true, "requires": { - "@storybook/addons": "5.3.17", - "@storybook/api": "5.3.17", - "@storybook/client-api": "5.3.17", - "@storybook/components": "5.3.17", - "@storybook/core-events": "5.3.17", - "@storybook/theming": "5.3.17", + "@storybook/addons": "5.3.18", + "@storybook/api": "5.3.18", + "@storybook/client-api": "5.3.18", + "@storybook/components": "5.3.18", + "@storybook/core-events": "5.3.18", + "@storybook/theming": "5.3.18", "@types/react-color": "^3.0.1", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", @@ -2376,15 +2365,15 @@ } }, "@storybook/addons": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.17.tgz", - "integrity": "sha512-zg6O1bmffRsHXJOWAnSD2O3tPnVMoD8Yfu+a5zBVXDiUP1E/TGzgjjjYBUUCU3yQg1Ted5rIn4o6ql/rZNNlgA==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.18.tgz", + "integrity": "sha512-ZQjDgTUDFRLvAiBg2d8FgPgghfQ+9uFyXQbtiGlTBLinrPCeQd7J86qiUES0fcGoohCCw0wWKtvB0WF2z1XNDg==", "dev": true, "requires": { - "@storybook/api": "5.3.17", - "@storybook/channels": "5.3.17", - "@storybook/client-logger": "5.3.17", - "@storybook/core-events": "5.3.17", + "@storybook/api": "5.3.18", + "@storybook/channels": "5.3.18", + "@storybook/client-logger": "5.3.18", + "@storybook/core-events": "5.3.18", "core-js": "^3.0.1", "global": "^4.3.2", "util-deprecate": "^1.0.2" @@ -2399,18 +2388,18 @@ } }, "@storybook/api": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.17.tgz", - "integrity": "sha512-G40jtXFY10hQo6GSw5JeFYt41loD4+7s0uU18Rm6lfa/twOgp6vqqyDCWDvpRRxRBB5uDIKKHLt13X9gWe8tQQ==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.18.tgz", + "integrity": "sha512-QXaccNCARHzPWOuxYndiebGWBZmwiUvRgB9ji0XTJBS3y8K0ZPb5QyuqiKPaEWUj8dBA8rzdDtkW3Yt95Namaw==", "dev": true, "requires": { "@reach/router": "^1.2.1", - "@storybook/channels": "5.3.17", - "@storybook/client-logger": "5.3.17", - "@storybook/core-events": "5.3.17", + "@storybook/channels": "5.3.18", + "@storybook/client-logger": "5.3.18", + "@storybook/core-events": "5.3.18", "@storybook/csf": "0.0.1", - "@storybook/router": "5.3.17", - "@storybook/theming": "5.3.17", + "@storybook/router": "5.3.18", + "@storybook/theming": "5.3.18", "@types/reach__router": "^1.2.3", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", @@ -2441,13 +2430,13 @@ } }, "@storybook/channel-postmessage": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.17.tgz", - "integrity": "sha512-1aSQNeO2+roPRgMFjW3AWTO3uS93lbCMUTYCBdi20md4bQ9SutJy33rynCQcWuMj1prCQ2Ekz4BGhdcIQVKlzg==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.18.tgz", + "integrity": "sha512-awxBW/aVfNtY9QvYZgsPaMXgUpC2+W3vEyQcl/w4ce0YVH+7yWx3wt3Ku49lQwxZwDrxP3QoC0U+mkPc9hBJwA==", "dev": true, "requires": { - "@storybook/channels": "5.3.17", - "@storybook/client-logger": "5.3.17", + "@storybook/channels": "5.3.18", + "@storybook/client-logger": "5.3.18", "core-js": "^3.0.1", "global": "^4.3.2", "telejson": "^3.2.0" @@ -2462,9 +2451,9 @@ } }, "@storybook/channels": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.17.tgz", - "integrity": "sha512-5hlBRbyk+YxC4KgecYG8wWwB2v1BzRJXhSlemFDOQk9wx37gVpne+rBydEtNFO4InmaZf6tKbBcpH0wBFLdWYA==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.18.tgz", + "integrity": "sha512-scP/6td/BJSEOgfN+qaYGDf3E793xye7tIw6W+sYqwg+xdMFO39wVXgVZNpQL6sLEwpJZTaPywCjC6p6ksErqQ==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2479,16 +2468,16 @@ } }, "@storybook/client-api": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.17.tgz", - "integrity": "sha512-oe55FPTGVL2k+j45eCN3oE7ePkE4VpgUQ/dhJbjU0R2L+HyRyBhd0wnMYj1f5E8uVNbtjFYAtbjjgcf1R1imeg==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.18.tgz", + "integrity": "sha512-QiXTDUpjdyW19BlocLw07DrkOnEzVaWGJcRze2nSs29IKKuq1Ncv2LOAZt6ySSq0PmIKsjBou3bmS1/aXmDMdw==", "dev": true, "requires": { - "@storybook/addons": "5.3.17", - "@storybook/channel-postmessage": "5.3.17", - "@storybook/channels": "5.3.17", - "@storybook/client-logger": "5.3.17", - "@storybook/core-events": "5.3.17", + "@storybook/addons": "5.3.18", + "@storybook/channel-postmessage": "5.3.18", + "@storybook/channels": "5.3.18", + "@storybook/client-logger": "5.3.18", + "@storybook/core-events": "5.3.18", "@storybook/csf": "0.0.1", "@types/webpack-env": "^1.15.0", "core-js": "^3.0.1", @@ -2512,9 +2501,9 @@ } }, "@storybook/client-logger": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.17.tgz", - "integrity": "sha512-GYYvVGIOs+fq11LXXy7x2sr3hhC9LMI1jtIckjKV1dsY9MJ5g22M+Wl5Iw4nf6VMWsqcN9LSlYE+u/H+Q2uCHw==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.18.tgz", + "integrity": "sha512-RZjxw4uqZX3Yk27IirbB/pQG+wRsQSSRlKqYa8KQ5bSanm4IrcV9VA1OQbuySW9njE+CexAnakQJ/fENdmurNg==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2529,13 +2518,13 @@ } }, "@storybook/components": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.17.tgz", - "integrity": "sha512-M5oqbzcqFX4VDNI8siT3phT7rmFwChQ/xPwX9ygByBsZCoNuLMzafavfTOhZvxCPiliFbBxmxtK/ibCsSzuKZg==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.18.tgz", + "integrity": "sha512-LIN4aVCCDY7klOwtuqQhfYz4tHaMADhXEzZpij+3r8N68Inck6IJ1oo9A9umXQPsTioQi8e6FLobH1im90j/2A==", "dev": true, "requires": { - "@storybook/client-logger": "5.3.17", - "@storybook/theming": "5.3.17", + "@storybook/client-logger": "5.3.18", + "@storybook/theming": "5.3.18", "@types/react-syntax-highlighter": "11.0.4", "@types/react-textarea-autosize": "^4.3.3", "core-js": "^3.0.1", @@ -2566,9 +2555,9 @@ } }, "@storybook/core": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.17.tgz", - "integrity": "sha512-H6G8ygjb4RSVSKPdWz6su3Nvzxm8CfrHuCyUo4DLC46mirXfYRrJV1HiwXriViqoZV4gFbpaNKTDzTl/QKFDAg==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.18.tgz", + "integrity": "sha512-XQb/UQb+Ohuaw0GhKKYzvmuuh5Tit93f2cLZD9QCSWUPvDGmLG5g91Y9NbUr4Ap3mANT3NksMNhkAV0GxExEkg==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.7.0", @@ -2576,16 +2565,16 @@ "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-env": "^7.4.5", - "@storybook/addons": "5.3.17", - "@storybook/channel-postmessage": "5.3.17", - "@storybook/client-api": "5.3.17", - "@storybook/client-logger": "5.3.17", - "@storybook/core-events": "5.3.17", + "@storybook/addons": "5.3.18", + "@storybook/channel-postmessage": "5.3.18", + "@storybook/client-api": "5.3.18", + "@storybook/client-logger": "5.3.18", + "@storybook/core-events": "5.3.18", "@storybook/csf": "0.0.1", - "@storybook/node-logger": "5.3.17", - "@storybook/router": "5.3.17", - "@storybook/theming": "5.3.17", - "@storybook/ui": "5.3.17", + "@storybook/node-logger": "5.3.18", + "@storybook/router": "5.3.18", + "@storybook/theming": "5.3.18", + "@storybook/ui": "5.3.18", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "autoprefixer": "^9.7.2", @@ -2806,9 +2795,9 @@ } }, "@storybook/core-events": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.17.tgz", - "integrity": "sha512-DOeX9fpeGW4o9Gocxa4VW9wAlAyfIVNDTzq0wVvvMBthTTo9u58NmndglEMDgDa2Cq6iAIPh7vz2bRJCNexzLw==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.18.tgz", + "integrity": "sha512-uQ6NYJ5WODXK8DJ7m8y3yUAtWB3n+6XtYztjY+tdkCsLYvTYDXNS+epV+f5Hu9+gB+/Dm+b5Su4jDD+LZB2QWA==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2832,9 +2821,9 @@ } }, "@storybook/node-logger": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.17.tgz", - "integrity": "sha512-onfcxl37BYZI1HGuPI9MelkyUWjn7NpfN8RUYdqG9P6WKiIY5xbpG0V6qod5jvIKIypK0NmfJTtneOu46L/oDg==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.18.tgz", + "integrity": "sha512-Go/hdtaPTtjgJP+GYk8VXcOmecrdG7cXm0yyTlatd6s8xXI0txHme1/0MOZmEPows1Ec7KAQ20+NnaCGUPZUUg==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -2904,17 +2893,17 @@ } }, "@storybook/react": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.3.17.tgz", - "integrity": "sha512-FQLH3q2Ge68oLBaTge7wl5Y1KkB+pqL36llor7TOO9IxGLF6o2t2qillWnrgX6yZUpkvJK8MgkZW1/N3tslw4Q==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.3.18.tgz", + "integrity": "sha512-6yNg+phcrEqEjC2NOiu0mJuxbTwX7yzbkcusIn0S7N/KTXNO7CGvYjAkdjfw0gTLjfuVDZIjDQfoosslvfsj3w==", "dev": true, "requires": { "@babel/plugin-transform-react-constant-elements": "^7.6.3", "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", - "@storybook/addons": "5.3.17", - "@storybook/core": "5.3.17", - "@storybook/node-logger": "5.3.17", + "@storybook/addons": "5.3.18", + "@storybook/core": "5.3.18", + "@storybook/node-logger": "5.3.18", "@svgr/webpack": "^4.0.3", "@types/webpack-env": "^1.15.0", "babel-plugin-add-react-displayname": "^0.0.5", @@ -2959,9 +2948,9 @@ } }, "@storybook/router": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.17.tgz", - "integrity": "sha512-ANsiehGRTVSremgTW0Vt47dQ4JA86a4/w/4G6QqHU8Cm4jO3cw/wAcCxlzfcgCXOUiq+SuyPTU43+0O5uBx33g==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.18.tgz", + "integrity": "sha512-6B2U2C75KTSVaCuYYgcubeJGcCSnwsXuEf50hEd5mGqWgHZfojCtGvB7Ko4X+0h8rEC+eNA4p7YBOhlUv9WNrQ==", "dev": true, "requires": { "@reach/router": "^1.2.1", @@ -2984,14 +2973,14 @@ } }, "@storybook/theming": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.17.tgz", - "integrity": "sha512-4JeOZnDDHtb4LOt5sXe/s1Jhbb2UPsr8zL9NWmKJmTsgnyTvBipNHOmFYDUsIacB5K4GXSqm+cZ7Z4AkUgWCDw==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.18.tgz", + "integrity": "sha512-lfFTeLoYwLMKg96N3gn0umghMdAHgJBGuk2OM8Ll84yWtdl9RGnzfiI1Fl7Cr5k95dCF7drLJlJCao1VxUkFSA==", "dev": true, "requires": { "@emotion/core": "^10.0.20", "@emotion/styled": "^10.0.17", - "@storybook/client-logger": "5.3.17", + "@storybook/client-logger": "5.3.18", "core-js": "^3.0.1", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.19", @@ -3012,20 +3001,20 @@ } }, "@storybook/ui": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.17.tgz", - "integrity": "sha512-5S9r70QbtNKu8loa5pfO5lLX9coF/ZqesEKcanfvuSwqCSg/Z51UwFCuO6eNhVlpXzyZXi5d8qKbZlbf+uvDAA==", + "version": "5.3.18", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.18.tgz", + "integrity": "sha512-xyXK53fNe9lkGPmXf3Nk+n0gz9gOgXI+fDxetyDLpX79k3DIN/jCKEnv45vXof7OQ45mTmyBvUNTKrNLqKTt5Q==", "dev": true, "requires": { "@emotion/core": "^10.0.20", - "@storybook/addons": "5.3.17", - "@storybook/api": "5.3.17", - "@storybook/channels": "5.3.17", - "@storybook/client-logger": "5.3.17", - "@storybook/components": "5.3.17", - "@storybook/core-events": "5.3.17", - "@storybook/router": "5.3.17", - "@storybook/theming": "5.3.17", + "@storybook/addons": "5.3.18", + "@storybook/api": "5.3.18", + "@storybook/channels": "5.3.18", + "@storybook/client-logger": "5.3.18", + "@storybook/components": "5.3.18", + "@storybook/core-events": "5.3.18", + "@storybook/router": "5.3.18", + "@storybook/theming": "5.3.18", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", "core-js-pure": "^3.0.1", @@ -3743,9 +3732,9 @@ } }, "@testing-library/dom": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.1.3.tgz", - "integrity": "sha512-wFMQdKrTwTTlTe6n0KN+KjOtgOV0viIyfr+f+7Csq+1pD0o+ho7FrjCjkNpx6NEsx8jHDtZ4WU3cGOuLc9LvQg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.2.0.tgz", + "integrity": "sha512-K1Sao38VxsTrjTkFkzeW8m/oCtgCI5lANCE7u9ZaF+TTL3uKuiZ+vazeurxjvRHAsE6PvXjOIl6JFuZfgcWJSQ==", "dev": true, "requires": { "@babel/runtime": "^7.9.2", @@ -3825,14 +3814,14 @@ } }, "@testing-library/react": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.0.1.tgz", - "integrity": "sha512-sMHWud2dcymOzq2AhEniICSijEwKeTiBX+K0y36FYNY7wH2t0SIP1o732Bf5dDY0jYoMC2hj2UJSVpZC/rDsWg==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.0.2.tgz", + "integrity": "sha512-YT6Mw0oJz7R6vlEkmo1FlUD+K15FeXApOB5Ffm9zooFVnrwkt00w18dUJFMOh1yRp9wTdVRonbor7o4PIpFCmA==", "dev": true, "requires": { - "@babel/runtime": "^7.8.7", - "@testing-library/dom": "^7.0.2", - "@types/testing-library__react": "^9.1.3" + "@babel/runtime": "^7.9.2", + "@testing-library/dom": "^7.1.0", + "@types/testing-library__react": "^10.0.0" } }, "@types/anymatch": { @@ -4006,9 +3995,9 @@ "dev": true }, "@types/reach__router": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.1.tgz", - "integrity": "sha512-E51ntVeunnxofXmOoPFiOvElHWf+jBEs3B56gGx7XhPHOkJdjWxWDY4V1AsUiwhtOCXPM7atFy30wj7glyv2Fg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.2.tgz", + "integrity": "sha512-OTPBURw7aF3q+ejjcBQKjEFsiv4hr0oEFfIgUfdaSQfvnNSSu3I/Cfy1JvoDaTnbt6ZByiFWC5Y9AMhf4x0WOA==", "dev": true, "requires": { "@types/history": "*", @@ -4016,9 +4005,9 @@ } }, "@types/react": { - "version": "16.9.27", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.27.tgz", - "integrity": "sha512-j+RvQb9w7a2kZFBOgTh+s/elCwtqWUMN6RJNdmz0ntmwpeoMHKnyhUcmYBu7Yw94Rtj9938D+TJSn6WGcq2+OA==", + "version": "16.9.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.31.tgz", + "integrity": "sha512-NpYJpNMWScFXtx3A2BJMeew2G3+9SEslVWMdxNJ6DLvxIuxWjY1bizK9q5Y1ujhln31vtjmhjOAYDr9Xx3k9FQ==", "dev": true, "requires": { "@types/prop-types": "*", @@ -4035,9 +4024,9 @@ } }, "@types/react-dom": { - "version": "16.9.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.5.tgz", - "integrity": "sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg==", + "version": "16.9.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.6.tgz", + "integrity": "sha512-S6ihtlPMDotrlCJE9ST1fRmYrQNNwfgL61UB4I1W7M6kPulUKx9fXAleW5zpdIjUQ4fTaaog8uERezjsGUj9HQ==", "dev": true, "requires": { "@types/react": "*" @@ -4098,9 +4087,9 @@ } }, "@types/testing-library__react": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz", - "integrity": "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-10.0.0.tgz", + "integrity": "sha512-aByqRiRn9psCWbgW7a+gfW/LUQY/ChznnuPyWwLipcJm+rXaLNeYM4qL21jWPGn9W1H//oXgLE9aDlpkZSY3CQ==", "dev": true, "requires": { "@types/react-dom": "*", @@ -4914,15 +4903,15 @@ }, "dependencies": { "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "caniuse-lite": { @@ -4932,17 +4921,75 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.390", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", - "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", + "version": "1.3.392", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.392.tgz", + "integrity": "sha512-/hsgeVdReDsyTBE0aU9FRdh1wnNPrX3xlz3t61F+CJPOT+Umfi9DXHsCX85TEgWZQqlow0Rw44/4/jbU2Sqgkg==", "dev": true }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "node-releases": { "version": "1.1.53", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", "dev": true }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, "postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", @@ -10375,9 +10422,9 @@ "dev": true }, "formik": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.1.3.tgz", - "integrity": "sha512-twK9sxWt+M2NSXxHBw6TiXNJ72iPVhgUUjeZMD8RYQC+VU7Hrxu6ElCz1xGmbT0q2DbHk4IxoupCkGEPwERzEA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.1.4.tgz", + "integrity": "sha512-oKz8S+yQBzuQVSEoxkqqJrKQS5XJASWGVn6mrs+oTWrBoHgByVwwI1qHiVc9GKDpZBU9vAxXYAKz2BvujlwunA==", "dev": true, "requires": { "deepmerge": "^2.1.1", @@ -10388,6 +10435,18 @@ "scheduler": "^0.18.0", "tiny-warning": "^1.0.2", "tslib": "^1.10.0" + }, + "dependencies": { + "scheduler": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", + "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } } }, "forwarded": { @@ -11693,9 +11752,9 @@ }, "dependencies": { "@types/webpack": { - "version": "4.41.9", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.9.tgz", - "integrity": "sha512-R68AotLGtaVL6HGfZRvEyYKsWcMv0CBFfSr4gxoYzhMn3LnjLV/ksP4dNi9de8dVG+Dn/GuDr1NwB/sDApB3pA==", + "version": "4.41.10", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.10.tgz", + "integrity": "sha512-vIy0qaq8AjOjZLuFPqpo7nAJzcoVXMdw3mvpNN07Uvdy0p1IpJeLNBe3obdRP7FX2jIusDE7z1pZa0A6qYUgnA==", "dev": true, "requires": { "@types/anymatch": "*", @@ -14784,9 +14843,9 @@ "dev": true }, "lint-staged": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.10.tgz", - "integrity": "sha512-91vNy3eYStExElLWw1Idva5lghKpFaXh9AJqjcyrJXf7AYZrThi4EhQ+GpmiHdPmJJauKhZMMSzQR1bMB90MtA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.1.1.tgz", + "integrity": "sha512-wAeu/ePaBAOfwM2+cVbgPWDtn17B0Sxiv0NvNEqDAIvB8Yhvl60vafKFiK4grcYn87K1iK+a0zVoETvKbdT9/Q==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -18188,9 +18247,9 @@ } }, "react": { - "version": "16.13.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.0.tgz", - "integrity": "sha512-TSavZz2iSLkq5/oiE7gnFzmURKZMltmi193rm5HEoUDAXpzT9Kzw6oNZnGoai/4+fUnm7FqS5dwgUL34TujcWQ==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -18522,27 +18581,15 @@ } }, "react-dom": { - "version": "16.13.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.0.tgz", - "integrity": "sha512-y09d2c4cG220DzdlFkPTnVvGTszVvNpC73v+AaLGLHbkpy3SSgvYq8x0rNwPJ/Rk/CicTNgk0hbHNw1gMEZAXg==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.19.0" - }, - "dependencies": { - "scheduler": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.0.tgz", - "integrity": "sha512-xowbVaTPe9r7y7RUejcK73/j8tt2jfiyTednOvHbA8JoClvMYCp+r8QegLwK/n8zWQAtZb1fFnER4XLBZXrCxA==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } + "scheduler": "^0.19.1" } }, "react-draggable": { @@ -19523,9 +19570,9 @@ } }, "scheduler": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", - "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -20639,9 +20686,9 @@ } }, "styled-components": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.0.0.tgz", - "integrity": "sha512-F7VhIXIbUXJ8KO3pU9wap2Hxdtqa6PZ1uHrx+YXTgRjyxGlwvBHb8LULXPabmDA+uEliTXRJM5WcZntJnKNn3g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.0.1.tgz", + "integrity": "sha512-E0xKTRIjTs4DyvC1MHu/EcCXIj6+ENCP8hP01koyoADF++WdBUOrSGwU1scJRw7/YaYOhDvvoad6VlMG+0j53A==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", diff --git a/package.json b/package.json index e0630249..ea42251b 100644 --- a/package.json +++ b/package.json @@ -92,11 +92,11 @@ "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.9.0", "@babel/preset-react": "^7.9.4", - "@storybook/addon-actions": "^5.3.17", - "@storybook/addon-knobs": "^5.3.17", - "@storybook/react": "^5.3.17", + "@storybook/addon-actions": "^5.3.18", + "@storybook/addon-knobs": "^5.3.18", + "@storybook/react": "^5.3.18", "@testing-library/jest-dom": "^5.3.0", - "@testing-library/react": "^10.0.1", + "@testing-library/react": "^10.0.2", "babel-eslint": "^10.1.0", "babel-jest": "^25.2.4", "babel-loader": "^8.1.0", @@ -115,7 +115,7 @@ "eslint-plugin-react-hooks": "^3.0.0", "extract-text-webpack-plugin": "^4.0.0-beta.0", "file-loader": "^6.0.0", - "formik": "^2.1.3", + "formik": "^2.1.4", "husky": "^4.2.3", "identity-obj-proxy": "^3.0.0", "image-webpack-loader": "^6.0.0", @@ -123,17 +123,17 @@ "jest-environment-jsdom": "^25.2.4", "jest-environment-jsdom-global": "^1.2.1", "jest-styled-components": "^7.0.0", - "lint-staged": "^10.0.10", + "lint-staged": "^10.1.1", "mini-css-extract-plugin": "^0.9.0", "optimize-css-assets-webpack-plugin": "^5.0.3", "prettier": "^1.19.1", "prop-types": "^15.7.2", - "react": "^16.13.0", - "react-dom": "^16.13.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", "react-router-dom": "^5.1.2", "storybook-react-router": "^1.0.8", "style-loader": "^1.1.3", - "styled-components": "^5.0.0", + "styled-components": "^5.0.1", "test-data-bot": "^0.8.0", "url-loader": "^4.0.0", "webpack": "^4.42.1", From f790fa62dbb78da66960a4cebdf0ef32bfcf37ff Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 10:03:34 +0300 Subject: [PATCH 034/175] Object.hasOwnPropery calls replaced with hasProperty util --- src/components/CardSmall/index.jsx | 4 +++- src/components/IdCopy/index.jsx | 4 +++- src/components/IdFormat/index.jsx | 4 +++- src/components/Value.jsx | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/components/CardSmall/index.jsx b/src/components/CardSmall/index.jsx index a3fce84e..6bde6616 100644 --- a/src/components/CardSmall/index.jsx +++ b/src/components/CardSmall/index.jsx @@ -9,6 +9,8 @@ import { CardSmallButton } from "./CardSmallButton"; import { CardSmallCheckbox } from "./CardSmallCheckbox"; import { CardSmallTitle } from "./CardSmallTitle"; +import { hasProperty } from "../../utils/helpers"; + function CardSmall(props) { const { theme, @@ -20,7 +22,7 @@ function CardSmall(props) { className, } = props; - const hasPhoto = Object.prototype.hasOwnProperty.call(props, "img"); + const hasPhoto = hasProperty(props, "img"); return ( diff --git a/src/components/IdCopy/index.jsx b/src/components/IdCopy/index.jsx index aa17bae8..bb444a66 100644 --- a/src/components/IdCopy/index.jsx +++ b/src/components/IdCopy/index.jsx @@ -9,10 +9,12 @@ import { StyledIdCopy } from "./StyledIdCopy"; import { IdCopyIcon } from "./IdCopyIcon"; import { Value } from "../Value"; +import { hasProperty } from "../../utils/helpers"; + const getShortId = id => id.split("-")[4]; export function IdCopy(props) { - const hasIdInProps = Object.prototype.hasOwnProperty.call(props, "id"); + const hasIdInProps = hasProperty(props, "id"); const { children, id } = props; diff --git a/src/components/IdFormat/index.jsx b/src/components/IdFormat/index.jsx index b9fc5596..ab981e99 100644 --- a/src/components/IdFormat/index.jsx +++ b/src/components/IdFormat/index.jsx @@ -3,10 +3,12 @@ import PropTypes from "prop-types"; import { Value } from "../Value"; +import { hasProperty } from "../../utils/helpers"; + const getShortId = id => id.split("-")[4]; export function IdFormat(props) { - const hasIdInProps = Object.prototype.hasOwnProperty.call(props, "id"); + const hasIdInProps = hasProperty(props, "id"); const { id, children } = props; const idToCompare = hasIdInProps ? id : children; diff --git a/src/components/Value.jsx b/src/components/Value.jsx index 3ad8fd3a..ad9d005f 100644 --- a/src/components/Value.jsx +++ b/src/components/Value.jsx @@ -1,9 +1,9 @@ import PropTypes from "prop-types"; -import { isNotEmpty } from "../utils/helpers"; +import { isNotEmpty, hasProperty } from "../utils/helpers"; export function Value(props) { - const hasValueInProps = Object.prototype.hasOwnProperty.call(props, "value"); + const hasValueInProps = hasProperty(props, "value"); const { children, defaultValue, isZeroEmpty, value } = props; const valueToCheck = hasValueInProps ? value : children; From 99aa3141d96e1b1f0f2d44a4268bffc500b76078 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 11:00:43 +0300 Subject: [PATCH 035/175] FormMultiSelect: styles were chaged --- .../FormMultiSelect.stories.js | 4 +-- .../FormMultiSelect/FormMultiSelectInput.jsx | 14 ++++---- .../FormMultiSelectInputWrapper.jsx | 2 +- .../FormMultiSelectOption.jsx | 28 ++++++++------- .../FormMultiSelectMenu/index.jsx | 34 +++++-------------- .../FormMultiSelectTagsItemRemoveButton.jsx | 3 -- .../FormMultiSelectTagsItemTitle.jsx | 3 +- .../StyledFormMultiSelectTagsItem.jsx | 11 +++--- .../FormMultiSelectTagsItem/index.jsx | 2 +- .../FormMultiSelectTags/index.jsx | 19 ++++------- .../FormMultiSelect/StyledFormMultiSelect.jsx | 5 ++- .../form/components/FormMultiSelect/index.jsx | 3 +- 12 files changed, 54 insertions(+), 74 deletions(-) diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelect.stories.js b/src/components/form/components/FormMultiSelect/FormMultiSelect.stories.js index dd37538c..5723ddd3 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelect.stories.js +++ b/src/components/form/components/FormMultiSelect/FormMultiSelect.stories.js @@ -1,6 +1,6 @@ import React from "react"; import { storiesOf } from "@storybook/react"; -import { text, boolean, number } from "@storybook/addon-knobs"; +import { text, boolean } from "@storybook/addon-knobs"; import { generateOptions } from "../../../../../test/generate"; @@ -24,7 +24,6 @@ storiesOf("Form Components| FormMultiSelect", module) value={multiSelectValue} onChange={setMultiSelectValue} isLoading={boolean("isLoading", false)} - width={number("width", 600)} /> ); } @@ -42,7 +41,6 @@ storiesOf("Form Components| FormMultiSelect", module) value={multiSelectValue} onChange={setMultiSelectValue} isLoading={boolean("isLoading", false)} - width={number("width", 600)} /> ); } diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx index 8496166a..becf0470 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx @@ -1,17 +1,19 @@ import styled from "styled-components"; +import { colors } from "../../../../themes/colors"; + const FormMultiSelectInput = styled.input` - background-color: transparent; + display: inline-block; width: 350px; border: none; outline: none; - display: inline-block; - font-weight: 600; - color: #444; - padding-left: 3px; + color: ${colors.darkBlack}; + font-size: 16px; + line-height: 18px; + background-color: transparent; ::placeholder { - color: #444; + color: ${colors.darkBlack}; } `; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx index 33639e56..1f3597cd 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectInputWrapper.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; const FormMultiSelectInputWrapper = styled.li` - margin-bottom: 8px; + margin-bottom: 6px; width: 130px; overflow: visible; `; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx index 02399854..e9a5ae3e 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx @@ -1,20 +1,22 @@ -import styled from "styled-components"; +import styled, { css } from "styled-components"; + +import { colors } from "../../../../../themes/colors"; + +function getStyles({ isHighlighted }) { + if (isHighlighted) { + return css` + background-color: ${colors.whiteGrayLight}; + `; + } +} const FormMultiSelectOption = styled.li` font-size: 16px; - line-height: 1.5; - padding: 4px 23px; + line-height: 26px; + padding: 6px 18px; cursor: pointer; - background-color: ${({ isHighlighted }) => { - if (isHighlighted) return "#3b4b5a"; - - return "#fff"; - }}; - color: ${({ isHighlighted }) => { - if (isHighlighted) return "#fff"; - - return "#263238"; - }}; + color: ${colors.darkBlack}; + ${getStyles} `; export { FormMultiSelectOption }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx index 167ceceb..60c1ab5b 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx @@ -1,42 +1,24 @@ import styled, { css } from "styled-components"; +import { colors } from "../../../../../themes/colors"; + const FormMultiSelectMenu = styled.ul` list-style-type: none; position: absolute; padding-left: 0; - box-shadow: 0px 0px 80px 0px rgba(162, 182, 189, 0.4); + box-shadow: 0px 0px 80px rgba(162, 182, 189, 0.2); + border-radius: 4px; max-height: 288px; overflow-y: auto; z-index: 1; - border-radius: 5px; - padding: 10px 0px; - background: white; - ${({ isUp }) => - isUp - ? css` - bottom: 85%; - ` - : css` - top: 85%; - `} + padding: 12px 0px; + background-color: ${colors.whiteSimple}; + ${({ isOpen }) => !isOpen && css` visibility: hidden; - `} - - &:after { - content: ""; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: ${({ isLoading }) => (isLoading ? 1 : 0)}; - visibility: ${({ isLoading }) => (isLoading ? "visible" : "hidden")}; - transition: opacity 200ms ease-in-out, visibility 200ms ease-in-out; - background-color: rgba(255, 255, 255, 0.6); - } + `}; `; export { FormMultiSelectMenu }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx index 45df4ee3..02ccab60 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemRemoveButton.jsx @@ -1,14 +1,11 @@ import styled from "styled-components"; import { Button } from "../../../../../Button"; -import { colors } from "../../../../../../themes/colors"; const FormMultiSelectTagsItemRemoveButton = styled(Button).attrs(() => ({ buttonTheme: "reset", }))` padding: 0; - display: flex; - background: ${colors.whiteSimple}; `; export { FormMultiSelectTagsItemRemoveButton }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx index 19cc892b..42ccd1ba 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx @@ -5,11 +5,12 @@ import { colors } from "../../../../../../themes/colors"; const FormMultiSelectTagsItemTitle = styled.span` font-size: 12px; + line-height: 20px; color: ${colors.darkBlack}; ${textTrimStyles} &:not(:last-child) { - margin-right: 8px; + margin-right: 4px; } `; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx index 8dca6c51..2f9ca5e0 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx @@ -3,14 +3,15 @@ import styled from "styled-components"; import { colors } from "../../../../../../themes/colors"; const StyledFormMultiSelectTagsItem = styled.li` + box-sizing: border-box; + display: flex; + align-items: center; + overflow: visible; padding: 4px 6px; background-color: ${colors.whiteSimple}; - cursor: pointer; - border-radius: 2px; + border-radius: 4px; + height: 20px; max-width: 180px; - position: relative; - display: flex; - align-items: center; `; export { StyledFormMultiSelectTagsItem }; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx index 6a3dd468..ba887ece 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx @@ -18,7 +18,7 @@ function FormMultiSelectTagsItem({ onClick={onCrossClick} data-testid={`${testId}-cross`} > - + ); diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx index 7d65b57f..d0c67309 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/index.jsx @@ -2,26 +2,19 @@ import styled from "styled-components"; import { StyledFormMultiSelectTagsItem } from "./FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem"; -import { colors } from "../../../../../themes/colors"; - const FormMultiSelectTags = styled.ul` - box-sizing: border-box; list-style-type: none; - padding: 8px; - padding-bottom: 0; margin: 0; - border-radius: 6px; - cursor: text; - background: ${colors.grayLight}; + padding: 0; display: flex; flex-wrap: wrap; + cursor: text; + margin-bottom: -6px; + margin-right: -6px; ${StyledFormMultiSelectTagsItem} { - margin-bottom: 8px; - - &:not(:last-child) { - margin-right: 10px; - } + margin-bottom: 6px; + margin-right: 6px; } `; diff --git a/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx b/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx index f766c7e3..889d2e69 100644 --- a/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx +++ b/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx @@ -1,8 +1,11 @@ import styled from "styled-components"; +import { colors } from "../../../../themes/index"; const StyledFormMultiSelect = styled.div` position: relative; - width: ${({ width }) => (width ? `${width}px` : "100%")}; + background-color: ${colors.whiteGrayLight}; + padding: 12px; + border-radius: 4px; &:after { content: ""; diff --git a/src/components/form/components/FormMultiSelect/index.jsx b/src/components/form/components/FormMultiSelect/index.jsx index 16918117..7a6124e3 100644 --- a/src/components/form/components/FormMultiSelect/index.jsx +++ b/src/components/form/components/FormMultiSelect/index.jsx @@ -46,8 +46,9 @@ function FormMultiSelect(props) { useEffect(() => { const input = inputRef.current; + function handleKeyDown(ev) { - if (ev.keyCode === BACKSPACE_KEY_CODE && inputValue === "") { + if (ev.keyCode === BACKSPACE_KEY_CODE && ev.target.value === "") { // Удаляем последний элемент setSelected(selected => selected.slice(0, selected.length - 1)); setIsOpen(false); From dea14bc6b451f1e4857db25dae5085067e3a18d2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 11:29:23 +0300 Subject: [PATCH 036/175] useRedirectOnError now receives 2 params instead of obj --- src/hooks/use-redirect-on-error.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/use-redirect-on-error.js b/src/hooks/use-redirect-on-error.js index ad48a5c7..f362e67c 100644 --- a/src/hooks/use-redirect-on-error.js +++ b/src/hooks/use-redirect-on-error.js @@ -1,6 +1,6 @@ import { useEffect } from "react"; -function useRedirectOnError({ error, redirect }) { +function useRedirectOnError(error, redirect) { useEffect(() => { if (error && redirect) { redirect(); From 63d794e2f050a04b355594dc029f6dc5531253d2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 15:02:49 +0300 Subject: [PATCH 037/175] icons: Pencil icon was added --- src/assets/icons/Pencil.jsx | 35 +++++++++++++++++++++++++++++++++++ src/assets/icons/index.js | 1 + 2 files changed, 36 insertions(+) create mode 100644 src/assets/icons/Pencil.jsx diff --git a/src/assets/icons/Pencil.jsx b/src/assets/icons/Pencil.jsx new file mode 100644 index 00000000..9576306f --- /dev/null +++ b/src/assets/icons/Pencil.jsx @@ -0,0 +1,35 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function Pencil({ size, className }) { + return ( + + + + + ); +} + +Pencil.propTypes = { + size: PropTypes.number.isRequired, + className: PropTypes.string, +}; + +Pencil.defaultProps = { + size: 10, +}; + +export default Pencil; diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index f7f7b4bc..035feb3c 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -45,6 +45,7 @@ export { PlaylistAddCheck, } from "@styled-icons/material"; +export { default as Pencil } from "./Pencil"; export { default as TimesDelete } from "./TimesDelete"; export { default as Check } from "./Check"; export { default as Sync } from "./Sync"; From d41a1943a325471e743f792a301eb936d7a4a40c Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 15:03:43 +0300 Subject: [PATCH 038/175] CopyItem: component was replaced with a new one --- src/components/CopyItem.js | 58 ---------------------- src/components/CopyItem/CopyItemIcon.jsx | 12 +++++ src/components/CopyItem/StyledCopyItem.jsx | 15 ++++++ src/components/CopyItem/index.jsx | 49 ++++++++++++++++++ 4 files changed, 76 insertions(+), 58 deletions(-) delete mode 100644 src/components/CopyItem.js create mode 100644 src/components/CopyItem/CopyItemIcon.jsx create mode 100644 src/components/CopyItem/StyledCopyItem.jsx create mode 100644 src/components/CopyItem/index.jsx diff --git a/src/components/CopyItem.js b/src/components/CopyItem.js deleted file mode 100644 index eb3f9e62..00000000 --- a/src/components/CopyItem.js +++ /dev/null @@ -1,58 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -const isCopyAvailible = - document.queryCommandSupported && document.queryCommandSupported("copy"); - -/** - * Deprecated - * (useCopyToClipboard) - */ -export class CopyItem extends React.Component { - static propTypes = { - render: PropTypes.func.isRequired, - }; - - copyItemRef = React.createRef(); - - state = { - isCopySuccess: false, - isError: false, - }; - - copyToClipboard = () => { - this.setState({ isCopySuccess: false }, () => { - /** - * На случай копирования из скрытых элементов - * добавляется новый элемент, контент котрого - * это значение или html исходного элемента - */ - try { - const sourceEl = this.copyItemRef.current; - const el = document.createElement("textarea"); - - el.value = sourceEl.value || sourceEl.innerHTML; - el.setAttribute("readonly", ""); - el.style.position = "absolute"; - el.style.left = "-9999px"; - document.body.appendChild(el); - el.select(); - document.execCommand("copy"); - document.body.removeChild(el); - - this.setState({ isCopySuccess: true }); - } catch (error) { - console.log(error); - this.setState({ isError: true }); - } - }); - }; - - render() { - return this.props.render({ - isCopyAvailible, - copyItemRef: this.copyItemRef, - copyData: this.copyToClipboard, - }); - } -} diff --git a/src/components/CopyItem/CopyItemIcon.jsx b/src/components/CopyItem/CopyItemIcon.jsx new file mode 100644 index 00000000..943e88cf --- /dev/null +++ b/src/components/CopyItem/CopyItemIcon.jsx @@ -0,0 +1,12 @@ +import styled from "styled-components"; + +import { Clone } from "@identixone/ui-kit/src/assets/icons"; +import { colors } from "@identixone/ui-kit/src/themes/colors"; + +const CopyItemIcon = styled(Clone)` + color: ${colors.grayMedium}; + margin-left: 4px; + align-self: flex-start; +`; + +export { CopyItemIcon }; diff --git a/src/components/CopyItem/StyledCopyItem.jsx b/src/components/CopyItem/StyledCopyItem.jsx new file mode 100644 index 00000000..8614b49b --- /dev/null +++ b/src/components/CopyItem/StyledCopyItem.jsx @@ -0,0 +1,15 @@ +import styled from "styled-components"; + +import { Flash } from "@identixone/ui-kit/src/components/Flash"; + +import { colors } from "@identixone/ui-kit/src/themes/colors"; + +const StyledCopyItem = styled(Flash)` + cursor: pointer; + font-size: 16px; + line-height: 26px; + color: ${colors.darkBlack}; + display: flex; +`; + +export { StyledCopyItem }; diff --git a/src/components/CopyItem/index.jsx b/src/components/CopyItem/index.jsx new file mode 100644 index 00000000..5c91ee50 --- /dev/null +++ b/src/components/CopyItem/index.jsx @@ -0,0 +1,49 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { useEffect } from "react"; +import { useCopyToClipboard } from "@identixone/ui-kit/src/hooks"; +import { useFlash } from "@identixone/ui-kit/src/components/Flash"; + +import { StyledCopyItem } from "./StyledCopyItem"; +import { CopyItemIcon } from "./CopyItemIcon"; + +function CopyItem({ children, className, "data-testid": testId }) { + const { flash, isFlashing } = useFlash(); + const [{ isCopyAvailable, isCopied }, copyToClipboard] = useCopyToClipboard(); + + function handleCopyClick(ev) { + ev.stopPropagation(); + copyToClipboard(children); + } + + useEffect(() => { + if (isCopied) { + flash(); + } + }, [isCopied]); + + return ( + + {children} + {isCopyAvailable && } + + ); +} + +CopyItem.propTypes = { + children: PropTypes.string.isRequired, + className: PropTypes.string, + "data-testid": PropTypes.string, +}; + +CopyItem.defaultProps = { + "data-testid": "copy-item", +}; + +export { CopyItem }; From 2dbac17657c1a49443200b749a409aa009ec4fc8 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 16:08:43 +0300 Subject: [PATCH 039/175] EntriesDateTimeFilter: component export added to entries barrel file --- src/components/Entries/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Entries/index.js b/src/components/Entries/index.js index 0060ce20..608fae7f 100644 --- a/src/components/Entries/index.js +++ b/src/components/Entries/index.js @@ -3,5 +3,6 @@ export { EntryPersonCard } from "./EntryPersonCard"; export { PersonEntriesCard } from "./PersonEntriesCard"; export * from "./components"; +export * from "./EntriesDateTimeFilter"; export * from "./config"; From 0f34cba6aa53bc8fab93cb0d5d276eccf6c89d40 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 19:56:31 +0300 Subject: [PATCH 040/175] useListFetch: fetchOnInitial, onFetchParamsChange attrs were added --- src/hooks/use-list-fetch.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/hooks/use-list-fetch.js b/src/hooks/use-list-fetch.js index 4e706f5d..2f98d018 100644 --- a/src/hooks/use-list-fetch.js +++ b/src/hooks/use-list-fetch.js @@ -31,6 +31,8 @@ export function useListFetch({ searchQuery: initialSearchQuery = "", clearList = true, searchQueryHook = useSearchQuery, + fetchOnInitial = true, + onFetchParamsChange, }) { if (!(fetchList instanceof Function)) { console.warn("You did not specify fetchList function"); @@ -69,6 +71,14 @@ export function useListFetch({ } useDeepCompareEffect(() => { + if (onFetchParamsChange) { + onFetchParamsChange(prevFetchParams, fetchParams); + } + + if (prevFetchParams === undefined && !fetchOnInitial) { + return; + } + const hasDebounce = prevFetchParams && prevFetchParams.q !== fetchParams.q; if (fetchParams.q !== searchQuery) { @@ -92,6 +102,10 @@ export function useListFetch({ setFetchParams({ limit: pagination.limit, offset: pagination.offset }); }, [pagination]); + function changeOffset(offset) { + setPagination({ ...pagination, offset }); + } + return { pagination, setPagination, @@ -104,5 +118,8 @@ export function useListFetch({ setSearchQuery, fetchListWithParams, + + offset: pagination.offset, + changeOffset, }; } From 811020516774f5e96b7e5121defa617b8d9752d7 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 1 Apr 2020 19:57:26 +0300 Subject: [PATCH 041/175] ListLayoutSearch: margin bottom was reduced --- src/components/ListLayout/ListLayoutSearch.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ListLayout/ListLayoutSearch.jsx b/src/components/ListLayout/ListLayoutSearch.jsx index 080ab389..77287c7e 100644 --- a/src/components/ListLayout/ListLayoutSearch.jsx +++ b/src/components/ListLayout/ListLayoutSearch.jsx @@ -1,5 +1,5 @@ import styled from "styled-components"; export const ListLayoutSearch = styled.div` - margin-bottom: 30px; + margin-bottom: 24px; `; From 228bb756ca4ba20e5022e888090d959c1efac539 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 09:59:10 +0300 Subject: [PATCH 042/175] react-datepicker was added to deps --- package-lock.json | 64 +++++++++++++++++++++-------------------------- package.json | 1 + 2 files changed, 29 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c325251..33b8a4cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7468,7 +7468,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", - "dev": true, "requires": { "gud": "^1.0.0", "warning": "^4.0.3" @@ -8065,7 +8064,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -8097,7 +8095,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -8719,7 +8716,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.1.tgz", "integrity": "sha512-WmWNHWmm/LDwK8jaeZic/g6sU1ZckM+vvOyCV1qFRhJJ6hzve6DRgthNQB7Lra1ocrw68HexLKYgtdxIPcb3Fg==", - "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -8786,7 +8782,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -11090,8 +11085,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { "version": "1.1.2", @@ -11419,8 +11413,7 @@ "gud": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", - "dev": true + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, "gzip-size": { "version": "5.1.1", @@ -11466,7 +11459,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -11496,8 +11488,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-to-string-tag-x": { "version": "1.4.1", @@ -12538,8 +12529,7 @@ "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" }, "is-arrayish": { "version": "0.2.1", @@ -12565,8 +12555,7 @@ "is-callable": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" }, "is-ci": { "version": "2.0.0", @@ -12639,8 +12628,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-decimal": { "version": "1.0.4", @@ -12897,7 +12885,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -12958,7 +12945,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -16459,20 +16445,17 @@ "object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" }, "object-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -16487,7 +16470,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, "requires": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -17144,8 +17126,7 @@ "popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "dev": true + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" }, "posix-character-classes": { "version": "0.1.1", @@ -18280,6 +18261,18 @@ "tinycolor2": "^1.4.1" } }, + "react-datepicker": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.14.1.tgz", + "integrity": "sha512-8eWHvrjXfKVkt5rERXC6/c/eEdcE2stIsl+QmTO5Efgpacf8MOCyVpBisJLVLDYjVlENczhOcRlIzvraODHKxA==", + "requires": { + "classnames": "^2.2.6", + "date-fns": "^2.0.1", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.9.0", + "react-popper": "^1.3.4" + } + }, "react-dev-utils": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.1.0.tgz", @@ -18699,11 +18692,15 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "react-onclickoutside": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.9.0.tgz", + "integrity": "sha512-8ltIY3bC7oGhj2nPAvWOGi+xGFybPNhJM0V1H8hY/whNcXgmDeaeoCMPPd8VatrpTsUWjb/vGzrmu6SrXVty3A==" + }, "react-popper": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", "integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==", - "dev": true, "requires": { "@babel/runtime": "^7.1.2", "create-react-context": "^0.3.0", @@ -19095,7 +19092,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" @@ -20561,7 +20557,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -20571,7 +20566,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -21451,8 +21445,7 @@ "typed-styles": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", - "dev": true + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" }, "typedarray": { "version": "0.0.6", @@ -21942,7 +21935,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dev": true, "requires": { "loose-envify": "^1.0.0" } diff --git a/package.json b/package.json index ea42251b..39f3bcdc 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "nouislider": "^14.2.0", "nouislider-react": "^3.3.7", "rc-notification": "^4.0.0", + "react-datepicker": "^2.14.1", "react-dropzone": "^10.2.2", "react-i18next": "^11.3.4", "react-qr-svg": "^2.2.1", From 490236bcfcf9ddbee4a119cd3b13316f210dcba6 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 10:06:21 +0300 Subject: [PATCH 043/175] @identixone/ui-kit imports were replaced with relative --- src/components/CopyItem/CopyItemIcon.jsx | 4 ++-- src/components/CopyItem/StyledCopyItem.jsx | 4 ++-- src/components/CopyItem/index.jsx | 4 ++-- .../EntriesDateTimeFilterDateTimeInputInput.jsx | 2 +- .../EntriesDateTimeFilterDateTimeInputLabel.jsx | 2 +- .../EntriesDateTimeFilterControl/index.jsx | 2 +- .../StyledEntriesDateTimeFilterError.jsx | 2 +- .../EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx | 4 ++-- .../EntriesDateTimeFilterRelativePickerSelectLabel.jsx | 2 +- .../EntriesDateTimeFilterRelativePickerSelectOption.jsx | 4 ++-- .../EntriesDateTimeFilterResetButton.jsx | 2 +- .../EntriesDateTimeFilterTabsTabbarButton.jsx | 4 ++-- .../EntriesDateTimeFilterTabsTabbar/index.jsx | 2 +- .../EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx | 2 +- .../StyledEntriesDateTimeFilterTotalTime.jsx | 2 +- src/components/Entries/EntriesDateTimeFilter/index.jsx | 4 ++-- 16 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/components/CopyItem/CopyItemIcon.jsx b/src/components/CopyItem/CopyItemIcon.jsx index 943e88cf..7ceaf669 100644 --- a/src/components/CopyItem/CopyItemIcon.jsx +++ b/src/components/CopyItem/CopyItemIcon.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; -import { Clone } from "@identixone/ui-kit/src/assets/icons"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { Clone } from "../../assets/icons"; +import { colors } from "../../themes/colors"; const CopyItemIcon = styled(Clone)` color: ${colors.grayMedium}; diff --git a/src/components/CopyItem/StyledCopyItem.jsx b/src/components/CopyItem/StyledCopyItem.jsx index 8614b49b..4e8a20cf 100644 --- a/src/components/CopyItem/StyledCopyItem.jsx +++ b/src/components/CopyItem/StyledCopyItem.jsx @@ -1,8 +1,8 @@ import styled from "styled-components"; -import { Flash } from "@identixone/ui-kit/src/components/Flash"; +import { Flash } from "../Flash"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { colors } from "../../themes/colors"; const StyledCopyItem = styled(Flash)` cursor: pointer; diff --git a/src/components/CopyItem/index.jsx b/src/components/CopyItem/index.jsx index 5c91ee50..beda7458 100644 --- a/src/components/CopyItem/index.jsx +++ b/src/components/CopyItem/index.jsx @@ -2,8 +2,8 @@ import React from "react"; import PropTypes from "prop-types"; import { useEffect } from "react"; -import { useCopyToClipboard } from "@identixone/ui-kit/src/hooks"; -import { useFlash } from "@identixone/ui-kit/src/components/Flash"; +import { useCopyToClipboard } from "../../hooks"; +import { useFlash } from "../Flash"; import { StyledCopyItem } from "./StyledCopyItem"; import { CopyItemIcon } from "./CopyItemIcon"; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx index 91fcad86..b6577d88 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { colors } from "../../../../../themes/colors"; const EntriesDateTimeFilterDateTimeInputInput = styled.input` background-color: ${colors.grayLight}; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx index 85928cd1..ff96c6eb 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { colors } from "../../../../../themes/colors"; const EntriesDateTimeFilterDateTimeInputLabel = styled.label` display: inline-block; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx index 89f9233e..54063422 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { FormDropdownControl } from "@identixone/ui-kit/src/components/form/components/FormDropdown/FormDropdownControl"; +import { FormDropdownControl } from "../../../form/components/FormDropdown/FormDropdownControl"; const EntriesDateTimeFilterControl = styled(FormDropdownControl)` min-width: 127px; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx index d820d68f..9f1babac 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { colors } from "../../../../themes/colors"; const StyledEntriesDateTimeFilterError = styled.p` font-size: 14px; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx index c07673c0..a2a31eac 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; -import { PopupContainer } from "@identixone/ui-kit/src/components/PopupContainer"; +import { colors } from "../../../themes/colors"; +import { PopupContainer } from "../../PopupContainer"; const EntriesDateTimeFilterPopup = styled(PopupContainer)` background-color: ${colors.whiteSimple}; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx index f9028030..c7109fac 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { colors } from "../../../../../../themes/colors"; const EntriesDateTimeFilterRelativePickerSelectLabel = styled.label` width: 64px; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx index 454d4229..79fcdeac 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; -import { Button } from "@identixone/ui-kit/src/components/Button"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { Button } from "../../../../../Button"; +import { colors } from "../../../../../../themes/colors"; const EntriesDateTimeFilterRelativePickerSelectOption = styled( Button diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx index 778893ce..809bc2fd 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { FormDropdownResetButton } from "@identixone/ui-kit/src/components/form/components/FormDropdown/FormDropdownResetButton"; +import { FormDropdownResetButton } from "../../form/components/FormDropdown/FormDropdownResetButton"; const EntriesDateTimeFilterResetButton = styled(FormDropdownResetButton)``; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx index 2ddc2a69..df26440f 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; -import { Button } from "@identixone/ui-kit/src/components/Button"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { Button } from "../../../../Button"; +import { colors } from "../../../../../themes/colors"; const EntriesDateTimeFilterTabsTabbarButton = styled(Button).attrs(() => ({ buttonTheme: "reset", diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx index 2a84fd59..f599e56a 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx @@ -2,7 +2,7 @@ import React from "react"; import { useContext } from "react"; -import { TabsContext } from "@identixone/ui-kit/src/components/Tabs"; +import { TabsContext } from "../../../../../components/Tabs"; import { StyledEntriesDateTimeFilterTabsTabbar } from "./StyledEntriesDateTimeFilterTabsTabbar"; import { EntriesDateTimeFilterTabsTabbarButton } from "./EntriesDateTimeFilterTabsTabbarButton"; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx index 8c6c56aa..73e83f3b 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx @@ -1,6 +1,6 @@ import React from "react"; -import { Tabs } from "@identixone/ui-kit/src/components/Tabs"; +import { Tabs } from "../../../Tabs"; import { EntriesDateTimeFilterTabsTabbar } from "./EntriesDateTimeFilterTabsTabbar"; import { EntriesDateTimeFilterTabsInner } from "./EntriesDateTimeFilterTabsInner"; import { EntriesDateTimeFilterAbsolute } from "../EntriesDateTimeFilterAbsolute"; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx index 662636c3..9657f705 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/themes/colors"; +import { colors } from "../../../../themes/colors"; const StyledEntriesDateTimeFilterTotalTime = styled.p` margin: 0; diff --git a/src/components/Entries/EntriesDateTimeFilter/index.jsx b/src/components/Entries/EntriesDateTimeFilter/index.jsx index a641c37d..6f038c24 100644 --- a/src/components/Entries/EntriesDateTimeFilter/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/index.jsx @@ -3,7 +3,7 @@ import PropTypes from "prop-types"; import { useState, useRef, useMemo } from "react"; import { useUpdateEffect } from "react-use"; -import { usePositionPopup } from "@identixone/ui-kit/src/hooks"; +import { usePositionPopup } from "../../../hooks"; import { EntriesDateTimeFilterPopup } from "./EntriesDateTimeFilterPopup"; import { EntriesDateTimeFilterTabs } from "./EntriesDateTimeFilterTabs"; @@ -12,7 +12,7 @@ import { EntriesDateTimeFilterControl } from "./EntriesDateTimeFilterControl"; import { EntriesDateTimeFilterError } from "./EntriesDateTimeFilterError"; import { EntriesDateTimeFilterTotalTime } from "./EntriesDateTimeFilterTotalTime"; import { EntriesDateTimeFilterResetButton } from "./EntriesDateTimeFilterResetButton"; -import { Times } from "@identixone/ui-kit/src/assets/icons"; +import { Times } from "../../../assets/icons"; import { identity } from "lodash-es"; import dayjs from "dayjs"; From 31b4cea27e7517dd690d6d85ce0b7bb2b4f6b7ef Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 10:40:04 +0300 Subject: [PATCH 044/175] icons: Search was replaced with a custom icon --- src/assets/icons/Search.jsx | 38 +++++++++++++++++++++++++++++++++++++ src/assets/icons/index.js | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/assets/icons/Search.jsx diff --git a/src/assets/icons/Search.jsx b/src/assets/icons/Search.jsx new file mode 100644 index 00000000..10be75dd --- /dev/null +++ b/src/assets/icons/Search.jsx @@ -0,0 +1,38 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function Search({ size, className }) { + return ( + + + + + + + + + + + ); +} + +Search.propTypes = { + size: PropTypes.number.isRequired, + className: PropTypes.string, +}; + +Search.defaultProps = { + size: 10, +}; + +export default Search; diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index 035feb3c..45def44a 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -12,7 +12,6 @@ export { Plus, Exclamation, Play, - Search, ArrowUp, ArrowRight, AngleRight, @@ -50,3 +49,4 @@ export { default as TimesDelete } from "./TimesDelete"; export { default as Check } from "./Check"; export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; +export { default as Search } from "./Search"; From 571998a5537251d7796ab766a9d5531349a97534 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 10:41:09 +0300 Subject: [PATCH 045/175] Search: redesign --- src/components/Search/Search.stories.js | 41 +++++++++++------- .../SearchClearButtonIcon.jsx | 7 ---- .../StyledSearchClearButton.jsx | 11 ----- .../Search/SearchClearButton/index.jsx | 23 ---------- src/components/Search/SearchCompact/index.jsx | 33 +++++++++++++++ .../Search/SearchFakeInputValue.jsx | 8 ++-- src/components/Search/SearchIcon.jsx | 10 +++-- src/components/Search/SearchInput.jsx | 12 +++--- src/components/Search/StyledSearch.jsx | 31 ++++---------- src/components/Search/__tests__/Search.js | 42 ------------------- src/components/Search/index.jsx | 30 +++++++------ 11 files changed, 100 insertions(+), 148 deletions(-) delete mode 100644 src/components/Search/SearchClearButton/SearchClearButtonIcon.jsx delete mode 100644 src/components/Search/SearchClearButton/StyledSearchClearButton.jsx delete mode 100644 src/components/Search/SearchClearButton/index.jsx create mode 100644 src/components/Search/SearchCompact/index.jsx delete mode 100644 src/components/Search/__tests__/Search.js diff --git a/src/components/Search/Search.stories.js b/src/components/Search/Search.stories.js index d936356e..3e7cdf1e 100644 --- a/src/components/Search/Search.stories.js +++ b/src/components/Search/Search.stories.js @@ -1,28 +1,39 @@ import React from "react"; + +import { useState } from "react"; + import { storiesOf } from "@storybook/react"; import { Search } from "./index.jsx"; -storiesOf("Search", module).add("default", () => { - class SearchValueWrapper extends React.Component { - state = { - value: "", - }; - - handleChange = ({ target: { value } }) => { - this.setState({ value }); - }; +storiesOf("Search", module) + .add("default", () => { + function SearchWrapper() { + const [value, setValue] = useState(""); - render() { return ( setValue(value)} + placeholder="Start enter name..." + /> + ); + } + + return ; + }) + .add("compact", () => { + function SearchWrapper() { + const [value, setValue] = useState(""); + + return ( + setValue(value)} placeholder="Start enter name..." /> ); } - } - return ; -}); + return ; + }); diff --git a/src/components/Search/SearchClearButton/SearchClearButtonIcon.jsx b/src/components/Search/SearchClearButton/SearchClearButtonIcon.jsx deleted file mode 100644 index 4e3bc303..00000000 --- a/src/components/Search/SearchClearButton/SearchClearButtonIcon.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -import { Times } from "../../../assets/icons"; - -export const SearchClearButtonIcon = styled(Times)` - color: #3b4b5a; -`; diff --git a/src/components/Search/SearchClearButton/StyledSearchClearButton.jsx b/src/components/Search/SearchClearButton/StyledSearchClearButton.jsx deleted file mode 100644 index 5be50ba3..00000000 --- a/src/components/Search/SearchClearButton/StyledSearchClearButton.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from "styled-components"; - -import { Button } from "../../Button"; - -export const StyledSearchClearButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` - height: 23px; - width: 23px; - padding: 0px; -`; diff --git a/src/components/Search/SearchClearButton/index.jsx b/src/components/Search/SearchClearButton/index.jsx deleted file mode 100644 index 0e0a83de..00000000 --- a/src/components/Search/SearchClearButton/index.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import { StyledSearchClearButton } from "./StyledSearchClearButton"; -import { SearchClearButtonIcon } from "./SearchClearButtonIcon"; - -function SearchClearButton(props) { - return ( - - - - ); -} - -SearchClearButton.propTypes = { - size: PropTypes.number, -}; - -SearchClearButton.defaultProps = { - size: 23, -}; - -export { SearchClearButton, StyledSearchClearButton }; diff --git a/src/components/Search/SearchCompact/index.jsx b/src/components/Search/SearchCompact/index.jsx new file mode 100644 index 00000000..7f01b874 --- /dev/null +++ b/src/components/Search/SearchCompact/index.jsx @@ -0,0 +1,33 @@ +import styled from "styled-components"; + +import { + Search, + SearchIcon, + SearchFakeInputValue, + SearchInput, +} from "../index.jsx"; + +import { colors } from "../../../themes/index.js"; + +const SearchCompact = styled(Search)` + padding: 3px 8px; + height: 30px; + + ${SearchIcon} { + margin-right: 8px; + color: ${colors.grayDark}; + } + + ${SearchInput} { + &::placeholder { + color: ${colors.grayDark}; + font-weight: 600; + } + } + + ${SearchFakeInputValue} { + left: 40px; + } +`; + +export { SearchCompact }; diff --git a/src/components/Search/SearchFakeInputValue.jsx b/src/components/Search/SearchFakeInputValue.jsx index 85638930..1632c965 100644 --- a/src/components/Search/SearchFakeInputValue.jsx +++ b/src/components/Search/SearchFakeInputValue.jsx @@ -6,10 +6,10 @@ import styled from "styled-components"; * например, выделять цветом только его часть */ -export const SearchFakeInputValue = styled.span` +const SearchFakeInputValue = styled.span` position: absolute; - left: 54px; - font-size: 20px; - color: rgb(67, 67, 67); + left: 55px; pointer-events: none; `; + +export { SearchFakeInputValue }; diff --git a/src/components/Search/SearchIcon.jsx b/src/components/Search/SearchIcon.jsx index 2259a2f3..1bd3f1d6 100644 --- a/src/components/Search/SearchIcon.jsx +++ b/src/components/Search/SearchIcon.jsx @@ -2,8 +2,12 @@ import styled from "styled-components"; import { Search } from "../../assets/icons"; -export const SearchIcon = styled(Search)` - margin-right: 15px; +import { colors } from "../../themes/colors"; + +const SearchIcon = styled(Search)` + margin-right: 16px; min-width: 24px; - color: #3b4b5a; + color: ${colors.darkBlack}; `; + +export { SearchIcon }; diff --git a/src/components/Search/SearchInput.jsx b/src/components/Search/SearchInput.jsx index 1c4f9a92..92db8660 100644 --- a/src/components/Search/SearchInput.jsx +++ b/src/components/Search/SearchInput.jsx @@ -1,6 +1,8 @@ import styled from "styled-components"; -export const SearchInput = styled.input.attrs(() => ({ +import { colors } from "../../themes/colors"; + +const SearchInput = styled.input.attrs(() => ({ type: "search", spellCheck: "false", }))` @@ -9,15 +11,15 @@ export const SearchInput = styled.input.attrs(() => ({ padding: 0; width: 100%; background-color: inherit; - margin-right: 8px; - font-size: 20px; - color: rgb(67, 67, 67); &::placeholder { - color: rgba(67, 67, 67, 0.6); + font-weight: 300; + color: ${colors.gray}; } &::-webkit-search-cancel-button { display: none; } `; + +export { SearchInput }; diff --git a/src/components/Search/StyledSearch.jsx b/src/components/Search/StyledSearch.jsx index 8813a4eb..fedc8277 100644 --- a/src/components/Search/StyledSearch.jsx +++ b/src/components/Search/StyledSearch.jsx @@ -2,31 +2,18 @@ import styled from "styled-components"; import { colors } from "../../themes/colors"; -export const StyledSearch = styled.div` +const StyledSearch = styled.div` box-sizing: border-box; position: relative; display: flex; align-items: center; - padding-right: 15px; - padding-left: 15px; - height: 60px; + padding: 12px 16px; + height: 48px; border-radius: 8px; - background-color: ${colors.veryLightBlue}; - - &:after { - content: ""; - position: absolute; - left: 0; - z-index: -1; - width: 100%; - height: 100%; - border-radius: 8px; - opacity: 0; - box-shadow: 0 0 30px 0 rgba(162, 182, 189, 0.25); - transition: opacity 0.3s ease-in-out; - } - - &:hover:after { - opacity: 1; - } + background-color: ${colors.whiteGrayLight}; + font-size: 16px; + line-height: 26px; + color: ${colors.darkBlack}; `; + +export { StyledSearch }; diff --git a/src/components/Search/__tests__/Search.js b/src/components/Search/__tests__/Search.js deleted file mode 100644 index 75b2a4f5..00000000 --- a/src/components/Search/__tests__/Search.js +++ /dev/null @@ -1,42 +0,0 @@ -import React from "react"; - -import { fireEvent } from "@testing-library/react"; -import { render } from "../../../../test/utils"; - -import { Search } from "../index"; - -describe("Search tests", () => { - function renderSearch() { - class SearchWrapper extends React.Component { - state = { - value: "", - }; - - handleChange = ({ target: { value } }) => { - this.setState({ value }); - }; - - render() { - return ; - } - } - - return render(); - } - - test("Search renders clear button only when input has value", () => { - const { queryByTestId, getByTestId } = renderSearch(); - - expect(queryByTestId("search-clear-btn")).not.toBeInTheDocument(); - - fireEvent.change(getByTestId("search-input"), { - target: { value: "query" }, - }); - - expect(queryByTestId("search-clear-btn")).toBeInTheDocument(); - - fireEvent.click(queryByTestId("search-clear-btn")); - - expect(queryByTestId("search-clear-btn")).not.toBeInTheDocument(); - }); -}); diff --git a/src/components/Search/index.jsx b/src/components/Search/index.jsx index d7aad0f1..bc3c7c5e 100644 --- a/src/components/Search/index.jsx +++ b/src/components/Search/index.jsx @@ -5,7 +5,7 @@ import { StyledSearch } from "./StyledSearch"; import { SearchInput } from "./SearchInput"; import { SearchFakeInputValue } from "./SearchFakeInputValue"; import { SearchIcon } from "./SearchIcon"; -import { SearchClearButton } from "./SearchClearButton"; +import { SearchCompact } from "./SearchCompact"; function Search({ value, @@ -13,28 +13,19 @@ function Search({ placeholder, innerRef, className, - iconSize, - ...restProps + "data-testid": testId, }) { return ( - + {value} - {value && ( - { - onChange({ target: { value: "" } }); - }} - /> - )} ); } @@ -44,14 +35,21 @@ Search.propTypes = { placeholder: PropTypes.string, onChange: PropTypes.func, innerRef: PropTypes.object, - iconSize: PropTypes.number, className: PropTypes.string, "data-testid": PropTypes.string, }; Search.defaultProps = { - iconSize: 23, "data-testid": "search-input", }; -export { Search, StyledSearch, SearchFakeInputValue }; +Search.Compact = SearchCompact; + +export { + Search, + SearchCompact, + StyledSearch, + SearchInput, + SearchFakeInputValue, + SearchIcon, +}; From 4c36e2cec7a301c91c26478df894f8d0074102da Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 10:49:32 +0300 Subject: [PATCH 046/175] ListLayout: margins were changed --- src/components/ListLayout/ListLayoutHeader.jsx | 2 +- src/components/ListLayout/ListLayoutTitle.jsx | 4 +--- src/components/Text/Title.jsx | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/components/ListLayout/ListLayoutHeader.jsx b/src/components/ListLayout/ListLayoutHeader.jsx index dac8dc36..a2e8df1f 100644 --- a/src/components/ListLayout/ListLayoutHeader.jsx +++ b/src/components/ListLayout/ListLayoutHeader.jsx @@ -6,6 +6,6 @@ export const ListLayoutHeader = styled.header` align-items: center; &:not(:last-child) { - margin-bottom: 13px; + margin-bottom: 24px; } `; diff --git a/src/components/ListLayout/ListLayoutTitle.jsx b/src/components/ListLayout/ListLayoutTitle.jsx index f77d64a9..ad0e3b94 100644 --- a/src/components/ListLayout/ListLayoutTitle.jsx +++ b/src/components/ListLayout/ListLayoutTitle.jsx @@ -2,6 +2,4 @@ import styled from "styled-components"; import { Title } from "../Text"; -export const ListLayoutTitle = styled(Title)` - line-height: 1; -`; +export const ListLayoutTitle = styled(Title)``; diff --git a/src/components/Text/Title.jsx b/src/components/Text/Title.jsx index e121ab58..949bd9e6 100644 --- a/src/components/Text/Title.jsx +++ b/src/components/Text/Title.jsx @@ -7,7 +7,6 @@ function getStyles({ level }) { 1: css` font-size: 44px; line-height: 60px; - font-weight: 300; letter-spacing: -0.5px; `, 2: css` From ebb3d19ba4315be7480b48ef36988f894a846799 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 10:54:40 +0300 Subject: [PATCH 047/175] SearchFakeInputValue: left attr was fixed --- src/components/Search/SearchFakeInputValue.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Search/SearchFakeInputValue.jsx b/src/components/Search/SearchFakeInputValue.jsx index 1632c965..8eaa7729 100644 --- a/src/components/Search/SearchFakeInputValue.jsx +++ b/src/components/Search/SearchFakeInputValue.jsx @@ -8,7 +8,7 @@ import styled from "styled-components"; const SearchFakeInputValue = styled.span` position: absolute; - left: 55px; + left: 56px; pointer-events: none; `; From 7e3713412e1ad0a2e653853a368d6ffbddb87f4e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 10:59:28 +0300 Subject: [PATCH 048/175] HeaderAppMenu: items now justify space between --- src/components/Header/HeaderAppMenu/StyledHeaderAppMenu.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Header/HeaderAppMenu/StyledHeaderAppMenu.jsx b/src/components/Header/HeaderAppMenu/StyledHeaderAppMenu.jsx index 11a48c02..82f1f21a 100644 --- a/src/components/Header/HeaderAppMenu/StyledHeaderAppMenu.jsx +++ b/src/components/Header/HeaderAppMenu/StyledHeaderAppMenu.jsx @@ -2,6 +2,5 @@ import styled from "styled-components"; export const StyledHeaderAppMenu = styled.nav` display: flex; - justify-content: flex-end; - padding-right: 12px; + justify-content: space-between; `; From 03bbd4ea3165147eae20df4d13727c17dd58391f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 16:05:25 +0300 Subject: [PATCH 049/175] icons: InfoCircleColor was added --- src/assets/icons/InfoCircleColor.jsx | 37 ++++++++++++++++++++++++++++ src/assets/icons/index.js | 1 + 2 files changed, 38 insertions(+) create mode 100644 src/assets/icons/InfoCircleColor.jsx diff --git a/src/assets/icons/InfoCircleColor.jsx b/src/assets/icons/InfoCircleColor.jsx new file mode 100644 index 00000000..971ab0ce --- /dev/null +++ b/src/assets/icons/InfoCircleColor.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function InfoCircleColor({ size, className }) { + return ( + + + + + ); +} + +InfoCircleColor.propTypes = { + size: PropTypes.number.isRequired, + className: PropTypes.string, +}; + +InfoCircleColor.defaultProps = { + size: 10, +}; + +export default InfoCircleColor; diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index 45def44a..f3c8b052 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -44,6 +44,7 @@ export { PlaylistAddCheck, } from "@styled-icons/material"; +export { default as InfoCircleColor } from "./InfoCircleColor"; export { default as Pencil } from "./Pencil"; export { default as TimesDelete } from "./TimesDelete"; export { default as Check } from "./Check"; From 5e71a9f0b5d441a843e507b5e7b5a02abaf6616a Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 2 Apr 2020 17:20:54 +0300 Subject: [PATCH 050/175] Search: clear search button was added --- src/assets/icons/TimesDeleteBold.jsx | 33 +++++++++++++++++++ src/assets/icons/index.js | 1 + src/components/Search/SearchClearButton.jsx | 19 +++++++++++ src/components/Search/SearchCompact/index.jsx | 3 +- src/components/Search/StyledSearch.jsx | 1 + src/components/Search/index.jsx | 17 ++++++++++ 6 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/assets/icons/TimesDeleteBold.jsx create mode 100644 src/components/Search/SearchClearButton.jsx diff --git a/src/assets/icons/TimesDeleteBold.jsx b/src/assets/icons/TimesDeleteBold.jsx new file mode 100644 index 00000000..7d72de28 --- /dev/null +++ b/src/assets/icons/TimesDeleteBold.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function TimesDeleteBold({ size, className }) { + return ( + + + + ); +} + +TimesDeleteBold.propTypes = { + size: PropTypes.number.isRequired, + className: PropTypes.string, +}; + +TimesDeleteBold.defaultProps = { + size: 10, +}; + +export default TimesDeleteBold; diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index f3c8b052..2175c3c7 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -47,6 +47,7 @@ export { export { default as InfoCircleColor } from "./InfoCircleColor"; export { default as Pencil } from "./Pencil"; export { default as TimesDelete } from "./TimesDelete"; +export { default as TimesDeleteBold } from "./TimesDeleteBold"; export { default as Check } from "./Check"; export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; diff --git a/src/components/Search/SearchClearButton.jsx b/src/components/Search/SearchClearButton.jsx new file mode 100644 index 00000000..28d52db5 --- /dev/null +++ b/src/components/Search/SearchClearButton.jsx @@ -0,0 +1,19 @@ +import styled from "styled-components"; + +import { Button } from "../Button"; + +import { colors } from "../../themes/colors"; + +const SearchClearButton = styled(Button).attrs(() => ({ + buttonTheme: "reset", +}))` + position: absolute; + right: 16px; + padding: 0; + display: flex; + height: 100%; + align-items: center; + color: ${colors.darkBlack}; +`; + +export { SearchClearButton }; diff --git a/src/components/Search/SearchCompact/index.jsx b/src/components/Search/SearchCompact/index.jsx index 7f01b874..7f1c86aa 100644 --- a/src/components/Search/SearchCompact/index.jsx +++ b/src/components/Search/SearchCompact/index.jsx @@ -9,8 +9,9 @@ import { import { colors } from "../../../themes/index.js"; -const SearchCompact = styled(Search)` +const SearchCompact = styled(Search).attrs(() => ({ isCompact: true }))` padding: 3px 8px; + padding-right: 30px; height: 30px; ${SearchIcon} { diff --git a/src/components/Search/StyledSearch.jsx b/src/components/Search/StyledSearch.jsx index fedc8277..56edc476 100644 --- a/src/components/Search/StyledSearch.jsx +++ b/src/components/Search/StyledSearch.jsx @@ -8,6 +8,7 @@ const StyledSearch = styled.div` display: flex; align-items: center; padding: 12px 16px; + padding-right: 30px; height: 48px; border-radius: 8px; background-color: ${colors.whiteGrayLight}; diff --git a/src/components/Search/index.jsx b/src/components/Search/index.jsx index bc3c7c5e..41ba9a7c 100644 --- a/src/components/Search/index.jsx +++ b/src/components/Search/index.jsx @@ -6,6 +6,8 @@ import { SearchInput } from "./SearchInput"; import { SearchFakeInputValue } from "./SearchFakeInputValue"; import { SearchIcon } from "./SearchIcon"; import { SearchCompact } from "./SearchCompact"; +import { SearchClearButton } from "./SearchClearButton"; +import { TimesDelete, TimesDeleteBold } from "../../assets/icons"; function Search({ value, @@ -14,6 +16,7 @@ function Search({ innerRef, className, "data-testid": testId, + isCompact, }) { return ( @@ -26,6 +29,19 @@ function Search({ value={value} /> {value} + {value && ( + { + onChange({ target: { value: "" } }); + }} + > + {isCompact ? ( + + ) : ( + + )} + + )} ); } @@ -37,6 +53,7 @@ Search.propTypes = { innerRef: PropTypes.object, className: PropTypes.string, "data-testid": PropTypes.string, + isCompact: PropTypes.bool, }; Search.defaultProps = { From 5b7d7137a957a5fda1931fce935e20604957d067 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 3 Apr 2020 16:22:57 +0300 Subject: [PATCH 051/175] useListFetch: issue with stale fetchList was fixed --- src/hooks/use-list-fetch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/use-list-fetch.js b/src/hooks/use-list-fetch.js index 2f98d018..42584ab7 100644 --- a/src/hooks/use-list-fetch.js +++ b/src/hooks/use-list-fetch.js @@ -50,7 +50,7 @@ export function useListFetch({ const prevFetchParams = usePrevious(fetchParams); - const debouncedFetchList = useCallback(debounce(fetchList, 500), []); + const debouncedFetchList = useCallback(debounce(fetchList, 500), [fetchList]); function fetchListWithParams(hasDebounce) { const params = { ...fetchParams, meta: { clearList, hasDebounce } }; From 8d238116f0b3a7c42102109d20f5581b842b47f9 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 3 Apr 2020 16:23:57 +0300 Subject: [PATCH 052/175] PageFiltersList: component was removed --- src/components/PageFiltersList/Content.jsx | 8 - .../PageFiltersList/EmptyListNotice.jsx | 25 --- src/components/PageFiltersList/List.jsx | 11 - .../PageFiltersList/ListDirectoryContext.js | 78 ------- .../PageFiltersListActions.jsx | 7 - .../PageFiltersListButtonsButton.jsx | 20 -- .../PageFiltersListButtons/index.jsx | 11 - .../PageFiltersListContentTop.jsx | 12 -- .../PageFiltersList/PageFiltersListContext.js | 21 -- .../StyledPageFiltersListPagination.jsx | 12 -- .../PageFiltersListPagination/index.jsx | 38 ---- .../StyledPageFiltersListDynamicList.jsx | 8 - .../PageFiltersListDynamicList/index.jsx | 34 --- .../PageFiltersList/PageFiltersListInner.jsx | 9 - .../PageFiltersList/PageFiltersListNotice.jsx | 10 - .../PageFiltersListSearch.resources.js | 8 - .../PageFiltersListSearchInput.jsx | 7 - .../PageFiltersListSearch/index.jsx | 63 ------ .../PageFiltersList/PageFiltersListTitle.jsx | 11 - .../PageFiltersList/StyledPageFiltersList.jsx | 11 - .../PageFiltersList/StyledSquareDark.jsx | 27 --- src/components/PageFiltersList/index.jsx | 197 ------------------ src/components/index.js | 1 - 23 files changed, 629 deletions(-) delete mode 100644 src/components/PageFiltersList/Content.jsx delete mode 100644 src/components/PageFiltersList/EmptyListNotice.jsx delete mode 100644 src/components/PageFiltersList/List.jsx delete mode 100644 src/components/PageFiltersList/ListDirectoryContext.js delete mode 100644 src/components/PageFiltersList/PageFiltersListActions.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListButtons/PageFiltersListButtonsButton.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListButtons/index.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListContentTop.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListContext.js delete mode 100644 src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/StyledPageFiltersListPagination.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/index.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListDynamicList/StyledPageFiltersListDynamicList.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListDynamicList/index.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListInner.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListNotice.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearch.resources.js delete mode 100644 src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearchInput.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListSearch/index.jsx delete mode 100644 src/components/PageFiltersList/PageFiltersListTitle.jsx delete mode 100644 src/components/PageFiltersList/StyledPageFiltersList.jsx delete mode 100644 src/components/PageFiltersList/StyledSquareDark.jsx delete mode 100644 src/components/PageFiltersList/index.jsx diff --git a/src/components/PageFiltersList/Content.jsx b/src/components/PageFiltersList/Content.jsx deleted file mode 100644 index 170e4d2b..00000000 --- a/src/components/PageFiltersList/Content.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import styled from "styled-components"; - -const Content = styled.section` - position: relative; - flex: 0 0 50%; -`; - -export default Content; diff --git a/src/components/PageFiltersList/EmptyListNotice.jsx b/src/components/PageFiltersList/EmptyListNotice.jsx deleted file mode 100644 index 426ded75..00000000 --- a/src/components/PageFiltersList/EmptyListNotice.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import StyledSquareDark from "./StyledSquareDark"; - -import { Plus } from "../../assets/icons"; - -import PageFiltersListNotice from "./PageFiltersListNotice"; - -export default function EmptyListNotice({ title, handleClick }) { - return ( - - {title} are not set, press - - - - to create the first one - - ); -} - -EmptyListNotice.propTypes = { - title: PropTypes.string, - handleClick: PropTypes.func, -}; diff --git a/src/components/PageFiltersList/List.jsx b/src/components/PageFiltersList/List.jsx deleted file mode 100644 index e1cad0a8..00000000 --- a/src/components/PageFiltersList/List.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from "styled-components"; - -const List = styled.div` - flex: 1; - height: 330px; - margin-right: 43px; - padding-top: 30px; - position: relative; -`; - -export default List; diff --git a/src/components/PageFiltersList/ListDirectoryContext.js b/src/components/PageFiltersList/ListDirectoryContext.js deleted file mode 100644 index ea93b35d..00000000 --- a/src/components/PageFiltersList/ListDirectoryContext.js +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useState, useEffect } from "react"; -import PropTypes from "prop-types"; - -import { noop } from "lodash-es"; - -export const ListDirectoryContext = React.createContext({ - isUserVisitList: false, - setIsUserVisitList: noop, -}); - -export const withListDirectoryContextProvider = Component => { - function WithListDirectoryContextProvider(props) { - const [isUserVisitList, setIsUserVisitList] = useState(false); - - return ( - - - - ); - } - - WithListDirectoryContextProvider.propTypes = { - forwardedRef: PropTypes.object, - }; - - return React.forwardRef((props, ref) => { - return ; - }); -}; - -export const withListDirectoryContext = Component => { - function WithListDirectoryContext(props) { - return ( - - {context => ( - - )} - - ); - } - - WithListDirectoryContext.propTypes = { - forwardedRef: PropTypes.object, - }; - - return React.forwardRef((props, ref) => { - return ; - }); -}; - -export const withListDirectoryList = Component => { - function WithListDirectoryList(props) { - useEffect(() => { - if (!props.isListFetching && !props.isUserVisitList) { - props.setIsUserVisitList(true); - } - }, [props.isListFetching]); - - return ; - } - - WithListDirectoryList.propTypes = { - isUserVisitList: PropTypes.bool.isRequired, - isListFetching: PropTypes.bool.isRequired, - setIsUserVisitList: PropTypes.func.isRequired, - forwardedRef: PropTypes.object, - }; - - const WithListDirectoryListWithForwardedRef = React.forwardRef( - (props, ref) => { - return ; - } - ); - - return withListDirectoryContext(WithListDirectoryListWithForwardedRef); -}; diff --git a/src/components/PageFiltersList/PageFiltersListActions.jsx b/src/components/PageFiltersList/PageFiltersListActions.jsx deleted file mode 100644 index 45398528..00000000 --- a/src/components/PageFiltersList/PageFiltersListActions.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -const PageFiltersListActions = styled.div` - padding-top: 20px; -`; - -export default PageFiltersListActions; diff --git a/src/components/PageFiltersList/PageFiltersListButtons/PageFiltersListButtonsButton.jsx b/src/components/PageFiltersList/PageFiltersListButtons/PageFiltersListButtonsButton.jsx deleted file mode 100644 index 9d8cb185..00000000 --- a/src/components/PageFiltersList/PageFiltersListButtons/PageFiltersListButtonsButton.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import styled from "styled-components"; - -import Button from "../../Button"; - -export const PageFiltersListButtonsButton = styled(Button).attrs(() => ({ - buttonTheme: "ghost", -}))` - width: 30px; - height: 30px; - display: flex; - align-items: center; - justify-content: center; - background-color: transparent; - color: #000; - padding: 0; - - &:not(:last-child) { - margin-right: 26px; - } -`; diff --git a/src/components/PageFiltersList/PageFiltersListButtons/index.jsx b/src/components/PageFiltersList/PageFiltersListButtons/index.jsx deleted file mode 100644 index 26c613b3..00000000 --- a/src/components/PageFiltersList/PageFiltersListButtons/index.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from "styled-components"; - -import { PageFiltersListButtonsButton } from "./PageFiltersListButtonsButton"; - -const PageFiltersListButtons = styled.div` - display: flex; -`; - -PageFiltersListButtons.Button = PageFiltersListButtonsButton; - -export default PageFiltersListButtons; diff --git a/src/components/PageFiltersList/PageFiltersListContentTop.jsx b/src/components/PageFiltersList/PageFiltersListContentTop.jsx deleted file mode 100644 index 9f8fc3f8..00000000 --- a/src/components/PageFiltersList/PageFiltersListContentTop.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import styled from "styled-components"; - -const PageFiltersListContentTop = styled.div` - display: flex; - flex: 100%; - justify-content: space-between; - align-items: center; - margin-bottom: 18px; - padding-right: 10px; -`; - -export default PageFiltersListContentTop; diff --git a/src/components/PageFiltersList/PageFiltersListContext.js b/src/components/PageFiltersList/PageFiltersListContext.js deleted file mode 100644 index 5806ca0c..00000000 --- a/src/components/PageFiltersList/PageFiltersListContext.js +++ /dev/null @@ -1,21 +0,0 @@ -import React, { createContext } from "react"; - -const initialContext = { - searchQuery: "", - filters: {}, - pagination: {}, -}; - -const PageFiltersListContext = createContext(initialContext); - -export const withPageFiltersListContext = WrappedComponent => { - const WithPageFiltersListContext = props => ( - - {context => } - - ); - - return WithPageFiltersListContext; -}; - -export default PageFiltersListContext; diff --git a/src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/StyledPageFiltersListPagination.jsx b/src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/StyledPageFiltersListPagination.jsx deleted file mode 100644 index 29f46aff..00000000 --- a/src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/StyledPageFiltersListPagination.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import styled from "styled-components"; - -const StyledPageFiltersListPagination = styled.div` - position: absolute; - top: 100%; - width: 100%; - height: 60px; - padding-top: 15px; - box-sizing: border-box; -`; - -export default StyledPageFiltersListPagination; diff --git a/src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/index.jsx b/src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/index.jsx deleted file mode 100644 index 9f8a8e88..00000000 --- a/src/components/PageFiltersList/PageFiltersListDynamicList/PageFiltersListPagination/index.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import { withPageFiltersListContext } from "../../PageFiltersListContext"; -import { Pagination } from "../../../Pagination"; - -import StyledPageFiltersListPagination from "./StyledPageFiltersListPagination"; - -export function PageFiltersListPagination({ - pagination, - setPagination, - totalCount, -}) { - const { limit, offset } = pagination; - - const handleChange = ({ offset }) => { - setPagination({ offset }); - }; - - return ( - - - - ); -} - -PageFiltersListPagination.propTypes = { - pagination: PropTypes.object.isRequired, - setPagination: PropTypes.func.isRequired, - totalCount: PropTypes.number.isRequired, -}; - -export default withPageFiltersListContext(PageFiltersListPagination); diff --git a/src/components/PageFiltersList/PageFiltersListDynamicList/StyledPageFiltersListDynamicList.jsx b/src/components/PageFiltersList/PageFiltersListDynamicList/StyledPageFiltersListDynamicList.jsx deleted file mode 100644 index b68b2bf6..00000000 --- a/src/components/PageFiltersList/PageFiltersListDynamicList/StyledPageFiltersListDynamicList.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import styled from "styled-components"; - -const StyledPageFiltersListDynamicList = styled.div` - max-height: 100%; - overflow-y: auto; -`; - -export default StyledPageFiltersListDynamicList; diff --git a/src/components/PageFiltersList/PageFiltersListDynamicList/index.jsx b/src/components/PageFiltersList/PageFiltersListDynamicList/index.jsx deleted file mode 100644 index 773028d5..00000000 --- a/src/components/PageFiltersList/PageFiltersListDynamicList/index.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import { DynamicList } from "../../DynamicList"; - -import PageFiltersListPagination from "./PageFiltersListPagination"; -import StyledPageFiltersListDynamicList from "./StyledPageFiltersListDynamicList"; - -import { withPageFiltersListContext } from "../PageFiltersListContext"; - -export function PageFiltersListDynamicList({ - isFetching, - totalCount, - listRef, - children, - className, -}) { - return ( - - {children} - - - ); -} - -PageFiltersListDynamicList.propTypes = { - children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), - isFetching: PropTypes.bool.isRequired, - totalCount: PropTypes.number.isRequired, - listRef: PropTypes.object, - className: PropTypes.string, -}; - -export default withPageFiltersListContext(PageFiltersListDynamicList); diff --git a/src/components/PageFiltersList/PageFiltersListInner.jsx b/src/components/PageFiltersList/PageFiltersListInner.jsx deleted file mode 100644 index abe55f91..00000000 --- a/src/components/PageFiltersList/PageFiltersListInner.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import styled from "styled-components"; - -const PageFiltersListInner = styled.div` - display: flex; - flex: 100%; - margin-top: -60px; -`; - -export default PageFiltersListInner; diff --git a/src/components/PageFiltersList/PageFiltersListNotice.jsx b/src/components/PageFiltersList/PageFiltersListNotice.jsx deleted file mode 100644 index 7c4af9be..00000000 --- a/src/components/PageFiltersList/PageFiltersListNotice.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import styled from "styled-components"; - -import { Notice } from "../Notice"; - -const PageFiltersListNotice = styled(Notice)` - position: relative; - top: -34px; -`; - -export default PageFiltersListNotice; diff --git a/src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearch.resources.js b/src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearch.resources.js deleted file mode 100644 index bfa2183c..00000000 --- a/src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearch.resources.js +++ /dev/null @@ -1,8 +0,0 @@ -export const resources = { - ru: { - placeholder: "Начните вводить название...", - }, - en: { - placeholder: "Start enter name...", - }, -}; diff --git a/src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearchInput.jsx b/src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearchInput.jsx deleted file mode 100644 index 00877dbd..00000000 --- a/src/components/PageFiltersList/PageFiltersListSearch/PageFiltersListSearchInput.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -import { Search } from "../../Search"; - -const PageFiltersListSearchInput = styled(Search)``; - -export default PageFiltersListSearchInput; diff --git a/src/components/PageFiltersList/PageFiltersListSearch/index.jsx b/src/components/PageFiltersList/PageFiltersListSearch/index.jsx deleted file mode 100644 index 9ef51206..00000000 --- a/src/components/PageFiltersList/PageFiltersListSearch/index.jsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import { useEffect, useRef } from "react"; -import { useTranslation } from "../../../hooks"; -import { withPageFiltersListContext } from "../PageFiltersListContext"; - -import PageFiltersListSearchInput from "./PageFiltersListSearchInput"; - -import { resources } from "./PageFiltersListSearch.resources.js"; -import { isUndefined } from "lodash-es"; - -function PageFiltersListSearch({ - setSearchQuery, - "data-testid": testId, - searchQuery, - placeholder, - className, - iconSize, -}) { - const inputRef = useRef(); - const { t, i18n } = useTranslation("PageFiltersListSearch"); - - useEffect(() => { - if (inputRef.current) { - inputRef.current.focus(); - } - }, []); - - function handleChange({ target: { value } }) { - setSearchQuery(value); - } - - i18n.addResourceBundle("en", "PageFiltersListSearch", resources.en); - i18n.addResourceBundle("ru", "PageFiltersListSearch", resources.ru); - - const textPlaceholder = isUndefined(placeholder) - ? t("placeholder") - : placeholder; - - return ( - - ); -} - -PageFiltersListSearch.propTypes = { - className: PropTypes.string, - setSearchQuery: PropTypes.func.isRequired, - searchQuery: PropTypes.string.isRequired, - iconSize: PropTypes.string, - placeholder: PropTypes.string, - "data-testid": PropTypes.string, -}; - -export default withPageFiltersListContext(PageFiltersListSearch); diff --git a/src/components/PageFiltersList/PageFiltersListTitle.jsx b/src/components/PageFiltersList/PageFiltersListTitle.jsx deleted file mode 100644 index 62355a51..00000000 --- a/src/components/PageFiltersList/PageFiltersListTitle.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from "styled-components"; - -const PageFiltersListTitle = styled.h1` - font-size: 44px; - line-height: normal; - font-weight: 300; - color: #000000; - margin: 0; -`; - -export default PageFiltersListTitle; diff --git a/src/components/PageFiltersList/StyledPageFiltersList.jsx b/src/components/PageFiltersList/StyledPageFiltersList.jsx deleted file mode 100644 index 44210206..00000000 --- a/src/components/PageFiltersList/StyledPageFiltersList.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from "styled-components"; - -const StyledPageFiltersList = styled.div` - flex: 100%; - width: 100%; - display: flex; - align-items: center; - justify-content: center; -`; - -export default StyledPageFiltersList; diff --git a/src/components/PageFiltersList/StyledSquareDark.jsx b/src/components/PageFiltersList/StyledSquareDark.jsx deleted file mode 100644 index 48d5f1bd..00000000 --- a/src/components/PageFiltersList/StyledSquareDark.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import styled from "styled-components"; - -const StyledSquareDark = styled.div` - display: inline-block; - background-color: #f1f1f1; - border-radius: 5px; - width: 40px; - height: 40px; - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.13); - line-height: 40px; - text-align: center; - font-size: 16px; - color: #3b4b5a; - position: relative; - cursor: pointer; - opacity: 0.9; - - color: #fff; - background-color: #3b4b5a; - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); - - position: relative; - top: -2px; - margin: 0 8px; -`; - -export default StyledSquareDark; diff --git a/src/components/PageFiltersList/index.jsx b/src/components/PageFiltersList/index.jsx deleted file mode 100644 index 4c611dd5..00000000 --- a/src/components/PageFiltersList/index.jsx +++ /dev/null @@ -1,197 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import PageFiltersListTitle from "./PageFiltersListTitle"; -import StyledPageFiltersList from "./StyledPageFiltersList"; -import PageFiltersListInner from "./PageFiltersListInner"; - -import PageFiltersListContentTop from "./PageFiltersListContentTop"; -import PageFiltersListActions from "./PageFiltersListActions"; -import PageFiltersListSearch from "./PageFiltersListSearch"; - -import PageFiltersListButtons from "./PageFiltersListButtons"; -import EmptyListNotice from "./EmptyListNotice"; - -import List from "./List"; -import Content from "./Content"; - -import PageFiltersListDynamicList from "./PageFiltersListDynamicList"; - -import PageFiltersListContext from "./PageFiltersListContext"; - -import { isEqual, debounce, noop } from "lodash-es"; - -import { withListDirectoryList } from "./ListDirectoryContext"; - -class PageFiltersListComponent extends React.Component { - static propTypes = { - list: PropTypes.func, - listCount: PropTypes.number, - title: PropTypes.string, - onCreate: PropTypes.func, - buttons: PropTypes.func, - fetchList: PropTypes.func.isRequired, - isListFetching: PropTypes.bool.isRequired, - actions: PropTypes.node, - searchQuery: PropTypes.string, - placeholder: PropTypes.string, - onSearch: PropTypes.func, - setSearchQuery: PropTypes.func.isRequired, - }; - - static defaultProps = { - onSearch: noop, - }; - - listRef = React.createRef(); - - setSearchQuery = searchQuery => { - this.setState({ searchQuery, isSearching: true }, () => { - this.props.onSearch(this.state.searchQuery); - }); - }; - - setFilters = filters => { - this.setState({ filters }); - }; - - setPagination = newPagination => { - this.setState(({ pagination }) => ({ - pagination: { ...pagination, ...newPagination }, - })); - }; - - resetPagination = hasToRefetch => { - if (this.state.pagination.offset === 0 && hasToRefetch) { - this.props.fetchList(this.state.fetchParams); - } - - this.setState(({ pagination }) => ({ - pagination: { - ...pagination, - offset: 0, - }, - })); - }; - - fetchList = (reset = false) => { - const { searchQuery, pagination } = this.state; - - const newFetchParams = { - q: searchQuery, - limit: pagination.limit, - offset: pagination.offset, - meta: { - clearList: true, - }, - }; - - if (reset || !isEqual(newFetchParams, this.state.fetchParams)) { - this.setState({ fetchParams: newFetchParams }, () => { - this.props.fetchList(this.state.fetchParams); - }); - } - }; - - searchItems = debounce(this.fetchList, 500); - - componentDidMount() { - this.fetchList(); - } - - handleClick = e => { - this.props.onCreate(e); - }; - - componentDidUpdate(prevProps, prevState) { - if (prevState.searchQuery !== this.state.searchQuery) { - this.searchItems(); - - setTimeout(() => this.resetPagination(false), 500); - } - - if (prevState.isSearching && !this.state.isSearching) { - this.props.setSearchQuery(this.state.searchQuery); - } - - if (prevProps.isListFetching && !this.props.isListFetching) { - if (this.listRef.current) { - this.listRef.current.scrollTop = 0; - } - - this.setState({ isSearching: false }); - } - - if ( - prevState.searchQuery === this.state.searchQuery && - prevState.pagination.offset !== this.state.pagination.offset - ) { - this.fetchList(); - } - } - - state = { - searchQuery: this.props.searchQuery, - isSearching: false, - filters: {}, - pagination: { - limit: 10, - offset: 0, - }, - fetchParams: {}, - setSearchQuery: this.setSearchQuery, - setFilters: this.setFilters, - setPagination: this.setPagination, - resetPagination: this.resetPagination, - fetchList: this.fetchList, - }; - - render() { - const { - list, - buttons, - title, - listCount, - isListFetching, - actions, - placeholder, - } = this.props; - const { searchQuery, isSearching } = this.state; - - const hasNoItems = listCount === 0 && !isSearching && searchQuery === ""; - - return ( - - {!hasNoItems && ( - - - {list({ listRef: this.listRef })} - - - {title} - - {buttons({ fetchList: this.fetchList })} - - - - {actions && ( - {actions} - )} - - - - )} - {hasNoItems && !isListFetching && ( - - )} - - ); - } -} - -const PageFiltersList = withListDirectoryList(PageFiltersListComponent); - -export { PageFiltersList, PageFiltersListDynamicList, PageFiltersListButtons }; diff --git a/src/components/index.js b/src/components/index.js index 6761ea2a..e285675a 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -27,7 +27,6 @@ export * from "./Login"; export * from "./Notice"; export * from "./notification"; export * from "./PageCard"; -export * from "./PageFiltersList"; export * from "./PageLoader"; export * from "./PageWrapper"; export * from "./PersonsGroup"; From 14d8e27b524073594f74e62e7d81cb50bc29eaa7 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 3 Apr 2020 16:24:58 +0300 Subject: [PATCH 053/175] ListLayout: components redesign --- .../ListLayout/ListLayout.stories.js | 30 ++++++++++---- .../ListLayoutActions.resources.js} | 0 .../ListLayoutActionsAdditional.jsx} | 4 +- .../ListLayoutActionsButtons.jsx} | 4 +- .../ListLayoutActionsText.jsx} | 2 +- .../StyledListLayoutActions.jsx} | 2 +- .../index.jsx | 37 ++++++++--------- ...emText.jsx => ListLayoutListItemTitle.jsx} | 14 ++++--- .../StyledListLayoutListItem.jsx | 10 +++-- .../ListLayoutListItem/index.jsx | 18 +++++--- .../ListLayoutList/ListLayoutListWrapper.jsx | 2 +- .../ListLayout/ListLayoutList/index.jsx | 41 +++++++++---------- src/components/ListLayout/ListLayoutTop.jsx | 7 ++++ src/components/ListLayout/index.jsx | 19 ++++++--- 14 files changed, 110 insertions(+), 80 deletions(-) rename src/components/ListLayout/{ListLayoutList/ListLayoutListActions/ListLayoutListActions.resources.js => ListLayoutActions/ListLayoutActions.resources.js} (100%) rename src/components/ListLayout/{ListLayoutList/ListLayoutListActions/ListLayoutListActionsAdditional.jsx => ListLayoutActions/ListLayoutActionsAdditional.jsx} (54%) rename src/components/ListLayout/{ListLayoutList/ListLayoutListActions/ListLayoutListActionsButtons.jsx => ListLayoutActions/ListLayoutActionsButtons.jsx} (63%) rename src/components/ListLayout/{ListLayoutList/ListLayoutListActions/ListLayoutListActionsText.jsx => ListLayoutActions/ListLayoutActionsText.jsx} (52%) rename src/components/ListLayout/{ListLayoutList/ListLayoutListActions/StyledListLayoutListActions.jsx => ListLayoutActions/StyledListLayoutActions.jsx} (66%) rename src/components/ListLayout/{ListLayoutList/ListLayoutListActions => ListLayoutActions}/index.jsx (50%) rename src/components/ListLayout/ListLayoutList/ListLayoutListItem/{ListLayoutListItemText.jsx => ListLayoutListItemTitle.jsx} (62%) create mode 100644 src/components/ListLayout/ListLayoutTop.jsx diff --git a/src/components/ListLayout/ListLayout.stories.js b/src/components/ListLayout/ListLayout.stories.js index 435e74c2..1dd50dc6 100644 --- a/src/components/ListLayout/ListLayout.stories.js +++ b/src/components/ListLayout/ListLayout.stories.js @@ -177,9 +177,13 @@ storiesOf("List Layout", module) + } isLoading={isLoading} actions={ + } columns={2} actions={ + } columns={2} renderItem={person => ( - {/* span нужен для того, чтобы отображение не прыгало + + {/* ListLayoutActionsText нужен для того, чтобы отображение не прыгало при исчезновении children */} - {children} - + {children} + - + {additional && ( - - {additional} - + {additional} )} - + ); } -ListLayoutListActions.propTypes = { +ListLayoutActions.propTypes = { isSelectAvailable: PropTypes.bool.isRequired, isDeselectAvailable: PropTypes.bool.isRequired, onSelect: PropTypes.func.isRequired, diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemText.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx similarity index 62% rename from src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemText.jsx rename to src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx index 84192c13..be31ccf8 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemText.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx @@ -1,16 +1,18 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; - import { NavLink } from "react-router-dom"; -export const ListLayoutListItemText = styled.p.attrs(({ to }) => ({ +import { colors } from "../../../../themes/colors"; + +const ListLayoutListItemTitle = styled.p.attrs(({ to }) => ({ as: to ? NavLink : "p", }))` + margin: 0; font-size: 16px; + line-height: 26px; font-weight: 600; - color: ${colors.black}; - margin: 0; + color: ${colors.darkBlack}; text-decoration: none; - width: 100%; `; + +export { ListLayoutListItemTitle }; diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx index 235a3df5..0d5b9c68 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx @@ -3,10 +3,12 @@ import styled from "styled-components"; import { colors } from "../../../../themes/colors"; export const StyledListLayoutListItem = styled.li` - height: 50px; - padding: 10px 0; - border-bottom: 1px solid ${colors.grayMedium}; display: flex; align-items: center; - box-sizing: border-box; + position: relative; + padding: 17px 0; + + &:not(:last-child) { + border-bottom: 1px solid ${colors.grayMedium}; + } `; diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx index 18c9f950..29b894c0 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx @@ -3,21 +3,27 @@ import PropTypes from "prop-types"; import { StyledListLayoutListItem } from "./StyledListLayoutListItem"; import { ListLayoutListItemCheckbox } from "./ListLayoutListItemCheckbox"; -import { ListLayoutListItemText } from "./ListLayoutListItemText"; +import { ListLayoutListItemTitle } from "./ListLayoutListItemTitle"; import { ListLayoutListItemBadges } from "./ListLayoutListItemBadges"; function ListLayoutListItem({ selectable, item, onChange, + onClick, selected, children, badges, to, - ...restProps + "data-testid": testId, + "data-id": id, }) { return ( - + {selectable && ( )} - {children} + {children} {badges && {badges}} ); @@ -35,13 +41,13 @@ ListLayoutListItem.propTypes = { selectable: PropTypes.bool, item: PropTypes.string, onChange: PropTypes.func, + onClick: PropTypes.func, selected: PropTypes.bool, children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), badges: PropTypes.element, to: PropTypes.string, "data-testid": PropTypes.string, + "data-id": PropTypes.string, }; -ListLayoutListItem.defaultProps = { badges: [] }; - export { ListLayoutListItem, StyledListLayoutListItem }; diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListWrapper.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListWrapper.jsx index 305148c2..94a932ec 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListWrapper.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListWrapper.jsx @@ -6,6 +6,6 @@ export const ListLayoutListWrapper = styled.div` min-height: 220px; &:not(:only-child) { - margin-right: 30px; + margin-right: 28px; } `; diff --git a/src/components/ListLayout/ListLayoutList/index.jsx b/src/components/ListLayout/ListLayoutList/index.jsx index d55d4929..abadb4c3 100644 --- a/src/components/ListLayout/ListLayoutList/index.jsx +++ b/src/components/ListLayout/ListLayoutList/index.jsx @@ -6,9 +6,7 @@ import { StyledListLayoutList } from "./StyledListLayoutList"; import { ListLayoutNotice } from "../ListLayoutNotice"; import { ListLayoutListItem } from "./ListLayoutListItem"; import { ListLayoutListPagination } from "./ListLayoutListPagination"; -import { ListLayoutListActions } from "./ListLayoutListActions"; import { ListLayoutListSpinner } from "./ListLayoutListSpinner"; - import { Ban } from "../../../assets/icons"; function ListLayoutList({ @@ -17,18 +15,19 @@ function ListLayoutList({ isLoading, renderItem, noItemsText, - totalCount, - actions, pagination, - setPagination, columns, className, - ...restProps + "data-testid": testId, + hasNext, }) { + const isListEmpty = hasNext === false && items.length === 0; + const hasPagePagination = Boolean(pagination); + return ( - - {!isLoading ? ( - totalCount === 0 ? ( + + {!isLoading || !hasPagePagination ? ( + isListEmpty ? ( } data-testid="empty-list-notice" @@ -37,7 +36,6 @@ function ListLayoutList({ ) : ( - {actions && actions} {items.map(renderItem)} - {pagination && ( - - )} + + {pagination} ) ) : ( @@ -66,13 +59,12 @@ ListLayoutList.propTypes = { items: PropTypes.array.isRequired, renderItem: PropTypes.func, noItemsText: PropTypes.string, - totalCount: PropTypes.number, - actions: PropTypes.element, + hasNext: PropTypes.bool.isRequired, pagination: PropTypes.object.isRequired, - setPagination: PropTypes.func.isRequired, columns: PropTypes.oneOf([1, 2]), className: PropTypes.string, isLoading: PropTypes.bool, + "data-testid": PropTypes.string, }; ListLayoutList.defaultProps = { @@ -85,6 +77,11 @@ ListLayoutList.defaultProps = { }; ListLayoutList.Item = ListLayoutListItem; -ListLayoutList.Actions = ListLayoutListActions; +ListLayoutList.Pagination = ListLayoutListPagination; -export { ListLayoutList, StyledListLayoutList, ListLayoutListItem }; +export { + ListLayoutList, + StyledListLayoutList, + ListLayoutListItem, + ListLayoutListPagination, +}; diff --git a/src/components/ListLayout/ListLayoutTop.jsx b/src/components/ListLayout/ListLayoutTop.jsx new file mode 100644 index 00000000..469154fe --- /dev/null +++ b/src/components/ListLayout/ListLayoutTop.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const ListLayoutTop = styled.div` + margin-bottom: 24px; +`; + +export { ListLayoutTop }; diff --git a/src/components/ListLayout/index.jsx b/src/components/ListLayout/index.jsx index 39a8d58c..35c43ee3 100644 --- a/src/components/ListLayout/index.jsx +++ b/src/components/ListLayout/index.jsx @@ -7,20 +7,26 @@ import { ListLayoutTitle } from "./ListLayoutTitle"; import { ListLayoutButtons } from "./ListLayoutButtons"; import { ListLayoutSearch } from "./ListLayoutSearch"; import { ListLayoutContent } from "./ListLayoutContent"; +import { ListLayoutTop } from "./ListLayoutTop"; export function ListLayout({ title, buttons, search, actions, content }) { const hasHeader = title || buttons; + const hasTop = hasHeader || search; return ( - {hasHeader && ( - - {title && {title}} - {buttons && {buttons}} - + {hasTop && ( + + {hasHeader && ( + + {title && {title}} + {buttons && {buttons}} + + )} + {search && {search}} + )} - {search && {search}} {actions && actions} {content && {content}} @@ -38,3 +44,4 @@ ListLayout.propTypes = { export * from "./ListLayoutList"; export * from "./ListLayoutNotice"; export * from "./ListLayoutDetailed"; +export * from "./ListLayoutActions"; From d64920d3d196bc613b5487e53c3e8d6e48ddfe87 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 3 Apr 2020 16:26:57 +0300 Subject: [PATCH 054/175] InfinitePageList: component was added --- src/components/InfinitePageList/index.jsx | 51 +++++++++++++++++++++++ src/components/index.js | 1 + 2 files changed, 52 insertions(+) create mode 100644 src/components/InfinitePageList/index.jsx diff --git a/src/components/InfinitePageList/index.jsx b/src/components/InfinitePageList/index.jsx new file mode 100644 index 00000000..c5ea03dc --- /dev/null +++ b/src/components/InfinitePageList/index.jsx @@ -0,0 +1,51 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { useRef, useState, useEffect } from "react"; + +import { InfiniteScroll } from "../InfiniteScroll"; + +function InfinitePageList({ + children, + hasNext, + lockScroll, + changeOffset, + offset, + limit, + isFetching, +}) { + const [isListEnds, setIsListEnds] = useState(!hasNext); + useEffect(() => { + setIsListEnds(!hasNext); + }, [hasNext]); + + const pageRef = useRef(window); + + function fetchNext() { + if (!isListEnds && !lockScroll) { + changeOffset(offset + limit); + } + } + + return ( + + {children} + + ); +} + +InfinitePageList.propTypes = { + children: PropTypes.oneOfType(PropTypes.node, PropTypes.array).isRequired, + hasNext: PropTypes.bool.isRequired, + lockScroll: PropTypes.bool.isRequired, + changeOffset: PropTypes.func.isRequired, + offset: PropTypes.number.isRequired, + limit: PropTypes.number.isRequired, + isFetching: PropTypes.bool.isRequired, +}; + +export { InfinitePageList }; diff --git a/src/components/index.js b/src/components/index.js index e285675a..01dca50e 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -19,6 +19,7 @@ export * from "./IdFormat"; export * from "./InfiniteScroll"; export * from "./InfiniteDropdown"; export * from "./InfiniteMultiSelect"; +export * from "./InfinitePageList"; export * from "./ImageCentered"; export * from "./LazyImage"; export * from "./ListItemPopup"; From 842d8d810a6da5be5f8160ab344697533a83a45d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 3 Apr 2020 16:53:59 +0300 Subject: [PATCH 055/175] ListLayoutItemTitle: as link now has width 100% --- .../ListLayoutListItem/ListLayoutListItemTitle.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx index be31ccf8..781c99a9 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx @@ -13,6 +13,8 @@ const ListLayoutListItemTitle = styled.p.attrs(({ to }) => ({ font-weight: 600; color: ${colors.darkBlack}; text-decoration: none; + display: block; + width: 100%; `; export { ListLayoutListItemTitle }; From 2dacbc98bac3d5ff8232d4d0a08abed04be3105a Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 3 Apr 2020 19:04:02 +0300 Subject: [PATCH 056/175] ListLayoutListItemBadges: now renders badges in row --- .../ListLayoutListItem/ListLayoutListItemBadges.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemBadges.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemBadges.jsx index ad09200f..b62d80b1 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemBadges.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemBadges.jsx @@ -1,5 +1,6 @@ import styled from "styled-components"; export const ListLayoutListItemBadges = styled.span` + display: flex; margin-left: auto; `; From efd6cec52a1ad076bbb2dd7b9140eaf13316afe1 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 10:59:27 +0300 Subject: [PATCH 057/175] bundle build setup was removed --- .babelrc.js | 39 +- README.md | 2 + package-lock.json | 4152 ++------------------------------------------- package.json | 30 +- webpack.config.js | 128 -- 5 files changed, 177 insertions(+), 4174 deletions(-) delete mode 100644 webpack.config.js diff --git a/.babelrc.js b/.babelrc.js index c2d2fe26..57d75560 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -1,37 +1,22 @@ const { NODE_ENV } = process.env; -const isDev = String(NODE_ENV) === "development"; -const isProd = String(NODE_ENV) === "production"; const isTest = String(NODE_ENV) === "test"; module.exports = { - presets: ["@babel/preset-react"].concat( - !isDev - ? [ - [ - "@babel/preset-env", - { - modules: isTest ? "commonjs" : false, - targets: { - browsers: [ - "last 2 versions", - "safari >= 7", - "ie > 10", - "not op_mini all", - ], - }, - }, - ], - ] - : [] - ), + presets: [ + "@babel/preset-react", + [ + "@babel/preset-env", + { + modules: isTest ? "commonjs" : false, + targets: { + node: "current", + }, + }, + ], + ], plugins: [ - "@babel/plugin-proposal-object-rest-spread", ["@babel/plugin-proposal-class-properties", { loose: false }], - "babel-plugin-syntax-dynamic-import", - "@babel/plugin-transform-runtime", - isDev ? "babel-plugin-styled-components" : false, - isProd ? "transform-react-remove-prop-types" : false, isTest ? "babel-plugin-dynamic-import-node" : false, ].filter(Boolean), }; diff --git a/README.md b/README.md index 20e41d86..d2f1a8d3 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ An Identixone UI design language and React implementation. +> **Note**: UI kit is build on ES6 modules, so your app have to support this as well + ## 📦 Install ```bash diff --git a/package-lock.json b/package-lock.json index 33b8a4cf..9dfd473b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -650,17 +650,6 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-proposal-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", - "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-decorators": "^7.8.3" - } - }, "@babel/plugin-proposal-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", @@ -759,15 +748,6 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz", - "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -777,15 +757,6 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, "@babel/plugin-syntax-flow": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", @@ -1253,18 +1224,6 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-transform-runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", - "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "resolve": "^1.8.1", - "semver": "^5.5.1" - } - }, "@babel/plugin-transform-shorthand-properties": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", @@ -1322,16 +1281,6 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/polyfill": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.8.7.tgz", - "integrity": "sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, "@babel/preset-env": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", @@ -2229,40 +2178,12 @@ "glob-to-regexp": "^0.3.0" } }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - } - } - }, "@nodelib/fs.stat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, "@reach/router": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz", @@ -2284,13 +2205,6 @@ "any-observable": "^0.3.0" } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true, - "optional": true - }, "@sinonjs/commons": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz", @@ -3877,23 +3791,6 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/history": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.5.tgz", @@ -3952,12 +3849,6 @@ "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.5.tgz", "integrity": "sha512-cpmwBRcHJmmZx0OGU7aPVwGWGbs4iKwVYchk9iuMtxNCA2zorwdaTz4GkLgs2WGxiRZRFKnV1k6tRUHX7tBMxg==" }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, "@types/node": { "version": "13.1.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.7.tgz", @@ -4106,20 +3997,6 @@ "source-map": "^0.6.1" } }, - "@types/webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-DNMQOfEvwzWRRyp6Wy9QVCgJ3gkelZsuBE2KUD318dg95s9DKGiT5CszmmV58hq8jk89I9NClre48AEy1MWAJA==", - "dev": true, - "requires": { - "@types/anymatch": "*", - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "source-map": "^0.6.0" - } - }, "@types/webpack-env": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.1.tgz", @@ -4461,12 +4338,6 @@ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, "ansi-align": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", @@ -4615,32 +4486,6 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", - "dev": true, - "optional": true - }, - "archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", - "dev": true, - "optional": true, - "requires": { - "file-type": "^4.2.0" - }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true, - "optional": true - } - } - }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", @@ -4694,13 +4539,6 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true, - "optional": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -4849,27 +4687,12 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -5203,109 +5026,6 @@ } } }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } - } - }, "babel-plugin-add-react-displayname": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", @@ -5503,12 +5223,6 @@ "lodash": "^4.17.11" } }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", @@ -5548,12 +5262,6 @@ "esutils": "^2.0.2" } }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true - }, "babel-plugin-transform-regexp-constructors": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", @@ -5752,419 +5460,72 @@ } } }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, - "bin-build": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", - "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, "optional": true, "requires": { - "decompress": "^4.0.0", - "download": "^6.2.2", - "execa": "^0.7.0", - "p-map-series": "^1.0.0", - "tempfile": "^2.0.0" + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" }, "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "ms": "2.0.0" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "optional": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "optional": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "optional": true - } - } - }, - "bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "optional": true, - "requires": { - "execa": "^0.7.0", - "executable": "^4.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "optional": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "optional": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "optional": true - } - } - }, - "bin-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", - "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", - "dev": true, - "optional": true, - "requires": { - "execa": "^1.0.0", - "find-versions": "^3.0.0" - } - }, - "bin-version-check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", - "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", - "dev": true, - "optional": true, - "requires": { - "bin-version": "^3.0.0", - "semver": "^5.6.0", - "semver-truncate": "^1.1.2" - } - }, - "bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", - "dev": true, - "optional": true, - "requires": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" - }, - "dependencies": { - "download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", - "dev": true, - "optional": true, - "requires": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } - } - }, - "file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", - "dev": true, - "optional": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "dev": true, - "optional": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "optional": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } - } - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true, - "optional": true - }, - "p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", - "dev": true, - "optional": true, - "requires": { - "p-timeout": "^2.0.1" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "optional": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "optional": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "optional": true, - "requires": { - "prepend-http": "^2.0.0" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", - "dev": true, - "optional": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "qs": { "version": "6.7.0", @@ -6466,38 +5827,6 @@ "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "optional": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true, - "optional": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "optional": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true, - "optional": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -6562,92 +5891,19 @@ "unset-value": "^1.0.0" } }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, - "optional": true, "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true, - "optional": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "optional": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "optional": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "optional": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "optional": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" + "callsites": "^2.0.0" }, "dependencies": { "callsites": { @@ -6689,26 +5945,6 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true, - "optional": true - } - } - }, "camelize": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", @@ -6721,18 +5957,6 @@ "integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=", "dev": true }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, "caniuse-lite": { "version": "1.0.30001021", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001021.tgz", @@ -6760,19 +5984,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "dev": true, - "optional": true, - "requires": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -6808,12 +6019,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -6908,16 +6113,6 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "requires": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - } - }, "cli-boxes": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", @@ -7097,16 +6292,6 @@ } } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "optional": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -7146,16 +6331,6 @@ "object-visit": "^1.0.0" } }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -7171,16 +6346,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -7263,17 +6428,6 @@ "typedarray": "^0.0.6" } }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "optional": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -7286,13 +6440,6 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true, - "optional": true - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -7532,22 +6679,6 @@ "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", "dev": true }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, "css-in-js-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", @@ -7633,12 +6764,6 @@ "source-map": "^0.6.1" } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true - }, "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", @@ -7657,123 +6782,6 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, "csso": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", @@ -7829,28 +6837,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.8.tgz", "integrity": "sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA==" }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "optional": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cwebp-bin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-5.1.0.tgz", - "integrity": "sha512-BsPKStaNr98zfxwejWWLIGELbPERULJoD2v5ijvpeutSAGsegX7gmABgnkRK7MUucCPROXXfaPqkLAwI509JzA==", - "dev": true, - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "logalot": "^2.1.0" - } - }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -7908,211 +6894,65 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "decompress": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", - "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", - "dev": true, - "optional": true, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "requires": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "optional": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } - } - } + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" } }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "optional": true, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deep-object-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.0.tgz", + "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", + "dev": true + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "mimic-response": "^1.0.0" + "object-keys": "^1.0.12" } }, - "decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "optional": true, "requires": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true, - "optional": true - } - } - }, - "decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "dev": true, - "optional": true, - "requires": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "dependencies": { - "file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", - "dev": true, - "optional": true - } - } - }, - "decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "dev": true, - "optional": true, - "requires": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" - }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true, - "optional": true - } - } - }, - "decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", - "dev": true, - "optional": true, - "requires": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true, - "optional": true - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "optional": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deep-object-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.0.tgz", - "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", - "dev": true - }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8140,56 +6980,6 @@ } } }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -8231,12 +7021,6 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -8433,15 +7217,6 @@ "tslib": "^1.10.0" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, "dotenv": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", @@ -8472,59 +7247,6 @@ "dotenv-defaults": "^1.0.2" } }, - "download": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", - "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", - "dev": true, - "optional": true, - "requires": { - "caw": "^2.0.0", - "content-disposition": "^0.5.2", - "decompress": "^4.0.0", - "ext-name": "^5.0.0", - "file-type": "5.2.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^7.0.0", - "make-dir": "^1.0.0", - "p-event": "^1.0.0", - "pify": "^3.0.0" - }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true, - "optional": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "optional": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } - } - }, "downshift": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.0.5.tgz", @@ -8542,13 +7264,6 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true, - "optional": true - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -9379,82 +8094,6 @@ "safe-buffer": "^5.1.1" } }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "optional": true, - "requires": { - "execa": "^0.7.0", - "p-finally": "^1.0.0", - "pify": "^3.0.0", - "rimraf": "^2.5.4", - "tempfile": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "optional": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "optional": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "optional": true - } - } - }, "exec-sh": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", @@ -9476,16 +8115,6 @@ "strip-eof": "^1.0.0" } }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "optional": true, - "requires": { - "pify": "^2.2.0" - } - }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -9542,15 +8171,6 @@ } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "expect": { "version": "25.2.4", "resolved": "https://registry.npmjs.org/expect/-/expect-25.2.4.tgz", @@ -9653,27 +8273,6 @@ } } }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "optional": true, - "requires": { - "mime-db": "^1.28.0" - } - }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "optional": true, - "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -9797,30 +8396,6 @@ } } }, - "extract-text-webpack-plugin": { - "version": "4.0.0-beta.0", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz", - "integrity": "sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==", - "dev": true, - "requires": { - "async": "^2.4.1", - "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -9904,15 +8479,6 @@ "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz", "integrity": "sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg=" }, - "fastq": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", - "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", - "dev": true, - "requires": { - "reusify": "^1.0.0" - } - }, "fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -9940,16 +8506,6 @@ "bser": "2.1.1" } }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "optional": true, - "requires": { - "pend": "~1.2.0" - } - }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -9974,63 +8530,6 @@ "flat-cache": "^2.0.1" } }, - "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } - } - }, "file-selector": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.12.tgz", @@ -10065,12 +8564,6 @@ } } }, - "file-type": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", - "dev": true - }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -10078,25 +8571,6 @@ "dev": true, "optional": true }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true, - "optional": true - }, - "filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "dev": true, - "optional": true, - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - } - }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -10235,17 +8709,6 @@ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "optional": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", @@ -10255,41 +8718,6 @@ "semver-regex": "^2.0.0" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -10475,13 +8903,6 @@ "readable-stream": "^2.0.0" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "optional": true - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -11150,16 +9571,6 @@ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, - "get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "dev": true, - "optional": true, - "requires": { - "npm-conf": "^1.1.0" - } - }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -11190,19 +9601,6 @@ "assert-plus": "^1.0.0" } }, - "gifsicle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-4.0.1.tgz", - "integrity": "sha512-A/kiCLfDdV+ERV/UB+2O41mifd+RxH8jlRG8DMxZO84Bma/Fw0htqZ+hY2iaalLRNyUu7tYZQslqUBJxBggxbg==", - "dev": true, - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "execa": "^1.0.0", - "logalot": "^2.0.0" - } - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -11358,51 +9756,12 @@ "delegate": "^3.1.2" } }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "optional": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - } - } - }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true, - "optional": true - }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -11478,28 +9837,11 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true, - "optional": true - }, "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "optional": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -11588,12 +9930,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, "highlight.js": { "version": "9.13.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", @@ -11634,45 +9970,12 @@ "react-is": "^16.7.0" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, "hosted-git-info": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", "dev": true }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -11785,13 +10088,6 @@ } } }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true, - "optional": true - }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -12019,245 +10315,43 @@ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "image-webpack-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/image-webpack-loader/-/image-webpack-loader-6.0.0.tgz", - "integrity": "sha512-H5qZ+DH88A4mW9CPJpa7VH8B2dxLbzqiMH+BQYtMw8v2jaFwZPQOS/NfkSaJMz76dsi/uw+0LY4uHR1iK6hq8g==", + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", "dev": true, "requires": { - "imagemin": "^7.0.0", - "imagemin-gifsicle": "^6.0.1", - "imagemin-mozjpeg": "^8.0.0", - "imagemin-optipng": "^7.0.0", - "imagemin-pngquant": "^8.0.0", - "imagemin-svgo": "^7.0.0", - "imagemin-webp": "^5.1.0", - "loader-utils": "^1.2.3", - "object-assign": "^4.1.1" + "import-from": "^2.1.0" } }, - "imagemin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", - "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "file-type": "^12.0.0", - "globby": "^10.0.0", - "graceful-fs": "^4.2.2", - "junk": "^3.1.0", - "make-dir": "^3.0.0", - "p-pipe": "^3.0.0", - "replace-ext": "^1.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "fast-glob": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", - "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2" - } - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", - "dev": true - }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true } } }, - "imagemin-gifsicle": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-6.0.1.tgz", - "integrity": "sha512-kuu47c6iKDQ6R9J10xCwL0lgs0+sMz3LRHqRcJ2CRBWdcNmo3T5hUaM8hSZfksptZXJLGKk8heSAvwtSdB1Fng==", - "dev": true, - "optional": true, - "requires": { - "exec-buffer": "^3.0.0", - "gifsicle": "^4.0.0", - "is-gif": "^3.0.0" - } - }, - "imagemin-mozjpeg": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.0.tgz", - "integrity": "sha512-+EciPiIjCb8JWjQNr1q8sYWYf7GDCNDxPYnkD11TNIjjWNzaV+oTg4DpOPQjl5ZX/KRCPMEgS79zLYAQzLitIA==", - "dev": true, - "optional": true, - "requires": { - "execa": "^1.0.0", - "is-jpg": "^2.0.0", - "mozjpeg": "^6.0.0" - } - }, - "imagemin-optipng": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-7.1.0.tgz", - "integrity": "sha512-JNORTZ6j6untH7e5gF4aWdhDCxe3ODsSLKs/f7Grewy3ebZpl1ZsU+VUTPY4rzeHgaFA8GSWOoA8V2M3OixWZQ==", - "dev": true, - "optional": true, - "requires": { - "exec-buffer": "^3.0.0", - "is-png": "^2.0.0", - "optipng-bin": "^6.0.0" - } - }, - "imagemin-pngquant": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-8.0.0.tgz", - "integrity": "sha512-PVq0diOxO+Zyq/zlMCz2Pfu6mVLHgiT1GpW702OwVlnej+NhS6ZQegYi3OFEDW8d7GxouyR5e8R+t53SMciOeg==", - "dev": true, - "optional": true, - "requires": { - "execa": "^1.0.0", - "is-png": "^2.0.0", - "is-stream": "^2.0.0", - "ow": "^0.13.2", - "pngquant-bin": "^5.0.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true, - "optional": true - } - } - }, - "imagemin-svgo": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-7.0.0.tgz", - "integrity": "sha512-+iGJFaPIMx8TjFW6zN+EkOhlqcemdL7F3N3Y0wODvV2kCUBuUtZK7DRZc1+Zfu4U2W/lTMUyx2G8YMOrZntIWg==", - "dev": true, - "optional": true, - "requires": { - "is-svg": "^3.0.0", - "svgo": "^1.0.5" - } - }, - "imagemin-webp": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/imagemin-webp/-/imagemin-webp-5.1.0.tgz", - "integrity": "sha512-BsPTpobgbDPFBBsI3UflnU/cpIVa15qInEDBcYBw16qI/6XiB4vDF/dGp9l4aM3pfFDDYqR0mANMcKpBD7wbCw==", - "dev": true, - "optional": true, - "requires": { - "cwebp-bin": "^5.0.0", - "exec-buffer": "^3.0.0", - "is-cwebp-readable": "^2.0.1" - } - }, - "immer": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", - "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "dev": true, "requires": { "resolve-from": "^3.0.0" @@ -12271,23 +10365,6 @@ } } }, - "import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "dev": true, - "optional": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -12440,17 +10517,6 @@ "integrity": "sha512-e0/LknJ8wpMMhTiWcjivB+ESwIuvHnBSlBbmP/pSb8CQJldoj1p2qv7xGZ/+BtbTziYRFSz8OsvdbiX45LtYQA==", "dev": true }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "optional": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -12478,12 +10544,6 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -12566,39 +10626,6 @@ "ci-info": "^2.0.0" } }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-cwebp-readable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-cwebp-readable/-/is-cwebp-readable-2.0.1.tgz", - "integrity": "sha1-r7k7DAq9CiUQEBauM66ort+SbSY=", - "dev": true, - "optional": true, - "requires": { - "file-type": "^4.3.0" - }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true, - "optional": true - } - } - }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -12689,16 +10716,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -12720,25 +10737,6 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, - "is-gif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", - "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", - "dev": true, - "optional": true, - "requires": { - "file-type": "^10.4.0" - }, - "dependencies": { - "file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", - "dev": true, - "optional": true - } - } - }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -12754,26 +10752,12 @@ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, - "is-jpg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", - "dev": true, - "optional": true - }, "is-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, - "is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", - "dev": true, - "optional": true - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -12821,30 +10805,6 @@ "symbol-observable": "^1.1.0" } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -12868,13 +10828,6 @@ } } }, - "is-png": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", - "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", - "dev": true, - "optional": true - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -12895,19 +10848,6 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true, - "optional": true - }, "is-root": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", @@ -12932,15 +10872,6 @@ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -12955,13 +10886,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true, - "optional": true - }, "is-window": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", @@ -13096,17 +11020,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "optional": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, "iterate-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", @@ -14621,13 +12534,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true, - "optional": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -14717,22 +12623,6 @@ "resolved": "https://registry.npmjs.org/jump.js/-/jump.js-1.0.2.tgz", "integrity": "sha1-4GQbR/QKOPITnCX9oFAL8o5DAVo=" }, - "junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "optional": true, - "requires": { - "json-buffer": "3.0.0" - } - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -14754,16 +12644,6 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -15158,32 +13038,6 @@ } } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "optional": true, - "requires": { - "error-ex": "^1.2.0" - } - } - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -15264,12 +13118,6 @@ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", "dev": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -15373,30 +13221,6 @@ } } }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "optional": true, - "requires": { - "figures": "^1.3.5", - "squeak": "^1.0.0" - }, - "dependencies": { - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "optional": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - } - } - }, "lolex": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", @@ -15406,13 +13230,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true, - "optional": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -15421,17 +13238,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "optional": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lower-case": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", @@ -15441,13 +13247,6 @@ "tslib": "^1.10.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "optional": true - }, "lowlight": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.11.0.tgz", @@ -15458,42 +13257,10 @@ "highlight.js": "~9.13.0" } }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "optional": true, - "requires": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true, - "optional": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "optional": true, - "requires": { - "repeating": "^2.0.0" - } - } - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { "yallist": "^3.0.2" @@ -15526,28 +13293,12 @@ "tmpl": "1.0.x" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "optional": true - }, "map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", @@ -15610,25 +13361,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - } - } - }, "memoize-one": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", @@ -15654,65 +13386,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "optional": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true, - "optional": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "optional": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "optional": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "optional": true, - "requires": { - "get-stdin": "^4.0.1" - } - } - } - }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -15847,13 +13520,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "optional": true - }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -15880,18 +13546,6 @@ "tiny-warning": "^1.0.2" } }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - } - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -16065,18 +13719,6 @@ "run-queue": "^1.0.3" } }, - "mozjpeg": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-6.0.1.tgz", - "integrity": "sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA==", - "dev": true, - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.1.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -16326,26 +13968,6 @@ "nouislider": "^14.1.1" } }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "optional": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -16583,22 +14205,6 @@ "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", "dev": true }, - "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", - "dev": true - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", - "dev": true, - "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -16613,18 +14219,6 @@ "word-wrap": "~1.2.3" } }, - "optipng-bin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-6.0.0.tgz", - "integrity": "sha512-95bB4y8IaTsa/8x6QH4bLUuyvyOoGBCLDA7wOgDL8UFqJpSUh1Hob8JRJhit+wC1ZLN3tQ7mFt7KuBj0x8F2Wg==", - "dev": true, - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.0.0" - } - }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -16640,83 +14234,24 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "optional": true, - "requires": { - "arch": "^2.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "ow": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/ow/-/ow-0.13.2.tgz", - "integrity": "sha512-9wvr+q+ZTDRvXDjL6eDOdFe5WUl/wa5sntf9kAolxqSpkBqaIObwLgFCGXSJASFw+YciXnOVtDWpxXa9cqV94A==", - "dev": true, - "optional": true, - "requires": { - "type-fest": "^0.5.1" - }, - "dependencies": { - "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", - "dev": true, - "optional": true - } - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true, - "optional": true - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-each-series": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", "dev": true }, - "p-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", - "dev": true, - "optional": true, - "requires": { - "p-timeout": "^1.1.1" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true, - "optional": true - }, "p-limit": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", @@ -16744,39 +14279,6 @@ "aggregate-error": "^3.0.0" } }, - "p-map-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", - "dev": true, - "optional": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-pipe": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.0.0.tgz", - "integrity": "sha512-gwwdRFmaxsT3IU+Tl3vYKVRdjfhg8Bbdjw7B+E0y6F7Yz6l+eaQLn0BRmGMXIhcPDONPtOkMoNwx1etZh4zPJA==", - "dev": true - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true, - "optional": true - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "optional": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -16859,12 +14361,6 @@ "lines-and-columns": "^1.1.6" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -16905,28 +14401,12 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "optional": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -16964,13 +14444,6 @@ "sha.js": "^2.4.8" } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true, - "optional": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -16988,21 +14461,6 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pirates": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", @@ -17067,44 +14525,6 @@ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, - "pngquant-bin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-5.0.2.tgz", - "integrity": "sha512-OLdT+4JZx5BqE1CFJkrvomYV0aSsv6x2Bba+aWaVc0PMfWlE+ZByNKYAdKeIqsM4uvW1HOSEHnf8KcOnykPNxA==", - "dev": true, - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "execa": "^0.10.0", - "logalot": "^2.0.0" - }, - "dependencies": { - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "optional": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "optional": true - } - } - }, "pnp-webpack-plugin": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz", @@ -17156,118 +14576,6 @@ } } }, - "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", - "dev": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "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 - } - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, "postcss-flexbugs-fixes": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz", @@ -17339,138 +14647,6 @@ "schema-utils": "^1.0.0" } }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, "postcss-modules-extract-imports": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", @@ -17487,249 +14663,29 @@ "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" - } - }, - "postcss-modules-scope": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", - "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "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 - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" } }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "postcss-modules-scope": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", + "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" } }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "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 - } + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" } }, "postcss-selector-parser": { @@ -17743,37 +14699,6 @@ "uniq": "^1.0.1" } }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "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 - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, "postcss-value-parser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", @@ -17965,13 +14890,6 @@ "xtend": "^4.0.0" } }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true, - "optional": true - }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -17988,13 +14906,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true, - "optional": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -18886,43 +15797,6 @@ "lodash": "^4.0.1" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "optional": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "optional": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -19182,22 +16056,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "optional": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -19308,59 +16166,6 @@ "path-parse": "^1.0.6" } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - } - } - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -19379,16 +16184,6 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "optional": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -19405,24 +16200,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -19465,12 +16242,6 @@ "is-promise": "^2.1.0" } }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -19591,28 +16362,6 @@ "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.0.2.tgz", "integrity": "sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ==" }, - "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.8.1" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "optional": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - } - } - }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -19638,16 +16387,6 @@ "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", "dev": true }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "optional": true, - "requires": { - "semver": "^5.3.0" - } - }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -19907,23 +16646,6 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "simple-swizzle": { - "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" - }, - "dependencies": { - "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 - } - } - }, "simplebar": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-4.2.3.tgz", @@ -20155,16 +16877,6 @@ "is-plain-obj": "^1.0.0" } }, - "sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "dev": true, - "optional": true, - "requires": { - "sort-keys": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -20263,48 +16975,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "optional": true, - "requires": { - "chalk": "^1.0.0", - "console-stream": "^0.1.1", - "lpad-align": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "optional": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "optional": true - } - } - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -20600,26 +17270,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "optional": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dev": true, - "optional": true, - "requires": { - "is-natural-number": "^4.0.1" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -20647,16 +17297,6 @@ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "optional": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, "style-loader": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", @@ -20751,30 +17391,6 @@ "resolved": "https://registry.npmjs.org/styled-theming/-/styled-theming-2.2.0.tgz", "integrity": "sha1-MITkPUDqq0vBHrr9PeBONiL+434=" }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, "stylis": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.0.tgz", @@ -20968,22 +17584,6 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "optional": true, - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - }, "telejson": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/telejson/-/telejson-3.3.0.tgz", @@ -20999,31 +17599,13 @@ "lodash": "^4.17.15", "memoizerific": "^1.11.3" }, - "dependencies": { - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "dev": true - } - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true, - "optional": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "optional": true, - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" + "dependencies": { + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } } }, "term-size": { @@ -21189,13 +17771,6 @@ "xtend": "~4.0.1" } }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true, - "optional": true - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -21205,12 +17780,6 @@ "setimmediate": "^1.0.4" } }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -21248,13 +17817,6 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true, - "optional": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -21345,29 +17907,6 @@ "punycode": "^2.1.0" } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true, - "optional": true - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "optional": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, "ts-dedent": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-1.1.1.tgz", @@ -21462,30 +18001,6 @@ "is-typedarray": "^1.0.0" } }, - "unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - }, - "dependencies": { - "buffer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", - "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - } - } - }, "unfetch": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", @@ -21538,12 +18053,6 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -21659,64 +18168,6 @@ } } }, - "url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.0.0.tgz", - "integrity": "sha512-sPsoBs8NkSJt9k/2zLUMDAf0rYaG00EtrFQpHRIphKrR6stGsO92LUJf/uUeQNKEoxqoJ4R4qDLqHl+AOEqolA==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.26", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } - } - }, "url-parse": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", @@ -21727,23 +18178,6 @@ "requires-port": "^1.0.0" } }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "optional": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true, - "optional": true - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -21874,12 +18308,6 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -22053,251 +18481,6 @@ } } }, - "webpack-bundle-analyzer": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz", - "integrity": "sha512-Nfd8HDwfSx1xBwC+P8QMGvHAOITxNBSvu/J/mCJvOwv+G4VWkU7zir9SSenTtyCi0LnVtmsc7G5SZo1uV+bxRw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.15", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true - }, - "acorn-walk": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", - "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", - "dev": true - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "webpack-cli": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", - "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", - "dev": true - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "webpack-dev-middleware": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", @@ -22777,17 +18960,6 @@ "decamelize": "^1.2.0" } }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "optional": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "yup": { "version": "0.28.3", "resolved": "https://registry.npmjs.org/yup/-/yup-0.28.3.tgz", diff --git a/package.json b/package.json index 39f3bcdc..87a21dbf 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "!/**/__tests__" ], "scripts": { - "build": "better-npm-run build", "test": "better-npm-run test", "test:watch": "better-npm-run test:watch", "test:coverage": "better-npm-run test:coverage", @@ -40,12 +39,6 @@ "env": { "NODE_ENV": "test" } - }, - "build": { - "command": "webpack --config ./webpack.config.js", - "env": { - "NODE_ENV": "production" - } } }, "peerDependencies": { @@ -86,11 +79,6 @@ "devDependencies": { "@babel/core": "^7.9.0", "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.9.0", - "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.9.0", "@babel/preset-react": "^7.9.4", "@storybook/addon-actions": "^5.3.18", @@ -100,45 +88,29 @@ "@testing-library/react": "^10.0.2", "babel-eslint": "^10.1.0", "babel-jest": "^25.2.4", - "babel-loader": "^8.1.0", "babel-plugin-dynamic-import-node": "^2.3.0", - "babel-plugin-styled-components": "^1.10.7", - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "better-npm-run": "^0.1.1", - "clean-webpack-plugin": "^3.0.0", - "css-loader": "^3.4.2", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.1", "eslint-plugin-import": "^2.20.2", "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-react": "^7.19.0", "eslint-plugin-react-hooks": "^3.0.0", - "extract-text-webpack-plugin": "^4.0.0-beta.0", - "file-loader": "^6.0.0", "formik": "^2.1.4", "husky": "^4.2.3", "identity-obj-proxy": "^3.0.0", - "image-webpack-loader": "^6.0.0", "jest": "^25.2.4", "jest-environment-jsdom": "^25.2.4", "jest-environment-jsdom-global": "^1.2.1", "jest-styled-components": "^7.0.0", "lint-staged": "^10.1.1", - "mini-css-extract-plugin": "^0.9.0", - "optimize-css-assets-webpack-plugin": "^5.0.3", "prettier": "^1.19.1", "prop-types": "^15.7.2", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.1.2", "storybook-react-router": "^1.0.8", - "style-loader": "^1.1.3", "styled-components": "^5.0.1", - "test-data-bot": "^0.8.0", - "url-loader": "^4.0.0", - "webpack": "^4.42.1", - "webpack-bundle-analyzer": "^3.6.1", - "webpack-cli": "^3.3.11" + "test-data-bot": "^0.8.0" } } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 27aa49fd..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,128 +0,0 @@ -const path = require("path"); -const webpack = require("webpack"); - -const { CleanWebpackPlugin } = require("clean-webpack-plugin"); - -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin"); - -// -------- -// environment variables -const { NODE_ENV, npm_package_version: VERSION } = process.env; - -console.group("Build info"); -console.log(`Release version is ${VERSION}`); -console.log(`Webpack version is ${webpack.version}`); -console.log(`Webpack running in ${NODE_ENV} environment`); -console.groupEnd(); - -// app paths -const PATHS = { - src: path.resolve(__dirname, "src"), - build: path.resolve(__dirname, "dist"), - node_modules: path.resolve(__dirname, "node_modules"), -}; -// -------- - -const config = { - context: PATHS.src, - - mode: NODE_ENV, - - devtool: "hidden-source-map", - - entry: { - client: [path.join(PATHS.src, "index.js")], - }, - - output: { - path: PATHS.build, - publicPath: "/", - filename: "index.js", - }, - - resolve: { - modules: [PATHS.src, "node_modules"], - extensions: [".js", ".jsx"], - }, - - module: { - rules: [ - { - test: /\.jsx?$/i, - exclude: /node_modules/, - use: [ - { - loader: "babel-loader", - }, - ], - }, - - { - test: /\.css$/, - use: [ - { loader: MiniCssExtractPlugin.loader }, - { loader: "css-loader" }, - ], - }, - - { - test: /\.(jpg|jpe?g|png|gif)$/, - use: [ - { - loader: "url-loader", - options: { - limit: 4000, - name: "images/[name].[ext]", - }, - }, - "image-webpack-loader", - ], - }, - - { - test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - use: [ - { - loader: "url-loader", - options: { - mimetype: "image/svg+xml", - name: "images/[name].[ext]", - }, - }, - ], - }, - - { - test: /\.(ttf|eot|woff|woff2)$/, - use: { - loader: "file-loader", - options: { - name: "fonts/[name].[ext]", - }, - }, - }, - ], - }, - - plugins: [ - new webpack.DefinePlugin({ - "process.env": { - VERSION: JSON.stringify(VERSION), - NODE_ENV: JSON.stringify(NODE_ENV), - }, - }), - - new CleanWebpackPlugin(), - - new MiniCssExtractPlugin({ - filename: `styles/main.css`, - }), - - new OptimizeCssAssetsPlugin({ - assetNameRegExp: /\.css$/g, - }), - ], -}; - -module.exports = config; From dfe78429d4a00b104198866b7046c9655b87fdfc Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 11:02:30 +0300 Subject: [PATCH 058/175] dirs reorganization --- src/assets/index.js | 4 +- src/components/Button/ButtonThemes.jsx | 2 +- src/components/CardSmall/CardSmall.stories.js | 4 +- src/components/CardSmall/StyledCardSmall.jsx | 2 +- src/components/CopyItem/CopyItemIcon.jsx | 4 +- src/components/CopyItem/StyledCopyItem.jsx | 2 +- .../StyledDeleteSureButton.jsx | 2 +- src/components/DeleteSureButton/index.jsx | 2 +- .../DynamicListItem/DynamicListItemLink.jsx | 2 +- ...ntriesDateTimeFilterDateTimeInputInput.jsx | 2 +- ...ntriesDateTimeFilterDateTimeInputLabel.jsx | 2 +- .../StyledEntriesDateTimeFilterError.jsx | 2 +- .../EntriesDateTimeFilterPopup.jsx | 2 +- ...ateTimeFilterRelativePickerSelectLabel.jsx | 2 +- ...teTimeFilterRelativePickerSelectOption.jsx | 2 +- .../EntriesDateTimeFilterTabsTabbarButton.jsx | 2 +- .../StyledEntriesDateTimeFilterTotalTime.jsx | 2 +- .../Entries/EntriesDateTimeFilter/index.jsx | 2 +- .../EntryPersonCard/StyledEntryPersonCard.jsx | 2 +- .../StyledPersonEntriesCard.jsx | 2 +- .../EntryCardActionsButton/index.jsx | 2 +- .../StyledEntryCardContainer.jsx | 2 +- .../StyledEntryCardEntryType.jsx | 2 +- .../StyledEntryCardLiveness.jsx | 2 +- .../EntryCardPhoto/EntryCardPhotoFaceSize.jsx | 2 +- src/components/FaceSize.jsx | 3 +- src/components/GlobalStyles.jsx | 12 ++-- .../HeaderTopMenuUserUsername/index.jsx | 2 +- .../HeaderTopMenu/HeaderTopMenuUser/index.jsx | 2 +- src/components/I18nProvider.js | 3 - src/components/IdCopy/IdCopyIcon.jsx | 4 +- src/components/LazyImage/StyledLazyImage.jsx | 2 +- .../ListItemPopup/ListItemPopup.stories.js | 2 +- .../ListItemPopup/__tests__/ListItemPopup.js | 2 +- .../ListLayout/ListLayout.stories.js | 2 +- .../ListLayoutListItemTitle.jsx | 2 +- .../StyledListLayoutListItem.jsx | 2 +- .../ListLayoutList/StyledListLayoutList.jsx | 2 +- .../ListLayout/ListLayoutList/index.jsx | 2 +- .../ListLayoutNotice/ListLayoutNoticeIcon.jsx | 2 +- .../Login/LoginForm/LoginFormButton.jsx | 3 +- .../Login/LoginForm/LoginFormInput.jsx | 2 +- .../Login/LoginMenu/LoginMenuItem.jsx | 2 +- src/components/NoticeHero/NoticeHeroIcon.jsx | 2 +- src/components/PageCard/PageCard.stories.js | 2 +- .../Pagination/PaginationButton.jsx | 2 +- .../Pagination/PaginationControlButton.jsx | 2 +- .../Pagination/PaginationPageButton.jsx | 2 +- src/components/Pagination/index.jsx | 2 +- .../PersonCardDetailedDataItemIdValue.jsx | 2 +- .../PersonCardDetailedDataItemLabel.jsx | 2 +- src/components/PersonCardDetailed/index.jsx | 2 +- .../StyledPersonsGroupListPersonInfoIdxid.jsx | 2 +- .../index.jsx | 2 +- .../PersonsGroupListPersonTypeSelectLabel.jsx | 2 +- .../PersonsGroupPersonId.jsx | 2 +- .../StyledPersonsGroupPerson.jsx | 2 +- .../PersonsGroup/PersonsGroupPerson/index.jsx | 4 +- src/components/Search/SearchClearButton.jsx | 2 +- src/components/Search/SearchCompact/index.jsx | 2 +- src/components/Search/SearchIcon.jsx | 4 +- src/components/Search/SearchInput.jsx | 2 +- src/components/Search/StyledSearch.jsx | 2 +- src/components/Search/index.jsx | 2 +- src/components/ShownControl/index.jsx | 5 +- src/components/Spinner/SpinnerIcon.jsx | 2 +- src/components/Text/TextDrag.jsx | 2 +- src/components/Text/Title.jsx | 2 +- src/components/UIBadge/UIBadgeThemes.jsx | 2 +- src/components/UIBadge/index.jsx | 2 +- .../WithCurrentOpenItem/ListItemsContext.js | 6 -- .../WithListItemContextProvider.jsx | 30 ---------- src/components/WithCurrentOpenItem/index.js | 2 - .../FormCheckbox/FormCheckboxCheckedIcon.jsx | 2 +- .../FormCheckbox/StyledFormCheckbox.jsx | 2 +- .../FormDropdown/FormDropdownControl.jsx | 4 +- .../FormDropdown/FormDropdownMenu.jsx | 2 +- .../FormDropdown/FormDropdownOption.jsx | 2 +- .../FormDropdownOptionSelectedIcon.jsx | 2 +- .../form/components/FormDropdown/index.jsx | 2 +- .../components/FormField/FormFieldIcon.jsx | 4 +- .../components/FormField/FormFieldTag.jsx | 2 +- .../components/FormInput/StyledFormInput.jsx | 2 +- .../components/FormLabel/FormLabelTitle.jsx | 2 +- .../FormMultiSelect/FormMultiSelectInput.jsx | 2 +- .../FormMultiSelectOption.jsx | 2 +- .../FormMultiSelectMenu/index.jsx | 2 +- .../FormMultiSelectTagsItemTitle.jsx | 2 +- .../StyledFormMultiSelectTagsItem.jsx | 2 +- .../FormMultiSelectTagsItem/index.jsx | 2 +- .../FormMultiSelect/StyledFormMultiSelect.jsx | 3 +- .../components/FormSwitch/FormSwitchLabel.jsx | 2 +- src/{assets => components}/icons/Asterisk.jsx | 2 +- src/{assets => components}/icons/Check.jsx | 0 .../icons/InfoCircleColor.jsx | 0 src/{assets => components}/icons/Pencil.jsx | 0 src/{assets => components}/icons/Search.jsx | 0 src/{assets => components}/icons/Sync.jsx | 2 +- .../icons/TimesDelete.jsx | 0 .../icons/TimesDeleteBold.jsx | 0 src/{assets => components}/icons/index.js | 0 src/components/index.js | 1 - .../notification/NotificationContent.jsx | 2 +- src/components/notification/index.jsx | 2 +- src/index.js | 4 +- src/locales/en.js | 7 --- src/locales/index.js | 9 --- src/locales/ru.js | 7 --- .../animations/fade-enter.jsx | 0 .../animations/fade-exit.jsx | 0 src/{assets => style}/animations/index.js | 0 src/{assets => style}/animations/spin.jsx | 0 src/{themes => style/color}/colors.js | 4 +- src/{themes => style/color}/index.js | 0 .../styles => style/font}/fonts.css | 8 +-- .../font}/fonts/open-sans/LICENSE.txt | 0 .../font}/fonts/open-sans/OpenSans-Bold.ttf | Bin .../fonts/open-sans/OpenSans-BoldItalic.ttf | Bin .../fonts/open-sans/OpenSans-ExtraBold.ttf | Bin .../open-sans/OpenSans-ExtraBoldItalic.ttf | Bin .../font}/fonts/open-sans/OpenSans-Italic.ttf | Bin .../font}/fonts/open-sans/OpenSans-Light.ttf | Bin .../fonts/open-sans/OpenSans-LightItalic.ttf | Bin .../fonts/open-sans/OpenSans-Regular.ttf | Bin .../fonts/open-sans/OpenSans-SemiBold.ttf | Bin .../open-sans/OpenSans-SemiBoldItalic.ttf | Bin src/style/font/index.js | 1 + src/style/index.js | 3 + src/utils/cookie-service.js | 22 -------- src/utils/index.js | 2 - src/utils/storage.js | 52 ------------------ 131 files changed, 117 insertions(+), 260 deletions(-) delete mode 100644 src/components/WithCurrentOpenItem/ListItemsContext.js delete mode 100644 src/components/WithCurrentOpenItem/WithListItemContextProvider.jsx delete mode 100644 src/components/WithCurrentOpenItem/index.js rename src/{assets => components}/icons/Asterisk.jsx (88%) rename src/{assets => components}/icons/Check.jsx (100%) rename src/{assets => components}/icons/InfoCircleColor.jsx (100%) rename src/{assets => components}/icons/Pencil.jsx (100%) rename src/{assets => components}/icons/Search.jsx (100%) rename src/{assets => components}/icons/Sync.jsx (87%) rename src/{assets => components}/icons/TimesDelete.jsx (100%) rename src/{assets => components}/icons/TimesDeleteBold.jsx (100%) rename src/{assets => components}/icons/index.js (100%) delete mode 100644 src/locales/en.js delete mode 100644 src/locales/index.js delete mode 100644 src/locales/ru.js rename src/{assets => style}/animations/fade-enter.jsx (100%) rename src/{assets => style}/animations/fade-exit.jsx (100%) rename src/{assets => style}/animations/index.js (100%) rename src/{assets => style}/animations/spin.jsx (100%) rename src/{themes => style/color}/colors.js (96%) rename src/{themes => style/color}/index.js (100%) rename src/{resources/styles => style/font}/fonts.css (62%) rename src/{resources => style/font}/fonts/open-sans/LICENSE.txt (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-Bold.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-BoldItalic.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-ExtraBold.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-Italic.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-Light.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-LightItalic.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-Regular.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-SemiBold.ttf (100%) rename src/{resources => style/font}/fonts/open-sans/OpenSans-SemiBoldItalic.ttf (100%) create mode 100644 src/style/font/index.js create mode 100644 src/style/index.js delete mode 100644 src/utils/cookie-service.js delete mode 100644 src/utils/storage.js diff --git a/src/assets/index.js b/src/assets/index.js index a56162d3..cbe718aa 100644 --- a/src/assets/index.js +++ b/src/assets/index.js @@ -1,5 +1,3 @@ -import * as animations from "./animations"; -import * as icons from "./icons"; import * as images from "./images"; -export { images, icons, animations }; +export { images }; diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index 5ec0043f..7ec0fd40 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -1,6 +1,6 @@ import { css } from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; function getPseudoForShadow({ isRounded, fit, disabled }) { return css` diff --git a/src/components/CardSmall/CardSmall.stories.js b/src/components/CardSmall/CardSmall.stories.js index 01683f20..b1bb4e4b 100644 --- a/src/components/CardSmall/CardSmall.stories.js +++ b/src/components/CardSmall/CardSmall.stories.js @@ -7,8 +7,8 @@ import { action } from "@storybook/addon-actions"; import { CardSmall } from "./index"; import { personMock } from "../../../test/__mocks__"; -import { PlaylistAdd } from "../../assets/icons"; -import { colors } from "../../themes/colors"; +import { PlaylistAdd } from "../icons"; +import { colors } from "../../style"; storiesOf("Basic UI|CardSmall", module) .add("default", () => { diff --git a/src/components/CardSmall/StyledCardSmall.jsx b/src/components/CardSmall/StyledCardSmall.jsx index 0640201e..df91f35b 100644 --- a/src/components/CardSmall/StyledCardSmall.jsx +++ b/src/components/CardSmall/StyledCardSmall.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; import { CardSmallData } from "./index"; const themes = { diff --git a/src/components/CopyItem/CopyItemIcon.jsx b/src/components/CopyItem/CopyItemIcon.jsx index 7ceaf669..727b17e3 100644 --- a/src/components/CopyItem/CopyItemIcon.jsx +++ b/src/components/CopyItem/CopyItemIcon.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; -import { Clone } from "../../assets/icons"; -import { colors } from "../../themes/colors"; +import { Clone } from "../icons"; +import { colors } from "../../style"; const CopyItemIcon = styled(Clone)` color: ${colors.grayMedium}; diff --git a/src/components/CopyItem/StyledCopyItem.jsx b/src/components/CopyItem/StyledCopyItem.jsx index 4e8a20cf..2263c9ea 100644 --- a/src/components/CopyItem/StyledCopyItem.jsx +++ b/src/components/CopyItem/StyledCopyItem.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import { Flash } from "../Flash"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const StyledCopyItem = styled(Flash)` cursor: pointer; diff --git a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx index a47332a9..458e1133 100644 --- a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx +++ b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx @@ -2,7 +2,7 @@ import styled, { css } from "styled-components"; import Button from "../Button"; -import colors from "../../themes/colors"; +import { colors } from "../../style"; function getHoverStyles({ isDisabled }) { return !isDisabled diff --git a/src/components/DeleteSureButton/index.jsx b/src/components/DeleteSureButton/index.jsx index eb388dc9..61794202 100644 --- a/src/components/DeleteSureButton/index.jsx +++ b/src/components/DeleteSureButton/index.jsx @@ -4,7 +4,7 @@ import PropTypes from "prop-types"; import { useTranslation } from "../../hooks"; import StyledDeleteSureButton from "./StyledDeleteSureButton"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; import { DeleteSure } from "../DeleteSure"; diff --git a/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx b/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx index cb15e2b2..f1bc7942 100644 --- a/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx +++ b/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx @@ -2,7 +2,7 @@ import { NavLink } from "react-router-dom"; import styled from "styled-components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; const DynamicListItemLink = styled(NavLink)` display: block; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx index b6577d88..c575bcdf 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; const EntriesDateTimeFilterDateTimeInputInput = styled.input` background-color: ${colors.grayLight}; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx index ff96c6eb..4c9aa9df 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; const EntriesDateTimeFilterDateTimeInputLabel = styled.label` display: inline-block; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx index 9f1babac..873b6c8c 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const StyledEntriesDateTimeFilterError = styled.p` font-size: 14px; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx index a2a31eac..8af4f468 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; import { PopupContainer } from "../../PopupContainer"; const EntriesDateTimeFilterPopup = styled(PopupContainer)` diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx index c7109fac..8152756c 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../../../themes/colors"; +import { colors } from "../../../../../../style"; const EntriesDateTimeFilterRelativePickerSelectLabel = styled.label` width: 64px; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx index 79fcdeac..9783aebb 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; import { Button } from "../../../../../Button"; -import { colors } from "../../../../../../themes/colors"; +import { colors } from "../../../../../../style"; const EntriesDateTimeFilterRelativePickerSelectOption = styled( Button diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx index df26440f..1626f665 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; import { Button } from "../../../../Button"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; const EntriesDateTimeFilterTabsTabbarButton = styled(Button).attrs(() => ({ buttonTheme: "reset", diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx index 9657f705..09da6bda 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const StyledEntriesDateTimeFilterTotalTime = styled.p` margin: 0; diff --git a/src/components/Entries/EntriesDateTimeFilter/index.jsx b/src/components/Entries/EntriesDateTimeFilter/index.jsx index 6f038c24..07c5f6e8 100644 --- a/src/components/Entries/EntriesDateTimeFilter/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/index.jsx @@ -12,7 +12,7 @@ import { EntriesDateTimeFilterControl } from "./EntriesDateTimeFilterControl"; import { EntriesDateTimeFilterError } from "./EntriesDateTimeFilterError"; import { EntriesDateTimeFilterTotalTime } from "./EntriesDateTimeFilterTotalTime"; import { EntriesDateTimeFilterResetButton } from "./EntriesDateTimeFilterResetButton"; -import { Times } from "../../../assets/icons"; +import { Times } from "../../icons"; import { identity } from "lodash-es"; import dayjs from "dayjs"; diff --git a/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx b/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx index 2b69247e..00063c41 100644 --- a/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx +++ b/src/components/Entries/EntryPersonCard/StyledEntryPersonCard.jsx @@ -8,7 +8,7 @@ import { EntryCardActions, } from "../components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; const themes = { light: { diff --git a/src/components/Entries/PersonEntriesCard/StyledPersonEntriesCard.jsx b/src/components/Entries/PersonEntriesCard/StyledPersonEntriesCard.jsx index d09bea54..51c7882e 100644 --- a/src/components/Entries/PersonEntriesCard/StyledPersonEntriesCard.jsx +++ b/src/components/Entries/PersonEntriesCard/StyledPersonEntriesCard.jsx @@ -8,7 +8,7 @@ import { EntryCardActions, } from "../components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; const StyledPersonEntriesCard = styled(EntryCardContainer)` border-radius: 4px; diff --git a/src/components/Entries/components/EntryCardActions/EntryCardActionsButton/index.jsx b/src/components/Entries/components/EntryCardActions/EntryCardActionsButton/index.jsx index f0607af6..a7ea5802 100644 --- a/src/components/Entries/components/EntryCardActions/EntryCardActionsButton/index.jsx +++ b/src/components/Entries/components/EntryCardActions/EntryCardActionsButton/index.jsx @@ -3,7 +3,7 @@ import styled from "styled-components"; import Button from "../../../../Button"; import { ButtonLink } from "../../../../ButtonLink"; -import colors from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; const EntryCardActionsButton = styled(Button).attrs(({ to, as }) => ({ as: as || to ? ButtonLink : Button, diff --git a/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx b/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx index 3faf2215..83108060 100644 --- a/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx +++ b/src/components/Entries/components/EntryCardContainer/StyledEntryCardContainer.jsx @@ -6,7 +6,7 @@ import { StyledEntryCardEntryType } from "../EntryCardEntryType"; import { StyledEntryCardInfoItem } from "../EntryCardInfoItem"; import { StyledEntryCardLiveness } from "../EntryCardLiveness"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const themes = { light: { diff --git a/src/components/Entries/components/EntryCardEntryType/StyledEntryCardEntryType.jsx b/src/components/Entries/components/EntryCardEntryType/StyledEntryCardEntryType.jsx index c328e8f5..768bfa6e 100644 --- a/src/components/Entries/components/EntryCardEntryType/StyledEntryCardEntryType.jsx +++ b/src/components/Entries/components/EntryCardEntryType/StyledEntryCardEntryType.jsx @@ -3,7 +3,7 @@ import theme from "styled-theming"; import { UIBadge } from "../../../UIBadge"; -import colors from "../../../../themes/colors"; +import { colors } from "../../../../style"; const color = theme("mode", { new: colors.navyBlue, diff --git a/src/components/Entries/components/EntryCardLiveness/StyledEntryCardLiveness.jsx b/src/components/Entries/components/EntryCardLiveness/StyledEntryCardLiveness.jsx index 4d3f2fac..50076d8d 100644 --- a/src/components/Entries/components/EntryCardLiveness/StyledEntryCardLiveness.jsx +++ b/src/components/Entries/components/EntryCardLiveness/StyledEntryCardLiveness.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const StyledEntryCardLiveness = styled.p` margin: 0; diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx index 1708b43c..d8185aae 100644 --- a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import { FaceSize } from "../../../../FaceSize"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; const EntryCardPhotoFaceSize = styled(FaceSize)` background-color: ${colors.bluish}; diff --git a/src/components/FaceSize.jsx b/src/components/FaceSize.jsx index 515c470a..46ea3983 100644 --- a/src/components/FaceSize.jsx +++ b/src/components/FaceSize.jsx @@ -1,5 +1,6 @@ import styled from "styled-components"; -import colors from "../themes/colors"; + +import { colors } from "../style"; export const FaceSize = styled.div` position: absolute; diff --git a/src/components/GlobalStyles.jsx b/src/components/GlobalStyles.jsx index 7514a3ff..b8ee4705 100644 --- a/src/components/GlobalStyles.jsx +++ b/src/components/GlobalStyles.jsx @@ -1,25 +1,21 @@ import { createGlobalStyle } from "styled-components"; -import "../resources/styles/fonts.css"; +import "../style/font/fonts.css"; +import { colors } from "../style"; export const GlobalStyles = createGlobalStyle` - html { + html, body, #app-container { height: 100%; } body { font-family: Open Sans, Helvetica Neue, sans-serif; font-weight: 400; - color: #000; + color: ${colors.darkBlack}; user-select: none; - height: 100%; } input, textarea, button { font-family: Open Sans, Helvetica Neue, sans-serif; } - - #app-container { - height: 100%; - } `; diff --git a/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/HeaderTopMenuUserUsername/index.jsx b/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/HeaderTopMenuUserUsername/index.jsx index b46c5abe..69cf6dca 100644 --- a/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/HeaderTopMenuUserUsername/index.jsx +++ b/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/HeaderTopMenuUserUsername/index.jsx @@ -3,7 +3,7 @@ import PropTypes from "prop-types"; import { StyledHeaderTopMenuUserUsername } from "./StyledHeaderTopMenuUserUsername"; import { HeaderTopMenuUserUsernameIcon } from "./HeaderTopMenuUserUsernameIcon"; -import { User } from "../../../../../assets/icons"; +import { User } from "../../../../icons"; function HeaderTopMenuUserUsername({ username }) { return ( diff --git a/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/index.jsx b/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/index.jsx index 6c4022d3..d8e2782f 100644 --- a/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/index.jsx +++ b/src/components/Header/HeaderTopMenu/HeaderTopMenuUser/index.jsx @@ -4,7 +4,7 @@ import PropTypes from "prop-types"; import { StyledHeaderTopMenuUser } from "./StyledHeaderTopMenuUser"; import { HeaderTopMenuUserUsername } from "./HeaderTopMenuUserUsername"; import { HeaderTopMenuUserUsernameLogout } from "./HeaderTopMenuUserUsernameLogout"; -import { ArrowAltCircleRight } from "../../../../assets/icons"; +import { ArrowAltCircleRight } from "../../../icons"; function HeaderTopMenuUser({ username, onLogout }) { return ( diff --git a/src/components/I18nProvider.js b/src/components/I18nProvider.js index f7cee71c..0ab545c4 100644 --- a/src/components/I18nProvider.js +++ b/src/components/I18nProvider.js @@ -4,11 +4,8 @@ import PropTypes from "prop-types"; import i18n from "i18next"; import { I18nextProvider } from "react-i18next"; -import locales from "../locales"; - function I18nProvider({ children, i18n }) { i18n.init({ - resources: locales, fallbackLng: "en", defaultNS: "translation", interpolation: { diff --git a/src/components/IdCopy/IdCopyIcon.jsx b/src/components/IdCopy/IdCopyIcon.jsx index 4d69f5f0..60abf82d 100644 --- a/src/components/IdCopy/IdCopyIcon.jsx +++ b/src/components/IdCopy/IdCopyIcon.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; -import { Clone } from "../../assets/icons"; -import { colors } from "../../themes"; +import { Clone } from "../icons"; +import { colors } from "../../style"; export const IdCopyIcon = styled(Clone)` color: ${colors.darkBlack}; diff --git a/src/components/LazyImage/StyledLazyImage.jsx b/src/components/LazyImage/StyledLazyImage.jsx index 6f5c2023..09967230 100644 --- a/src/components/LazyImage/StyledLazyImage.jsx +++ b/src/components/LazyImage/StyledLazyImage.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import colors from "../../themes/colors"; +import { colors } from "../../style"; function getStyles({ isImageLoaded }) { return !isImageLoaded diff --git a/src/components/ListItemPopup/ListItemPopup.stories.js b/src/components/ListItemPopup/ListItemPopup.stories.js index da168afa..5740d7d1 100644 --- a/src/components/ListItemPopup/ListItemPopup.stories.js +++ b/src/components/ListItemPopup/ListItemPopup.stories.js @@ -4,7 +4,7 @@ import { text } from "@storybook/addon-knobs"; import { ListItemPopup } from "./index.jsx"; -import { Qrcode as QRCodeIcon } from "../../assets/icons"; +import { Qrcode as QRCodeIcon } from "../icons"; import styled from "styled-components"; diff --git a/src/components/ListItemPopup/__tests__/ListItemPopup.js b/src/components/ListItemPopup/__tests__/ListItemPopup.js index 2d1a9ad1..e3d88ac7 100644 --- a/src/components/ListItemPopup/__tests__/ListItemPopup.js +++ b/src/components/ListItemPopup/__tests__/ListItemPopup.js @@ -3,7 +3,7 @@ import { fireEvent } from "@testing-library/react"; import { render } from "../../../../test/utils"; import { ListItemPopup } from "../index.jsx"; -import { Qrcode as QRCodeIcon } from "../../../assets/icons"; +import { Qrcode as QRCodeIcon } from "../../icons"; describe("ListItemPopup tests", () => { const onChangeMock = jest.fn(); diff --git a/src/components/ListLayout/ListLayout.stories.js b/src/components/ListLayout/ListLayout.stories.js index 1dd50dc6..c03b71ac 100644 --- a/src/components/ListLayout/ListLayout.stories.js +++ b/src/components/ListLayout/ListLayout.stories.js @@ -20,7 +20,7 @@ import { Button } from "../Button"; import { SelectableList } from "../SelectableList"; import { UIBadge } from "../UIBadge"; -import { Sync } from "../../assets/icons"; +import { Sync } from "../icons"; import { property as prop } from "lodash-es"; import { personMock } from "../../../test/__mocks__"; diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx index 781c99a9..b13987c6 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/ListLayoutListItemTitle.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import { NavLink } from "react-router-dom"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const ListLayoutListItemTitle = styled.p.attrs(({ to }) => ({ as: to ? NavLink : "p", diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx index 0d5b9c68..0aca9f4b 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/StyledListLayoutListItem.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; export const StyledListLayoutListItem = styled.li` display: flex; diff --git a/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx b/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx index cf16f46c..c8641c9a 100644 --- a/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx +++ b/src/components/ListLayout/ListLayoutList/StyledListLayoutList.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; export const StyledListLayoutList = styled.ul` padding-left: 0; diff --git a/src/components/ListLayout/ListLayoutList/index.jsx b/src/components/ListLayout/ListLayoutList/index.jsx index abadb4c3..ce3d6a02 100644 --- a/src/components/ListLayout/ListLayoutList/index.jsx +++ b/src/components/ListLayout/ListLayoutList/index.jsx @@ -7,7 +7,7 @@ import { ListLayoutNotice } from "../ListLayoutNotice"; import { ListLayoutListItem } from "./ListLayoutListItem"; import { ListLayoutListPagination } from "./ListLayoutListPagination"; import { ListLayoutListSpinner } from "./ListLayoutListSpinner"; -import { Ban } from "../../../assets/icons"; +import { Ban } from "../../icons"; function ListLayoutList({ listRef, diff --git a/src/components/ListLayout/ListLayoutNotice/ListLayoutNoticeIcon.jsx b/src/components/ListLayout/ListLayoutNotice/ListLayoutNoticeIcon.jsx index 64417548..ce539b13 100644 --- a/src/components/ListLayout/ListLayoutNotice/ListLayoutNoticeIcon.jsx +++ b/src/components/ListLayout/ListLayoutNotice/ListLayoutNoticeIcon.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; export const ListLayoutNoticeIcon = styled.div` margin-bottom: 13px; diff --git a/src/components/Login/LoginForm/LoginFormButton.jsx b/src/components/Login/LoginForm/LoginFormButton.jsx index 12a0d07f..022ce9c5 100644 --- a/src/components/Login/LoginForm/LoginFormButton.jsx +++ b/src/components/Login/LoginForm/LoginFormButton.jsx @@ -1,7 +1,8 @@ import styled from "styled-components"; import Button from "../../Button"; -import colors from "../../../themes/colors"; + +import { colors } from "../../../style"; const LoginFormButton = styled(Button)` width: 128px; diff --git a/src/components/Login/LoginForm/LoginFormInput.jsx b/src/components/Login/LoginForm/LoginFormInput.jsx index 7c4b7a4e..acad8f34 100644 --- a/src/components/Login/LoginForm/LoginFormInput.jsx +++ b/src/components/Login/LoginForm/LoginFormInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import colors from "../../../themes/colors"; +import { colors } from "../../../style"; const LoginFormInput = styled.input` font-size: 16px; diff --git a/src/components/Login/LoginMenu/LoginMenuItem.jsx b/src/components/Login/LoginMenu/LoginMenuItem.jsx index fcbff823..438c48fa 100644 --- a/src/components/Login/LoginMenu/LoginMenuItem.jsx +++ b/src/components/Login/LoginMenu/LoginMenuItem.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import colors from "../../../themes/colors"; +import { colors } from "../../../style"; export const LoginMenuItem = styled.a` text-decoration: none; diff --git a/src/components/NoticeHero/NoticeHeroIcon.jsx b/src/components/NoticeHero/NoticeHeroIcon.jsx index b7494ece..04e472cb 100644 --- a/src/components/NoticeHero/NoticeHeroIcon.jsx +++ b/src/components/NoticeHero/NoticeHeroIcon.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; export const NoticeHeroIcon = styled.div` margin-bottom: 13px; diff --git a/src/components/PageCard/PageCard.stories.js b/src/components/PageCard/PageCard.stories.js index 14871a04..d6530f51 100644 --- a/src/components/PageCard/PageCard.stories.js +++ b/src/components/PageCard/PageCard.stories.js @@ -6,7 +6,7 @@ import { storiesOf } from "@storybook/react"; import { PageCard } from "./index.jsx"; import { Button } from "../Button"; -import { ArrowLeft, Check } from "../../assets/icons"; +import { ArrowLeft, Check } from "../icons"; const StyledPageCard = styled(PageCard)` height: 400px; diff --git a/src/components/Pagination/PaginationButton.jsx b/src/components/Pagination/PaginationButton.jsx index fa5c2b04..8f8867b7 100644 --- a/src/components/Pagination/PaginationButton.jsx +++ b/src/components/Pagination/PaginationButton.jsx @@ -2,7 +2,7 @@ import styled, { css } from "styled-components"; import { Button } from "../Button"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; function getActiveStyles() { return css` diff --git a/src/components/Pagination/PaginationControlButton.jsx b/src/components/Pagination/PaginationControlButton.jsx index d85e728d..7d264289 100644 --- a/src/components/Pagination/PaginationControlButton.jsx +++ b/src/components/Pagination/PaginationControlButton.jsx @@ -2,7 +2,7 @@ import styled, { css } from "styled-components"; import { PaginationButton } from "./PaginationButton"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const PaginationControlButton = styled(PaginationButton).attrs(() => ({ fit: "square", diff --git a/src/components/Pagination/PaginationPageButton.jsx b/src/components/Pagination/PaginationPageButton.jsx index b9eb7dc5..cb12d582 100644 --- a/src/components/Pagination/PaginationPageButton.jsx +++ b/src/components/Pagination/PaginationPageButton.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; import { PaginationButton, getActiveStyles } from "./PaginationButton"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const PaginationPageButton = styled(PaginationButton)` border-radius: 2px; diff --git a/src/components/Pagination/index.jsx b/src/components/Pagination/index.jsx index cc80b831..f2e937c1 100644 --- a/src/components/Pagination/index.jsx +++ b/src/components/Pagination/index.jsx @@ -9,7 +9,7 @@ import { PaginationPages } from "./PaginationPages"; import { PaginationPageButton } from "./PaginationPageButton"; import { PaginationControlButton } from "./PaginationControlButton"; import { PaginationDots } from "./PaginationDots"; -import { BoxRightArrow, BoxLeftArrow } from "../../assets/icons"; +import { BoxRightArrow, BoxLeftArrow } from "../icons"; const DOTS = "..."; const END_LIMIT_PADDINGNUM = 3; diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemIdValue.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemIdValue.jsx index 3093420c..9d4cb362 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemIdValue.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemIdValue.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import { PersonCardDetailedDataItemValue } from "./PersonCardDetailedDataItemValue"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const PersonCardDetailedDataItemIdValue = styled( PersonCardDetailedDataItemValue diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx index 1fce9fdf..7fe9316e 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const PersonCardDetailedDataItemLabel = styled.span` display: inline-block; diff --git a/src/components/PersonCardDetailed/index.jsx b/src/components/PersonCardDetailed/index.jsx index 8b384e8e..14b575d3 100644 --- a/src/components/PersonCardDetailed/index.jsx +++ b/src/components/PersonCardDetailed/index.jsx @@ -9,7 +9,7 @@ import { } from "./PersonCardDetailedData"; import { NoticeHero } from "../NoticeHero"; -import { Ban, PlaylistAddCheck } from "../../assets/icons"; +import { Ban, PlaylistAddCheck } from "../icons"; function PersonCardDetailed({ person, diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx index 23bbaf28..80f91278 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/PersonsGroupListPersonInfoIdxid/StyledPersonsGroupListPersonInfoIdxid.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; export const StyledPersonsGroupListPersonInfoIdxid = styled.span` font-size: 13px; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonNotFoundNotice/index.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonNotFoundNotice/index.jsx index 312cd8c6..de3c3474 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonNotFoundNotice/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonNotFoundNotice/index.jsx @@ -3,7 +3,7 @@ import styled from "styled-components"; import { NoticeHero } from "../../../NoticeHero"; -import { Ban } from "../../../../assets/icons"; +import { Ban } from "../../../icons"; export const PersonsGroupListPersonNotFoundNotice = styled( NoticeHero diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx index fc705d9c..270b3a33 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/PersonsGroupListPersonTypeSelectLabel.jsx @@ -1,5 +1,5 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; export const PersonsGroupListPersonTypeSelectLabel = styled.label` font-size: 13px; diff --git a/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx b/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx index 0a4cc2bb..7f33c2cf 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; function getStyles({ isActive }) { return ( diff --git a/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx b/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx index 43029ce4..ac0da67c 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; function getStyles({ isActive }) { return isActive diff --git a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx index fdf46555..8b611e7a 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx @@ -8,10 +8,10 @@ import { PopupConfirm } from "../../PopupConfirm"; import { CardSmall, StyledCardSmall } from "../../CardSmall"; import { IdFormat } from "../../IdFormat"; import { Value } from "../../Value"; -import { PlaylistAdd, Trash } from "../../../assets/icons"; +import { PlaylistAdd, Trash } from "../../icons"; import { get } from "lodash-es"; -import { colors } from "../../../themes/colors"; +import { colors } from "../../../style"; import { noimageid } from "../../../assets/images"; function PersonsGroupPerson({ diff --git a/src/components/Search/SearchClearButton.jsx b/src/components/Search/SearchClearButton.jsx index 28d52db5..12997670 100644 --- a/src/components/Search/SearchClearButton.jsx +++ b/src/components/Search/SearchClearButton.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import { Button } from "../Button"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const SearchClearButton = styled(Button).attrs(() => ({ buttonTheme: "reset", diff --git a/src/components/Search/SearchCompact/index.jsx b/src/components/Search/SearchCompact/index.jsx index 7f1c86aa..a13e3013 100644 --- a/src/components/Search/SearchCompact/index.jsx +++ b/src/components/Search/SearchCompact/index.jsx @@ -7,7 +7,7 @@ import { SearchInput, } from "../index.jsx"; -import { colors } from "../../../themes/index.js"; +import { colors } from "../../../style"; const SearchCompact = styled(Search).attrs(() => ({ isCompact: true }))` padding: 3px 8px; diff --git a/src/components/Search/SearchIcon.jsx b/src/components/Search/SearchIcon.jsx index 1bd3f1d6..e34eafe9 100644 --- a/src/components/Search/SearchIcon.jsx +++ b/src/components/Search/SearchIcon.jsx @@ -1,8 +1,8 @@ import styled from "styled-components"; -import { Search } from "../../assets/icons"; +import { Search } from "../icons"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const SearchIcon = styled(Search)` margin-right: 16px; diff --git a/src/components/Search/SearchInput.jsx b/src/components/Search/SearchInput.jsx index 92db8660..43b7cd03 100644 --- a/src/components/Search/SearchInput.jsx +++ b/src/components/Search/SearchInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const SearchInput = styled.input.attrs(() => ({ type: "search", diff --git a/src/components/Search/StyledSearch.jsx b/src/components/Search/StyledSearch.jsx index 56edc476..8b1434be 100644 --- a/src/components/Search/StyledSearch.jsx +++ b/src/components/Search/StyledSearch.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const StyledSearch = styled.div` box-sizing: border-box; diff --git a/src/components/Search/index.jsx b/src/components/Search/index.jsx index 41ba9a7c..7214e10f 100644 --- a/src/components/Search/index.jsx +++ b/src/components/Search/index.jsx @@ -7,7 +7,7 @@ import { SearchFakeInputValue } from "./SearchFakeInputValue"; import { SearchIcon } from "./SearchIcon"; import { SearchCompact } from "./SearchCompact"; import { SearchClearButton } from "./SearchClearButton"; -import { TimesDelete, TimesDeleteBold } from "../../assets/icons"; +import { TimesDelete, TimesDeleteBold } from "../icons"; function Search({ value, diff --git a/src/components/ShownControl/index.jsx b/src/components/ShownControl/index.jsx index b9115fde..1b38d4b8 100644 --- a/src/components/ShownControl/index.jsx +++ b/src/components/ShownControl/index.jsx @@ -4,10 +4,7 @@ import StyledShownControl from "./StyledShownControl.jsx"; import StyledShownControlArrowRightContainer from "./StyledShownControlArrowRightContainer.jsx"; import StyledShownControlButtonArrow from "./StyledShownControlButtonArrow.jsx"; -import { - KeyboardArrowRight, - KeyboardArrowLeft, -} from "../../assets/icons/index.js"; +import { KeyboardArrowRight, KeyboardArrowLeft } from "../icons/index.js"; import StyledShownControlInfoContainer from "./StyledShownControlInfoContainer.jsx"; import StyledShownControlInfoContainerInner from "./StyledShownControlInfoContainerInner.jsx"; diff --git a/src/components/Spinner/SpinnerIcon.jsx b/src/components/Spinner/SpinnerIcon.jsx index 3d60dc49..eb35ca72 100644 --- a/src/components/Spinner/SpinnerIcon.jsx +++ b/src/components/Spinner/SpinnerIcon.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { Asterisk } from "../../assets/icons"; +import { Asterisk } from "../icons"; const SpinnerIcon = styled(Asterisk)` margin-bottom: 4px; diff --git a/src/components/Text/TextDrag.jsx b/src/components/Text/TextDrag.jsx index 833cde78..9550e7a9 100644 --- a/src/components/Text/TextDrag.jsx +++ b/src/components/Text/TextDrag.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import colors from "../../themes/colors"; +import { colors } from "../../style"; export const TextDrag = styled.span` color: ${props => props.isLockDrop && colors.graySimple}; diff --git a/src/components/Text/Title.jsx b/src/components/Text/Title.jsx index 949bd9e6..9382b6df 100644 --- a/src/components/Text/Title.jsx +++ b/src/components/Text/Title.jsx @@ -1,6 +1,6 @@ import PropTypes from "prop-types"; import styled, { css } from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; function getStyles({ level }) { return { diff --git a/src/components/UIBadge/UIBadgeThemes.jsx b/src/components/UIBadge/UIBadgeThemes.jsx index 364d9d45..9bec6d57 100644 --- a/src/components/UIBadge/UIBadgeThemes.jsx +++ b/src/components/UIBadge/UIBadgeThemes.jsx @@ -1,6 +1,6 @@ import { css } from "styled-components"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; const blueTheme = css` background-color: ${colors.bluish}; diff --git a/src/components/UIBadge/index.jsx b/src/components/UIBadge/index.jsx index 9a443f41..72b5788a 100644 --- a/src/components/UIBadge/index.jsx +++ b/src/components/UIBadge/index.jsx @@ -2,7 +2,7 @@ import styled, { css } from "styled-components"; import BadgeThemes from "./UIBadgeThemes"; -import { colors } from "../../themes/colors"; +import { colors } from "../../style"; export const UIBadge = styled.span` border-radius: 22.5px; diff --git a/src/components/WithCurrentOpenItem/ListItemsContext.js b/src/components/WithCurrentOpenItem/ListItemsContext.js deleted file mode 100644 index e037feb7..00000000 --- a/src/components/WithCurrentOpenItem/ListItemsContext.js +++ /dev/null @@ -1,6 +0,0 @@ -import React from "react"; - -export const ListItemsContext = React.createContext({ - currentOpenItem: null, - setCurrentOpenItem: () => {}, -}); diff --git a/src/components/WithCurrentOpenItem/WithListItemContextProvider.jsx b/src/components/WithCurrentOpenItem/WithListItemContextProvider.jsx deleted file mode 100644 index c71e850e..00000000 --- a/src/components/WithCurrentOpenItem/WithListItemContextProvider.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from "react"; - -import { ListItemsContext } from "./ListItemsContext"; - -export const WithListItemContextProvider = Component => { - class WithCurrentItemComponent extends React.Component { - state = { - currentOpenItem: null, - }; - - setCurrentOpenItem = currentOpenItem => { - this.setState({ currentOpenItem }); - }; - - render() { - return ( - - - - ); - } - } - - return WithCurrentItemComponent; -}; diff --git a/src/components/WithCurrentOpenItem/index.js b/src/components/WithCurrentOpenItem/index.js deleted file mode 100644 index 457b3a75..00000000 --- a/src/components/WithCurrentOpenItem/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./ListItemsContext"; -export * from "./WithListItemContextProvider"; diff --git a/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx b/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx index 33fab2c2..5de528a7 100644 --- a/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx +++ b/src/components/form/components/FormCheckbox/FormCheckboxCheckedIcon.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { Check } from "../../../../assets/icons"; +import { Check } from "../../../icons"; const FormCheckboxCheckedIcon = styled(Check)``; diff --git a/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx b/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx index a7d14565..c65e1e24 100644 --- a/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx +++ b/src/components/form/components/FormCheckbox/StyledFormCheckbox.jsx @@ -2,7 +2,7 @@ import styled, { css } from "styled-components"; import { FormCheckboxCheckedIcon } from "./FormCheckboxCheckedIcon"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; function getStyles({ disabled }) { if (disabled) { diff --git a/src/components/form/components/FormDropdown/FormDropdownControl.jsx b/src/components/form/components/FormDropdown/FormDropdownControl.jsx index e8dcf97b..3bca49fc 100644 --- a/src/components/form/components/FormDropdown/FormDropdownControl.jsx +++ b/src/components/form/components/FormDropdown/FormDropdownControl.jsx @@ -1,8 +1,8 @@ -import styled, { css } from "styled-components"; +import styled from "styled-components"; import { Button } from "../../../Button"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; import { textTrimStyles } from "../../../Text/TextTrim"; const FormDropdownControl = styled(Button).attrs(() => ({ diff --git a/src/components/form/components/FormDropdown/FormDropdownMenu.jsx b/src/components/form/components/FormDropdown/FormDropdownMenu.jsx index 29732767..5ab987ea 100644 --- a/src/components/form/components/FormDropdown/FormDropdownMenu.jsx +++ b/src/components/form/components/FormDropdown/FormDropdownMenu.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const FormDropdownMenu = styled.ul` box-sizing: border-box; diff --git a/src/components/form/components/FormDropdown/FormDropdownOption.jsx b/src/components/form/components/FormDropdown/FormDropdownOption.jsx index 28d52b35..8a2f5f21 100644 --- a/src/components/form/components/FormDropdown/FormDropdownOption.jsx +++ b/src/components/form/components/FormDropdown/FormDropdownOption.jsx @@ -2,7 +2,7 @@ import styled, { css } from "styled-components"; import { textTrimStyles } from "../../../Text/TextTrim"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const FormDropdownOption = styled.li` ${textTrimStyles} diff --git a/src/components/form/components/FormDropdown/FormDropdownOptionSelectedIcon.jsx b/src/components/form/components/FormDropdown/FormDropdownOptionSelectedIcon.jsx index a85679a3..80e595de 100644 --- a/src/components/form/components/FormDropdown/FormDropdownOptionSelectedIcon.jsx +++ b/src/components/form/components/FormDropdown/FormDropdownOptionSelectedIcon.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { Check } from "../../../../assets/icons"; +import { Check } from "../../../icons"; const FormDropdownOptionSelectedIcon = styled(Check)` position: absolute; diff --git a/src/components/form/components/FormDropdown/index.jsx b/src/components/form/components/FormDropdown/index.jsx index 93d3b872..5b6ee871 100644 --- a/src/components/form/components/FormDropdown/index.jsx +++ b/src/components/form/components/FormDropdown/index.jsx @@ -13,7 +13,7 @@ import { FormDropdownInputWrapper } from "./FormDropdownInputWrapper"; import { FormDropdownInput } from "./FormDropdownInput"; import { FormDropdownResetButton } from "./FormDropdownResetButton"; import { FormDropdownOptionSelectedIcon } from "./FormDropdownOptionSelectedIcon"; -import { Times } from "../../../../assets/icons"; +import { Times } from "../../../icons"; import { searchInList, capitalize } from "../../../../utils/helpers"; import { identity, property as prop, isEqual, get } from "lodash-es"; diff --git a/src/components/form/components/FormField/FormFieldIcon.jsx b/src/components/form/components/FormField/FormFieldIcon.jsx index 6716587c..ac690770 100644 --- a/src/components/form/components/FormField/FormFieldIcon.jsx +++ b/src/components/form/components/FormField/FormFieldIcon.jsx @@ -1,8 +1,8 @@ import styled from "styled-components"; -import { InfoCircle } from "../../../../assets/icons"; +import { InfoCircle } from "../../../icons"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const FormFieldIcon = styled(InfoCircle)` align-self: flex-start; diff --git a/src/components/form/components/FormField/FormFieldTag.jsx b/src/components/form/components/FormField/FormFieldTag.jsx index d18192d8..21e53fab 100644 --- a/src/components/form/components/FormField/FormFieldTag.jsx +++ b/src/components/form/components/FormField/FormFieldTag.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const FormFieldTag = styled.span` display: inline-block; diff --git a/src/components/form/components/FormInput/StyledFormInput.jsx b/src/components/form/components/FormInput/StyledFormInput.jsx index 93d41ac7..bdc595f9 100644 --- a/src/components/form/components/FormInput/StyledFormInput.jsx +++ b/src/components/form/components/FormInput/StyledFormInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const StyledFormInput = styled.input` box-sizing: border-box; diff --git a/src/components/form/components/FormLabel/FormLabelTitle.jsx b/src/components/form/components/FormLabel/FormLabelTitle.jsx index 4b5560c4..dfefb562 100644 --- a/src/components/form/components/FormLabel/FormLabelTitle.jsx +++ b/src/components/form/components/FormLabel/FormLabelTitle.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const FormLabelTitle = styled.span` display: flex; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx index becf0470..bbd43c56 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; const FormMultiSelectInput = styled.input` display: inline-block; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx index e9a5ae3e..e6e2e12f 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/FormMultiSelectOption.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; function getStyles({ isHighlighted }) { if (isHighlighted) { diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx index 60c1ab5b..f23fdffa 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectMenu/index.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import { colors } from "../../../../../themes/colors"; +import { colors } from "../../../../../style"; const FormMultiSelectMenu = styled.ul` list-style-type: none; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx index 42ccd1ba..5736bb88 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/FormMultiSelectTagsItemTitle.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; import { textTrimStyles } from "../../../../../Text/TextTrim"; -import { colors } from "../../../../../../themes/colors"; +import { colors } from "../../../../../../style"; const FormMultiSelectTagsItemTitle = styled.span` font-size: 12px; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx index 2f9ca5e0..fbfdbbf0 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/StyledFormMultiSelectTagsItem.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../../../themes/colors"; +import { colors } from "../../../../../../style"; const StyledFormMultiSelectTagsItem = styled.li` box-sizing: border-box; diff --git a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx index ba887ece..2ec0f70c 100644 --- a/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx +++ b/src/components/form/components/FormMultiSelect/FormMultiSelectTags/FormMultiSelectTagsItem/index.jsx @@ -4,7 +4,7 @@ import PropTypes from "prop-types"; import { StyledFormMultiSelectTagsItem } from "./StyledFormMultiSelectTagsItem"; import { FormMultiSelectTagsItemTitle } from "./FormMultiSelectTagsItemTitle"; import { FormMultiSelectTagsItemRemoveButton } from "./FormMultiSelectTagsItemRemoveButton"; -import { TimesDelete } from "../../../../../../assets/icons"; +import { TimesDelete } from "../../../../../icons"; function FormMultiSelectTagsItem({ onCrossClick, diff --git a/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx b/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx index 889d2e69..1dee87cf 100644 --- a/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx +++ b/src/components/form/components/FormMultiSelect/StyledFormMultiSelect.jsx @@ -1,5 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/index"; + +import { colors } from "../../../../style"; const StyledFormMultiSelect = styled.div` position: relative; diff --git a/src/components/form/components/FormSwitch/FormSwitchLabel.jsx b/src/components/form/components/FormSwitch/FormSwitchLabel.jsx index 65ee57f1..35d87296 100644 --- a/src/components/form/components/FormSwitch/FormSwitchLabel.jsx +++ b/src/components/form/components/FormSwitch/FormSwitchLabel.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "../../../../themes/colors"; +import { colors } from "../../../../style"; import { widths } from "./StyledFormSwitch"; const circleSizes = { diff --git a/src/assets/icons/Asterisk.jsx b/src/components/icons/Asterisk.jsx similarity index 88% rename from src/assets/icons/Asterisk.jsx rename to src/components/icons/Asterisk.jsx index c89f8d50..b6cf4ccb 100644 --- a/src/assets/icons/Asterisk.jsx +++ b/src/components/icons/Asterisk.jsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; import { Asterisk } from "@styled-icons/fa-solid/Asterisk"; -import { spin } from "../animations"; +import { spin } from "../../style"; const AsteriskIcon = styled(Asterisk)` animation: ${({ isSpin }) => diff --git a/src/assets/icons/Check.jsx b/src/components/icons/Check.jsx similarity index 100% rename from src/assets/icons/Check.jsx rename to src/components/icons/Check.jsx diff --git a/src/assets/icons/InfoCircleColor.jsx b/src/components/icons/InfoCircleColor.jsx similarity index 100% rename from src/assets/icons/InfoCircleColor.jsx rename to src/components/icons/InfoCircleColor.jsx diff --git a/src/assets/icons/Pencil.jsx b/src/components/icons/Pencil.jsx similarity index 100% rename from src/assets/icons/Pencil.jsx rename to src/components/icons/Pencil.jsx diff --git a/src/assets/icons/Search.jsx b/src/components/icons/Search.jsx similarity index 100% rename from src/assets/icons/Search.jsx rename to src/components/icons/Search.jsx diff --git a/src/assets/icons/Sync.jsx b/src/components/icons/Sync.jsx similarity index 87% rename from src/assets/icons/Sync.jsx rename to src/components/icons/Sync.jsx index 39401258..6974033d 100644 --- a/src/assets/icons/Sync.jsx +++ b/src/components/icons/Sync.jsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; import { SyncAlt } from "@styled-icons/fa-solid/SyncAlt"; -import { spin } from "../animations"; +import { spin } from "../../style"; const SyncIcon = styled(SyncAlt)` animation: ${({ isSpin }) => diff --git a/src/assets/icons/TimesDelete.jsx b/src/components/icons/TimesDelete.jsx similarity index 100% rename from src/assets/icons/TimesDelete.jsx rename to src/components/icons/TimesDelete.jsx diff --git a/src/assets/icons/TimesDeleteBold.jsx b/src/components/icons/TimesDeleteBold.jsx similarity index 100% rename from src/assets/icons/TimesDeleteBold.jsx rename to src/components/icons/TimesDeleteBold.jsx diff --git a/src/assets/icons/index.js b/src/components/icons/index.js similarity index 100% rename from src/assets/icons/index.js rename to src/components/icons/index.js diff --git a/src/components/index.js b/src/components/index.js index 01dca50e..39e011b9 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -42,7 +42,6 @@ export * from "./Slider"; export * from "./Spinner"; export * from "./Text"; export * from "./Tooltip"; -export * from "./WithCurrentOpenItem"; export * from "./Tabs"; export * from "./Stepper"; export * from "./Value"; diff --git a/src/components/notification/NotificationContent.jsx b/src/components/notification/NotificationContent.jsx index fc044c29..09d4df53 100644 --- a/src/components/notification/NotificationContent.jsx +++ b/src/components/notification/NotificationContent.jsx @@ -3,7 +3,7 @@ import PropTypes from "prop-types"; import StyledNotificationContent from "./StyledNotificationContent"; -import { Bolt } from "../../assets/icons"; +import { Bolt } from "../icons"; NotificationContent.propTypes = { message: PropTypes.string.isRequired, diff --git a/src/components/notification/index.jsx b/src/components/notification/index.jsx index 8bb04389..07756d40 100644 --- a/src/components/notification/index.jsx +++ b/src/components/notification/index.jsx @@ -4,7 +4,7 @@ import React from "react"; import NotificationContent from "./NotificationContent"; import NotificationCloseButton from "./NotificationCloseButton"; -import { Times } from "../../assets/icons"; +import { Times } from "../icons"; import "./style.css"; diff --git a/src/index.js b/src/index.js index ef8e0203..d18af30a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ export * from "./assets"; -export * from "./themes"; -export * from "./hooks"; export * from "./components"; +export * from "./hooks"; +export * from "./style"; export * from "./utils"; diff --git a/src/locales/en.js b/src/locales/en.js deleted file mode 100644 index e2ebf59c..00000000 --- a/src/locales/en.js +++ /dev/null @@ -1,7 +0,0 @@ -export const en = { - translation: { - Apply: "Apply", - Clear: "Clear", - Reset: "Reset", - }, -}; diff --git a/src/locales/index.js b/src/locales/index.js deleted file mode 100644 index 6a8fd3c8..00000000 --- a/src/locales/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import { en } from "./en"; -import { ru } from "./ru"; - -const locales = { - en, - ru, -}; - -export default locales; diff --git a/src/locales/ru.js b/src/locales/ru.js deleted file mode 100644 index 6ac2c1aa..00000000 --- a/src/locales/ru.js +++ /dev/null @@ -1,7 +0,0 @@ -export const ru = { - translation: { - Apply: "Применить", - Clear: "Очистить", - Reset: "Сбросить", - }, -}; diff --git a/src/assets/animations/fade-enter.jsx b/src/style/animations/fade-enter.jsx similarity index 100% rename from src/assets/animations/fade-enter.jsx rename to src/style/animations/fade-enter.jsx diff --git a/src/assets/animations/fade-exit.jsx b/src/style/animations/fade-exit.jsx similarity index 100% rename from src/assets/animations/fade-exit.jsx rename to src/style/animations/fade-exit.jsx diff --git a/src/assets/animations/index.js b/src/style/animations/index.js similarity index 100% rename from src/assets/animations/index.js rename to src/style/animations/index.js diff --git a/src/assets/animations/spin.jsx b/src/style/animations/spin.jsx similarity index 100% rename from src/assets/animations/spin.jsx rename to src/style/animations/spin.jsx diff --git a/src/themes/colors.js b/src/style/color/colors.js similarity index 96% rename from src/themes/colors.js rename to src/style/color/colors.js index e12c1b66..e9322774 100644 --- a/src/themes/colors.js +++ b/src/style/color/colors.js @@ -1,4 +1,4 @@ -export const colors = { +const colors = { whiteSimple: "#fff", whiteGray: "#f9f9f9", whiteGrayLight: "#f7f8f9", @@ -60,4 +60,4 @@ export const colors = { green: "#008000", }; -export default colors; +export { colors }; diff --git a/src/themes/index.js b/src/style/color/index.js similarity index 100% rename from src/themes/index.js rename to src/style/color/index.js diff --git a/src/resources/styles/fonts.css b/src/style/font/fonts.css similarity index 62% rename from src/resources/styles/fonts.css rename to src/style/font/fonts.css index bd021549..26ba7cfd 100644 --- a/src/resources/styles/fonts.css +++ b/src/style/font/fonts.css @@ -1,27 +1,27 @@ @font-face { font-family: "Open Sans"; - src: url(../fonts/open-sans/OpenSans-Regular.ttf); + src: url(./fonts/open-sans/OpenSans-Regular.ttf); font-weight: normal; font-style: normal; } @font-face { font-family: "Open Sans"; - src: url(../fonts/open-sans/OpenSans-Light.ttf); + src: url(./fonts/open-sans/OpenSans-Light.ttf); font-weight: 300; font-style: normal; } @font-face { font-family: "Open Sans"; - src: url(../fonts/open-sans/OpenSans-SemiBold.ttf); + src: url(./fonts/open-sans/OpenSans-SemiBold.ttf); font-weight: 600; font-style: normal; } @font-face { font-family: "Open Sans"; - src: url(../fonts/open-sans/OpenSans-Bold.ttf); + src: url(./fonts/open-sans/OpenSans-Bold.ttf); font-weight: 700; font-style: normal; } diff --git a/src/resources/fonts/open-sans/LICENSE.txt b/src/style/font/fonts/open-sans/LICENSE.txt similarity index 100% rename from src/resources/fonts/open-sans/LICENSE.txt rename to src/style/font/fonts/open-sans/LICENSE.txt diff --git a/src/resources/fonts/open-sans/OpenSans-Bold.ttf b/src/style/font/fonts/open-sans/OpenSans-Bold.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-Bold.ttf rename to src/style/font/fonts/open-sans/OpenSans-Bold.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-BoldItalic.ttf b/src/style/font/fonts/open-sans/OpenSans-BoldItalic.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-BoldItalic.ttf rename to src/style/font/fonts/open-sans/OpenSans-BoldItalic.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-ExtraBold.ttf b/src/style/font/fonts/open-sans/OpenSans-ExtraBold.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-ExtraBold.ttf rename to src/style/font/fonts/open-sans/OpenSans-ExtraBold.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf b/src/style/font/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf rename to src/style/font/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-Italic.ttf b/src/style/font/fonts/open-sans/OpenSans-Italic.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-Italic.ttf rename to src/style/font/fonts/open-sans/OpenSans-Italic.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-Light.ttf b/src/style/font/fonts/open-sans/OpenSans-Light.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-Light.ttf rename to src/style/font/fonts/open-sans/OpenSans-Light.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-LightItalic.ttf b/src/style/font/fonts/open-sans/OpenSans-LightItalic.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-LightItalic.ttf rename to src/style/font/fonts/open-sans/OpenSans-LightItalic.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-Regular.ttf b/src/style/font/fonts/open-sans/OpenSans-Regular.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-Regular.ttf rename to src/style/font/fonts/open-sans/OpenSans-Regular.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-SemiBold.ttf b/src/style/font/fonts/open-sans/OpenSans-SemiBold.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-SemiBold.ttf rename to src/style/font/fonts/open-sans/OpenSans-SemiBold.ttf diff --git a/src/resources/fonts/open-sans/OpenSans-SemiBoldItalic.ttf b/src/style/font/fonts/open-sans/OpenSans-SemiBoldItalic.ttf similarity index 100% rename from src/resources/fonts/open-sans/OpenSans-SemiBoldItalic.ttf rename to src/style/font/fonts/open-sans/OpenSans-SemiBoldItalic.ttf diff --git a/src/style/font/index.js b/src/style/font/index.js new file mode 100644 index 00000000..836d9637 --- /dev/null +++ b/src/style/font/index.js @@ -0,0 +1 @@ +export { default as fonts } from "./fonts.css"; diff --git a/src/style/index.js b/src/style/index.js new file mode 100644 index 00000000..66419133 --- /dev/null +++ b/src/style/index.js @@ -0,0 +1,3 @@ +export * from "./animations"; +export * from "./color"; +export * from "./font"; diff --git a/src/utils/cookie-service.js b/src/utils/cookie-service.js deleted file mode 100644 index 17bd9aaa..00000000 --- a/src/utils/cookie-service.js +++ /dev/null @@ -1,22 +0,0 @@ -import { cookie } from "browser-cookie-lite"; - -import { SECURE } from "./storage"; - -export function removeCookie({ name, path, domain, secure = SECURE }) { - return cookie(name, "", -1, path, domain, secure); -} - -export function saveCookie({ - name, - value, - ttl, - path, - domain, - secure = SECURE, -}) { - return cookie(name, JSON.stringify(value), ttl, path, domain, secure); -} - -export function getCookie(name) { - return JSON.parse(cookie(name) || "{}"); -} diff --git a/src/utils/index.js b/src/utils/index.js index c516aaf3..d4e09d7b 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,3 +1 @@ -export * from "./cookie-service"; export * from "./helpers"; -export * from "./storage"; diff --git a/src/utils/storage.js b/src/utils/storage.js deleted file mode 100644 index 457e1968..00000000 --- a/src/utils/storage.js +++ /dev/null @@ -1,52 +0,0 @@ -import { cookie } from "browser-cookie-lite"; - -let storage = window.localStorage; - -const NAME = "localStorageFallback"; -const TTL = 365 * 24 * 60 * 60; -const PATH = "/"; -const DOMAIN = null; - -export const SECURE = window.location.protocol.startsWith("https"); - -try { - if (!window.localStorage) { - throw new Error("localStorage not supported"); - } - const keyProbe = "___test-local-stoage___"; - storage.setItem(keyProbe, keyProbe); - storage.removeItem(keyProbe); -} catch (e) { - storage = { - getItem: key => { - const data = get(); - return data[key]; - }, - - setItem: (key, item) => { - const data = get(); - data[key] = item.toString(); - save(data); - }, - - removeItem: key => { - const data = get(); - delete data[key]; - save(data); - }, - - clear: () => { - cookie(NAME, "", -1); - }, - }; -} - -function get() { - return JSON.parse(cookie(NAME) || "{}"); -} - -function save(data) { - cookie(NAME, JSON.stringify(data), TTL, PATH, DOMAIN, SECURE); -} - -export default storage; From a5ef1c976c2417f4818f912b54f174eef1602bf3 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 11:18:59 +0300 Subject: [PATCH 059/175] icons: size proptype was change to string,number --- src/components/icons/Check.jsx | 2 +- src/components/icons/InfoCircleColor.jsx | 2 +- src/components/icons/Pencil.jsx | 2 +- src/components/icons/Search.jsx | 2 +- src/components/icons/TimesDelete.jsx | 2 +- src/components/icons/TimesDeleteBold.jsx | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/icons/Check.jsx b/src/components/icons/Check.jsx index 4158b2e7..3b289088 100644 --- a/src/components/icons/Check.jsx +++ b/src/components/icons/Check.jsx @@ -22,7 +22,7 @@ function Check({ size, className }) { } Check.propTypes = { - size: PropTypes.number.isRequired, + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, className: PropTypes.string, }; diff --git a/src/components/icons/InfoCircleColor.jsx b/src/components/icons/InfoCircleColor.jsx index 971ab0ce..5bddc798 100644 --- a/src/components/icons/InfoCircleColor.jsx +++ b/src/components/icons/InfoCircleColor.jsx @@ -26,7 +26,7 @@ function InfoCircleColor({ size, className }) { } InfoCircleColor.propTypes = { - size: PropTypes.number.isRequired, + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, className: PropTypes.string, }; diff --git a/src/components/icons/Pencil.jsx b/src/components/icons/Pencil.jsx index 9576306f..33985fcb 100644 --- a/src/components/icons/Pencil.jsx +++ b/src/components/icons/Pencil.jsx @@ -24,7 +24,7 @@ function Pencil({ size, className }) { } Pencil.propTypes = { - size: PropTypes.number.isRequired, + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, className: PropTypes.string, }; diff --git a/src/components/icons/Search.jsx b/src/components/icons/Search.jsx index 10be75dd..7c62f0a8 100644 --- a/src/components/icons/Search.jsx +++ b/src/components/icons/Search.jsx @@ -27,7 +27,7 @@ function Search({ size, className }) { } Search.propTypes = { - size: PropTypes.number.isRequired, + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, className: PropTypes.string, }; diff --git a/src/components/icons/TimesDelete.jsx b/src/components/icons/TimesDelete.jsx index c891e6c2..3cd1bf80 100644 --- a/src/components/icons/TimesDelete.jsx +++ b/src/components/icons/TimesDelete.jsx @@ -22,7 +22,7 @@ function TimesDelete({ size, className }) { } TimesDelete.propTypes = { - size: PropTypes.number.isRequired, + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, className: PropTypes.string, }; diff --git a/src/components/icons/TimesDeleteBold.jsx b/src/components/icons/TimesDeleteBold.jsx index 7d72de28..45a77770 100644 --- a/src/components/icons/TimesDeleteBold.jsx +++ b/src/components/icons/TimesDeleteBold.jsx @@ -22,7 +22,7 @@ function TimesDeleteBold({ size, className }) { } TimesDeleteBold.propTypes = { - size: PropTypes.number.isRequired, + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, className: PropTypes.string, }; From 88909ccf0361276c7b16b6d9bb2d05d44b46ae07 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 11:23:45 +0300 Subject: [PATCH 060/175] PopupConfirm: onConfim prop type was fixed --- src/components/PopupConfirm/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PopupConfirm/index.jsx b/src/components/PopupConfirm/index.jsx index a56432d1..a1771e9c 100644 --- a/src/components/PopupConfirm/index.jsx +++ b/src/components/PopupConfirm/index.jsx @@ -59,7 +59,7 @@ PopupConfirm.propTypes = { title: PropTypes.string, okText: PropTypes.string, cancelText: PropTypes.string, - onConfirm: PropTypes.string.isRequired, + onConfirm: PropTypes.func.isRequired, portalRef: PropTypes.object, }; From c5222fd6bcd93a96b4e0283c319dba889ff66b83 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 11:25:52 +0300 Subject: [PATCH 061/175] PersonsGroupPerson: isPersonsAddingToGroup prop was fixed --- src/components/PersonsGroup/PersonsGroupPerson/index.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx index 8b611e7a..df8292bb 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx @@ -24,7 +24,7 @@ function PersonsGroupPerson({ isActive, mode, onChange, - isPersonsAddingToList, + isPersonsAddingToGroup, isPersonsDeletingFromGroup, className, "data-testid": testId, @@ -88,7 +88,7 @@ function PersonsGroupPerson({ data-testid="persons-group-add-person" onClick={handleAddButtonClick} isHidden={false} - isDisabled={isPersonsAddingToList} + isDisabled={isPersonsAddingToGroup} > @@ -123,8 +123,8 @@ PersonsGroupPerson.propTypes = { isActive: PropTypes.bool, onChange: PropTypes.func.isRequired, mode: PropTypes.string, - isPersonsDeletingFromGroup: PropTypes.bool.isRequired, - isPersonsAddingToList: PropTypes.bool.isRequired, + isPersonsAddingToGroup: PropTypes.bool, + isPersonsDeletingFromGroup: PropTypes.bool, className: PropTypes.string, "data-testid": PropTypes.string, title: PropTypes.string, From 9578f95526a296264843721fa5e7fbe4b4b4ea13 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 11:27:06 +0300 Subject: [PATCH 062/175] DeleteSureButton: color prop type was fixed --- src/components/DeleteSureButton/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/DeleteSureButton/index.jsx b/src/components/DeleteSureButton/index.jsx index 61794202..7fff46ad 100644 --- a/src/components/DeleteSureButton/index.jsx +++ b/src/components/DeleteSureButton/index.jsx @@ -61,7 +61,7 @@ DeleteSureButton.defaultProps = { DeleteSureButton.propTypes = { onDelete: PropTypes.func.isRequired, - color: colors.string, + color: PropTypes.string, size: PropTypes.string, isDisabled: PropTypes.bool, deleteColor: PropTypes.string, From fc2a00721529660307b5b7a426709d38b4757db8 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 11:55:05 +0300 Subject: [PATCH 063/175] I18nProvider initial empty resources param was added --- src/components/I18nProvider.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/I18nProvider.js b/src/components/I18nProvider.js index 0ab545c4..70dd9e45 100644 --- a/src/components/I18nProvider.js +++ b/src/components/I18nProvider.js @@ -6,6 +6,7 @@ import { I18nextProvider } from "react-i18next"; function I18nProvider({ children, i18n }) { i18n.init({ + resources: {}, fallbackLng: "en", defaultNS: "translation", interpolation: { From 8d8b0a486b872cee612865043cad28c01951f7a3 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Sat, 4 Apr 2020 14:07:19 +0300 Subject: [PATCH 064/175] ListStickyHeader: component was added --- .../ListLayout/ListLayoutSearch.jsx | 4 +- src/components/ListLayout/ListLayoutTop.jsx | 12 +++- src/components/ListLayout/index.jsx | 2 +- .../ListStickyHeaderFixedBackground.jsx | 15 ++++ .../ListStickyHeaderInner.jsx | 7 ++ .../StyledListStickyHeader.jsx | 9 +++ .../ListStickyHeader/hooks/index.js | 1 + .../hooks/use-short-sticky-header.js | 28 ++++++++ src/components/ListStickyHeader/index.jsx | 71 +++++++++++++++++++ src/hooks/index.js | 1 + src/hooks/use-scroll-direction.js | 30 ++++++++ 11 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx create mode 100644 src/components/ListStickyHeader/ListStickyHeaderInner.jsx create mode 100644 src/components/ListStickyHeader/StyledListStickyHeader.jsx create mode 100644 src/components/ListStickyHeader/hooks/index.js create mode 100644 src/components/ListStickyHeader/hooks/use-short-sticky-header.js create mode 100644 src/components/ListStickyHeader/index.jsx create mode 100644 src/hooks/use-scroll-direction.js diff --git a/src/components/ListLayout/ListLayoutSearch.jsx b/src/components/ListLayout/ListLayoutSearch.jsx index 77287c7e..82bf803b 100644 --- a/src/components/ListLayout/ListLayoutSearch.jsx +++ b/src/components/ListLayout/ListLayoutSearch.jsx @@ -1,5 +1,3 @@ import styled from "styled-components"; -export const ListLayoutSearch = styled.div` - margin-bottom: 24px; -`; +export const ListLayoutSearch = styled.div``; diff --git a/src/components/ListLayout/ListLayoutTop.jsx b/src/components/ListLayout/ListLayoutTop.jsx index 469154fe..5dbd8c8a 100644 --- a/src/components/ListLayout/ListLayoutTop.jsx +++ b/src/components/ListLayout/ListLayoutTop.jsx @@ -1,7 +1,15 @@ import styled from "styled-components"; -const ListLayoutTop = styled.div` - margin-bottom: 24px; +import { ListStickyHeader } from "../ListStickyHeader"; + +import { colors } from "../../style"; + +const ListLayoutTop = styled(ListStickyHeader)` + padding-bottom: 24px; + padding-top: 24px; + /** хак, чтобы скрыть отступ страницы (RouteSectionHider) */ + margin-top: -24px; + background-color: ${colors.whiteSimple}; `; export { ListLayoutTop }; diff --git a/src/components/ListLayout/index.jsx b/src/components/ListLayout/index.jsx index 35c43ee3..6cbf3951 100644 --- a/src/components/ListLayout/index.jsx +++ b/src/components/ListLayout/index.jsx @@ -16,7 +16,7 @@ export function ListLayout({ title, buttons, search, actions, content }) { return ( {hasTop && ( - + {hasHeader && ( {title && {title}} diff --git a/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx b/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx new file mode 100644 index 00000000..28d30f1b --- /dev/null +++ b/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx @@ -0,0 +1,15 @@ +import styled from "styled-components"; + +import { colors } from "@identixone/ui-kit/src/style"; + +const ListStickyHeaderFixedBackground = styled.div` + position: fixed; + z-index: 1; + width: 100%; + background-color: ${colors.whiteSimple}; + left: 0; + top: 0; + transition: transform 200ms ease-in; +`; + +export { ListStickyHeaderFixedBackground }; diff --git a/src/components/ListStickyHeader/ListStickyHeaderInner.jsx b/src/components/ListStickyHeader/ListStickyHeaderInner.jsx new file mode 100644 index 00000000..d75c3dd1 --- /dev/null +++ b/src/components/ListStickyHeader/ListStickyHeaderInner.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const ListStickyHeaderInner = styled.div` + width: 940px; +`; + +export { ListStickyHeaderInner }; diff --git a/src/components/ListStickyHeader/StyledListStickyHeader.jsx b/src/components/ListStickyHeader/StyledListStickyHeader.jsx new file mode 100644 index 00000000..a5cf2fb3 --- /dev/null +++ b/src/components/ListStickyHeader/StyledListStickyHeader.jsx @@ -0,0 +1,9 @@ +import styled from "styled-components"; +import StickyBox from "react-sticky-box"; + +const StyledListStickyHeader = styled(StickyBox)` + z-index: 10; + transition: transform 200ms ease-in; +`; + +export { StyledListStickyHeader }; diff --git a/src/components/ListStickyHeader/hooks/index.js b/src/components/ListStickyHeader/hooks/index.js new file mode 100644 index 00000000..6e7ce867 --- /dev/null +++ b/src/components/ListStickyHeader/hooks/index.js @@ -0,0 +1 @@ +export * from "./use-short-sticky-header"; diff --git a/src/components/ListStickyHeader/hooks/use-short-sticky-header.js b/src/components/ListStickyHeader/hooks/use-short-sticky-header.js new file mode 100644 index 00000000..b7cb0210 --- /dev/null +++ b/src/components/ListStickyHeader/hooks/use-short-sticky-header.js @@ -0,0 +1,28 @@ +import { useEffect } from "react"; +import { useScrollDirection } from "../../../hooks"; + +function useShortStickyHeader({ headerHeight, headerStickyOffset }) { + const { directionY, y } = useScrollDirection(); + const isHeaderFull = directionY === "top" && y > 600; + const isHeaderShort = + directionY === "bottom" && y > headerHeight + headerStickyOffset; + const isSticky = y > headerHeight; + + useEffect(() => { + const appHeader = document.getElementById("sticky-header"); + if (!appHeader) { + return; + } + + const newTranlateY = isHeaderFull ? 0 : "-100%"; + appHeader.style.transform = `translateY(${newTranlateY})`; + + return () => { + appHeader.style.transform = null; + }; + }, [directionY]); + + return { isHeaderFull, isHeaderShort, isSticky }; +} + +export { useShortStickyHeader }; diff --git a/src/components/ListStickyHeader/index.jsx b/src/components/ListStickyHeader/index.jsx new file mode 100644 index 00000000..b502ed83 --- /dev/null +++ b/src/components/ListStickyHeader/index.jsx @@ -0,0 +1,71 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { useRef } from "react"; +import { useShortStickyHeader } from "./hooks"; + +import { StyledListStickyHeader } from "./StyledListStickyHeader"; +import { ListStickyHeaderInner } from "./ListStickyHeaderInner"; +import { ListStickyHeaderFixedBackground } from "./ListStickyHeaderFixedBackground"; + +function ListStickyHeader({ + children, + headerHeight, + headerStickyOffset, + listHeaderHeightShort, + className, +}) { + const headerElRef = useRef(null); + const { isHeaderFull, isSticky, isHeaderShort } = useShortStickyHeader({ + headerHeight, + headerStickyOffset, + }); + + return ( + <> + + + {typeof children === "function" + ? children({ isHeaderShort, isHeaderFull, isSticky }) + : children} + + + {/* Элемент для того, чтобы перекрывать подложу новых энтрисов */} + {isSticky && headerElRef.current && ( + + )} + + ); +} + +ListStickyHeader.propTypes = { + children: PropTypes.oneOfType([ + PropTypes.func, + PropTypes.node, + PropTypes.array, + ]).isRequired, + headerHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) + .isRequired, + headerStickyOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) + .isRequired, + listHeaderHeightShort: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.string, + ]).isRequired, + className: PropTypes.string, +}; + +export { ListStickyHeader }; diff --git a/src/hooks/index.js b/src/hooks/index.js index 8c58af47..9e8e7c2c 100644 --- a/src/hooks/index.js +++ b/src/hooks/index.js @@ -6,4 +6,5 @@ export * from "./use-popup"; export * from "./use-position-popup"; export * from "./use-infinite-menu"; export * from "./use-redirect-on-error"; +export * from "./use-scroll-direction"; export { useTranslation, withTranslation } from "react-i18next"; diff --git a/src/hooks/use-scroll-direction.js b/src/hooks/use-scroll-direction.js new file mode 100644 index 00000000..4a18efb9 --- /dev/null +++ b/src/hooks/use-scroll-direction.js @@ -0,0 +1,30 @@ +import { useState, useEffect, useRef } from "react"; +import { useWindowScroll } from "react-use"; + +import { throttle } from "lodash-es"; + +function useScrollDirection() { + const { y } = useWindowScroll(); + const prevY = useRef(y); + const [directionY, setDirectionY] = useState(null); + function handleScroll(prevY, y) { + if (prevY !== undefined) { + setDirectionY(prevY < y ? "bottom" : "top"); + } + } + const throttledScroll = useRef(throttle(handleScroll, 300)); + + useEffect(() => { + throttledScroll.current(prevY.current, y); + if (Math.abs(prevY.current - y) > 50) { + prevY.current = y; + } + }, [y]); + + return { + y, + directionY, + }; +} + +export { useScrollDirection }; From a6438c7a2373b233a95ff14887671fe026548747 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 6 Apr 2020 12:34:14 +0300 Subject: [PATCH 065/175] missed deps were added to package.json --- package-lock.json | 112 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 + 2 files changed, 114 insertions(+) diff --git a/package-lock.json b/package-lock.json index 9dfd473b..cbd57163 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5026,6 +5026,109 @@ } } }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, "babel-plugin-add-react-displayname": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", @@ -15719,6 +15822,15 @@ "throttle-debounce": "^2.1.0" } }, + "react-sticky-box": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/react-sticky-box/-/react-sticky-box-0.9.3.tgz", + "integrity": "sha512-Y/qO7vTqAvXuRR6G6ZCW4fX2Bz0GZRwiiLTVeZN5CVz9wzs37ev0Xj3KSKF/PzF0jifwATivI4t24qXG8rSz4Q==", + "requires": { + "@babel/runtime": "^7.1.5", + "resize-observer-polyfill": "^1.5.1" + } + }, "react-syntax-highlighter": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz", diff --git a/package.json b/package.json index 87a21dbf..ecc73e68 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "react-dropzone": "^10.2.2", "react-i18next": "^11.3.4", "react-qr-svg": "^2.2.1", + "react-sticky-box": "^0.9.3", "react-transition-group": "^4.3.0", "react-use": "^13.27.1", "react-useportal": "^1.0.13", @@ -88,6 +89,7 @@ "@testing-library/react": "^10.0.2", "babel-eslint": "^10.1.0", "babel-jest": "^25.2.4", + "babel-loader": "^8.1.0", "babel-plugin-dynamic-import-node": "^2.3.0", "better-npm-run": "^0.1.1", "eslint": "^6.8.0", From 7a32397be4c4fe4356ee5dc2bbf29a7c00816246 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 6 Apr 2020 12:36:04 +0300 Subject: [PATCH 066/175] some imports were fixed --- .../ListStickyHeader/ListStickyHeaderFixedBackground.jsx | 2 +- src/utils/helpers.js | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx b/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx index 28d30f1b..dfc1aa38 100644 --- a/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx +++ b/src/components/ListStickyHeader/ListStickyHeaderFixedBackground.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import { colors } from "@identixone/ui-kit/src/style"; +import { colors } from "../../style"; const ListStickyHeaderFixedBackground = styled.div` position: fixed; diff --git a/src/utils/helpers.js b/src/utils/helpers.js index 11defbf7..2745d45c 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -69,14 +69,6 @@ export function formatDate(date, format = "DD MMM YYYY, HH:mm:ss") { return dayjs(date).format(format); } -/** - * - * проверить и поменять название при использовании данного хелпера - */ -// export function formatDate(date) { -// return date.toISOString(); -// } - export function dateToIso(date) { return date.toISOString(); } From d0f580f0b0bdafb8433179789c56b14773bd0c6f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 6 Apr 2020 12:37:23 +0300 Subject: [PATCH 067/175] IdFormat, IdCopy: code reuse was added --- src/components/CopyItem/index.jsx | 6 ++- src/components/IdCopy/IdCopyIcon.jsx | 10 ---- src/components/IdCopy/StyledIdCopy.jsx | 7 --- src/components/IdCopy/index.jsx | 46 +++---------------- src/components/IdFormat/IdFormat.stories.js | 12 +++++ src/components/IdFormat/hooks/index.js | 1 + src/components/IdFormat/hooks/use-local-id.js | 13 ++++++ src/components/IdFormat/index.jsx | 23 +++------- 8 files changed, 44 insertions(+), 74 deletions(-) delete mode 100644 src/components/IdCopy/IdCopyIcon.jsx delete mode 100644 src/components/IdCopy/StyledIdCopy.jsx create mode 100644 src/components/IdFormat/IdFormat.stories.js create mode 100644 src/components/IdFormat/hooks/index.js create mode 100644 src/components/IdFormat/hooks/use-local-id.js diff --git a/src/components/CopyItem/index.jsx b/src/components/CopyItem/index.jsx index beda7458..85d016cc 100644 --- a/src/components/CopyItem/index.jsx +++ b/src/components/CopyItem/index.jsx @@ -8,13 +8,14 @@ import { useFlash } from "../Flash"; import { StyledCopyItem } from "./StyledCopyItem"; import { CopyItemIcon } from "./CopyItemIcon"; -function CopyItem({ children, className, "data-testid": testId }) { +function CopyItem({ children, value, className, "data-testid": testId }) { const { flash, isFlashing } = useFlash(); const [{ isCopyAvailable, isCopied }, copyToClipboard] = useCopyToClipboard(); function handleCopyClick(ev) { + const valueToCopy = value || children; ev.stopPropagation(); - copyToClipboard(children); + copyToClipboard(valueToCopy); } useEffect(() => { @@ -38,6 +39,7 @@ function CopyItem({ children, className, "data-testid": testId }) { CopyItem.propTypes = { children: PropTypes.string.isRequired, + value: PropTypes.string, className: PropTypes.string, "data-testid": PropTypes.string, }; diff --git a/src/components/IdCopy/IdCopyIcon.jsx b/src/components/IdCopy/IdCopyIcon.jsx deleted file mode 100644 index 60abf82d..00000000 --- a/src/components/IdCopy/IdCopyIcon.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import styled from "styled-components"; - -import { Clone } from "../icons"; -import { colors } from "../../style"; - -export const IdCopyIcon = styled(Clone)` - color: ${colors.darkBlack}; - opacity: 0.08; - margin-left: 6px; -`; diff --git a/src/components/IdCopy/StyledIdCopy.jsx b/src/components/IdCopy/StyledIdCopy.jsx deleted file mode 100644 index 85d38414..00000000 --- a/src/components/IdCopy/StyledIdCopy.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -import { Flash } from "../Flash"; - -export const StyledIdCopy = styled(Flash)` - cursor: pointer; -`; diff --git a/src/components/IdCopy/index.jsx b/src/components/IdCopy/index.jsx index bb444a66..2cbc5fb0 100644 --- a/src/components/IdCopy/index.jsx +++ b/src/components/IdCopy/index.jsx @@ -1,50 +1,18 @@ import React from "react"; -import PropTypes from "prop-types"; -import { useCopyToClipboard } from "../../hooks"; -import { useFlash } from "../Flash"; -import { useEffect } from "react"; +import { useLocalId } from "../IdFormat/hooks"; -import { StyledIdCopy } from "./StyledIdCopy"; -import { IdCopyIcon } from "./IdCopyIcon"; +import { CopyItem } from "../CopyItem"; import { Value } from "../Value"; -import { hasProperty } from "../../utils/helpers"; - -const getShortId = id => id.split("-")[4]; - -export function IdCopy(props) { - const hasIdInProps = hasProperty(props, "id"); - - const { children, id } = props; - - const localId = hasIdInProps ? id : children; - - const { flash, isFlashing } = useFlash(); - const [{ isCopyAvailable, isCopied }, copyToClipboard] = useCopyToClipboard(); - - function handleCopyClick(ev) { - ev.stopPropagation(); - copyToClipboard(localId); - } - - useEffect(() => { - if (isCopied) { - flash(); - } - }, [isCopied]); +function IdCopy(props) { + const { localId, shortLocalId } = useLocalId(props); return ( - - - {getShortId(localId)} - {isCopyAvailable && } - + + {shortLocalId} ); } -IdCopy.propTypes = { - id: PropTypes.string, - children: PropTypes.string, -}; +export { IdCopy }; diff --git a/src/components/IdFormat/IdFormat.stories.js b/src/components/IdFormat/IdFormat.stories.js new file mode 100644 index 00000000..d3151a21 --- /dev/null +++ b/src/components/IdFormat/IdFormat.stories.js @@ -0,0 +1,12 @@ +import React from "react"; +import { storiesOf } from "@storybook/react"; +import { text } from "@storybook/addon-knobs"; + +import { IdFormat } from "./index.jsx"; +import { personMock } from "../../../test/__mocks__"; + +storiesOf("IdFormat", module).add("default", () => { + const idxid = text("IdFormat text", personMock.idxid); + + return {idxid}; +}); diff --git a/src/components/IdFormat/hooks/index.js b/src/components/IdFormat/hooks/index.js new file mode 100644 index 00000000..38c0a9d4 --- /dev/null +++ b/src/components/IdFormat/hooks/index.js @@ -0,0 +1 @@ +export * from "./use-local-id"; diff --git a/src/components/IdFormat/hooks/use-local-id.js b/src/components/IdFormat/hooks/use-local-id.js new file mode 100644 index 00000000..8e4cbacd --- /dev/null +++ b/src/components/IdFormat/hooks/use-local-id.js @@ -0,0 +1,13 @@ +import { hasProperty } from "../../../utils/helpers"; + +const getShortId = id => id.split("-")[4]; + +function useLocalId(props) { + const { id, children } = props; + const hasIdInProps = hasProperty(props, "id"); + const localId = hasIdInProps ? id : children; + + return { localId, shortLocalId: getShortId(localId) }; +} + +export { useLocalId }; diff --git a/src/components/IdFormat/index.jsx b/src/components/IdFormat/index.jsx index ab981e99..899e71e4 100644 --- a/src/components/IdFormat/index.jsx +++ b/src/components/IdFormat/index.jsx @@ -1,26 +1,17 @@ import React from "react"; -import PropTypes from "prop-types"; -import { Value } from "../Value"; - -import { hasProperty } from "../../utils/helpers"; +import { useLocalId } from "./hooks"; -const getShortId = id => id.split("-")[4]; - -export function IdFormat(props) { - const hasIdInProps = hasProperty(props, "id"); +import { Value } from "../Value"; - const { id, children } = props; - const idToCompare = hasIdInProps ? id : children; +function IdFormat(props) { + const { localId, shortLocalId } = useLocalId(props); return ( - - {idToCompare ? getShortId(idToCompare) : null} + + {shortLocalId} ); } -IdFormat.propTypes = { - id: PropTypes.string, - children: PropTypes.oneOfType([PropTypes.array, PropTypes.node]), -}; +export { IdFormat }; From ad89061fb09d616819987dc096c55fc351a843a3 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 6 Apr 2020 14:13:23 +0300 Subject: [PATCH 068/175] Slider: components refactored --- .../Slider/{Slidee.js => SliderInner.jsx} | 6 ++-- src/components/Slider/StyledFrame.js | 9 ------ src/components/Slider/StyledSlider.jsx | 9 ++++++ src/components/Slider/index.jsx | 30 ++++++++----------- 4 files changed, 25 insertions(+), 29 deletions(-) rename src/components/Slider/{Slidee.js => SliderInner.jsx} (81%) delete mode 100644 src/components/Slider/StyledFrame.js create mode 100644 src/components/Slider/StyledSlider.jsx diff --git a/src/components/Slider/Slidee.js b/src/components/Slider/SliderInner.jsx similarity index 81% rename from src/components/Slider/Slidee.js rename to src/components/Slider/SliderInner.jsx index 7b2a6cc2..70e8716c 100644 --- a/src/components/Slider/Slidee.js +++ b/src/components/Slider/SliderInner.jsx @@ -12,13 +12,13 @@ function animation(props) { `; } -const Slidee = styled.ul` +const SliderInner = styled.ul` animation: ${props => animation(props)} 0.3s ease-in-out; height: 6500px; margin: 0; padding: 0; width: 100%; - list-style: none; + list-style-type: none; `; -export default Slidee; +export { SliderInner }; diff --git a/src/components/Slider/StyledFrame.js b/src/components/Slider/StyledFrame.js deleted file mode 100644 index 5e6b310c..00000000 --- a/src/components/Slider/StyledFrame.js +++ /dev/null @@ -1,9 +0,0 @@ -import styled from "styled-components"; - -const Frame = styled.div` - overflow: hidden; - height: ${props => props.height}px; - width: 100%; -`; - -export default Frame; diff --git a/src/components/Slider/StyledSlider.jsx b/src/components/Slider/StyledSlider.jsx new file mode 100644 index 00000000..c0fb090a --- /dev/null +++ b/src/components/Slider/StyledSlider.jsx @@ -0,0 +1,9 @@ +import styled from "styled-components"; + +const StyledSlider = styled.div` + overflow: hidden; + width: 100%; + height: ${props => (props.height !== undefined ? props.height : "auto")}px; +`; + +export { StyledSlider }; diff --git a/src/components/Slider/index.jsx b/src/components/Slider/index.jsx index 338831dc..9f523315 100644 --- a/src/components/Slider/index.jsx +++ b/src/components/Slider/index.jsx @@ -1,21 +1,19 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; -import Slidee from "./Slidee"; -import StyledFrame from "./StyledFrame"; + +import { StyledSlider } from "./StyledSlider"; +import { SliderInner } from "./SliderInner"; export class Slider extends Component { static propTypes = { height: PropTypes.number, totalItemHeight: PropTypes.number, - children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), - onUpdateSliderRef: PropTypes.func, - visibility: PropTypes.bool, + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]).isRequired, }; static defaultProps = { height: 516, totalItemHeight: 129, - visibility: false, }; state = { @@ -95,10 +93,11 @@ export class Slider extends Component { render() { const { translateFrom, translateTo, activeItemIndex } = this.state; - const { visibility, children } = this.props; + const { children } = this.props; if (!children) { - return ""; + return null; } + const cloneChildren = React.Children.map(children, (child, index) => { const childKey = child.key || index; @@ -110,12 +109,9 @@ export class Slider extends Component { }); }); - return visibility ? ( - - { - node && this.props.onUpdateSliderRef(node); - }} + return ( + + {cloneChildren} - - - ) : null; + + + ); } } From 1d33120e270216b1b6721202d4c2b5a52b8ba522 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 6 Apr 2020 17:30:25 +0300 Subject: [PATCH 069/175] EntryCardInfoItemValue: inner CopyItem styles now same as value --- src/components/CopyItem/index.jsx | 2 +- .../EntryCardInfoItem/EntryCardInfoItemValue.jsx | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/CopyItem/index.jsx b/src/components/CopyItem/index.jsx index 85d016cc..bb456a9a 100644 --- a/src/components/CopyItem/index.jsx +++ b/src/components/CopyItem/index.jsx @@ -48,4 +48,4 @@ CopyItem.defaultProps = { "data-testid": "copy-item", }; -export { CopyItem }; +export { CopyItem, StyledCopyItem }; diff --git a/src/components/Entries/components/EntryCardInfoItem/EntryCardInfoItemValue.jsx b/src/components/Entries/components/EntryCardInfoItem/EntryCardInfoItemValue.jsx index 7c109c27..0f8bb494 100644 --- a/src/components/Entries/components/EntryCardInfoItem/EntryCardInfoItemValue.jsx +++ b/src/components/Entries/components/EntryCardInfoItem/EntryCardInfoItemValue.jsx @@ -1,11 +1,19 @@ import styled from "styled-components"; import { ValueSpan } from "../../../ValueSpan"; +import { StyledCopyItem } from "../../../CopyItem"; const EntryCardInfoItemValue = styled(ValueSpan)` font-size: 14px; line-height: 18px; font-weight: 300; + + ${StyledCopyItem} { + font-size: 14px; + line-height: 18px; + font-weight: 300; + display: inline; + } `; export { EntryCardInfoItemValue }; From 8ccb23ec66a5c4420b10781535cbbba3ff6728d7 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 6 Apr 2020 18:46:36 +0300 Subject: [PATCH 070/175] useListFetch: fetchList immutability requirement comment was added --- src/hooks/use-list-fetch.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/hooks/use-list-fetch.js b/src/hooks/use-list-fetch.js index 42584ab7..31259c8b 100644 --- a/src/hooks/use-list-fetch.js +++ b/src/hooks/use-list-fetch.js @@ -26,6 +26,14 @@ function useFetchParams(initialFetchParams = {}) { } export function useListFetch({ + /** + * При использовании хука + * во избежание множественнго пересоздания debouncedFetchList + * следует всегда передавать ссылку на одну и ту же fetchList + * обновить fetchList следует только тогда, когда нужно + * обновить ее замыкание + * */ + fetchList, pagination: defaultPagination = { limit: 10, offset: 0 }, searchQuery: initialSearchQuery = "", From b46c3e5b3ac67bbf569183a5cb5b2908559f087b Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 12:30:02 +0300 Subject: [PATCH 071/175] multiple components prop types were fixed --- src/components/InfiniteMultiSelect/index.jsx | 2 +- src/components/InfinitePageList/index.jsx | 4 ++-- .../ListLayoutList/ListLayoutListItem/index.jsx | 2 +- src/components/ListLayout/ListLayoutList/index.jsx | 4 ++-- src/components/ListStickyHeader/index.jsx | 9 +++++---- src/components/form/components/FormDropdown/index.jsx | 9 ++++++++- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/components/InfiniteMultiSelect/index.jsx b/src/components/InfiniteMultiSelect/index.jsx index 0617b3e7..17e5de4a 100644 --- a/src/components/InfiniteMultiSelect/index.jsx +++ b/src/components/InfiniteMultiSelect/index.jsx @@ -50,7 +50,7 @@ InfiniteMultiSelect.Option = FormMultiSelect.Option; InfiniteMultiSelect.Menu = FormMultiSelect.Menu; InfiniteMultiSelect.propTypes = { - value: PropTypes.object.isRequired, + value: PropTypes.array.isRequired, onChange: PropTypes.func.isRequired, fetchOptions: PropTypes.func.isRequired, options: PropTypes.array.isRequired, diff --git a/src/components/InfinitePageList/index.jsx b/src/components/InfinitePageList/index.jsx index c5ea03dc..f3cff29b 100644 --- a/src/components/InfinitePageList/index.jsx +++ b/src/components/InfinitePageList/index.jsx @@ -39,9 +39,9 @@ function InfinitePageList({ } InfinitePageList.propTypes = { - children: PropTypes.oneOfType(PropTypes.node, PropTypes.array).isRequired, + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]).isRequired, hasNext: PropTypes.bool.isRequired, - lockScroll: PropTypes.bool.isRequired, + lockScroll: PropTypes.bool, changeOffset: PropTypes.func.isRequired, offset: PropTypes.number.isRequired, limit: PropTypes.number.isRequired, diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx index 29b894c0..f7223d9e 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx @@ -47,7 +47,7 @@ ListLayoutListItem.propTypes = { badges: PropTypes.element, to: PropTypes.string, "data-testid": PropTypes.string, - "data-id": PropTypes.string, + "data-id": PropTypes.oneOfType([PropTypes.number, PropTypes.string]), }; export { ListLayoutListItem, StyledListLayoutListItem }; diff --git a/src/components/ListLayout/ListLayoutList/index.jsx b/src/components/ListLayout/ListLayoutList/index.jsx index ce3d6a02..14ca26b9 100644 --- a/src/components/ListLayout/ListLayoutList/index.jsx +++ b/src/components/ListLayout/ListLayoutList/index.jsx @@ -57,10 +57,10 @@ function ListLayoutList({ ListLayoutList.propTypes = { listRef: PropTypes.object, items: PropTypes.array.isRequired, - renderItem: PropTypes.func, + renderItem: PropTypes.func.isRequired, noItemsText: PropTypes.string, hasNext: PropTypes.bool.isRequired, - pagination: PropTypes.object.isRequired, + pagination: PropTypes.object, columns: PropTypes.oneOf([1, 2]), className: PropTypes.string, isLoading: PropTypes.bool, diff --git a/src/components/ListStickyHeader/index.jsx b/src/components/ListStickyHeader/index.jsx index b502ed83..7d11a6a8 100644 --- a/src/components/ListStickyHeader/index.jsx +++ b/src/components/ListStickyHeader/index.jsx @@ -40,9 +40,10 @@ function ListStickyHeader({ {isSticky && headerElRef.current && ( @@ -64,7 +65,7 @@ ListStickyHeader.propTypes = { listHeaderHeightShort: PropTypes.oneOfType([ PropTypes.number, PropTypes.string, - ]).isRequired, + ]), className: PropTypes.string, }; diff --git a/src/components/form/components/FormDropdown/index.jsx b/src/components/form/components/FormDropdown/index.jsx index 5b6ee871..86565fc4 100644 --- a/src/components/form/components/FormDropdown/index.jsx +++ b/src/components/form/components/FormDropdown/index.jsx @@ -370,7 +370,14 @@ const optionShape = PropTypes.shape({ FormDropdown.propTypes = { name: PropTypes.string, - value: PropTypes.oneOfType([PropTypes.arrayOf(optionShape), optionShape]), + value: PropTypes.oneOfType([ + optionShape, + PropTypes.arrayOf(optionShape), + PropTypes.string, + PropTypes.arrayOf(PropTypes.string), + PropTypes.number, + PropTypes.arrayOf(PropTypes.number), + ]), withSearch: PropTypes.bool, multiple: PropTypes.bool, disabled: PropTypes.bool, From f37a5547f1192e228bb16603edf8051471dda776 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 13:01:45 +0300 Subject: [PATCH 072/175] multiple components prop types were fixed --- src/components/LazyImage/StyledLazyImage.jsx | 3 ++- .../ListLayout/ListLayoutList/ListLayoutListItem/index.jsx | 2 +- .../PersonCardDetailedDataItemPhoto/index.jsx | 2 +- .../PersonsGroupListPersonTypeSelect/index.jsx | 2 +- src/components/PersonsGroup/PersonsGroupListPerson/index.jsx | 4 ++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/LazyImage/StyledLazyImage.jsx b/src/components/LazyImage/StyledLazyImage.jsx index 09967230..8818d0e6 100644 --- a/src/components/LazyImage/StyledLazyImage.jsx +++ b/src/components/LazyImage/StyledLazyImage.jsx @@ -16,6 +16,7 @@ function getStyles({ isImageLoaded }) { `; } -export const StyledLazyImage = styled.div` +export const StyledLazyImage = styled.span` + display: block; ${getStyles} `; diff --git a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx index f7223d9e..2f572d16 100644 --- a/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx +++ b/src/components/ListLayout/ListLayoutList/ListLayoutListItem/index.jsx @@ -39,7 +39,7 @@ function ListLayoutListItem({ ListLayoutListItem.propTypes = { selectable: PropTypes.bool, - item: PropTypes.string, + item: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), onChange: PropTypes.func, onClick: PropTypes.func, selected: PropTypes.bool, diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemPhoto/index.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemPhoto/index.jsx index 4c160763..80148ba5 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemPhoto/index.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemPhoto/index.jsx @@ -20,5 +20,5 @@ export function PersonCardDetailedDataItemPhoto({ src, facesize }) { PersonCardDetailedDataItemPhoto.propTypes = { src: PropTypes.string, - facesize: PropTypes.number, + facesize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), }; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/index.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/index.jsx index 93cd7d87..4b046f50 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/index.jsx @@ -29,6 +29,6 @@ export function PersonsGroupListPersonTypeSelect({ onChange, type }) { } PersonsGroupListPersonTypeSelect.propTypes = { - type: PropTypes.string.isRequired, + type: PropTypes.object.isRequired, onChange: PropTypes.func.isRequired, }; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx index 51b88ee3..d2ad60d5 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx @@ -83,8 +83,8 @@ PersonsGroupListPerson.propTypes = { personIdxid: PropTypes.string.isRequired, fetchPerson: PropTypes.func.isRequired, isPersonFetching: PropTypes.bool.isRequired, - error: PropTypes.object.isRequired, - searchType: PropTypes.string, + error: PropTypes.object, + searchType: PropTypes.object, onSearchTypeChange: PropTypes.func, onRemove: PropTypes.func.isRequired, onAdd: PropTypes.func.isRequired, From 6ffdfa881cef143dcf36392f8de0b1ac9561e399 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 13:24:28 +0300 Subject: [PATCH 073/175] multiple misused default test id props were removed --- src/components/I18nProvider.js | 1 + src/components/InfiniteDropdown/index.jsx | 1 - src/components/InfiniteMultiSelect/index.jsx | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/I18nProvider.js b/src/components/I18nProvider.js index 70dd9e45..10a56067 100644 --- a/src/components/I18nProvider.js +++ b/src/components/I18nProvider.js @@ -7,6 +7,7 @@ import { I18nextProvider } from "react-i18next"; function I18nProvider({ children, i18n }) { i18n.init({ resources: {}, + lng: "en", fallbackLng: "en", defaultNS: "translation", interpolation: { diff --git a/src/components/InfiniteDropdown/index.jsx b/src/components/InfiniteDropdown/index.jsx index aaa72303..a082cb71 100644 --- a/src/components/InfiniteDropdown/index.jsx +++ b/src/components/InfiniteDropdown/index.jsx @@ -83,7 +83,6 @@ InfiniteDropdown.propTypes = { InfiniteDropdown.defaultProps = { multiple: false, limit: 10, - "data-testid": "infinite-dropdown", }; export { InfiniteDropdown }; diff --git a/src/components/InfiniteMultiSelect/index.jsx b/src/components/InfiniteMultiSelect/index.jsx index 17e5de4a..119d180d 100644 --- a/src/components/InfiniteMultiSelect/index.jsx +++ b/src/components/InfiniteMultiSelect/index.jsx @@ -65,7 +65,6 @@ InfiniteMultiSelect.propTypes = { InfiniteMultiSelect.defaultProps = { limit: 10, - "data-testid": "infinite-multi-select", }; export { InfiniteMultiSelect }; From dfe77b3e594c258215eff13c0f92c1eb05faee0c Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 14:22:24 +0300 Subject: [PATCH 074/175] icons: Gear icon was added --- src/components/icons/Gear.jsx | 37 +++++++++++++++++++++++++++++++++++ src/components/icons/index.js | 1 + 2 files changed, 38 insertions(+) create mode 100644 src/components/icons/Gear.jsx diff --git a/src/components/icons/Gear.jsx b/src/components/icons/Gear.jsx new file mode 100644 index 00000000..eabb01d7 --- /dev/null +++ b/src/components/icons/Gear.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function Gear({ size, className }) { + return ( + + + + + ); +} + +Gear.propTypes = { + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + className: PropTypes.string, +}; + +Gear.defaultProps = { + size: 10, +}; + +export default Gear; diff --git a/src/components/icons/index.js b/src/components/icons/index.js index 2175c3c7..71cf21dc 100644 --- a/src/components/icons/index.js +++ b/src/components/icons/index.js @@ -52,3 +52,4 @@ export { default as Check } from "./Check"; export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; export { default as Search } from "./Search"; +export { default as Gear } from "./Gear"; From f82ee57ce9e2640b5deda34d6dc7ca89b0d713cd Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 17:14:21 +0300 Subject: [PATCH 075/175] Spinner: StyledSpinner export was added --- src/components/Spinner/SpinnerIcon.jsx | 2 +- ...{StyledSpinnerContainer.jsx => StyledSpinner.jsx} | 4 ++-- src/components/Spinner/index.jsx | 12 +++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) rename src/components/Spinner/{StyledSpinnerContainer.jsx => StyledSpinner.jsx} (70%) diff --git a/src/components/Spinner/SpinnerIcon.jsx b/src/components/Spinner/SpinnerIcon.jsx index eb35ca72..f668a614 100644 --- a/src/components/Spinner/SpinnerIcon.jsx +++ b/src/components/Spinner/SpinnerIcon.jsx @@ -7,4 +7,4 @@ const SpinnerIcon = styled(Asterisk)` color: #3b4b5a; `; -export default SpinnerIcon; +export { SpinnerIcon }; diff --git a/src/components/Spinner/StyledSpinnerContainer.jsx b/src/components/Spinner/StyledSpinner.jsx similarity index 70% rename from src/components/Spinner/StyledSpinnerContainer.jsx rename to src/components/Spinner/StyledSpinner.jsx index 799c73bb..acfbe1ef 100644 --- a/src/components/Spinner/StyledSpinnerContainer.jsx +++ b/src/components/Spinner/StyledSpinner.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -const StyledSpinnerContainer = styled.div` +const StyledSpinner = styled.div` width: ${({ width }) => (width ? width + "px" : "100%")}; display: flex; min-height: 40px; @@ -8,4 +8,4 @@ const StyledSpinnerContainer = styled.div` align-content: center; `; -export default StyledSpinnerContainer; +export { StyledSpinner }; diff --git a/src/components/Spinner/index.jsx b/src/components/Spinner/index.jsx index 69571d22..270eda3e 100644 --- a/src/components/Spinner/index.jsx +++ b/src/components/Spinner/index.jsx @@ -1,14 +1,14 @@ import React from "react"; import PropTypes from "prop-types"; -import StyledSpinnerContainer from "./StyledSpinnerContainer"; -import SpinnerIcon from "./SpinnerIcon"; +import { StyledSpinner } from "./StyledSpinner"; +import { SpinnerIcon } from "./SpinnerIcon"; -export function Spinner({ width, className }) { +function Spinner({ width, className }) { return ( - + - + ); } @@ -16,3 +16,5 @@ Spinner.propTypes = { width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), className: PropTypes.string, }; + +export { Spinner, StyledSpinner }; From 54fdd6739a362982aa9cee72dc7a1f7994d3762f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 19:08:38 +0300 Subject: [PATCH 076/175] FormInput: FormInput.Password, FormInput.Number components were added --- src/components/form/components/FormInput/index.jsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/form/components/FormInput/index.jsx b/src/components/form/components/FormInput/index.jsx index 2170e1e6..0f31a550 100644 --- a/src/components/form/components/FormInput/index.jsx +++ b/src/components/form/components/FormInput/index.jsx @@ -30,4 +30,12 @@ FormInput.defaultProps = { type: "text", }; +FormInput.Password = function(props) { + return ; +}; + +FormInput.Number = function(props) { + return ; +}; + export { FormInput, StyledFormInput }; From 40b87e1b3e91c0e3d5d75da65f85d1007ab8e8b9 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 19:29:02 +0300 Subject: [PATCH 077/175] SegmentedTabs: component was added --- .../SegmentedTabs/SegmentedTabsPane/index.jsx | 23 +++++++++ .../SegmentedTabs/SegmentedTabsSpinner.jsx | 7 +++ .../StyledSegmentedTabsTabbar.jsx | 27 +++++++++++ .../SegmentedTabsTabbar/index.jsx | 45 +++++++++++++++++ src/components/SegmentedTabs/index.jsx | 48 +++++++++++++++++++ src/components/index.js | 1 + 6 files changed, 151 insertions(+) create mode 100644 src/components/SegmentedTabs/SegmentedTabsPane/index.jsx create mode 100644 src/components/SegmentedTabs/SegmentedTabsSpinner.jsx create mode 100644 src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx create mode 100644 src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx create mode 100644 src/components/SegmentedTabs/index.jsx diff --git a/src/components/SegmentedTabs/SegmentedTabsPane/index.jsx b/src/components/SegmentedTabs/SegmentedTabsPane/index.jsx new file mode 100644 index 00000000..9aa3f4ad --- /dev/null +++ b/src/components/SegmentedTabs/SegmentedTabsPane/index.jsx @@ -0,0 +1,23 @@ +import styled from "styled-components"; + +import { StyledSpinner } from "../../Spinner"; + +import { colors } from "../../../style"; + +const SegmentedTabsPane = styled.div` + box-shadow: 0px 0px 80px rgba(162, 182, 189, 0.2); + border-radius: 4px; + background-color: ${colors.whiteSimple}; + padding: 40px 48px; + display: flex; + flex-direction: column; + align-items: flex-start; + min-height: 266px; + box-sizing: border-box; + + ${StyledSpinner} { + flex: 100%; + } +`; + +export { SegmentedTabsPane }; diff --git a/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx b/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx new file mode 100644 index 00000000..b0ba544f --- /dev/null +++ b/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +import { Spinner } from "../Spinner"; + +const SegmentedTabsSpinner = styled(Spinner)``; + +export { SegmentedTabsSpinner }; diff --git a/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx b/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx new file mode 100644 index 00000000..1fc9bc12 --- /dev/null +++ b/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx @@ -0,0 +1,27 @@ +import styled from "styled-components"; + +import { StyledButton } from "../../Button"; + +const StyledSegmentedTabsTabbar = styled.div` + display: flex; + + ${StyledButton} { + &:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + &:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + } + + margin-bottom: 20px; +`; + +export { StyledSegmentedTabsTabbar }; diff --git a/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx b/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx new file mode 100644 index 00000000..c03b39a7 --- /dev/null +++ b/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx @@ -0,0 +1,45 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { useContext } from "react"; +import { TabsContext } from "../../Tabs"; + +import { StyledSegmentedTabsTabbar } from "./StyledSegmentedTabsTabbar"; +import { Button } from "../../Button"; + +function SegmentedTabsTabbar({ options, "data-testid": testId }) { + const { openTab, activeTab } = useContext(TabsContext); + + function renderTabBarItem(option) { + const { label, value } = option; + + function getButtonTheme(buttonName) { + return activeTab === buttonName ? "dark" : "light"; + } + + return ( + + ); + } + + return ( + + {options.map(renderTabBarItem)} + + ); +} + +SegmentedTabsTabbar.propTypes = { + options: PropTypes.array.isRequired, + "data-testid": PropTypes.string, +}; + +export { SegmentedTabsTabbar }; diff --git a/src/components/SegmentedTabs/index.jsx b/src/components/SegmentedTabs/index.jsx new file mode 100644 index 00000000..cb1c772d --- /dev/null +++ b/src/components/SegmentedTabs/index.jsx @@ -0,0 +1,48 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { SegmentedTabsTabbar } from "./SegmentedTabsTabbar"; +import { SegmentedTabsPane } from "./SegmentedTabsPane"; +import { SegmentedTabsSpinner } from "./SegmentedTabsSpinner"; +import { Tabs } from "../Tabs"; +const { TabPanes, TabPane } = Tabs; + +function SegmentedTabs({ + options, + defaultActiveTab, + onChange, + "data-testid": testId, +}) { + function renderTabPane(option) { + const { value, Component } = option; + + return ( + props.isActive && } + /> + ); + } + + return ( + + + {options.map(renderTabPane)} + + ); +} + +SegmentedTabs.propTypes = { + options: PropTypes.array.isRequired, + defaultActiveTab: PropTypes.string, + onChange: PropTypes.func, + "data-testid": PropTypes.string, +}; + +export { + SegmentedTabs, + SegmentedTabsTabbar, + SegmentedTabsPane, + SegmentedTabsSpinner, +}; diff --git a/src/components/index.js b/src/components/index.js index 39e011b9..8cf04ad4 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -44,6 +44,7 @@ export * from "./Text"; export * from "./Tooltip"; export * from "./Tabs"; export * from "./Stepper"; +export * from "./SegmentedTabs"; export * from "./Value"; export * from "./ValueSpan"; export * from "./FaceSize"; From 8f3750817f658b5d3f73f4ee1b58e766bafc9526 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 7 Apr 2020 19:42:26 +0300 Subject: [PATCH 078/175] HeaderTopMenu: margin right was changed --- .../HeaderTopMenuLinks/HeaderTopMenuLinksLink.jsx | 6 ++++-- .../HeaderTopMenuLinks/StyledHeaderTopMenuLinks.jsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/HeaderTopMenuLinksLink.jsx b/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/HeaderTopMenuLinksLink.jsx index 273b8900..74c290be 100644 --- a/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/HeaderTopMenuLinksLink.jsx +++ b/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/HeaderTopMenuLinksLink.jsx @@ -1,9 +1,11 @@ import styled from "styled-components"; +import { colors } from "../../../../style/color"; + export const HeaderTopMenuLinksLink = styled.a.attrs(() => ({ target: "_blank", }))` - color: #000; + color: ${colors.darkBlack}; text-decoration: none; font-size: 13px; line-height: 18px; @@ -13,7 +15,7 @@ export const HeaderTopMenuLinksLink = styled.a.attrs(() => ({ text-transform: lowercase; &:not(:last-child) { - margin-right: 50px; + margin-right: 32px; } &:hover { diff --git a/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/StyledHeaderTopMenuLinks.jsx b/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/StyledHeaderTopMenuLinks.jsx index 8db5d3ff..bca6704e 100644 --- a/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/StyledHeaderTopMenuLinks.jsx +++ b/src/components/Header/HeaderTopMenu/HeaderTopMenuLinks/StyledHeaderTopMenuLinks.jsx @@ -1,5 +1,5 @@ import styled from "styled-components"; export const StyledHeaderTopMenuLinks = styled.nav` - margin-right: 50px; + margin-right: 32px; `; From 674c2bad33f673bcc896f6ca685916862c385ff8 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 8 Apr 2020 12:14:26 +0300 Subject: [PATCH 079/175] EntriesDateTimeFilter: missing currentDate prop added to relative picker --- .../EntriesDateTimeFilterRelative/index.jsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx index 6c6a2a9a..a80e40f2 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx @@ -6,10 +6,16 @@ import { EntriesDateTimeFilterContext } from "../index"; import { EntriesDateTimeFilterRelativePicker } from "./EntriesDateTimeFilterRelativePicker"; function EntriesDateTimeFilterRelative() { - const { value, onChange } = useContext(EntriesDateTimeFilterContext); + const { value, onChange, initialDateTo } = useContext( + EntriesDateTimeFilterContext + ); return ( - + ); } From 0e41a27b308176db94a56dc7eb680358134fd83d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 8 Apr 2020 20:51:29 +0300 Subject: [PATCH 080/175] EntriesDateTimeFilter: date_from input now always render value from props --- .../EntriesDateTimeFilterDateTimePicker/index.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx index 510b111f..5a3d81f3 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx @@ -8,7 +8,6 @@ import { EntriesDateTimeFilterDateTimeInputs } from "../EntriesDateTimeFilterDat import { EntriesDateTimeFilterDateTimeInput } from "../EntriesDateTimeFilterDateTimeInput"; import { EntriesDateTimeFilterContext } from "../../index"; -import { isSameDate } from "../../../../../utils/helpers"; import dayjs from "dayjs"; import isSameOrAfter from "dayjs/plugin/isSameOrAfter"; import { registerLocale } from "react-datepicker"; @@ -132,7 +131,7 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { { onChange([date, value[1]]); }} From 3c98c7b4c898f89934b1b30c40f3b058b49a9035 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 9 Apr 2020 10:48:18 +0300 Subject: [PATCH 081/175] EntryCardInfoItem: value (to compare) prop was added --- .../components/EntryCardInfoItem/index.jsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/Entries/components/EntryCardInfoItem/index.jsx b/src/components/Entries/components/EntryCardInfoItem/index.jsx index 76486e38..c03a90b1 100644 --- a/src/components/Entries/components/EntryCardInfoItem/index.jsx +++ b/src/components/Entries/components/EntryCardInfoItem/index.jsx @@ -12,7 +12,7 @@ const StyledEntryCardInfoItem = styled.div` ${textTrimStyles} `; -function EntryCardInfoItem({ children, label, isZeroEmpty, className }) { +function EntryCardInfoItem({ children, label, value, isZeroEmpty, className }) { return ( {!label ? ( @@ -20,9 +20,15 @@ function EntryCardInfoItem({ children, label, isZeroEmpty, className }) { ) : ( {label}: - - {children} - + {value !== undefined ? ( + + {children} + + ) : ( + + {children} + + )} )} @@ -31,6 +37,7 @@ function EntryCardInfoItem({ children, label, isZeroEmpty, className }) { EntryCardInfoItem.propTypes = { label: PropTypes.string, + value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), isZeroEmpty: PropTypes.bool, className: PropTypes.string, From 9e9011ffa9a641a6d5e7d4cf93c7af58550fd9fb Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 9 Apr 2020 14:34:05 +0300 Subject: [PATCH 082/175] EntriesDateTimeFIlter: onReset, valuesToReset props were added --- .../index.jsx | 288 +++++++++--------- 1 file changed, 149 insertions(+), 139 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx index 5a3d81f3..0185d4b4 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx @@ -1,168 +1,178 @@ import React from "react"; import PropTypes from "prop-types"; -import { useState, useEffect, useContext } from "react"; - -import DatePicker from "react-datepicker"; -import { EntriesDateTimeFilterDateTimeInputs } from "../EntriesDateTimeFilterDateTimeInputs"; -import { EntriesDateTimeFilterDateTimeInput } from "../EntriesDateTimeFilterDateTimeInput"; -import { EntriesDateTimeFilterContext } from "../../index"; - +import { useState, useRef, useMemo } from "react"; +import { useUpdateEffect } from "react-use"; +import { usePositionPopup } from "../../../hooks"; + +import { EntriesDateTimeFilterPopup } from "./EntriesDateTimeFilterPopup"; +import { EntriesDateTimeFilterTabs } from "./EntriesDateTimeFilterTabs"; +import { EntriesDateTimeFilterBottom } from "./EntriesDateTimeFilterBottom"; +import { EntriesDateTimeFilterControl } from "./EntriesDateTimeFilterControl"; +import { EntriesDateTimeFilterError } from "./EntriesDateTimeFilterError"; +import { EntriesDateTimeFilterTotalTime } from "./EntriesDateTimeFilterTotalTime"; +import { EntriesDateTimeFilterResetButton } from "./EntriesDateTimeFilterResetButton"; +import { Times } from "../../icons"; + +import { identity } from "lodash-es"; import dayjs from "dayjs"; -import isSameOrAfter from "dayjs/plugin/isSameOrAfter"; -import { registerLocale } from "react-datepicker"; -import enGb from "date-fns/locale/en-GB"; -import "./styles.css"; - -registerLocale("en-GB", enGb); -dayjs.extend(isSameOrAfter); - -function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { - const [selectionComplete, toggleSelectionComplete] = useState( - value[0] && value[1] - ); - const { setError, initialDateFrom, initialDateTo } = useContext( - EntriesDateTimeFilterContext - ); +import { isSameDate } from "../../../utils/helpers"; - useEffect(() => { - const currentDate = new Date().toISOString(); +const EntriesDateTimeFilterContext = React.createContext({ + value: [], + onChange: identity, + error: null, + setError: identity, + initialDateFrom: null, + initialDateTo: null, +}); + +export function formatDateTime(value) { + return dayjs(value).format("YYYY/MM/DD (HH:mm:ss)"); +} - if (selectionComplete) { - if (dayjs(value[0]).isAfter(value[1])) { - onChange([value[1], value[0]]); - return; +function EntriesDateTimeFilter({ + value, + onChange, + valuesOnReset, + onReset, + onStateChange, + initialDateFrom, + initialDateTo, +}) { + const [error, setError] = useState(null); + const popupTrigger = useRef(null); + const { + Portal, + bind, + coords, + popupInner, + togglePortal, + closePortal, + isOpen, + targetParams, + } = usePositionPopup({ + pupupTrigger: popupTrigger, + position: "bottom", + }); + + function getPopupLeftCoord() { + if (popupInner.current) { + if (targetParams.width > popupInner.current.offsetWidth) { + return ( + coords.left + targetParams.width - popupInner.current.offsetWidth + ); } - } - - if ( - value[0] && - initialDateFrom && - dayjs(value[0]).isBefore(initialDateFrom) - ) { - onChange([dayjs(initialDateFrom).toDate(), value[1]]); - - setError( - `Dates before ${dayjs(initialDateFrom).year()} are not supported.` - ); - - return; - } - - if (value[1] && dayjs(value[1]).isAfter()) { - onChange([value[0], dayjs(currentDate).toDate()]); - - setError("Dates after today are not supported."); - return; + return coords.left; } - }, [value, onChange, selectionComplete]); + } - useEffect(() => { - if (value[0] && value[1] && !selectionComplete) { - toggleSelectionComplete(true); - } - if (!value[0] || (!value[1] && selectionComplete)) { - toggleSelectionComplete(false); - } - }, [value, selectionComplete]); + useUpdateEffect(() => { + if (!isOpen) { + if (!value[0] && value[1]) { + const dayBefore = dayjs(value[1]) + .subtract(1, "day") + .toDate(); - const handleDateChange = date => { - setError(null); + onChange([dayBefore, value[1]]); + } - if (!selectionComplete && !value[0]) { - date.setHours(0, 0, 0, 0); + if (value[0] && !value[1]) { + const dayAfter = dayjs(value[0]) + .add(1, "day") + .toDate(); - onChange([date, value[1]]); - return; + onChange([value[0], dayAfter]); + } } - if (!selectionComplete && value[0] && !value[1]) { - onChange([value[0], date]); - return; - } + onStateChange({ isOpen }); + }, [isOpen]); - if (selectionComplete && value[0] && value[1]) { - date.setHours(0, 0, 0, 0); + function getValueRender(value) { + if (!value[0] && !value[1]) return "All dates"; + if (value[0] && !value[1]) return `From ${formatDateTime(value[0])}`; + if (!value[0] && value[1]) return `To ${formatDateTime(value[1])}`; - onChange([date, undefined]); - toggleSelectionComplete(false); - return; - } - }; - - const handleSelect = date => { - if ( - !selectionComplete && - value[0] && - !value[1] && - sameDay(date, value[0]) - ) { - date.setHours(23, 59, 59, 999); - - handleDateChange(date); + if (isSameDate(value[0], initialDateFrom)) { + return `All to ${formatDateTime(value[1])}`; } - }; - const sameDay = (d1, d2) => { - return ( - d1.getFullYear() === d2.getFullYear() && - d1.getMonth() === d2.getMonth() && - d1.getDate() === d2.getDate() - ); - }; + return formatDateTime(value[0]) + " - " + formatDateTime(value[1]); + } + + const store = useMemo( + () => ({ + value, + onChange, + error, + setError, + initialDateFrom, + initialDateTo, + }), + [value, error, initialDateFrom, initialDateTo] + ); return ( - <> - - - { - onChange([date, value[1]]); - }} - onFocus={() => { - setError(null); + + + {getValueRender(value)} + {(value[0] || value[1]) && ( + { + e.stopPropagation(); + onChange(valuesOnReset); + if (onReset) { + onReset(); + } + closePortal(); + }} + > + + + )} + + + - { - onChange([value[0], date]); - }} - onFocus={() => { - setError(null); - }} - data-testid="entries-date-time-to" - /> - - + isOpen={isOpen} + ref={popupInner} + > + {/* Сбрасываем все локальные состояния по открытию/закрытию */} + + + + + + + + ); } -EntriesDateTimeFilterDateTimePicker.defaultProps = { - value: [], -}; - -EntriesDateTimeFilterDateTimePicker.propTypes = { +EntriesDateTimeFilter.propTypes = { value: PropTypes.array.isRequired, onChange: PropTypes.func.isRequired, + onStateChange: PropTypes.func.isRequired, + initialDateFrom: PropTypes.string.isRequired, + initialDateTo: PropTypes.string.isRequired, + valuesOnReset: PropTypes.array.isRequired, + onReset: PropTypes.func, +}; + +EntriesDateTimeFilter.defaultProps = { + valuesOnReset: [null, null], }; -export { EntriesDateTimeFilterDateTimePicker }; +export { EntriesDateTimeFilter, EntriesDateTimeFilterContext }; From a9d6e297f8000b802ae5e38e2adf1c4e32277989 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 9 Apr 2020 15:34:52 +0300 Subject: [PATCH 083/175] EntriesDateTimeFilter: issue with wrong file replacement was fixed --- .../index.jsx | 288 +++++++++--------- .../Entries/EntriesDateTimeFilter/index.jsx | 13 +- 2 files changed, 151 insertions(+), 150 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx index 0185d4b4..5a3d81f3 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx @@ -1,178 +1,168 @@ import React from "react"; import PropTypes from "prop-types"; -import { useState, useRef, useMemo } from "react"; -import { useUpdateEffect } from "react-use"; -import { usePositionPopup } from "../../../hooks"; - -import { EntriesDateTimeFilterPopup } from "./EntriesDateTimeFilterPopup"; -import { EntriesDateTimeFilterTabs } from "./EntriesDateTimeFilterTabs"; -import { EntriesDateTimeFilterBottom } from "./EntriesDateTimeFilterBottom"; -import { EntriesDateTimeFilterControl } from "./EntriesDateTimeFilterControl"; -import { EntriesDateTimeFilterError } from "./EntriesDateTimeFilterError"; -import { EntriesDateTimeFilterTotalTime } from "./EntriesDateTimeFilterTotalTime"; -import { EntriesDateTimeFilterResetButton } from "./EntriesDateTimeFilterResetButton"; -import { Times } from "../../icons"; - -import { identity } from "lodash-es"; +import { useState, useEffect, useContext } from "react"; + +import DatePicker from "react-datepicker"; +import { EntriesDateTimeFilterDateTimeInputs } from "../EntriesDateTimeFilterDateTimeInputs"; +import { EntriesDateTimeFilterDateTimeInput } from "../EntriesDateTimeFilterDateTimeInput"; +import { EntriesDateTimeFilterContext } from "../../index"; + import dayjs from "dayjs"; -import { isSameDate } from "../../../utils/helpers"; +import isSameOrAfter from "dayjs/plugin/isSameOrAfter"; +import { registerLocale } from "react-datepicker"; +import enGb from "date-fns/locale/en-GB"; +import "./styles.css"; -const EntriesDateTimeFilterContext = React.createContext({ - value: [], - onChange: identity, - error: null, - setError: identity, - initialDateFrom: null, - initialDateTo: null, -}); - -export function formatDateTime(value) { - return dayjs(value).format("YYYY/MM/DD (HH:mm:ss)"); -} +registerLocale("en-GB", enGb); +dayjs.extend(isSameOrAfter); + +function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { + const [selectionComplete, toggleSelectionComplete] = useState( + value[0] && value[1] + ); + const { setError, initialDateFrom, initialDateTo } = useContext( + EntriesDateTimeFilterContext + ); + + useEffect(() => { + const currentDate = new Date().toISOString(); -function EntriesDateTimeFilter({ - value, - onChange, - valuesOnReset, - onReset, - onStateChange, - initialDateFrom, - initialDateTo, -}) { - const [error, setError] = useState(null); - const popupTrigger = useRef(null); - const { - Portal, - bind, - coords, - popupInner, - togglePortal, - closePortal, - isOpen, - targetParams, - } = usePositionPopup({ - pupupTrigger: popupTrigger, - position: "bottom", - }); - - function getPopupLeftCoord() { - if (popupInner.current) { - if (targetParams.width > popupInner.current.offsetWidth) { - return ( - coords.left + targetParams.width - popupInner.current.offsetWidth - ); + if (selectionComplete) { + if (dayjs(value[0]).isAfter(value[1])) { + onChange([value[1], value[0]]); + return; } + } + + if ( + value[0] && + initialDateFrom && + dayjs(value[0]).isBefore(initialDateFrom) + ) { + onChange([dayjs(initialDateFrom).toDate(), value[1]]); - return coords.left; + setError( + `Dates before ${dayjs(initialDateFrom).year()} are not supported.` + ); + + return; } - } - useUpdateEffect(() => { - if (!isOpen) { - if (!value[0] && value[1]) { - const dayBefore = dayjs(value[1]) - .subtract(1, "day") - .toDate(); + if (value[1] && dayjs(value[1]).isAfter()) { + onChange([value[0], dayjs(currentDate).toDate()]); - onChange([dayBefore, value[1]]); - } + setError("Dates after today are not supported."); - if (value[0] && !value[1]) { - const dayAfter = dayjs(value[0]) - .add(1, "day") - .toDate(); + return; + } + }, [value, onChange, selectionComplete]); - onChange([value[0], dayAfter]); - } + useEffect(() => { + if (value[0] && value[1] && !selectionComplete) { + toggleSelectionComplete(true); + } + if (!value[0] || (!value[1] && selectionComplete)) { + toggleSelectionComplete(false); } + }, [value, selectionComplete]); - onStateChange({ isOpen }); - }, [isOpen]); + const handleDateChange = date => { + setError(null); - function getValueRender(value) { - if (!value[0] && !value[1]) return "All dates"; - if (value[0] && !value[1]) return `From ${formatDateTime(value[0])}`; - if (!value[0] && value[1]) return `To ${formatDateTime(value[1])}`; + if (!selectionComplete && !value[0]) { + date.setHours(0, 0, 0, 0); - if (isSameDate(value[0], initialDateFrom)) { - return `All to ${formatDateTime(value[1])}`; + onChange([date, value[1]]); + return; } - return formatDateTime(value[0]) + " - " + formatDateTime(value[1]); - } - - const store = useMemo( - () => ({ - value, - onChange, - error, - setError, - initialDateFrom, - initialDateTo, - }), - [value, error, initialDateFrom, initialDateTo] - ); + if (!selectionComplete && value[0] && !value[1]) { + onChange([value[0], date]); + return; + } + + if (selectionComplete && value[0] && value[1]) { + date.setHours(0, 0, 0, 0); + + onChange([date, undefined]); + toggleSelectionComplete(false); + return; + } + }; + + const handleSelect = date => { + if ( + !selectionComplete && + value[0] && + !value[1] && + sameDay(date, value[0]) + ) { + date.setHours(23, 59, 59, 999); + + handleDateChange(date); + } + }; + + const sameDay = (d1, d2) => { + return ( + d1.getFullYear() === d2.getFullYear() && + d1.getMonth() === d2.getMonth() && + d1.getDate() === d2.getDate() + ); + }; return ( - - - {getValueRender(value)} - {(value[0] || value[1]) && ( - { - e.stopPropagation(); - onChange(valuesOnReset); - if (onReset) { - onReset(); - } - closePortal(); - }} - > - - - )} - - - + + + { + onChange([date, value[1]]); + }} + onFocus={() => { + setError(null); }} - isOpen={isOpen} - ref={popupInner} - > - {/* Сбрасываем все локальные состояния по открытию/закрытию */} - - - - - - - - + data-testid="entries-date-time-from" + /> + { + onChange([value[0], date]); + }} + onFocus={() => { + setError(null); + }} + data-testid="entries-date-time-to" + /> + + ); } -EntriesDateTimeFilter.propTypes = { - value: PropTypes.array.isRequired, - onChange: PropTypes.func.isRequired, - onStateChange: PropTypes.func.isRequired, - initialDateFrom: PropTypes.string.isRequired, - initialDateTo: PropTypes.string.isRequired, - valuesOnReset: PropTypes.array.isRequired, - onReset: PropTypes.func, +EntriesDateTimeFilterDateTimePicker.defaultProps = { + value: [], }; -EntriesDateTimeFilter.defaultProps = { - valuesOnReset: [null, null], +EntriesDateTimeFilterDateTimePicker.propTypes = { + value: PropTypes.array.isRequired, + onChange: PropTypes.func.isRequired, }; -export { EntriesDateTimeFilter, EntriesDateTimeFilterContext }; +export { EntriesDateTimeFilterDateTimePicker }; diff --git a/src/components/Entries/EntriesDateTimeFilter/index.jsx b/src/components/Entries/EntriesDateTimeFilter/index.jsx index 07c5f6e8..0185d4b4 100644 --- a/src/components/Entries/EntriesDateTimeFilter/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/index.jsx @@ -34,6 +34,8 @@ export function formatDateTime(value) { function EntriesDateTimeFilter({ value, onChange, + valuesOnReset, + onReset, onStateChange, initialDateFrom, initialDateTo, @@ -127,7 +129,10 @@ function EntriesDateTimeFilter({ data-testid="entries-date-time-picker-reset" onClick={e => { e.stopPropagation(); - onChange([null, null]); + onChange(valuesOnReset); + if (onReset) { + onReset(); + } closePortal(); }} > @@ -162,6 +167,12 @@ EntriesDateTimeFilter.propTypes = { onStateChange: PropTypes.func.isRequired, initialDateFrom: PropTypes.string.isRequired, initialDateTo: PropTypes.string.isRequired, + valuesOnReset: PropTypes.array.isRequired, + onReset: PropTypes.func, +}; + +EntriesDateTimeFilter.defaultProps = { + valuesOnReset: [null, null], }; export { EntriesDateTimeFilter, EntriesDateTimeFilterContext }; From 8e50a4c0ca13b79a14e57aa89bccc7232e2cf9b5 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 9 Apr 2020 16:20:52 +0300 Subject: [PATCH 084/175] FormDropdownOption: left padding increased --- .../form/components/FormDropdown/FormDropdownOption.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/form/components/FormDropdown/FormDropdownOption.jsx b/src/components/form/components/FormDropdown/FormDropdownOption.jsx index 8a2f5f21..433371ff 100644 --- a/src/components/form/components/FormDropdown/FormDropdownOption.jsx +++ b/src/components/form/components/FormDropdown/FormDropdownOption.jsx @@ -11,7 +11,7 @@ const FormDropdownOption = styled.li` font-size: 16px; line-height: 1.63; transition: background-color 120ms ease-in-out; - padding: 12px 22px 12px 36px; + padding: 12px 36px; &:first-child { padding-top: 16px; From 3f66ab96baec39e5438627e526d9e8a7b366669c Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 9 Apr 2020 16:23:03 +0300 Subject: [PATCH 085/175] RouteSectionOverlay: now 120% width --- src/components/RouteSection/RouteSectionOverlay.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/RouteSection/RouteSectionOverlay.jsx b/src/components/RouteSection/RouteSectionOverlay.jsx index dbe6f786..15d60806 100644 --- a/src/components/RouteSection/RouteSectionOverlay.jsx +++ b/src/components/RouteSection/RouteSectionOverlay.jsx @@ -2,9 +2,9 @@ import styled from "styled-components"; const RouteSectionOverlay = styled.div` position: absolute; - top: 0; - left: 0; - width: 114%; + top: 20px; + left: -20px; + width: 120%; height: ${props => (props.height ? props.height + "px" : "100%")}; &:after { From 26d2f5e80384771ef14357597fb1d176505b52a4 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 12:20:08 +0300 Subject: [PATCH 086/175] EntriesDateTimeFilter: css was updated --- .../styles.css | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css index 6fa1d14c..81aa21cf 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css @@ -107,15 +107,36 @@ color: #222222; } -.react-datepicker__day--selected:not(.react-datepicker__day--range-start) { - border-radius: 4px; +/* Выбран 1 день (по наведению, по клику) */ +.react-datepicker__day--range-start.react-datepicker__day--range-end:not(.react-datepicker__day--in-selecting-range), +.react-datepicker__day--range-start.react-datepicker__day--range-end:hover { + border-radius: 4px !important; +} + +/* День - начало выбора (по наведению) */ +.react-datepicker__day:not(.react-datepicker__day--in-selecting-range) + + .react-datepicker__day--selecting-range-start, +.react-datepicker__day:not(.react-datepicker__day--in-selecting-range) + + .react-datepicker__day--selected { + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +/* День - конец выбора (по наведению) */ +.react-datepicker__day--in-selecting-range + + .react-datepicker__day--selecting-range-end, +.react-datepicker__day--in-selecting-range + .react-datepicker__day--selected { + border-radius: 0; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } +/* День - начало подтвержденного выбора (по клику) */ .react-datepicker__day--range-start { border-top-left-radius: 4px; border-bottom-left-radius: 4px; } - +/* День - конец подтвержденного выбора (по клику) */ .react-datepicker__day--range-end { border-top-right-radius: 4px; border-bottom-right-radius: 4px; From e8cb4bab6ca8cc03292cf0b52c1ab5a2dd53d663 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 13:45:22 +0300 Subject: [PATCH 087/175] Button: forwardRef added --- src/components/Button/ButtonThemes.jsx | 4 ++-- src/components/Button/index.jsx | 33 ++++++++++++++------------ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index 7ec0fd40..edc11ec2 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -84,7 +84,7 @@ const darkTheme = css` const blueTheme = css` color: #fff; - background-color: #167097; + background-color: #1a5d7b; ${getPseudoForShadow} @@ -96,7 +96,7 @@ const blueTheme = css` !disabled && css` &:hover { - background-color: #167097; + background-color: #1a5d7b; } `} `; diff --git a/src/components/Button/index.jsx b/src/components/Button/index.jsx index 956f21ec..5e99860a 100644 --- a/src/components/Button/index.jsx +++ b/src/components/Button/index.jsx @@ -3,20 +3,22 @@ import PropTypes from "prop-types"; import StyledButton from "./StyledButton"; -function Button({ - onClick, - onMouseLeave, - children, - isDisabled, - type, - size, - buttonTheme, - fit, - className, - isRounded, - isFullWidth, - ...restProps -}) { +const Button = React.forwardRef((props, ref) => { + const { + onClick, + onMouseLeave, + children, + isDisabled, + type, + size, + buttonTheme, + fit, + className, + isRounded, + isFullWidth, + ...restProps + } = props; + return ( {children} ); -} +}); Button.propTypes = { className: PropTypes.string, From 07ba4fbfc3cdbb1c75f86fa9b56f23a985c327ee Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 13:46:07 +0300 Subject: [PATCH 088/175] ListItemPopup: styles updated --- .../ListItemPopup/ListItemPopup.stories.js | 20 +++----------- .../ListItemPopup/__tests__/ListItemPopup.js | 27 +++++++------------ src/components/ListItemPopup/index.jsx | 2 +- 3 files changed, 15 insertions(+), 34 deletions(-) diff --git a/src/components/ListItemPopup/ListItemPopup.stories.js b/src/components/ListItemPopup/ListItemPopup.stories.js index 5740d7d1..9530f02a 100644 --- a/src/components/ListItemPopup/ListItemPopup.stories.js +++ b/src/components/ListItemPopup/ListItemPopup.stories.js @@ -4,8 +4,6 @@ import { text } from "@storybook/addon-knobs"; import { ListItemPopup } from "./index.jsx"; -import { Qrcode as QRCodeIcon } from "../icons"; - import styled from "styled-components"; const StyledContentExample = styled.div` @@ -23,24 +21,14 @@ storiesOf("ListItemPopup", module).add("default", () => { return ( ( - + )} > {({ closePortal }) => ( - + {contentExample} )} diff --git a/src/components/ListItemPopup/__tests__/ListItemPopup.js b/src/components/ListItemPopup/__tests__/ListItemPopup.js index e3d88ac7..4f0c67d5 100644 --- a/src/components/ListItemPopup/__tests__/ListItemPopup.js +++ b/src/components/ListItemPopup/__tests__/ListItemPopup.js @@ -3,7 +3,6 @@ import { fireEvent } from "@testing-library/react"; import { render } from "../../../../test/utils"; import { ListItemPopup } from "../index.jsx"; -import { Qrcode as QRCodeIcon } from "../../icons"; describe("ListItemPopup tests", () => { const onChangeMock = jest.fn(); @@ -19,24 +18,16 @@ describe("ListItemPopup tests", () => { return render( ( - + )} > {({ closePortal }) => ( - + Popup content example @@ -52,9 +43,11 @@ describe("ListItemPopup tests", () => { test("ListItemPopup trigger open and close popup", () => { const { getByTestId } = renderListItemPopup(); - fireEvent.click(getByTestId("qr-code-icon")); + + fireEvent.click(getByTestId("button-open")); expect(getByTestId("list-item-popup-content")).toBeVisible(); - fireEvent.click(getByTestId("qr-code-icon-inside")); + + fireEvent.click(getByTestId("button-close")); expect(getByTestId("list-item-popup-content")).not.toBeVisible(); }); }); diff --git a/src/components/ListItemPopup/index.jsx b/src/components/ListItemPopup/index.jsx index 5e18a336..acd008a7 100644 --- a/src/components/ListItemPopup/index.jsx +++ b/src/components/ListItemPopup/index.jsx @@ -26,7 +26,7 @@ function ListItemPopup({ }); const triggerProps = { ref, openPortal, togglePortal, closePortal }; - const childrenProps = { closePortal }; + const childrenProps = { closePortal, isOpen }; return ( From 64d0e19a5c826ba7c7d36314e712cf198c3a0c85 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 13:55:14 +0300 Subject: [PATCH 089/175] icons: QRcode icon was replaced with a custom one --- src/components/icons/QRcode.jsx | 31 +++++++++++++++++++++++++++++++ src/components/icons/index.js | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/components/icons/QRcode.jsx diff --git a/src/components/icons/QRcode.jsx b/src/components/icons/QRcode.jsx new file mode 100644 index 00000000..06860c69 --- /dev/null +++ b/src/components/icons/QRcode.jsx @@ -0,0 +1,31 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function QRcode({ size, className }) { + return ( + + + + ); +} + +QRcode.propTypes = { + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + className: PropTypes.string, +}; + +QRcode.defaultProps = { + size: 10, +}; + +export default QRcode; diff --git a/src/components/icons/index.js b/src/components/icons/index.js index 71cf21dc..b564a45f 100644 --- a/src/components/icons/index.js +++ b/src/components/icons/index.js @@ -20,7 +20,6 @@ export { InfoCircle, Clone, CalendarAlt, - Qrcode, Ban, Trash, } from "@styled-icons/fa-solid"; @@ -53,3 +52,4 @@ export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; export { default as Search } from "./Search"; export { default as Gear } from "./Gear"; +export { default as QRcode } from "./QRcode"; From 04b77518a520088b8004051b20b3d23e4a2d5db3 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 13:56:05 +0300 Subject: [PATCH 090/175] FormSwitch: sizes updated --- src/components/form/components/FormSwitch/FormSwitchLabel.jsx | 4 ++-- .../form/components/FormSwitch/StyledFormSwitch.jsx | 2 +- src/components/form/components/FormSwitch/index.jsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/form/components/FormSwitch/FormSwitchLabel.jsx b/src/components/form/components/FormSwitch/FormSwitchLabel.jsx index 35d87296..48d59d4b 100644 --- a/src/components/form/components/FormSwitch/FormSwitchLabel.jsx +++ b/src/components/form/components/FormSwitch/FormSwitchLabel.jsx @@ -4,11 +4,11 @@ import { colors } from "../../../../style"; import { widths } from "./StyledFormSwitch"; const circleSizes = { - m: 16, + m: 12, }; const barHeights = { - m: 24, + m: 20, }; const calcOffset = ({ checked, size }) => { diff --git a/src/components/form/components/FormSwitch/StyledFormSwitch.jsx b/src/components/form/components/FormSwitch/StyledFormSwitch.jsx index c2db3264..ad6181fd 100644 --- a/src/components/form/components/FormSwitch/StyledFormSwitch.jsx +++ b/src/components/form/components/FormSwitch/StyledFormSwitch.jsx @@ -1,7 +1,7 @@ import styled from "styled-components"; const widths = { - m: 44, + m: 36, }; const StyledFormSwitch = styled.label` diff --git a/src/components/form/components/FormSwitch/index.jsx b/src/components/form/components/FormSwitch/index.jsx index 975cbcf2..a78ed243 100644 --- a/src/components/form/components/FormSwitch/index.jsx +++ b/src/components/form/components/FormSwitch/index.jsx @@ -55,4 +55,4 @@ FormSwitch.defaultProps = { size: "m", }; -export { FormSwitch, StyledFormSwitch }; +export { FormSwitch, StyledFormSwitch, FormSwitchLabel }; From 938990bcb7ee2c134afa1477da4902d3bf524aea Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 14:00:14 +0300 Subject: [PATCH 091/175] DeleteSureButton: minWidth style was removed --- src/components/DeleteSureButton/StyledDeleteSureButton.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx index 458e1133..8c2df0c2 100644 --- a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx +++ b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx @@ -15,7 +15,6 @@ function getHoverStyles({ isDisabled }) { const DeleteSureButton = styled(Button).attrs(() => ({ buttonTheme: "reset" }))` background-color: ${props => props.color}; - min-width: 105px; ${({ isSure, deleteColor }) => isSure && `background-color: ${deleteColor}; color: ${colors.whiteSimple};`} From 76b2d86012c80015a70d4bdc27905adc891939d9 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 14:33:17 +0300 Subject: [PATCH 092/175] ListItemPopup: inner styles were updated --- src/components/ListItemPopup/ListItemPopupInner.jsx | 12 ++++++------ src/components/ListItemPopup/index.jsx | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/ListItemPopup/ListItemPopupInner.jsx b/src/components/ListItemPopup/ListItemPopupInner.jsx index e6753c5d..affb0f54 100644 --- a/src/components/ListItemPopup/ListItemPopupInner.jsx +++ b/src/components/ListItemPopup/ListItemPopupInner.jsx @@ -1,12 +1,12 @@ import styled from "styled-components"; +import { colors } from "../../style"; + const ListItemPopupInner = styled.div` - height: 100%; - width: 573px; - padding: 5px 5px; - background-color: #fff; - box-shadow: 0px 0px 10px 0px rgba(162, 182, 189, 0.3); - border-radius: 3px; + padding: 2px; + background-color: ${colors.whiteSimple}; + box-shadow: 0px 0px 80px rgba(162, 182, 189, 0.2); + border-radius: 4px; position: relative; `; diff --git a/src/components/ListItemPopup/index.jsx b/src/components/ListItemPopup/index.jsx index acd008a7..fa6b8b78 100644 --- a/src/components/ListItemPopup/index.jsx +++ b/src/components/ListItemPopup/index.jsx @@ -63,4 +63,4 @@ ListItemPopup.defaultProps = { "data-testid": "list-item-popup", }; -export { ListItemPopup, StyledListItemPopup }; +export { ListItemPopup, StyledListItemPopup, ListItemPopupInner }; From beaf4f6f6976d0947168486d4e518b1731aad5bf Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 16:24:42 +0300 Subject: [PATCH 093/175] EntriesDateTimeFilter: css was updated to get selection rounded corners --- .../styles.css | 94 ++++++++++++++++++- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css index 81aa21cf..265bc2b2 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css @@ -73,7 +73,7 @@ outline: none; height: 32px; line-height: 32px; - transition: color 100ms ease-in, background-color 100ms ease-in; + /* transition: color 100ms ease-in, background-color 100ms ease-in; */ } .react-datepicker__day--today { @@ -131,6 +131,14 @@ border-bottom-right-radius: 4px; } +/* Первый день недели (тут не удается понять, начало это выбора или конец) */ +.react-datepicker__day--range-start.react-datepicker__day--selecting-range-end:first-child { + border-radius: 0px; +} + +.react-datepicker__day--in-range:first-child:hover { +} + /* День - начало подтвержденного выбора (по клику) */ .react-datepicker__day--range-start { border-top-left-radius: 4px; @@ -142,13 +150,95 @@ border-bottom-right-radius: 4px; } +.react-datepicker__day { + position: relative; +} +.react-datepicker__day:not(.react-datepicker__day--in-range):not(.react-datepicker__day--in-selecting-range) { + background-color: #ffffff; + z-index: 3; +} + +/* Последний день первой/последней полной выделенной недели */ +.react-datepicker__day--in-range:last-child, +.react-datepicker__day--in-selecting-range:last-child { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.react-datepicker__day--in-range + ~ .react-datepicker__day--in-range:last-child::before, +.react-datepicker__day--in-selecting-range + ~ .react-datepicker__day--in-selecting-range:last-child::before { + content: ""; + position: absolute; + width: 100%; + height: 3px; + top: -3px; + background-color: #a8b3be; +} +.react-datepicker__day--in-range + ~ .react-datepicker__day--in-range:last-child::after, +.react-datepicker__day--in-selecting-range + ~ .react-datepicker__day--in-selecting-range:last-child::after { + content: ""; + position: absolute; + width: 100%; + height: 3px; + top: 100%; + background-color: #a8b3be; +} + +/* Первый день первой/последней полной выделенной недели */ +.react-datepicker__day--in-range:not(.react-datepicker__day--range-start):first-child, +.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--range-start):first-child { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.react-datepicker__day--in-range:not(.react-datepicker__day--range-start):first-child:before, +.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--range-start):first-child:before { + content: ""; + position: absolute; + width: 100%; + height: 3px; + top: -3px; + left: 0; + background-color: #a8b3be; +} +.react-datepicker__day--in-range:not(.react-datepicker__day--range-start):first-child:after, +.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--range-start):first-child:after { + content: ""; + position: absolute; + width: 100%; + height: 3px; + top: 100%; + left: 0; + background-color: #a8b3be; +} + +.react-datepicker__day--range-start.react-datepicker__day--in-selecting-range:first-child { + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + .react-datepicker__day--selected, .react-datepicker__day--range-start, -.react-datepicker__day--range-end, .react-datepicker__day--range-start:hover, +.react-datepicker__day--range-end, .react-datepicker__day--range-end:hover, .react-datepicker__day--in-range:hover, .react-datepicker__day--in-selecting-range:hover { color: #ffffff; background-color: #3b4b5a; + z-index: 2; +} + +.react-datepicker__day--range-start, +.react-datepicker__day--range-start:hover, +.react-datepicker__day--range-end, +.react-datepicker__day--range-end:hover { + z-index: 3; +} + +.react-datepicker__day--in-range:not(.react-datepicker__day--range-start):not(.react-datepicker__day--range-end):hover { + border-radius: 0; } From acdc3fc461e1764bec11eee7fde61a6560092c85 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 10 Apr 2020 18:20:59 +0300 Subject: [PATCH 094/175] EntriesDateTimeFilter: issue with selecting today as sameday was fixed --- .../EntriesDateTimeFilterDateTimePicker/index.jsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx index 5a3d81f3..925d5cab 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx @@ -10,12 +10,14 @@ import { EntriesDateTimeFilterContext } from "../../index"; import dayjs from "dayjs"; import isSameOrAfter from "dayjs/plugin/isSameOrAfter"; +import isToday from "dayjs/plugin/isToday"; import { registerLocale } from "react-datepicker"; import enGb from "date-fns/locale/en-GB"; import "./styles.css"; registerLocale("en-GB", enGb); dayjs.extend(isSameOrAfter); +dayjs.extend(isToday); function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { const [selectionComplete, toggleSelectionComplete] = useState( @@ -98,9 +100,12 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { !value[1] && sameDay(date, value[0]) ) { - date.setHours(23, 59, 59, 999); - - handleDateChange(date); + if (dayjs(date).isToday()) { + handleDateChange(new Date()); + } else { + date.setHours(23, 59, 59, 999); + handleDateChange(date); + } } }; From 767cb3670fa19f101bee2e656b01905a0a12b8a6 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 14:39:36 +0300 Subject: [PATCH 095/175] dayjs updated --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbd57163..f9126378 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6972,9 +6972,9 @@ "integrity": "sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w==" }, "dayjs": { - "version": "1.8.23", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", - "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ==" + "version": "1.8.24", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.24.tgz", + "integrity": "sha512-bImQZbBv86zcOWOq6fLg7r4aqMx8fScdmykA7cSh+gH1Yh8AM0Dbw0gHYrsOrza6oBBnkK+/OaR+UAa9UsMrDw==" }, "debug": { "version": "4.1.1", diff --git a/package.json b/package.json index ecc73e68..8be481c8 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@babel/runtime": "^7.9.2", "browser-cookie-lite": "^1.0.4", "date-fns": "^2.11.1", - "dayjs": "^1.8.23", + "dayjs": "^1.8.24", "downshift": "^5.0.5", "i18next": "^19.3.4", "jump.js": "^1.0.2", From dbec211b69214314cec36825c102597b840f7af9 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 14:40:47 +0300 Subject: [PATCH 096/175] useSelectableList hook was added --- src/hooks/index.js | 1 + src/hooks/use-selectable-list.js | 91 ++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/hooks/use-selectable-list.js diff --git a/src/hooks/index.js b/src/hooks/index.js index 9e8e7c2c..24938af7 100644 --- a/src/hooks/index.js +++ b/src/hooks/index.js @@ -7,4 +7,5 @@ export * from "./use-position-popup"; export * from "./use-infinite-menu"; export * from "./use-redirect-on-error"; export * from "./use-scroll-direction"; +export * from "./use-selectable-list"; export { useTranslation, withTranslation } from "react-i18next"; diff --git a/src/hooks/use-selectable-list.js b/src/hooks/use-selectable-list.js new file mode 100644 index 00000000..b10a8ab2 --- /dev/null +++ b/src/hooks/use-selectable-list.js @@ -0,0 +1,91 @@ +import { useState } from "react"; +import { usePrevious, useUpdateEffect } from "react-use"; + +import { uniq, isEqual } from "lodash-es"; +import { hasProperty } from "../utils/helpers"; + +function useSelectableList({ options, value, onChange }) { + const [selected, setSelected] = useState(value || []); + const prevSelected = usePrevious(selected); + const [lastChecked, setLastChecked] = useState(null); + + function getOptionPresentation(option) { + return hasProperty(option, "value") ? String(option.value) : String(option); + } + + useUpdateEffect(() => { + if (onChange && !isEqual(prevSelected, selected)) { + onChange(selected); + } + }, [selected]); + + useUpdateEffect(() => { + setSelected(value); + }, [value]); + + function selectAll() { + setSelected(options.map(getOptionPresentation)); + } + + function deselectAll() { + setSelected([]); + } + + function toggleSelected(option) { + const optionPresentation = getOptionPresentation(option); + + setSelected(selected => + selected.includes(optionPresentation) + ? selected.filter(sel => optionPresentation !== sel) + : selected.concat(optionPresentation) + ); + } + + function toggleIntermediateOptions(checkFrom, checkTo, isCheck) { + const stringOptions = options.map(getOptionPresentation); + + if (stringOptions.indexOf(checkFrom) > stringOptions.indexOf(checkTo)) { + [checkTo, checkFrom] = [checkFrom, checkTo]; + } + + const hasToCheck = stringOptions + .filter( + (_, key) => + stringOptions.indexOf(checkFrom) < key && + key < stringOptions.indexOf(checkTo) + ) + .concat([checkFrom, checkTo]); + + setSelected(selected => + isCheck + ? uniq(selected.concat(hasToCheck)) + : selected.filter(option => !hasToCheck.includes(option)) + ); + } + + function onCheckboxChange(event) { + const { name: option } = event.target; + toggleSelected(option); + setLastChecked(option); + + const { shiftKey } = event.nativeEvent; + const isCheck = !selected.includes(option); + if (shiftKey && option !== lastChecked) { + toggleIntermediateOptions(lastChecked, option, isCheck); + } + } + + return { + selected, + selectAll, + deselectAll, + toggleSelected, + onCheckboxChange, + isAllSelected: selected.length === options.length, + isAllDeselected: selected.length === 0, + hasOptions: options.length !== 0, + hasSelected: selected.length !== 0, + }; +} + +export { useSelectableList }; From 7254393cdffb1f4061377b34d0e12b7ff3d3f0b2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 14:41:35 +0300 Subject: [PATCH 097/175] Button: disabled styles updated --- src/components/Button/ButtonThemes.jsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index edc11ec2..9b37b952 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -35,8 +35,8 @@ const resetTheme = css` `; const disabledTheme = css` - color: #aaa; - background-color: #f3f3f3; + color: #fff; + background-color: #aaaaaa; `; const lightTheme = css` @@ -80,6 +80,17 @@ const darkTheme = css` &:after { box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); } + + ${({ disabled }) => { + return disabled + ? disabledTheme + : css` + &:hover { + color: #fff; + background-color: #3b4b5a; + } + `; + }} `; const blueTheme = css` From 13e497268651e984927bc91388879899aef3051d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 14:47:03 +0300 Subject: [PATCH 098/175] ListLayout: Actions component changed --- .../ListLayout/ListLayout.stories.js | 338 ++++++++++-------- .../ListLayoutActions.resources.js | 10 - .../ListLayoutActionsAdditional.jsx | 7 - .../ListLayoutActionsButtons.jsx | 16 - .../ListLayoutActionsText.jsx | 7 +- .../StyledListLayoutActions.jsx | 8 +- .../ListLayout/ListLayoutActions/index.jsx | 52 +-- src/components/ListLayout/ListLayoutTop.jsx | 2 +- 8 files changed, 215 insertions(+), 225 deletions(-) delete mode 100644 src/components/ListLayout/ListLayoutActions/ListLayoutActions.resources.js delete mode 100644 src/components/ListLayout/ListLayoutActions/ListLayoutActionsButtons.jsx diff --git a/src/components/ListLayout/ListLayout.stories.js b/src/components/ListLayout/ListLayout.stories.js index c03b71ac..4fbe7918 100644 --- a/src/components/ListLayout/ListLayout.stories.js +++ b/src/components/ListLayout/ListLayout.stories.js @@ -4,9 +4,9 @@ import { storiesOf } from "@storybook/react"; import { number, boolean } from "@storybook/addon-knobs"; import { action } from "@storybook/addon-actions"; -import { useListFetch } from "../../hooks"; +import { useListFetch, useSelectableList } from "../../hooks"; -import { ListLayout, ListLayoutList } from "./index.jsx"; +import { ListLayout, ListLayoutList, ListLayoutActions } from "./index.jsx"; import { PersonsGroupListPerson, @@ -17,7 +17,6 @@ import { import { Search } from "../Search"; import { Button } from "../Button"; -import { SelectableList } from "../SelectableList"; import { UIBadge } from "../UIBadge"; import { Sync } from "../icons"; @@ -132,6 +131,14 @@ storiesOf("List Layout", module) } = useListFetch({ fetchList: action("Fetch list"), }); + const { + selected, + onCheckboxChange, + selectAll, + deselectAll, + isAllSelected, + isAllDeselected, + } = useSelectableList({ options }); const [searchType, setSearchType] = useState(personsGroupsSearchTypes[0]); @@ -163,53 +170,60 @@ storiesOf("List Layout", module) placeholder="Enter search query..." /> } + actions={ + + Remove selected + + } + > + {selected.length !== 0 && `${selected.length} items selected`} + + } content={ - - {({ - selected, - handleCheckboxChange, - options, - selectAll, - deselectAll, - isAllSelected, - }) => ( - - } - isLoading={isLoading} - actions={ - - {selected.length !== 0 && - `Items selected: ${selected.length}`} - - } - renderItem={item => ( - included} - > - {item} - - )} + + } + isLoading={isLoading} + actions={ + + {selected.length !== 0 && + `Items selected: ${selected.length}`} + + } + renderItem={item => ( + included} + > + {item} + )} - + /> } + actions={ + + Remove selected + + } + > + {selected.length !== 0 && `${selected.length} items selected`} + + } content={ - - {({ - selected, - handleCheckboxChange, - options, - selectAll, - deselectAll, - isAllSelected, - }) => ( - - } - columns={2} - actions={ - + } + columns={2} + actions={ + - {selected.length !== 0 && - `Items selected: ${selected.length}`} - + Remove selected + } - renderItem={item => ( - included} - > - {item} - - )} - /> + > + {selected.length !== 0 && + `${selected.length} items selected`} + + } + renderItem={item => ( + included} + > + {item} + )} - + /> - {({ - selected, - handleCheckboxChange, - selectAll, - deselectAll, - isAllSelected, - isAllDeselected, - }) => ( - - } - actions={ - - Remove selected - - } + + } + actions={ + - {selected.length !== 0 - ? `${selected.length} persons selected` - : "No person selected"} - + Remove selected + } - content={ - - - } - columns={2} - renderItem={person => ( - - )} + > + {selected.length !== 0 && `${selected.length} items selected`} + + } + content={ + + - - person.idxid === detailed)} + } + columns={2} + renderItem={person => ( + - - } - /> - )} - + )} + /> + + person.idxid === detailed)} + /> + + } + /> ); } diff --git a/src/components/ListLayout/ListLayoutActions/ListLayoutActions.resources.js b/src/components/ListLayout/ListLayoutActions/ListLayoutActions.resources.js deleted file mode 100644 index ffdd2e54..00000000 --- a/src/components/ListLayout/ListLayoutActions/ListLayoutActions.resources.js +++ /dev/null @@ -1,10 +0,0 @@ -export const resources = { - ru: { - SelectAll: "Выбрать все", - DeselectAll: "Снять выбор", - }, - en: { - SelectAll: "Select all", - DeselectAll: "Deselect all", - }, -}; diff --git a/src/components/ListLayout/ListLayoutActions/ListLayoutActionsAdditional.jsx b/src/components/ListLayout/ListLayoutActions/ListLayoutActionsAdditional.jsx index 7680d1d2..acc86da1 100644 --- a/src/components/ListLayout/ListLayoutActions/ListLayoutActionsAdditional.jsx +++ b/src/components/ListLayout/ListLayoutActions/ListLayoutActionsAdditional.jsx @@ -1,12 +1,5 @@ import styled from "styled-components"; -import { StyledButton } from "../../Button"; - export const ListLayoutActionsAdditional = styled.span` margin-left: auto; - - ${StyledButton} { - height: 34px; - padding: 0 20px; - } `; diff --git a/src/components/ListLayout/ListLayoutActions/ListLayoutActionsButtons.jsx b/src/components/ListLayout/ListLayoutActions/ListLayoutActionsButtons.jsx deleted file mode 100644 index 5c0c7aa9..00000000 --- a/src/components/ListLayout/ListLayoutActions/ListLayoutActionsButtons.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import styled from "styled-components"; - -import { StyledButton } from "../../Button"; - -export const ListLayoutActionsButtons = styled.div` - display: flex; - - ${StyledButton} { - height: 34px; - padding: 0 30px; - - &:not(:last-child) { - margin-right: 11px; - } - } -`; diff --git a/src/components/ListLayout/ListLayoutActions/ListLayoutActionsText.jsx b/src/components/ListLayout/ListLayoutActions/ListLayoutActionsText.jsx index 00380d63..784c1d87 100644 --- a/src/components/ListLayout/ListLayoutActions/ListLayoutActionsText.jsx +++ b/src/components/ListLayout/ListLayoutActions/ListLayoutActionsText.jsx @@ -1,5 +1,10 @@ import styled from "styled-components"; +import { colors } from "../../../style"; + export const ListLayoutActionsText = styled.span` - width: 186px; + font-weight: 300; + font-size: 16px; + line-height: 26px; + color: ${colors.darkBlack}; `; diff --git a/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx b/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx index 56005588..b407ac4b 100644 --- a/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx +++ b/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx @@ -1,7 +1,13 @@ import styled from "styled-components"; +import { StyledFormCheckbox } from "../../form/components/FormCheckbox/index"; + export const StyledListLayoutActions = styled.div` display: flex; align-items: center; - margin-bottom: 20px; + margin-bottom: 18px; + + ${StyledFormCheckbox}:not(:last-child) { + margin-right: 20px; + } `; diff --git a/src/components/ListLayout/ListLayoutActions/index.jsx b/src/components/ListLayout/ListLayoutActions/index.jsx index b6019829..142b399a 100644 --- a/src/components/ListLayout/ListLayoutActions/index.jsx +++ b/src/components/ListLayout/ListLayoutActions/index.jsx @@ -1,53 +1,33 @@ import React from "react"; import PropTypes from "prop-types"; -import { useTranslation } from "react-i18next"; - import { StyledListLayoutActions } from "./StyledListLayoutActions"; import { ListLayoutActionsText } from "./ListLayoutActionsText"; -import { ListLayoutActionsButtons } from "./ListLayoutActionsButtons"; import { ListLayoutActionsAdditional } from "./ListLayoutActionsAdditional"; -import { Button } from "../../Button"; -import { resources } from "./ListLayoutActions.resources.js"; +import { FormCheckbox } from "../../form/components/FormCheckbox/index"; export function ListLayoutActions({ - isSelectAvailable, - isDeselectAvailable, - onSelect, - onDeselect, children, additional, + isSelectionDisabled, + selectAll, + deselectAll, + isAllSelected, }) { - const { t, i18n } = useTranslation(); - - i18n.addResourceBundle("en", "ListLayoutActions", resources.en); - i18n.addResourceBundle("ru", "ListLayoutActions", resources.ru); - return ( + { + isAllSelected ? selectAll() : deselectAll(); + }} + /> {/* ListLayoutActionsText нужен для того, чтобы отображение не прыгало при исчезновении children */} {children} - - - - {additional && ( {additional} )} @@ -56,10 +36,10 @@ export function ListLayoutActions({ } ListLayoutActions.propTypes = { - isSelectAvailable: PropTypes.bool.isRequired, - isDeselectAvailable: PropTypes.bool.isRequired, - onSelect: PropTypes.func.isRequired, - onDeselect: PropTypes.func.isRequired, + isSelectionDisabled: PropTypes.bool.isRequried, + selectAll: PropTypes.func.isRequried, + deselectAll: PropTypes.func.isRequried, + isAllSelected: PropTypes.bool.isRequried, children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), additional: PropTypes.element, }; diff --git a/src/components/ListLayout/ListLayoutTop.jsx b/src/components/ListLayout/ListLayoutTop.jsx index 5dbd8c8a..3f15ad73 100644 --- a/src/components/ListLayout/ListLayoutTop.jsx +++ b/src/components/ListLayout/ListLayoutTop.jsx @@ -8,7 +8,7 @@ const ListLayoutTop = styled(ListStickyHeader)` padding-bottom: 24px; padding-top: 24px; /** хак, чтобы скрыть отступ страницы (RouteSectionHider) */ - margin-top: -24px; + /* margin-top: -24px; */ background-color: ${colors.whiteSimple}; `; From 55e21d3378d674bdee66e3cd4858fe4392bd3ac9 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 14:56:03 +0300 Subject: [PATCH 099/175] FormCheckboxGroup: SelectableList was replaced with useSelectableList --- .../components/FormCheckboxGroup/index.jsx | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/components/form/components/FormCheckboxGroup/index.jsx b/src/components/form/components/FormCheckboxGroup/index.jsx index e0329814..83c28219 100644 --- a/src/components/form/components/FormCheckboxGroup/index.jsx +++ b/src/components/form/components/FormCheckboxGroup/index.jsx @@ -1,39 +1,39 @@ import React from "react"; import PropTypes from "prop-types"; -import { SelectableList } from "../../../SelectableList"; import { StyledFormCheckboxGroup } from "./StyledFormCheckboxGroup"; import { FormCheckboxGroupItem } from "./FormCheckboxGroupItem"; +import { useSelectableList } from "../../../../hooks/index"; function FormCheckboxGroup({ value, onChange, groupName, render, options }) { + const { ...selectedListOptions } = useSelectableList({ + options, + value, + onChange, + }); + return ( - { - return render({ - ...selectedListProps, - checkboxes: () => { - const { selected, handleCheckboxChange } = selectedListProps; - - return options.map(({ label, value: optionValue }) => { - return ( - - ); - }); - }, + {render({ + ...selectedListOptions, + checkboxes: () => { + const { selected, onCheckboxChange } = selectedListOptions; + return options.map(({ label, value: optionValue }) => { + const strOption = String(optionValue); + + return ( + + ); }); - }} - /> + }, + })} ); } From e8d18032227ac3832e43e837c4d95ad97377bb0e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 15:20:34 +0300 Subject: [PATCH 100/175] ListLayoutActions: select all issue was fixed --- .../ListLayout/ListLayoutActions/StyledListLayoutActions.jsx | 1 + src/components/ListLayout/ListLayoutActions/index.jsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx b/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx index b407ac4b..5c59cfdf 100644 --- a/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx +++ b/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx @@ -6,6 +6,7 @@ export const StyledListLayoutActions = styled.div` display: flex; align-items: center; margin-bottom: 18px; + height: 30px; ${StyledFormCheckbox}:not(:last-child) { margin-right: 20px; diff --git a/src/components/ListLayout/ListLayoutActions/index.jsx b/src/components/ListLayout/ListLayoutActions/index.jsx index 142b399a..75a55ee4 100644 --- a/src/components/ListLayout/ListLayoutActions/index.jsx +++ b/src/components/ListLayout/ListLayoutActions/index.jsx @@ -21,7 +21,7 @@ export function ListLayoutActions({ disabled={isSelectionDisabled} checked={isAllSelected} onChange={() => { - isAllSelected ? selectAll() : deselectAll(); + !isAllSelected ? selectAll() : deselectAll(); }} /> {/* ListLayoutActionsText нужен для того, чтобы отображение не прыгало From a56433d46343ad3353e16015065016ce928b85f6 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 16:21:44 +0300 Subject: [PATCH 101/175] SelectableList: component removed --- src/components/SelectableList/index.jsx | 122 ------------------------ src/components/index.js | 1 - 2 files changed, 123 deletions(-) delete mode 100644 src/components/SelectableList/index.jsx diff --git a/src/components/SelectableList/index.jsx b/src/components/SelectableList/index.jsx deleted file mode 100644 index a7b00e8f..00000000 --- a/src/components/SelectableList/index.jsx +++ /dev/null @@ -1,122 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import { uniq, noop } from "lodash-es"; - -export class SelectableList extends React.Component { - static propTypes = { - options: PropTypes.array.isRequired, - render: PropTypes.func, - children: PropTypes.func, - onChange: PropTypes.func.isRequired, - value: PropTypes.array, - }; - - static defaultProps = { - options: [], - onChange: noop, - }; - - deselectAll = () => { - this.setState({ selected: [] }); - }; - - selectAll = () => { - const { options } = this.props; - - this.setState({ - selected: options.map(option => String(option.value || option)), - }); - }; - - handleCheckboxChange = event => { - const { name } = event.target; - const { lastChecked } = this.state; - const { shiftKey } = event.nativeEvent; - - const isCheck = !this.state.selected.includes(name); - - if (shiftKey && name !== lastChecked) { - this.checkIntermediateBoxes(name, isCheck); - } - - this.setState(({ selected }) => ({ - selected: isCheck - ? uniq(selected.concat(name)) - : selected.filter(option => option !== name), - lastChecked: name, - })); - }; - - checkIntermediateBoxes(checkTo, isCheck) { - let { lastChecked: checkFrom } = this.state; - const { options } = this.props; - const stringOptions = options.map(option => - option.value ? String(option.value) : String(option) - ); - - if (stringOptions.indexOf(checkFrom) > stringOptions.indexOf(checkTo)) { - [checkTo, checkFrom] = [checkFrom, checkTo]; - } - - const hasToCheck = stringOptions - .filter( - (_, key) => - stringOptions.indexOf(checkFrom) < key && - key < stringOptions.indexOf(checkTo) - ) - .concat([checkFrom, checkTo]); - - this.setState(({ selected }) => ({ - selected: isCheck - ? uniq([...selected, ...hasToCheck]) - : selected.filter(option => !hasToCheck.includes(option)), - })); - } - - state = { - selected: this.props.value || [], - selectAll: this.selectAll, - deselectAll: this.deselectAll, - handleCheckboxChange: this.handleCheckboxChange, - lastChecked: null, - }; - - componentDidUpdate(prevProps, prevState) { - if (prevState.selected !== this.state.selected) { - this.props.onChange(this.state.selected); - } - - if (prevProps.value !== this.props.value) { - this.setState({ selected: this.props.value }); - } - if (prevProps.options !== this.props.options) { - this.setState(({ selected }) => { - return { - selected: selected.filter(item => this.props.options.includes(item)), - }; - }); - } - } - - render() { - const { selected } = this.state; - const { options, render, children } = this.props; - - const hasOptions = Boolean(options.length); - - const sharedState = { - ...this.state, - options, - hasOptions, - isAllSelected: hasOptions && selected.length === options.length, - isAllDeselected: hasOptions && selected.length === 0, - }; - - if (render) { - return render(sharedState); - } else { - return children(sharedState); - } - } -} diff --git a/src/components/index.js b/src/components/index.js index 8cf04ad4..2f46f881 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -36,7 +36,6 @@ export * from "./PopupConfirm"; export * from "./RouteSection"; export * from "./Search"; export * from "./Segment"; -export * from "./SelectableList"; export * from "./ShownControl"; export * from "./Slider"; export * from "./Spinner"; From 2f7aded47650f7e56048bf6c1c7d4bd18a85390b Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 16:23:00 +0300 Subject: [PATCH 102/175] FormDropdown: check icon now renders only if dropdown is multiple --- src/components/form/components/FormDropdown/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/form/components/FormDropdown/index.jsx b/src/components/form/components/FormDropdown/index.jsx index 86565fc4..381b08a8 100644 --- a/src/components/form/components/FormDropdown/index.jsx +++ b/src/components/form/components/FormDropdown/index.jsx @@ -345,7 +345,7 @@ function FormDropdown({ "data-testid": `${testId}-option-${item.value}`, })} > - {selected && ( + {multiple && selected && ( )} {renderItem(item)} From 02496c1cb2b1dd9d3708f4fd47e068a2843ac21f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 16:23:48 +0300 Subject: [PATCH 103/175] ListLayoutList: test-id attr added to checkbox --- src/components/ListLayout/ListLayoutActions/index.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/ListLayout/ListLayoutActions/index.jsx b/src/components/ListLayout/ListLayoutActions/index.jsx index 75a55ee4..40fe0da7 100644 --- a/src/components/ListLayout/ListLayoutActions/index.jsx +++ b/src/components/ListLayout/ListLayoutActions/index.jsx @@ -23,6 +23,7 @@ export function ListLayoutActions({ onChange={() => { !isAllSelected ? selectAll() : deselectAll(); }} + data-testid="list-layout-toggle-select-all" /> {/* ListLayoutActionsText нужен для того, чтобы отображение не прыгало при исчезновении children From ec928676f1c1775633bb088d39b1fd3646e23ccf Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 16:25:01 +0300 Subject: [PATCH 104/175] UIBadge: line height increased --- src/components/UIBadge/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UIBadge/index.jsx b/src/components/UIBadge/index.jsx index 72b5788a..df8a9f0c 100644 --- a/src/components/UIBadge/index.jsx +++ b/src/components/UIBadge/index.jsx @@ -8,7 +8,7 @@ export const UIBadge = styled.span` border-radius: 22.5px; text-align: center; font-size: 13px; - line-height: 1.08; + line-height: 18px; font-weight: normal; padding: 0 8px; ${({ badgeTheme }) => BadgeThemes[badgeTheme]}; From e1065a57887eb8759f45f79c42db62116d54bc9f Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 17:45:00 +0300 Subject: [PATCH 105/175] PageCard: component shadow now visible on siblings --- src/components/PageCard/StyledPageCard.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/PageCard/StyledPageCard.jsx b/src/components/PageCard/StyledPageCard.jsx index 3a8f553f..62dd5292 100644 --- a/src/components/PageCard/StyledPageCard.jsx +++ b/src/components/PageCard/StyledPageCard.jsx @@ -5,6 +5,8 @@ const StyledPageCard = styled.section` box-sizing: border-box; padding: 32px 64px; box-shadow: 0px 0px 80px rgba(162, 182, 189, 0.2); + /* чтобы тень была выше окружающих отступов */ + z-index: 11; `; export { StyledPageCard }; From 9c9953b826cdfb762cca7ae511086800796b8896 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 13 Apr 2020 17:46:42 +0300 Subject: [PATCH 106/175] ListLayout: sticky header fix --- src/components/ListLayout/ListLayoutTop.jsx | 3 +-- src/components/ListLayout/index.jsx | 2 +- .../hooks/use-short-sticky-header.js | 13 ++++++------- src/components/ListStickyHeader/index.jsx | 18 ++++++++---------- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/components/ListLayout/ListLayoutTop.jsx b/src/components/ListLayout/ListLayoutTop.jsx index 3f15ad73..4466aebc 100644 --- a/src/components/ListLayout/ListLayoutTop.jsx +++ b/src/components/ListLayout/ListLayoutTop.jsx @@ -7,8 +7,7 @@ import { colors } from "../../style"; const ListLayoutTop = styled(ListStickyHeader)` padding-bottom: 24px; padding-top: 24px; - /** хак, чтобы скрыть отступ страницы (RouteSectionHider) */ - /* margin-top: -24px; */ + margin-top: -24px; background-color: ${colors.whiteSimple}; `; diff --git a/src/components/ListLayout/index.jsx b/src/components/ListLayout/index.jsx index 6cbf3951..13184d8a 100644 --- a/src/components/ListLayout/index.jsx +++ b/src/components/ListLayout/index.jsx @@ -16,7 +16,7 @@ export function ListLayout({ title, buttons, search, actions, content }) { return ( {hasTop && ( - + {hasHeader && ( {title && {title}} diff --git a/src/components/ListStickyHeader/hooks/use-short-sticky-header.js b/src/components/ListStickyHeader/hooks/use-short-sticky-header.js index b7cb0210..33e956bb 100644 --- a/src/components/ListStickyHeader/hooks/use-short-sticky-header.js +++ b/src/components/ListStickyHeader/hooks/use-short-sticky-header.js @@ -1,12 +1,11 @@ import { useEffect } from "react"; import { useScrollDirection } from "../../../hooks"; -function useShortStickyHeader({ headerHeight, headerStickyOffset }) { +function useShortStickyHeader({ headerElRef }) { const { directionY, y } = useScrollDirection(); const isHeaderFull = directionY === "top" && y > 600; - const isHeaderShort = - directionY === "bottom" && y > headerHeight + headerStickyOffset; - const isSticky = y > headerHeight; + + const isSticky = headerElRef.current && y > headerElRef.current.naturalTop; useEffect(() => { const appHeader = document.getElementById("sticky-header"); @@ -14,15 +13,15 @@ function useShortStickyHeader({ headerHeight, headerStickyOffset }) { return; } - const newTranlateY = isHeaderFull ? 0 : "-100%"; - appHeader.style.transform = `translateY(${newTranlateY})`; + const newTranslateY = isHeaderFull ? 0 : "-100%"; + appHeader.style.transform = `translateY(${newTranslateY})`; return () => { appHeader.style.transform = null; }; }, [directionY]); - return { isHeaderFull, isHeaderShort, isSticky }; + return { isHeaderFull, isSticky }; } export { useShortStickyHeader }; diff --git a/src/components/ListStickyHeader/index.jsx b/src/components/ListStickyHeader/index.jsx index 7d11a6a8..8622e47a 100644 --- a/src/components/ListStickyHeader/index.jsx +++ b/src/components/ListStickyHeader/index.jsx @@ -11,14 +11,13 @@ import { ListStickyHeaderFixedBackground } from "./ListStickyHeaderFixedBackgrou function ListStickyHeader({ children, headerHeight, - headerStickyOffset, listHeaderHeightShort, className, }) { const headerElRef = useRef(null); - const { isHeaderFull, isSticky, isHeaderShort } = useShortStickyHeader({ - headerHeight, - headerStickyOffset, + const headerInnerRef = useRef(null); + const { isHeaderFull, isSticky } = useShortStickyHeader({ + headerElRef, }); return ( @@ -29,10 +28,11 @@ function ListStickyHeader({ transform: `translateY(${isHeaderFull ? headerHeight : 0}px)`, }} className={className} + ref={headerElRef} > - + {typeof children === "function" - ? children({ isHeaderShort, isHeaderFull, isSticky }) + ? children({ isHeaderFull, isSticky }) : children} @@ -41,9 +41,9 @@ function ListStickyHeader({ @@ -60,8 +60,6 @@ ListStickyHeader.propTypes = { ]).isRequired, headerHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) .isRequired, - headerStickyOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) - .isRequired, listHeaderHeightShort: PropTypes.oneOfType([ PropTypes.number, PropTypes.string, From 1bc7410ccd258fd92c6cc9b0a73c9de8ad679f35 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 14 Apr 2020 10:37:10 +0300 Subject: [PATCH 107/175] ListLayout: className prop was added --- src/components/ListLayout/index.jsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/ListLayout/index.jsx b/src/components/ListLayout/index.jsx index 13184d8a..4198d9b4 100644 --- a/src/components/ListLayout/index.jsx +++ b/src/components/ListLayout/index.jsx @@ -9,12 +9,19 @@ import { ListLayoutSearch } from "./ListLayoutSearch"; import { ListLayoutContent } from "./ListLayoutContent"; import { ListLayoutTop } from "./ListLayoutTop"; -export function ListLayout({ title, buttons, search, actions, content }) { +export function ListLayout({ + title, + buttons, + search, + actions, + content, + className, +}) { const hasHeader = title || buttons; const hasTop = hasHeader || search; return ( - + {hasTop && ( {hasHeader && ( @@ -39,6 +46,7 @@ ListLayout.propTypes = { search: PropTypes.element, actions: PropTypes.element, content: PropTypes.element, + className: PropTypes.string, }; export * from "./ListLayoutList"; From 45b39f05606459eb79d629968eb7afa4d667cb4e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 14 Apr 2020 10:54:24 +0300 Subject: [PATCH 108/175] iconst: GearOutline added --- src/components/icons/GearOutline.jsx | 36 ++++++++++++++++++++++++++++ src/components/icons/index.js | 1 + 2 files changed, 37 insertions(+) create mode 100644 src/components/icons/GearOutline.jsx diff --git a/src/components/icons/GearOutline.jsx b/src/components/icons/GearOutline.jsx new file mode 100644 index 00000000..5ff3064c --- /dev/null +++ b/src/components/icons/GearOutline.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function GearOutline({ size, className }) { + return ( + + + + + ); +} + +GearOutline.propTypes = { + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + className: PropTypes.string, +}; + +GearOutline.defaultProps = { + size: 10, +}; + +export default GearOutline; diff --git a/src/components/icons/index.js b/src/components/icons/index.js index b564a45f..9872a901 100644 --- a/src/components/icons/index.js +++ b/src/components/icons/index.js @@ -52,4 +52,5 @@ export { default as Sync } from "./Sync"; export { default as Asterisk } from "./Asterisk"; export { default as Search } from "./Search"; export { default as Gear } from "./Gear"; +export { default as GearOutline } from "./GearOutline"; export { default as QRcode } from "./QRcode"; From f02d226d7e94bf837797c6c15efbb655f19a541d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 14 Apr 2020 10:55:29 +0300 Subject: [PATCH 109/175] icons: Gear icon fill now is currentColor --- src/components/icons/Gear.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/icons/Gear.jsx b/src/components/icons/Gear.jsx index eabb01d7..f99d2955 100644 --- a/src/components/icons/Gear.jsx +++ b/src/components/icons/Gear.jsx @@ -15,7 +15,7 @@ function Gear({ size, className }) { fillRule="evenodd" clipRule="evenodd" d="M14.5942 9.68372L15.4389 10.1714C15.6555 10.2966 15.7297 10.5737 15.6047 10.7903L13.7847 13.9427C13.6596 14.1595 13.3823 14.2337 13.1658 14.1087L12.3212 13.621C11.409 13.0943 10.271 13.7529 10.271 14.8047V15.7801C10.271 16.0304 10.0682 16.2333 9.81787 16.2333H6.17824C5.92796 16.2333 5.72511 16.0304 5.72511 15.7801V14.8047C5.72511 13.7515 4.58593 13.0949 3.67508 13.621L2.83042 14.1087C2.61366 14.2339 2.33635 14.1593 2.21139 13.9427L0.391573 10.7903C0.266491 10.5737 0.340714 10.2966 0.557483 10.1714L1.40202 9.68372C2.31393 9.15732 2.31311 7.8422 1.40202 7.31615L0.557365 6.82845C0.340714 6.70337 0.266491 6.42618 0.391573 6.20953L2.21139 3.05712C2.33659 2.84036 2.61389 2.76613 2.83042 2.89122L3.67508 3.37891C4.58711 3.90544 5.72511 3.24723 5.72511 2.19513V1.21973C5.72511 0.969446 5.92808 0.766602 6.17824 0.766602H9.81799C10.0683 0.766602 10.2711 0.969446 10.2711 1.21973V2.19513C10.2711 3.24829 11.4102 3.90485 12.3212 3.37891L13.1658 2.89122C13.3826 2.76613 13.6599 2.84059 13.7848 3.05712L15.6047 6.20953C15.7297 6.42618 15.6555 6.70325 15.4389 6.82845L14.5942 7.31615C13.6823 7.84255 13.6831 9.15767 14.5942 9.68372ZM4.82651 8.49994C4.82651 6.75093 6.24925 5.32807 7.99815 5.32807C9.74693 5.32807 11.1697 6.75093 11.1697 8.49994C11.1697 10.249 9.74693 11.6718 7.99815 11.6718C6.24925 11.6718 4.82651 10.249 4.82651 8.49994Z" - fill="#222222" + fill="currentColor" /> Date: Tue, 14 Apr 2020 15:42:49 +0300 Subject: [PATCH 110/175] ListLayout: sticky header refactoring --- .../StyledListLayoutDetailed.jsx | 18 +++++ .../ListLayout/ListLayoutDetailed/index.jsx | 46 +++++++---- src/components/ListLayout/index.jsx | 76 ++++++++++++++----- .../StyledListStickyHeader.jsx | 2 +- .../hooks/use-short-sticky-header.js | 12 ++- src/components/ListStickyHeader/index.jsx | 22 ++---- src/components/PersonCardDetailed/index.jsx | 13 +++- 7 files changed, 138 insertions(+), 51 deletions(-) create mode 100644 src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx new file mode 100644 index 00000000..7e5c7449 --- /dev/null +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -0,0 +1,18 @@ +import styled from "styled-components"; + +import StickyBox from "react-sticky-box"; + +const StyledListLayoutDetailed = styled(StickyBox)` + position: relative; + box-sizing: border-box; + border-radius: 4px; + box-shadow: rgba(162, 182, 189, 0.2) 0px 0px 80px 0px; + flex: 334px 0 0; + padding: 20px; + display: flex; + flex-direction: column; + min-height: 220px; + transition: transform 120ms ease-in; +`; + +export { StyledListLayoutDetailed }; diff --git a/src/components/ListLayout/ListLayoutDetailed/index.jsx b/src/components/ListLayout/ListLayoutDetailed/index.jsx index 9afc4cab..48e73b4a 100644 --- a/src/components/ListLayout/ListLayoutDetailed/index.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/index.jsx @@ -1,13 +1,33 @@ -import styled from "styled-components"; - -export const ListLayoutDetailed = styled.div` - position: relative; - box-sizing: border-box; - border-radius: 4px; - box-shadow: rgba(162, 182, 189, 0.2) 0px 0px 80px 0px; - flex: 334px 0 0; - padding: 20px; - display: flex; - flex-direction: column; - min-height: 220px; -`; +import React from "react"; +import PropTypes from "prop-types"; + +import { useContext } from "react"; + +import { StyledListLayoutDetailed } from "./StyledListLayoutDetailed"; +import { ListLayoutContext } from "../index"; + +function ListLayoutDetailed({ offsetTop, children }) { + const { appHeaderOffset } = useContext(ListLayoutContext); + + return ( + + {children} + + ); +} + +ListLayoutDetailed.propTypes = { + offsetTop: PropTypes.number.isRequired, + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), +}; + +ListLayoutDetailed.defaultProps = { + offsetTop: 120, +}; + +export { ListLayoutDetailed }; diff --git a/src/components/ListLayout/index.jsx b/src/components/ListLayout/index.jsx index 4198d9b4..b5e8632c 100644 --- a/src/components/ListLayout/index.jsx +++ b/src/components/ListLayout/index.jsx @@ -1,6 +1,9 @@ import React from "react"; import PropTypes from "prop-types"; +import { useState, useMemo, useEffect } from "react"; +import { createContext } from "react"; + import { StyledListLayout } from "./StyledListLayout"; import { ListLayoutHeader } from "./ListLayoutHeader"; import { ListLayoutTitle } from "./ListLayoutTitle"; @@ -9,34 +12,66 @@ import { ListLayoutSearch } from "./ListLayoutSearch"; import { ListLayoutContent } from "./ListLayoutContent"; import { ListLayoutTop } from "./ListLayoutTop"; -export function ListLayout({ +import { identity } from "lodash-es"; + +const ListLayoutContext = createContext({ + isHeaderFull: false, + setIsHeaderFull: identity, + headerHeight: 80, + /** + * Смещение фильтров для того, чтобы элементы не заезжали + * под хедер приложения, когда она прилеплен к верху + */ + appHeaderOffset: 0, + setAppHeaderOffset: identity, +}); + +function ListLayout({ title, buttons, search, actions, content, className, + headerHeight, }) { + const [isHeaderFull, setIsHeaderFull] = useState(false); + const [appHeaderOffset, setAppHeaderOffset] = useState(0); + const store = useMemo( + () => ({ + isHeaderFull, + setIsHeaderFull, + headerHeight, + appHeaderOffset, + }), + [isHeaderFull, headerHeight, appHeaderOffset] + ); + useEffect(() => { + setAppHeaderOffset(isHeaderFull ? headerHeight : 0); + }, [isHeaderFull]); + const hasHeader = title || buttons; const hasTop = hasHeader || search; return ( - - {hasTop && ( - - {hasHeader && ( - - {title && {title}} - {buttons && {buttons}} - - )} - {search && {search}} - - )} - - {actions && actions} - {content && {content}} - + + + {hasTop && ( + + {hasHeader && ( + + {title && {title}} + {buttons && {buttons}} + + )} + {search && {search}} + + )} + + {actions && actions} + {content && {content}} + + ); } @@ -47,9 +82,16 @@ ListLayout.propTypes = { actions: PropTypes.element, content: PropTypes.element, className: PropTypes.string, + headerHeight: PropTypes.number, +}; + +ListLayout.defaultProps = { + headerHeight: 80, }; export * from "./ListLayoutList"; export * from "./ListLayoutNotice"; export * from "./ListLayoutDetailed"; export * from "./ListLayoutActions"; +export { ListLayout }; +export { ListLayoutContext }; diff --git a/src/components/ListStickyHeader/StyledListStickyHeader.jsx b/src/components/ListStickyHeader/StyledListStickyHeader.jsx index a5cf2fb3..49b939e4 100644 --- a/src/components/ListStickyHeader/StyledListStickyHeader.jsx +++ b/src/components/ListStickyHeader/StyledListStickyHeader.jsx @@ -3,7 +3,7 @@ import StickyBox from "react-sticky-box"; const StyledListStickyHeader = styled(StickyBox)` z-index: 10; - transition: transform 200ms ease-in; + transition: transform 120ms ease-in; `; export { StyledListStickyHeader }; diff --git a/src/components/ListStickyHeader/hooks/use-short-sticky-header.js b/src/components/ListStickyHeader/hooks/use-short-sticky-header.js index 33e956bb..08224cbe 100644 --- a/src/components/ListStickyHeader/hooks/use-short-sticky-header.js +++ b/src/components/ListStickyHeader/hooks/use-short-sticky-header.js @@ -1,9 +1,13 @@ -import { useEffect } from "react"; +import { useEffect, useContext } from "react"; import { useScrollDirection } from "../../../hooks"; +import { ListLayoutContext } from "../../ListLayout"; function useShortStickyHeader({ headerElRef }) { const { directionY, y } = useScrollDirection(); - const isHeaderFull = directionY === "top" && y > 600; + const { isHeaderFull, setIsHeaderFull } = useContext(ListLayoutContext); + useEffect(() => { + setIsHeaderFull(directionY === "top" && y > 600); + }, [directionY, y]); const isSticky = headerElRef.current && y > headerElRef.current.naturalTop; @@ -19,9 +23,9 @@ function useShortStickyHeader({ headerElRef }) { return () => { appHeader.style.transform = null; }; - }, [directionY]); + }, [isHeaderFull]); - return { isHeaderFull, isSticky }; + return { isSticky }; } export { useShortStickyHeader }; diff --git a/src/components/ListStickyHeader/index.jsx b/src/components/ListStickyHeader/index.jsx index 8622e47a..fa7c640e 100644 --- a/src/components/ListStickyHeader/index.jsx +++ b/src/components/ListStickyHeader/index.jsx @@ -1,22 +1,19 @@ import React from "react"; import PropTypes from "prop-types"; -import { useRef } from "react"; +import { useRef, useContext } from "react"; import { useShortStickyHeader } from "./hooks"; +import { ListLayoutContext } from "../ListLayout"; import { StyledListStickyHeader } from "./StyledListStickyHeader"; import { ListStickyHeaderInner } from "./ListStickyHeaderInner"; import { ListStickyHeaderFixedBackground } from "./ListStickyHeaderFixedBackground"; -function ListStickyHeader({ - children, - headerHeight, - listHeaderHeightShort, - className, -}) { +function ListStickyHeader({ children, listHeaderHeightShort, className }) { const headerElRef = useRef(null); const headerInnerRef = useRef(null); - const { isHeaderFull, isSticky } = useShortStickyHeader({ + const { isHeaderFull, appHeaderOffset } = useContext(ListLayoutContext); + const { isSticky } = useShortStickyHeader({ headerElRef, }); @@ -24,8 +21,7 @@ function ListStickyHeader({ <> - {/* Элемент для того, чтобы перекрывать подложу новых энтрисов */} + {/* Элемент для того, чтобы перекрывать элементы по бокам (вне основного контейнера) */} {isSticky && headerElRef.current && ( )} @@ -58,8 +54,6 @@ ListStickyHeader.propTypes = { PropTypes.node, PropTypes.array, ]).isRequired, - headerHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) - .isRequired, listHeaderHeightShort: PropTypes.oneOfType([ PropTypes.number, PropTypes.string, diff --git a/src/components/PersonCardDetailed/index.jsx b/src/components/PersonCardDetailed/index.jsx index 14b575d3..136f4c27 100644 --- a/src/components/PersonCardDetailed/index.jsx +++ b/src/components/PersonCardDetailed/index.jsx @@ -1,6 +1,8 @@ -import React, { useEffect } from "react"; +import React from "react"; import PropTypes from "prop-types"; +import { useEffect } from "react"; + import { StyledPersonCardDetailed } from "./StyledPersonCardDetailed"; import { PersonCardDetailedSpinner } from "./PersonCardDetailedSpinner"; import { @@ -20,6 +22,7 @@ function PersonCardDetailed({ children, className, "data-testid": testId, + offsetTop, }) { useEffect(() => { if (personIdxid) { @@ -28,7 +31,11 @@ function PersonCardDetailed({ }, [personIdxid]); return ( - + {isLoading ? ( ) : person && !isPersonNotExists ? ( @@ -57,10 +64,12 @@ PersonCardDetailed.propTypes = { children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]).isRequired, className: PropTypes.string.isRequired, "data-testid": PropTypes.string, + offsetTop: PropTypes.number.isRequired, }; PersonCardDetailed.defaultProps = { "data-testid": "person-card-detailed", + offsetTop: 120, }; export * from "./PersonCardDetailedData"; From 5a16e177c24a9c33a7d7513e6e79a3e4cbd28842 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 14 Apr 2020 16:03:46 +0300 Subject: [PATCH 111/175] ListLayout: Provider component was added --- .../ListLayout/ListLayoutProvider.jsx | 53 ++++++++++++++++++ src/components/ListLayout/index.jsx | 55 ++----------------- 2 files changed, 59 insertions(+), 49 deletions(-) create mode 100644 src/components/ListLayout/ListLayoutProvider.jsx diff --git a/src/components/ListLayout/ListLayoutProvider.jsx b/src/components/ListLayout/ListLayoutProvider.jsx new file mode 100644 index 00000000..c8bb0075 --- /dev/null +++ b/src/components/ListLayout/ListLayoutProvider.jsx @@ -0,0 +1,53 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { useMemo, useEffect, useState } from "react"; +import { createContext } from "react"; + +import { identity } from "lodash-es"; + +const ListLayoutContext = createContext({ + isHeaderFull: false, + setIsHeaderFull: identity, + headerHeight: 80, + /** + * Смещение фильтров для того, чтобы элементы не заезжали + * под хедер приложения, когда она прилеплен к верху + */ + appHeaderOffset: 0, + setAppHeaderOffset: identity, +}); + +function getHeaderHeight(headerEl) { + return headerEl ? headerEl.getBoundingClientRect().height : 0; +} + +function ListLayoutProvider({ children }) { + const [isHeaderFull, setIsHeaderFull] = useState(false); + const [appHeaderOffset, setAppHeaderOffset] = useState(0); + + const store = useMemo( + () => ({ + isHeaderFull, + setIsHeaderFull, + headerHeight: getHeaderHeight(document.querySelector("header")), + appHeaderOffset, + }), + [isHeaderFull, appHeaderOffset] + ); + useEffect(() => { + setAppHeaderOffset(isHeaderFull ? store.headerHeight : 0); + }, [isHeaderFull]); + + return ( + + {children} + + ); +} + +ListLayoutProvider.propTypes = { + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), +}; + +export { ListLayoutProvider, ListLayoutContext }; diff --git a/src/components/ListLayout/index.jsx b/src/components/ListLayout/index.jsx index b5e8632c..47e86f2b 100644 --- a/src/components/ListLayout/index.jsx +++ b/src/components/ListLayout/index.jsx @@ -1,9 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; -import { useState, useMemo, useEffect } from "react"; -import { createContext } from "react"; - import { StyledListLayout } from "./StyledListLayout"; import { ListLayoutHeader } from "./ListLayoutHeader"; import { ListLayoutTitle } from "./ListLayoutTitle"; @@ -12,52 +9,17 @@ import { ListLayoutSearch } from "./ListLayoutSearch"; import { ListLayoutContent } from "./ListLayoutContent"; import { ListLayoutTop } from "./ListLayoutTop"; -import { identity } from "lodash-es"; - -const ListLayoutContext = createContext({ - isHeaderFull: false, - setIsHeaderFull: identity, - headerHeight: 80, - /** - * Смещение фильтров для того, чтобы элементы не заезжали - * под хедер приложения, когда она прилеплен к верху - */ - appHeaderOffset: 0, - setAppHeaderOffset: identity, -}); - -function ListLayout({ - title, - buttons, - search, - actions, - content, - className, - headerHeight, -}) { - const [isHeaderFull, setIsHeaderFull] = useState(false); - const [appHeaderOffset, setAppHeaderOffset] = useState(0); - const store = useMemo( - () => ({ - isHeaderFull, - setIsHeaderFull, - headerHeight, - appHeaderOffset, - }), - [isHeaderFull, headerHeight, appHeaderOffset] - ); - useEffect(() => { - setAppHeaderOffset(isHeaderFull ? headerHeight : 0); - }, [isHeaderFull]); +import { ListLayoutContext, ListLayoutProvider } from "./ListLayoutProvider"; +function ListLayout({ title, buttons, search, actions, content, className }) { const hasHeader = title || buttons; const hasTop = hasHeader || search; return ( - + {hasTop && ( - + {hasHeader && ( {title && {title}} @@ -71,7 +33,7 @@ function ListLayout({ {actions && actions} {content && {content}} - + ); } @@ -82,11 +44,6 @@ ListLayout.propTypes = { actions: PropTypes.element, content: PropTypes.element, className: PropTypes.string, - headerHeight: PropTypes.number, -}; - -ListLayout.defaultProps = { - headerHeight: 80, }; export * from "./ListLayoutList"; @@ -94,4 +51,4 @@ export * from "./ListLayoutNotice"; export * from "./ListLayoutDetailed"; export * from "./ListLayoutActions"; export { ListLayout }; -export { ListLayoutContext }; +export { ListLayoutContext, ListLayoutProvider }; From 4cc03c42697875e39029e06e07269ae33c83ff67 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 14 Apr 2020 16:47:01 +0300 Subject: [PATCH 112/175] ListLayoutDetailed: inner component was added cuz StickyBox does not propagate data attrs --- .../ListLayout/ListLayoutDetailed/index.jsx | 12 ++++++++++-- .../PersonsGroup/PersonsGroupListPerson/index.jsx | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/ListLayout/ListLayoutDetailed/index.jsx b/src/components/ListLayout/ListLayoutDetailed/index.jsx index 48e73b4a..b34f69ca 100644 --- a/src/components/ListLayout/ListLayoutDetailed/index.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/index.jsx @@ -6,7 +6,12 @@ import { useContext } from "react"; import { StyledListLayoutDetailed } from "./StyledListLayoutDetailed"; import { ListLayoutContext } from "../index"; -function ListLayoutDetailed({ offsetTop, children }) { +function ListLayoutDetailed({ + offsetTop, + children, + "data-testid": testId, + className, +}) { const { appHeaderOffset } = useContext(ListLayoutContext); return ( @@ -15,8 +20,9 @@ function ListLayoutDetailed({ offsetTop, children }) { style={{ transform: `translateY(${appHeaderOffset}px)`, }} + className={className} > - {children} +
{children}
); } @@ -24,6 +30,8 @@ function ListLayoutDetailed({ offsetTop, children }) { ListLayoutDetailed.propTypes = { offsetTop: PropTypes.number.isRequired, children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), + "data-testid": PropTypes.string, + className: PropTypes.string, }; ListLayoutDetailed.defaultProps = { diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx index d2ad60d5..a073388a 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx @@ -34,7 +34,7 @@ export function PersonsGroupListPerson({ }, [personIdxid]); return ( - + {(isPersonFetching || !person) && !error ? ( ) : error ? ( From 72029d4c66599b6187dd5160f020cef6393d1544 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 14 Apr 2020 17:24:29 +0300 Subject: [PATCH 113/175] ListLayoutDetailed: inner component was added --- .../ListLayoutDetailed/ListLayoutDetailedInner.jsx | 12 ++++++++++++ .../ListLayoutDetailed/StyledListLayoutDetailed.jsx | 6 ------ .../ListLayout/ListLayoutDetailed/index.jsx | 5 ++++- 3 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx diff --git a/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx b/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx new file mode 100644 index 00000000..08f0c69c --- /dev/null +++ b/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx @@ -0,0 +1,12 @@ +import styled from "styled-components"; + +const ListLayoutDetailedInner = styled.div` + display: flex; + flex-direction: column; + position: relative; + box-sizing: border-box; + padding: 20px; + min-height: 220px; +`; + +export { ListLayoutDetailedInner }; diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx index 7e5c7449..552856ae 100644 --- a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -3,15 +3,9 @@ import styled from "styled-components"; import StickyBox from "react-sticky-box"; const StyledListLayoutDetailed = styled(StickyBox)` - position: relative; - box-sizing: border-box; border-radius: 4px; box-shadow: rgba(162, 182, 189, 0.2) 0px 0px 80px 0px; flex: 334px 0 0; - padding: 20px; - display: flex; - flex-direction: column; - min-height: 220px; transition: transform 120ms ease-in; `; diff --git a/src/components/ListLayout/ListLayoutDetailed/index.jsx b/src/components/ListLayout/ListLayoutDetailed/index.jsx index b34f69ca..8c90b7b6 100644 --- a/src/components/ListLayout/ListLayoutDetailed/index.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/index.jsx @@ -4,6 +4,7 @@ import PropTypes from "prop-types"; import { useContext } from "react"; import { StyledListLayoutDetailed } from "./StyledListLayoutDetailed"; +import { ListLayoutDetailedInner } from "./ListLayoutDetailedInner"; import { ListLayoutContext } from "../index"; function ListLayoutDetailed({ @@ -22,7 +23,9 @@ function ListLayoutDetailed({ }} className={className} > -
{children}
+ + {children} + ); } From 647b1a86cee34b4300240d15c9925bf484f0692e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 12:28:38 +0300 Subject: [PATCH 114/175] utils: cleaning code --- package-lock.json | 5 -- package.json | 1 - src/utils/helpers.js | 161 +++++++++++++++++-------------------------- 3 files changed, 65 insertions(+), 102 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9126378..28467b85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13803,11 +13803,6 @@ } } }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", diff --git a/package.json b/package.json index 8be481c8..5e0b80e9 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,6 @@ "jump.js": "^1.0.2", "lodash-es": "^4.17.15", "match-sorter": "^4.1.0", - "moment": "^2.24.0", "nouislider": "^14.2.0", "nouislider-react": "^3.3.7", "rc-notification": "^4.0.0", diff --git a/src/utils/helpers.js b/src/utils/helpers.js index 2745d45c..91773530 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -1,20 +1,10 @@ import dayjs from "dayjs"; import matchSorter from "match-sorter"; import { isEqual } from "lodash-es"; +import jump from "jump.js"; -const DATE_TIME_FORMAT_SLASHES = "DD/MM/YY HH:mm"; const DATE_TIME_FORMAT_SIMPLE = "D MMM YYYY, HH:mm:ss"; -const defaultConfValues = { - new: false, - reinit: false, - exact: false, - ha: false, - junk: false, - nm: false, - det: false, -}; - export function createUUID() { // http://www.ietf.org/rfc/rfc4122.txt var s = []; @@ -30,38 +20,15 @@ export function createUUID() { return uuid; } -export function dataURItoBlob(dataURI) { - // convert base64/URLEncoded data component to raw binary data held in a string - var byteString; - if (dataURI.split(",")[0].indexOf("base64") >= 0) - byteString = atob(dataURI.split(",")[1]); - else byteString = unescape(dataURI.split(",")[1]); - // separate out the mime component - var mimeString = dataURI - .split(",")[0] - .split(":")[1] - .split(";")[0]; - // write the bytes of the string to a typed array - var ia = new Uint8Array(byteString.length); - for (var i = 0; i < byteString.length; i++) { - ia[i] = byteString.charCodeAt(i); - } - return new Blob([ia], { type: mimeString }); -} - -export function timeFormatSlashes(time) { - return timeFormater(time, DATE_TIME_FORMAT_SLASHES); -} - -export function timeFormat(time) { - return timeFormater(time, DATE_TIME_FORMAT_SIMPLE); -} - +// DATA FORMATTERS function timeFormater(time, fromat) { const formatedTime = time && dayjs(time).isValid() && dayjs(time).format(fromat); return formatedTime || "—"; } +export function timeFormat(time) { + return timeFormater(time, DATE_TIME_FORMAT_SIMPLE); +} export function formatDate(date, format = "DD MMM YYYY, HH:mm:ss") { if (!dayjs(date).isValid()) return null; @@ -82,6 +49,15 @@ export function formatSex(sex) { ); } +export function formatFaceSize(facesize) { + if (facesize !== 0 && !facesize) return null; + + let fs = Math.floor(facesize / 1000); + + return fs >= 100 ? (fs = "99k+") : fs + "k"; +} + +// ARRAY export function toggleInArray(arr = [], item) { return arr.includes(item) ? arr.filter(disabled => item !== disabled) @@ -104,40 +80,6 @@ export function searchInList(list, query, keys) { : list; } -export function formatFaceSize(facesize) { - if (facesize !== 0 && !facesize) return null; - - let fs = Math.floor(facesize / 1000); - - return fs >= 100 ? (fs = "99k+") : fs + "k"; -} - -export function filtersToString(filters) { - return Object.keys(filters).join(); -} - -export function parseFilters(filters) { - if (filters && filters.conf) { - const confArray = filters.conf.split(","); - const confObj = confArray.reduce((obj, value) => { - obj[value] = true; - return obj; - }, {}); - - const mappedFilters = { - offset: Number(filters.offset || 0), - limit: Number(filters.limit), - }; - - return { - ...filters, - ...mappedFilters, - conf: { ...defaultConfValues, ...confObj }, - }; - } - return {}; -} - export function isNotEmpty(value, isZeroEmpty) { return ( typeof value !== "undefined" && @@ -147,28 +89,10 @@ export function isNotEmpty(value, isZeroEmpty) { ); } -export function getBase64(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.readAsDataURL(file); - reader.onload = () => resolve(reader.result); - reader.onerror = error => reject(error); - }); -} - export function findOptionByValue(options, value) { return options.find(option => isEqual(option.value, value)); } -export function transformFilters(filters) { - const confString = - filters.conf && - Object.keys(filters.conf) - .filter(prop => filters.conf[prop] === true) - .join(); - return { ...filters, conf: confString }; -} - export function mapDataToGetParams(data) { return ( "?" + @@ -179,12 +103,6 @@ export function mapDataToGetParams(data) { ); } -export function mapFiltersToGetParams(filters) { - const transformedFilters = transformFilters(filters); - - return mapDataToGetParams(transformedFilters); -} - export function getStringShort( string, maxLength = 10, @@ -204,6 +122,22 @@ export function getStringShort( )}...${string.slice(-(lastPartCount || defaultPartCount), stringLength)}`; } +export function getFilenameShort(filename, maxLength = 10) { + if (filename.length < maxLength) { + return filename; + } + + const extention = filename.split(".").pop(); + + const firstPart = filename.slice(0, 4); + const lastPart = filename.slice( + -extention.length - 4, + filename.length - extention.length - 1 + ); + + return `${firstPart}...${lastPart}.${extention}`; +} + export function capitalize(s) { if (typeof s !== "string") return ""; @@ -214,6 +148,7 @@ export function hasProperty(obj, property) { return Object.prototype.hasOwnProperty.call(obj, property); } +// DATE/TIME export function isSameDate(d1, d2) { if (!d1 || !d2) return false; @@ -233,3 +168,37 @@ export function isValidDate(date, format) { return dayjs(date).isValid(); } + +export function getFromMapByIds(map, ids) { + return ids.map(id => map[id]).filter(Boolean); +} + +export function removeKeyFromMap(map, key) { + // eslint-disable-next-line no-unused-vars + const { [key]: removed, ...restMap } = map; + + return restMap; +} + +export function scrollToTop(options = {}) { + document.querySelector("#app-container").scrollIntoView({ + behavior: "smooth", + ...options, + }); +} + +export function scrollToItem(selector, itemHeight, onScroll, options = {}) { + const node = document.querySelector(selector); + + if (node) { + // 200 секунд - тайминг анимация фэйда при переходе между страницами + setTimeout(() => { + jump(node, { + offset: -(window.innerHeight / 2) + itemHeight, + duration: 500, + callback: onScroll, + ...options, + }); + }, 200); + } +} From 11a6a61e68ef7cc35c50f8cfd3d3e045081fd10c Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 17:33:02 +0300 Subject: [PATCH 115/175] Button: light theme changed --- src/components/Button/ButtonThemes.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index 9b37b952..20a8260a 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -40,7 +40,7 @@ const disabledTheme = css` `; const lightTheme = css` - color: ${colors.slate}; + color: ${colors.darkBlack}; background-color: #e4e9eb; ${getPseudoForShadow} From ec7d39e1f51f42fdab460fa98a6ff8453e5611a2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 17:34:36 +0300 Subject: [PATCH 116/175] colors: slate color hex values were replaced with color variable --- src/components/Button/ButtonThemes.jsx | 16 ++++++++-------- .../DeleteSureButton/StyledDeleteSureButton.jsx | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index 20a8260a..2afa9b5f 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -54,7 +54,7 @@ const lightTheme = css` ? disabledTheme : css` &:hover { - background-color: #3b4b5a; + background-color: ${colors.slate}; color: #fff; } `; @@ -62,18 +62,18 @@ const lightTheme = css` `; const lighterTheme = css` - color: #3b4b5a; + color: ${colors.slate}; background-color: #f3f3f3; `; const lighterGrayTheme = css` - color: #3b4b5a; + color: ${colors.slate}; background-color: #9fa7ae; `; const darkTheme = css` color: #fff; - background-color: #3b4b5a; + background-color: ${colors.slate}; ${getPseudoForShadow} @@ -87,7 +87,7 @@ const darkTheme = css` : css` &:hover { color: #fff; - background-color: #3b4b5a; + background-color: ${colors.slate}; } `; }} @@ -118,12 +118,12 @@ const ghostTheme = css` `; const ghostDarkTheme = css` - color: #3b4b5a; + color: ${colors.slate}; background-color: #f3f3f3; `; const activeTheme = css` - background-color: #3b4b5a; + background-color: ${colors.slate}; color: #fff; box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15); `; @@ -150,7 +150,7 @@ const outlineTheme = css` ? css` &:hover { color: #fff; - background-color: #3b4b5a; + background-color: ${colors.slate}; } ` : css` diff --git a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx index 8c2df0c2..406cb96d 100644 --- a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx +++ b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx @@ -15,6 +15,7 @@ function getHoverStyles({ isDisabled }) { const DeleteSureButton = styled(Button).attrs(() => ({ buttonTheme: "reset" }))` background-color: ${props => props.color}; + color: ${colors.slate}; ${({ isSure, deleteColor }) => isSure && `background-color: ${deleteColor}; color: ${colors.whiteSimple};`} From d87f17fa161c58fb4dbef36d1a6622c0b536f1fa Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 17:35:25 +0300 Subject: [PATCH 117/175] FormUneditableInput: component added --- .../components/FormInput/FormInputUneditable.jsx | 13 +++++++++++++ .../form/components/FormInput/index.jsx | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/components/form/components/FormInput/FormInputUneditable.jsx diff --git a/src/components/form/components/FormInput/FormInputUneditable.jsx b/src/components/form/components/FormInput/FormInputUneditable.jsx new file mode 100644 index 00000000..0444a605 --- /dev/null +++ b/src/components/form/components/FormInput/FormInputUneditable.jsx @@ -0,0 +1,13 @@ +import styled from "styled-components"; + +import { colors } from "../../../../style"; + +const FormInputUneditable = styled.p` + margin: 0; + font-weight: bold; + font-size: 16px; + line-height: 26px; + color: ${colors.darkBlack}; +`; + +export { FormInputUneditable }; diff --git a/src/components/form/components/FormInput/index.jsx b/src/components/form/components/FormInput/index.jsx index 0f31a550..58ac8d5d 100644 --- a/src/components/form/components/FormInput/index.jsx +++ b/src/components/form/components/FormInput/index.jsx @@ -2,6 +2,7 @@ import React from "react"; import PropTypes from "prop-types"; import { StyledFormInput } from "./StyledFormInput"; +import { FormInputUneditable } from "./FormInputUneditable"; import { getTestId } from "../../utils"; @@ -38,4 +39,16 @@ FormInput.Number = function(props) { return ; }; -export { FormInput, StyledFormInput }; +FormInput.Uneditable = function(props) { + // eslint-disable-next-line react/prop-types + return {props.value}; +}; + +const StyledFormInputUneditable = FormInputUneditable; + +export { + FormInput, + StyledFormInput, + FormInputUneditable, + StyledFormInputUneditable, +}; From f8ea81ed2aa9be024426ad71129dc90472967dc1 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 18:50:05 +0300 Subject: [PATCH 118/175] ListLayoutDetailed: styles changed --- .../ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx | 2 +- .../ListLayoutDetailed/StyledListLayoutDetailed.jsx | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx b/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx index 08f0c69c..2729eebd 100644 --- a/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx @@ -5,8 +5,8 @@ const ListLayoutDetailedInner = styled.div` flex-direction: column; position: relative; box-sizing: border-box; - padding: 20px; min-height: 220px; + flex: 100%; `; export { ListLayoutDetailedInner }; diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx index 552856ae..2e4494f6 100644 --- a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -3,10 +3,14 @@ import styled from "styled-components"; import StickyBox from "react-sticky-box"; const StyledListLayoutDetailed = styled(StickyBox)` + display: flex; + flex-direction: column; border-radius: 4px; box-shadow: rgba(162, 182, 189, 0.2) 0px 0px 80px 0px; flex: 334px 0 0; transition: transform 120ms ease-in; + padding: 20px; + box-sizing: border-box; `; export { StyledListLayoutDetailed }; From 6020caa70947dd23c102e9184ce583f55e9f8f38 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 18:51:14 +0300 Subject: [PATCH 119/175] PersonsGroupPersonDetail: actions prop was added --- .../StyledPersonsGroupPersonDetail.jsx | 3 +- .../PersonsGroupPersonDetail/index.jsx | 106 ++++++++++-------- 2 files changed, 59 insertions(+), 50 deletions(-) diff --git a/src/components/PersonsGroup/PersonsGroupPersonDetail/StyledPersonsGroupPersonDetail.jsx b/src/components/PersonsGroup/PersonsGroupPersonDetail/StyledPersonsGroupPersonDetail.jsx index 299ce0bd..05dac015 100644 --- a/src/components/PersonsGroup/PersonsGroupPersonDetail/StyledPersonsGroupPersonDetail.jsx +++ b/src/components/PersonsGroup/PersonsGroupPersonDetail/StyledPersonsGroupPersonDetail.jsx @@ -3,6 +3,7 @@ import styled from "styled-components"; import { PersonCardDetailed } from "../../PersonCardDetailed/index"; export const StyledPersonsGroupPersonDetail = styled(PersonCardDetailed)` - min-height: 502px; + min-height: 550px; width: 334px; + padding: 24px 20px; `; diff --git a/src/components/PersonsGroup/PersonsGroupPersonDetail/index.jsx b/src/components/PersonsGroup/PersonsGroupPersonDetail/index.jsx index 635e08aa..877f810f 100644 --- a/src/components/PersonsGroup/PersonsGroupPersonDetail/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupPersonDetail/index.jsx @@ -5,6 +5,7 @@ import { StyledPersonsGroupPersonDetail } from "./StyledPersonsGroupPersonDetail import { PersonCardDetailed, + PersonCardDetailedActions, PersonCardDetailedDataItemLabel as PersonLabel, PersonCardDetailedDataItemValue as PersonValue, PersonCardDetailedDataItemIdValue as PersonIdValue, @@ -21,6 +22,7 @@ function PersonsGroupPersonDetail({ personIdxid, isLoading, isPersonNotExists, + actions, }) { return ( {person && !isPersonNotExists && ( - - - Photo - - - - - - ID - - {person.idxid} - - - - Age - {person.age} - - - Sex - {formatSex(person.sex)} - - - Card created - {formatDate(person.idxid_created)} - - - Place of first entry - {person.idxid_source.name} - - - Total existing entries - {person.total} - - - Exact entries - {person.exact} - - - HA entries - {person.ha} - - - Junk entries - {person.junk} - - + <> + + + Photo + + + + + + ID + + {person.idxid} + + + + Age + {person.age} + + + Sex + {formatSex(person.sex)} + + + Card created + {formatDate(person.idxid_created)} + + + Place of first entry + {person.idxid_source.name} + + + Total entries + {person.total} + + + Exact entries + {person.exact} + + + HA entries + {person.ha} + + + Junk entries + {person.junk} + + + {actions && ( + {actions} + )} + )} ); @@ -92,6 +99,7 @@ PersonsGroupPersonDetail.propTypes = { personIdxid: PropTypes.string, isLoading: PropTypes.bool.isRequired, isPersonNotExists: PropTypes.bool, + actions: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), }; export { PersonsGroupPersonDetail, StyledPersonsGroupPersonDetail }; From 9b681e344e72c0cdb2671601c75912308490bd2c Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 18:53:16 +0300 Subject: [PATCH 120/175] PersonCardDetailed: styles changed --- .../PersonCardDetailed/PersonCardDetailedActions.jsx | 2 +- .../PersonCardDetailedDataItemLabel.jsx | 10 ++++++---- .../PersonCardDetailedDataItemValue.jsx | 6 ++++-- .../PersonCardDetailedDataItem/index.jsx | 2 +- .../PersonCardDetailedData/index.jsx | 2 +- .../PersonCardDetailed/StyledPersonCardDetailed.jsx | 7 +++++-- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/components/PersonCardDetailed/PersonCardDetailedActions.jsx b/src/components/PersonCardDetailed/PersonCardDetailedActions.jsx index bb597ad0..91894381 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedActions.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedActions.jsx @@ -8,7 +8,7 @@ const PersonCardDetailedActions = styled.div` text-align: center; &:not(:last-child) { - margin-bottom: 11px; + margin-bottom: 12px; } } `; diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx index 7fe9316e..6c14ef59 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemLabel.jsx @@ -4,11 +4,13 @@ import { colors } from "../../../../style"; const PersonCardDetailedDataItemLabel = styled.span` display: inline-block; - width: 94px; + width: 113px; min-width: 94px; - margin-right: 40px; - font-size: 13px; - color: ${colors.grayWhite}; + margin-right: 21px; + font-weight: 300; + font-size: 14px; + line-height: 18px; + color: ${colors.darkBlack}; `; export { PersonCardDetailedDataItemLabel }; diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemValue.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemValue.jsx index 8e07c6e3..829e942b 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemValue.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/PersonCardDetailedDataItemValue.jsx @@ -1,11 +1,13 @@ import styled from "styled-components"; import { ValueSpan } from "../../../ValueSpan"; +import { colors } from "../../../../style"; const PersonCardDetailedDataItemValue = styled(ValueSpan)` + font-weight: bold; font-size: 14px; - font-weight: 600; - color: #141518; + line-height: 18px; + color: ${colors.darkBlack}; `; export { PersonCardDetailedDataItemValue }; diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/index.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/index.jsx index 6a8cf751..cfa5b3c0 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/index.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/PersonCardDetailedDataItem/index.jsx @@ -6,7 +6,7 @@ const PersonCardDetailedDataItem = styled.p` display: flex; &:not(:last-child) { - margin-bottom: 10px; + margin-bottom: 8px; } `; diff --git a/src/components/PersonCardDetailed/PersonCardDetailedData/index.jsx b/src/components/PersonCardDetailed/PersonCardDetailedData/index.jsx index 8c0278dc..b281ed10 100644 --- a/src/components/PersonCardDetailed/PersonCardDetailedData/index.jsx +++ b/src/components/PersonCardDetailed/PersonCardDetailedData/index.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; const PersonCardDetailedData = styled.div` &:not(:last-child) { - margin-bottom: 30px; + margin-bottom: 24px; } `; diff --git a/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx b/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx index aa13d940..e1c1c2f6 100644 --- a/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx +++ b/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx @@ -1,10 +1,13 @@ import styled from "styled-components"; +import { StyledButton } from "../Button"; import { ListLayoutDetailed } from "../ListLayout/ListLayoutDetailed"; +import { colors } from "../../style"; const StyledPersonCardDetailed = styled(ListLayoutDetailed)` - display: flex; - flex-direction: column; + ${StyledButton}:not(:hover) { + color: ${colors.slate}; + } `; export { StyledPersonCardDetailed }; From 2fe382d37e8b894267d087958441111eb76772ea Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 19:10:48 +0300 Subject: [PATCH 121/175] CardSmall: styles changed --- .../CardSmallCheckbox/StyledCardSmallCheckbox.jsx | 4 ++-- .../CardSmall/CardSmallData/CardSmallDataItem.jsx | 8 ++++---- src/components/CardSmall/CardSmallData/index.jsx | 2 +- src/components/CardSmall/CardSmallTitle.jsx | 4 ++-- src/components/CardSmall/StyledCardSmall.jsx | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/CardSmall/CardSmallCheckbox/StyledCardSmallCheckbox.jsx b/src/components/CardSmall/CardSmallCheckbox/StyledCardSmallCheckbox.jsx index 092a2d56..ecfbddd6 100644 --- a/src/components/CardSmall/CardSmallCheckbox/StyledCardSmallCheckbox.jsx +++ b/src/components/CardSmall/CardSmallCheckbox/StyledCardSmallCheckbox.jsx @@ -2,8 +2,8 @@ import styled from "styled-components"; const StyledCardSmallCheckbox = styled.label` position: absolute; - left: 5px; - top: 5px; + left: 6px; + top: 6px; transition: opacity 120ms ease-in-out; z-index: 1; diff --git a/src/components/CardSmall/CardSmallData/CardSmallDataItem.jsx b/src/components/CardSmall/CardSmallData/CardSmallDataItem.jsx index e3b691f7..836a94b9 100644 --- a/src/components/CardSmall/CardSmallData/CardSmallDataItem.jsx +++ b/src/components/CardSmall/CardSmallData/CardSmallDataItem.jsx @@ -1,20 +1,20 @@ import styled from "styled-components"; const CardSmallDataItem = styled.p` - font-size: 13px; margin-top: 0; margin-bottom: 0; white-space: nowrap; /* Запрещаем перенос строк */ overflow: hidden; /* Обрезаем все, что не помещается в область */ text-overflow: ellipsis; /* Добавляем многоточие */ - line-height: 1.38; + font-weight: 300; + font-size: 14px; + line-height: 18px; &:not(:last-child) { - margin-bottom: 10px; + margin-bottom: 6px; } b { - font-size: 14px; font-weight: 600; } `; diff --git a/src/components/CardSmall/CardSmallData/index.jsx b/src/components/CardSmall/CardSmallData/index.jsx index e709810f..1679d674 100644 --- a/src/components/CardSmall/CardSmallData/index.jsx +++ b/src/components/CardSmall/CardSmallData/index.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; const CardSmallData = styled.div` box-sizing: border-box; - padding: 15px 5px 15px 15px; + padding: 16px 5px 16px 16px; width: 100%; `; diff --git a/src/components/CardSmall/CardSmallTitle.jsx b/src/components/CardSmall/CardSmallTitle.jsx index 3dde59d5..055c3c2b 100644 --- a/src/components/CardSmall/CardSmallTitle.jsx +++ b/src/components/CardSmall/CardSmallTitle.jsx @@ -3,10 +3,10 @@ import styled from "styled-components"; const CardSmallTitle = styled.p` margin: 0; font-size: 12px; - font-weight: 600; + line-height: 11px; &:not(:last-child) { - margin-bottom: 9px; + margin-bottom: 12px; } `; diff --git a/src/components/CardSmall/StyledCardSmall.jsx b/src/components/CardSmall/StyledCardSmall.jsx index df91f35b..abb18257 100644 --- a/src/components/CardSmall/StyledCardSmall.jsx +++ b/src/components/CardSmall/StyledCardSmall.jsx @@ -5,8 +5,8 @@ import { CardSmallData } from "./index"; const themes = { light: { - backgroundColor: colors.iceBlue, - textColor: colors.grayWhite, + backgroundColor: colors.whiteGrayLight, + textColor: colors.darkBlack, }, dark: { backgroundColor: colors.slate, From da4050b9746cbe8f0fb874f0b94a5d867c8ac5f2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Wed, 15 Apr 2020 19:11:36 +0300 Subject: [PATCH 122/175] PersonsGroupPerson: styles changed, title prop was removed --- .../PersonsGroupPerson/PersonsGroupPersonId.jsx | 6 ++++-- .../PersonsGroupPerson/StyledPersonsGroupPerson.jsx | 12 ++---------- .../PersonsGroup/PersonsGroupPerson/index.jsx | 7 ++----- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx b/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx index 7f33c2cf..be41f353 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/PersonsGroupPersonId.jsx @@ -7,7 +7,6 @@ function getStyles({ isActive }) { isActive && css` background-color: ${colors.orangeDark}; - color: ${colors.black}; ` ); } @@ -15,7 +14,10 @@ function getStyles({ isActive }) { const PersonsGroupPersonId = styled.span` padding-left: 2px; padding-right: 2px; - + font-size: 12px; + line-height: 11px; + color: ${colors.darkBlack}; + margin-bottom: 12px; ${getStyles} `; diff --git a/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx b/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx index ac0da67c..298ba747 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/StyledPersonsGroupPerson.jsx @@ -7,18 +7,10 @@ function getStyles({ isActive }) { ? css` color: ${colors.whiteSimple}; background-color: ${colors.slate}; - - b { - color: ${colors.whiteSimple}; - } ` : css` - color: ${colors.grayWhite}; - background-color: ${colors.iceBlue}; - - b { - color: ${colors.black}; - } + color: ${colors.darkBlack}; + background-color: ${colors.whiteGrayLight}; `; } diff --git a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx index df8292bb..1a1cffbe 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx @@ -15,7 +15,6 @@ import { colors } from "../../../style"; import { noimageid } from "../../../assets/images"; function PersonsGroupPerson({ - title, person, onClick, onPersonDelete, @@ -67,13 +66,12 @@ function PersonsGroupPerson({ )} - {title && {title}} - + ID{" "} {person.idxid} - + Place of first entry:
{" "} @@ -127,7 +125,6 @@ PersonsGroupPerson.propTypes = { isPersonsDeletingFromGroup: PropTypes.bool, className: PropTypes.string, "data-testid": PropTypes.string, - title: PropTypes.string, }; PersonsGroupPerson.defaultProps = { From 4b4d3b1ded88aa56d0d344e7ac996ed6d98330cd Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 11:22:54 +0300 Subject: [PATCH 123/175] ListLayoutAction: checkbox margin was increased --- .../ListLayoutActions/StyledListLayoutActions.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx b/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx index 5c59cfdf..467a6117 100644 --- a/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx +++ b/src/components/ListLayout/ListLayoutActions/StyledListLayoutActions.jsx @@ -2,13 +2,15 @@ import styled from "styled-components"; import { StyledFormCheckbox } from "../../form/components/FormCheckbox/index"; -export const StyledListLayoutActions = styled.div` +const StyledListLayoutActions = styled.div` display: flex; align-items: center; margin-bottom: 18px; height: 30px; ${StyledFormCheckbox}:not(:last-child) { - margin-right: 20px; + margin-right: 24px; } `; + +export { StyledListLayoutActions }; From 48db6857df70ed193997e839af1b48f0dc7c5347 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 12:09:27 +0300 Subject: [PATCH 124/175] ListLayoutDetailed: min height issue was fixed --- .../ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx | 1 - .../ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx b/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx index 2729eebd..7e7ac204 100644 --- a/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/ListLayoutDetailedInner.jsx @@ -5,7 +5,6 @@ const ListLayoutDetailedInner = styled.div` flex-direction: column; position: relative; box-sizing: border-box; - min-height: 220px; flex: 100%; `; diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx index 2e4494f6..8099b9ca 100644 --- a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -11,6 +11,7 @@ const StyledListLayoutDetailed = styled(StickyBox)` transition: transform 120ms ease-in; padding: 20px; box-sizing: border-box; + min-height: 220px; `; export { StyledListLayoutDetailed }; From 36f321fd0c314542eaab7dc6d9807da5d52d8124 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 12:23:41 +0300 Subject: [PATCH 125/175] ListLayoutDetailed: inner Button height decreased --- .../ListLayoutDetailed/StyledListLayoutDetailed.jsx | 5 +++++ .../PersonCardDetailed/StyledPersonCardDetailed.jsx | 1 + 2 files changed, 6 insertions(+) diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx index 8099b9ca..671b748c 100644 --- a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -1,6 +1,7 @@ import styled from "styled-components"; import StickyBox from "react-sticky-box"; +import { StyledButton } from "../../Button"; const StyledListLayoutDetailed = styled(StickyBox)` display: flex; @@ -12,6 +13,10 @@ const StyledListLayoutDetailed = styled(StickyBox)` padding: 20px; box-sizing: border-box; min-height: 220px; + + ${StyledButton} { + height: 30px; + } `; export { StyledListLayoutDetailed }; diff --git a/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx b/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx index e1c1c2f6..8dd5108b 100644 --- a/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx +++ b/src/components/PersonCardDetailed/StyledPersonCardDetailed.jsx @@ -2,6 +2,7 @@ import styled from "styled-components"; import { StyledButton } from "../Button"; import { ListLayoutDetailed } from "../ListLayout/ListLayoutDetailed"; + import { colors } from "../../style"; const StyledPersonCardDetailed = styled(ListLayoutDetailed)` From 4c63e9dd71f7dabf2fd4bb5dcee58f03dd10c581 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 12:27:39 +0300 Subject: [PATCH 126/175] PersonsGroupListPerson: inner Buttons now has medium size --- .../ListLayoutDetailed/StyledListLayoutDetailed.jsx | 5 ----- src/components/PersonsGroup/PersonsGroupListPerson/index.jsx | 2 -- 2 files changed, 7 deletions(-) diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx index 671b748c..8099b9ca 100644 --- a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -1,7 +1,6 @@ import styled from "styled-components"; import StickyBox from "react-sticky-box"; -import { StyledButton } from "../../Button"; const StyledListLayoutDetailed = styled(StickyBox)` display: flex; @@ -13,10 +12,6 @@ const StyledListLayoutDetailed = styled(StickyBox)` padding: 20px; box-sizing: border-box; min-height: 220px; - - ${StyledButton} { - height: 30px; - } `; export { StyledListLayoutDetailed }; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx index a073388a..33f5f8f4 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx @@ -52,7 +52,6 @@ export function PersonsGroupListPerson({ {searchType.value.includes("excludes") && ( Date: Thu, 16 Apr 2020 12:38:05 +0300 Subject: [PATCH 127/175] PersonsGroups: list person margins were chaged --- .../ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx | 2 +- .../PersonsGroupListPerson/PersonsGroupListPersonButton.jsx | 2 +- .../StyledPersonsGroupListPersonInfo.jsx | 2 +- .../StyledPersonsGroupListPersonTypeSelect.jsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx index 8099b9ca..5ed2ccd0 100644 --- a/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx +++ b/src/components/ListLayout/ListLayoutDetailed/StyledListLayoutDetailed.jsx @@ -11,7 +11,7 @@ const StyledListLayoutDetailed = styled(StickyBox)` transition: transform 120ms ease-in; padding: 20px; box-sizing: border-box; - min-height: 220px; + min-height: 214px; `; export { StyledListLayoutDetailed }; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx index 1e7147ee..caadfb4d 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx @@ -4,6 +4,6 @@ import Button from "../../Button"; export const PersonsGroupListPersonButton = styled(Button)` &:not(:last-child) { - margin-bottom: 10px; + margin-bottom: 8px; } `; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/StyledPersonsGroupListPersonInfo.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/StyledPersonsGroupListPersonInfo.jsx index 16280aba..4d900259 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/StyledPersonsGroupListPersonInfo.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonInfo/StyledPersonsGroupListPersonInfo.jsx @@ -5,6 +5,6 @@ export const StyledPersonsGroupListPersonInfo = styled.div` align-items: center; &:not(:last-child) { - margin-bottom: 20px; + margin-bottom: 24px; } `; diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/StyledPersonsGroupListPersonTypeSelect.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/StyledPersonsGroupListPersonTypeSelect.jsx index 2e3d3aa2..16c2989e 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/StyledPersonsGroupListPersonTypeSelect.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonTypeSelect/StyledPersonsGroupListPersonTypeSelect.jsx @@ -2,6 +2,6 @@ import styled from "styled-components"; export const StyledPersonsGroupListPersonTypeSelect = styled.div` &:not(:last-child) { - margin-bottom: 28px; + margin-bottom: 24px; } `; From 6860813db6432d7d3a18112977b0700a4a6b880b Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 12:57:11 +0300 Subject: [PATCH 128/175] useSelectableList: hasOptions check was added to isAll... values --- src/hooks/use-selectable-list.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hooks/use-selectable-list.js b/src/hooks/use-selectable-list.js index b10a8ab2..5270845e 100644 --- a/src/hooks/use-selectable-list.js +++ b/src/hooks/use-selectable-list.js @@ -75,14 +75,16 @@ function useSelectableList({ options, value, onChange }) { } } + const hasOptions = options && options.length > 0; + return { selected, selectAll, deselectAll, toggleSelected, onCheckboxChange, - isAllSelected: selected.length === options.length, - isAllDeselected: selected.length === 0, + isAllSelected: hasOptions && selected.length === options.length, + isAllDeselected: hasOptions && selected.length === 0, hasOptions: options.length !== 0, hasSelected: selected.length !== 0, }; From dc95f87324212465eb9daf1abe2602276534307d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 15:21:45 +0300 Subject: [PATCH 129/175] Title: h1 styles changed --- src/components/Text/Title.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/Text/Title.jsx b/src/components/Text/Title.jsx index 9382b6df..963d8fd1 100644 --- a/src/components/Text/Title.jsx +++ b/src/components/Text/Title.jsx @@ -6,8 +6,9 @@ function getStyles({ level }) { return { 1: css` font-size: 44px; - line-height: 60px; + line-height: 44px; letter-spacing: -0.5px; + font-weight: normal; `, 2: css` font-size: 20px; @@ -17,8 +18,8 @@ function getStyles({ level }) { 3: css` font-size: 18px; line-height: 24px; - font-weight: normal; letter-spacing: -0.36px; + font-weight: normal; `, }[level]; } From 5f299bae9d6c99f6d3cceb0f762bc8b16954988d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 15:23:16 +0300 Subject: [PATCH 130/175] icons: ArrowRight icon replaced with a custom one --- src/components/icons/ArrowRight.jsx | 33 +++++++++++++++++++++++++++++ src/components/icons/index.js | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/components/icons/ArrowRight.jsx diff --git a/src/components/icons/ArrowRight.jsx b/src/components/icons/ArrowRight.jsx new file mode 100644 index 00000000..e10858b0 --- /dev/null +++ b/src/components/icons/ArrowRight.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import PropTypes from "prop-types"; + +function ArrowRight({ size, className }) { + return ( + + + + ); +} + +ArrowRight.propTypes = { + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + className: PropTypes.string, +}; + +ArrowRight.defaultProps = { + size: 12, +}; + +export default ArrowRight; diff --git a/src/components/icons/index.js b/src/components/icons/index.js index 9872a901..5418e176 100644 --- a/src/components/icons/index.js +++ b/src/components/icons/index.js @@ -13,7 +13,6 @@ export { Exclamation, Play, ArrowUp, - ArrowRight, AngleRight, ArrowDown, ArrowLeft, @@ -43,6 +42,7 @@ export { PlaylistAddCheck, } from "@styled-icons/material"; +export { default as ArrowRight } from "./ArrowRight"; export { default as InfoCircleColor } from "./InfoCircleColor"; export { default as Pencil } from "./Pencil"; export { default as TimesDelete } from "./TimesDelete"; From 43e628a6084e8d4b4abc356aaef4a15bb6ee4730 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 15:24:46 +0300 Subject: [PATCH 131/175] Breadcrumbs: component added --- .../BreadcrumbsItem/BreadcrumbsItemIcon.jsx | 7 ++++ .../BreadcrumbsItem/BreadcrumbsItemText.jsx | 12 ++++++ .../BreadcrumbsItem/StyledBreadcrumbsItem.jsx | 34 +++++++++++++++++ .../Breadcrumbs/BreadcrumbsItem/index.jsx | 37 +++++++++++++++++++ src/components/Breadcrumbs/index.jsx | 20 ++++++++++ src/components/index.js | 1 + 6 files changed, 111 insertions(+) create mode 100644 src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemIcon.jsx create mode 100644 src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemText.jsx create mode 100644 src/components/Breadcrumbs/BreadcrumbsItem/StyledBreadcrumbsItem.jsx create mode 100644 src/components/Breadcrumbs/BreadcrumbsItem/index.jsx create mode 100644 src/components/Breadcrumbs/index.jsx diff --git a/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemIcon.jsx b/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemIcon.jsx new file mode 100644 index 00000000..ee01194c --- /dev/null +++ b/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemIcon.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +import { ArrowRight } from "../../icons"; + +const BreadcrumbsItemIcon = styled(ArrowRight)``; + +export { BreadcrumbsItemIcon }; diff --git a/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemText.jsx b/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemText.jsx new file mode 100644 index 00000000..5c8fe432 --- /dev/null +++ b/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItemText.jsx @@ -0,0 +1,12 @@ +import styled from "styled-components"; + +import { colors } from "../../../style"; + +const BreadcrumbsItemText = styled.span` + font-size: 16px; + line-height: 26px; + font-weight: 300; + color: ${colors.darkBlack}; +`; + +export { BreadcrumbsItemText }; diff --git a/src/components/Breadcrumbs/BreadcrumbsItem/StyledBreadcrumbsItem.jsx b/src/components/Breadcrumbs/BreadcrumbsItem/StyledBreadcrumbsItem.jsx new file mode 100644 index 00000000..44f69d21 --- /dev/null +++ b/src/components/Breadcrumbs/BreadcrumbsItem/StyledBreadcrumbsItem.jsx @@ -0,0 +1,34 @@ +import styled, { css } from "styled-components"; + +import { BreadcrumbsItemText } from "./BreadcrumbsItemText"; +import { BreadcrumbsItemIcon } from "./BreadcrumbsItemIcon"; + +function getStyles({ isActive, isDisabled }) { + return css` + ${BreadcrumbsItemText} { + opacity: ${isDisabled ? 0.4 : 1}; + font-weight: ${isActive ? 700 : 300}; + cursor: ${isDisabled ? "not-allowed" : isActive ? "default" : "pointer"}; + } + `; +} + +const StyledBreadcrumbsItem = styled.li` + display: flex; + align-items: center; + ${getStyles} + + &:last-child { + ${BreadcrumbsItemIcon} { + display: none; + } + } + + &:not(:last-child) { + ${BreadcrumbsItemText} { + margin-right: 14px; + } + } +`; + +export { StyledBreadcrumbsItem }; diff --git a/src/components/Breadcrumbs/BreadcrumbsItem/index.jsx b/src/components/Breadcrumbs/BreadcrumbsItem/index.jsx new file mode 100644 index 00000000..42cd5bce --- /dev/null +++ b/src/components/Breadcrumbs/BreadcrumbsItem/index.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { StyledBreadcrumbsItem } from "./StyledBreadcrumbsItem"; +import { BreadcrumbsItemText } from "./BreadcrumbsItemText"; +import { BreadcrumbsItemIcon } from "./BreadcrumbsItemIcon"; + +function BreadcrumbsItem({ + children, + isDisabled, + onClick, + isActive, + ...restProps +}) { + const onClickAllowed = !isDisabled && !isActive; + + return ( + + {children} + + + ); +} + +BreadcrumbsItem.propTypes = { + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), + isDisabled: PropTypes.bool, + isActive: PropTypes.bool, + onClick: PropTypes.func, +}; + +export { BreadcrumbsItem, StyledBreadcrumbsItem }; diff --git a/src/components/Breadcrumbs/index.jsx b/src/components/Breadcrumbs/index.jsx new file mode 100644 index 00000000..1695425c --- /dev/null +++ b/src/components/Breadcrumbs/index.jsx @@ -0,0 +1,20 @@ +import styled from "styled-components"; + +import { StyledBreadcrumbsItem, BreadcrumbsItem } from "./BreadcrumbsItem"; + +const Breadcrumbs = styled.ul` + padding-left: 0; + margin: 0; + list-style-type: none; + display: flex; + + ${StyledBreadcrumbsItem} { + &:not(:last-child) { + margin-right: 12px; + } + } +`; + +Breadcrumbs.Item = BreadcrumbsItem; + +export { Breadcrumbs, BreadcrumbsItem }; diff --git a/src/components/index.js b/src/components/index.js index 2f46f881..eb8b6e4e 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -1,5 +1,6 @@ export * from "./Badge"; export * from "./UIBadge"; +export * from "./Breadcrumbs"; export * from "./Button"; export * from "./ButtonLink"; export * from "./CardSmall"; From 87a446b15f0426102dca4236738e49446379e5d1 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 15:25:32 +0300 Subject: [PATCH 132/175] DynamicList: component was removed --- .../DynamicListItemAdditional.jsx | 5 -- .../DynamicListItem/DynamicListItemLink.jsx | 19 -------- .../DynamicListItem/DynamicListItemTitle.jsx | 10 ---- .../DynamicListItem/StyledDynamicListItem.jsx | 40 ---------------- .../DynamicList/DynamicListItem/index.jsx | 48 ------------------- .../DynamicList/DynamicListWrapper.jsx | 5 -- .../DynamicList/StyledDynamicList.jsx | 11 ----- src/components/DynamicList/index.jsx | 26 ---------- src/components/index.js | 1 - 9 files changed, 165 deletions(-) delete mode 100644 src/components/DynamicList/DynamicListItem/DynamicListItemAdditional.jsx delete mode 100644 src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx delete mode 100644 src/components/DynamicList/DynamicListItem/DynamicListItemTitle.jsx delete mode 100644 src/components/DynamicList/DynamicListItem/StyledDynamicListItem.jsx delete mode 100644 src/components/DynamicList/DynamicListItem/index.jsx delete mode 100644 src/components/DynamicList/DynamicListWrapper.jsx delete mode 100644 src/components/DynamicList/StyledDynamicList.jsx delete mode 100644 src/components/DynamicList/index.jsx diff --git a/src/components/DynamicList/DynamicListItem/DynamicListItemAdditional.jsx b/src/components/DynamicList/DynamicListItem/DynamicListItemAdditional.jsx deleted file mode 100644 index 80dae036..00000000 --- a/src/components/DynamicList/DynamicListItem/DynamicListItemAdditional.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import styled from "styled-components"; - -const DynamicListItemAdditional = styled.span``; - -export default DynamicListItemAdditional; diff --git a/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx b/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx deleted file mode 100644 index f1bc7942..00000000 --- a/src/components/DynamicList/DynamicListItem/DynamicListItemLink.jsx +++ /dev/null @@ -1,19 +0,0 @@ -import { NavLink } from "react-router-dom"; - -import styled from "styled-components"; - -import { colors } from "../../../style"; - -const DynamicListItemLink = styled(NavLink)` - display: block; - width: 100%; - box-sizing: border-box; - text-decoration: none; - height: 33px; - - &:not(:last-child) { - border-bottom: 1px solid ${colors.grayMedium}; - } -`; - -export default DynamicListItemLink; diff --git a/src/components/DynamicList/DynamicListItem/DynamicListItemTitle.jsx b/src/components/DynamicList/DynamicListItem/DynamicListItemTitle.jsx deleted file mode 100644 index 79314f45..00000000 --- a/src/components/DynamicList/DynamicListItem/DynamicListItemTitle.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import styled from "styled-components"; - -const DynamicListItemTitle = styled.p` - margin: 0; - font-size: 16px; - font-weight: 600; - line-height: normal; -`; - -export default DynamicListItemTitle; diff --git a/src/components/DynamicList/DynamicListItem/StyledDynamicListItem.jsx b/src/components/DynamicList/DynamicListItem/StyledDynamicListItem.jsx deleted file mode 100644 index f74650fe..00000000 --- a/src/components/DynamicList/DynamicListItem/StyledDynamicListItem.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import styled from "styled-components"; - -const StyledDynamicListItem = styled.li` - display: flex; - justify-content: space-between; - align-items: center; - cursor: pointer; - padding-left: 10px; - padding-right: 25px; - box-sizing: border-box; - position: relative; - height: 100%; - - background-color: ${props => { - if (props.isSelected) { - return "#3b4b5a"; - } - - return "#fff"; - }}; - - color: ${props => { - if (props.isSelected) { - return "#fff"; - } - - return "#263238"; - }}; - - &:hover { - background-color: #6b7d86; - color: #fff; - - * { - color: #fff; - } - } -`; - -export default StyledDynamicListItem; diff --git a/src/components/DynamicList/DynamicListItem/index.jsx b/src/components/DynamicList/DynamicListItem/index.jsx deleted file mode 100644 index 2c4dbd39..00000000 --- a/src/components/DynamicList/DynamicListItem/index.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import StyledDynamicListItem from "./StyledDynamicListItem"; - -import DynamicListItemTitle from "./DynamicListItemTitle"; -import DynamicListItemAdditional from "./DynamicListItemAdditional"; -import DynamicListItemLink from "./DynamicListItemLink"; - -export function DynamicListItem({ - title, - additional, - isSelected, - onClick, - innerRef, - children, - className, -}) { - return ( - - {children ? ( - children - ) : ( - - {title} - {additional} - - )} - - ); -} - -DynamicListItem.propTypes = { - title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), - children: PropTypes.oneOfType([PropTypes.array, PropTypes.node]), - additional: PropTypes.node, - onClick: PropTypes.func, - isSelected: PropTypes.bool, - innerRef: PropTypes.object, - className: PropTypes.string, -}; - -export { DynamicListItemTitle, DynamicListItemAdditional, DynamicListItemLink }; diff --git a/src/components/DynamicList/DynamicListWrapper.jsx b/src/components/DynamicList/DynamicListWrapper.jsx deleted file mode 100644 index a64568c4..00000000 --- a/src/components/DynamicList/DynamicListWrapper.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import styled from "styled-components"; - -const DynamicListWrapper = styled.div``; - -export default DynamicListWrapper; diff --git a/src/components/DynamicList/StyledDynamicList.jsx b/src/components/DynamicList/StyledDynamicList.jsx deleted file mode 100644 index e8a5a1aa..00000000 --- a/src/components/DynamicList/StyledDynamicList.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from "styled-components"; - -const StyledDynamicList = styled.ul` - list-style-type: none; - padding-left: 0; - margin: 0; - position: relative; - overflow: hidden; -`; - -export default StyledDynamicList; diff --git a/src/components/DynamicList/index.jsx b/src/components/DynamicList/index.jsx deleted file mode 100644 index e719752e..00000000 --- a/src/components/DynamicList/index.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import StyledDynamicList from "./StyledDynamicList"; - -function DynamicList({ children, isLoading, innerRef }) { - return ( - - {children} - - ); -} - -DynamicList.propTypes = { - children: PropTypes.array.isRequired, - isLoading: PropTypes.bool.isRequired, - innerRef: PropTypes.object, -}; - -export { DynamicList, StyledDynamicList }; -export { - DynamicListItem, - DynamicListItemLink, - DynamicListItemTitle, - DynamicListItemAdditional, -} from "./DynamicListItem"; diff --git a/src/components/index.js b/src/components/index.js index eb8b6e4e..5636193d 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -7,7 +7,6 @@ export * from "./CardSmall"; export * from "./CopyItem"; export * from "./DeleteSure"; export * from "./DeleteSureButton"; -export * from "./DynamicList"; export * from "./Entries"; export * from "./ErrorBoundary"; export * from "./ErrorPageBoundary"; From b2a8bfaffec3ae05dff62f26cf5a26f890daf666 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 15:27:00 +0300 Subject: [PATCH 133/175] SegmentedTabs: tabbar margin changed --- .../SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx b/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx index 1fc9bc12..6183346a 100644 --- a/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx +++ b/src/components/SegmentedTabs/SegmentedTabsTabbar/StyledSegmentedTabsTabbar.jsx @@ -5,6 +5,10 @@ import { StyledButton } from "../../Button"; const StyledSegmentedTabsTabbar = styled.div` display: flex; + &:not(:last-child) { + margin-bottom: 28px; + } + ${StyledButton} { &:first-child { border-bottom-right-radius: 0; @@ -20,8 +24,6 @@ const StyledSegmentedTabsTabbar = styled.div` border-radius: 0; } } - - margin-bottom: 20px; `; export { StyledSegmentedTabsTabbar }; From 19574034cb37385759302cf58cdd9fed51f19a1d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 16:13:18 +0300 Subject: [PATCH 134/175] SegmentedTabs: styles changed --- .../SegmentedTabs/SegmentedTabsPane/index.jsx | 23 ------------------- .../SegmentedTabs/SegmentedTabsSpinner.jsx | 4 +++- .../SegmentedTabsTabbar/index.jsx | 7 +++--- src/components/SegmentedTabs/index.jsx | 23 ++++++++++--------- 4 files changed, 19 insertions(+), 38 deletions(-) delete mode 100644 src/components/SegmentedTabs/SegmentedTabsPane/index.jsx diff --git a/src/components/SegmentedTabs/SegmentedTabsPane/index.jsx b/src/components/SegmentedTabs/SegmentedTabsPane/index.jsx deleted file mode 100644 index 9aa3f4ad..00000000 --- a/src/components/SegmentedTabs/SegmentedTabsPane/index.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import styled from "styled-components"; - -import { StyledSpinner } from "../../Spinner"; - -import { colors } from "../../../style"; - -const SegmentedTabsPane = styled.div` - box-shadow: 0px 0px 80px rgba(162, 182, 189, 0.2); - border-radius: 4px; - background-color: ${colors.whiteSimple}; - padding: 40px 48px; - display: flex; - flex-direction: column; - align-items: flex-start; - min-height: 266px; - box-sizing: border-box; - - ${StyledSpinner} { - flex: 100%; - } -`; - -export { SegmentedTabsPane }; diff --git a/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx b/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx index b0ba544f..0c9d16aa 100644 --- a/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx +++ b/src/components/SegmentedTabs/SegmentedTabsSpinner.jsx @@ -2,6 +2,8 @@ import styled from "styled-components"; import { Spinner } from "../Spinner"; -const SegmentedTabsSpinner = styled(Spinner)``; +const SegmentedTabsSpinner = styled(Spinner)` + height: 100%; +`; export { SegmentedTabsSpinner }; diff --git a/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx b/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx index c03b39a7..135eddc5 100644 --- a/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx +++ b/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx @@ -7,7 +7,7 @@ import { TabsContext } from "../../Tabs"; import { StyledSegmentedTabsTabbar } from "./StyledSegmentedTabsTabbar"; import { Button } from "../../Button"; -function SegmentedTabsTabbar({ options, "data-testid": testId }) { +function SegmentedTabsTabbar({ options, "data-testid": testId, className }) { const { openTab, activeTab } = useContext(TabsContext); function renderTabBarItem(option) { @@ -31,7 +31,7 @@ function SegmentedTabsTabbar({ options, "data-testid": testId }) { } return ( - + {options.map(renderTabBarItem)} ); @@ -40,6 +40,7 @@ function SegmentedTabsTabbar({ options, "data-testid": testId }) { SegmentedTabsTabbar.propTypes = { options: PropTypes.array.isRequired, "data-testid": PropTypes.string, + className: PropTypes.string, }; -export { SegmentedTabsTabbar }; +export { SegmentedTabsTabbar, StyledSegmentedTabsTabbar }; diff --git a/src/components/SegmentedTabs/index.jsx b/src/components/SegmentedTabs/index.jsx index cb1c772d..62104f5c 100644 --- a/src/components/SegmentedTabs/index.jsx +++ b/src/components/SegmentedTabs/index.jsx @@ -2,7 +2,6 @@ import React from "react"; import PropTypes from "prop-types"; import { SegmentedTabsTabbar } from "./SegmentedTabsTabbar"; -import { SegmentedTabsPane } from "./SegmentedTabsPane"; import { SegmentedTabsSpinner } from "./SegmentedTabsSpinner"; import { Tabs } from "../Tabs"; const { TabPanes, TabPane } = Tabs; @@ -12,6 +11,7 @@ function SegmentedTabs({ defaultActiveTab, onChange, "data-testid": testId, + className, }) { function renderTabPane(option) { const { value, Component } = option; @@ -26,10 +26,15 @@ function SegmentedTabs({ } return ( - - - {options.map(renderTabPane)} - +
+ + + {options.map(renderTabPane)} + +
); } @@ -38,11 +43,7 @@ SegmentedTabs.propTypes = { defaultActiveTab: PropTypes.string, onChange: PropTypes.func, "data-testid": PropTypes.string, + className: PropTypes.string, }; -export { - SegmentedTabs, - SegmentedTabsTabbar, - SegmentedTabsPane, - SegmentedTabsSpinner, -}; +export { SegmentedTabs, SegmentedTabsTabbar, SegmentedTabsSpinner }; From 9691f76ebc33d249df9f0de147100c44a32470d2 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Thu, 16 Apr 2020 16:41:04 +0300 Subject: [PATCH 135/175] SegmentedTabs: styled wrapper added --- src/components/SegmentedTabs/StyledSegmentedTabs.jsx | 9 +++++++++ src/components/SegmentedTabs/index.jsx | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/components/SegmentedTabs/StyledSegmentedTabs.jsx diff --git a/src/components/SegmentedTabs/StyledSegmentedTabs.jsx b/src/components/SegmentedTabs/StyledSegmentedTabs.jsx new file mode 100644 index 00000000..89776bfe --- /dev/null +++ b/src/components/SegmentedTabs/StyledSegmentedTabs.jsx @@ -0,0 +1,9 @@ +import styled from "styled-components"; + +const StyledSegmentedTabs = styled.div` + flex: 100%; + display: flex; + flex-direction: column; +`; + +export { StyledSegmentedTabs }; diff --git a/src/components/SegmentedTabs/index.jsx b/src/components/SegmentedTabs/index.jsx index 62104f5c..7d1494a3 100644 --- a/src/components/SegmentedTabs/index.jsx +++ b/src/components/SegmentedTabs/index.jsx @@ -1,6 +1,7 @@ import React from "react"; import PropTypes from "prop-types"; +import { StyledSegmentedTabs } from "./StyledSegmentedTabs"; import { SegmentedTabsTabbar } from "./SegmentedTabsTabbar"; import { SegmentedTabsSpinner } from "./SegmentedTabsSpinner"; import { Tabs } from "../Tabs"; @@ -26,7 +27,7 @@ function SegmentedTabs({ } return ( -
+ {options.map(renderTabPane)} -
+ ); } From 66fdda8593ccae8e831bed95329bf7f9e8360c68 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 17 Apr 2020 11:56:53 +0300 Subject: [PATCH 136/175] ListStickyHeader, PageCard: zIndex issue was fixed --- src/components/ListStickyHeader/StyledListStickyHeader.jsx | 1 - src/components/ListStickyHeader/index.jsx | 1 + src/components/PageCard/StyledPageCard.jsx | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ListStickyHeader/StyledListStickyHeader.jsx b/src/components/ListStickyHeader/StyledListStickyHeader.jsx index 49b939e4..ffcf1f74 100644 --- a/src/components/ListStickyHeader/StyledListStickyHeader.jsx +++ b/src/components/ListStickyHeader/StyledListStickyHeader.jsx @@ -2,7 +2,6 @@ import styled from "styled-components"; import StickyBox from "react-sticky-box"; const StyledListStickyHeader = styled(StickyBox)` - z-index: 10; transition: transform 120ms ease-in; `; diff --git a/src/components/ListStickyHeader/index.jsx b/src/components/ListStickyHeader/index.jsx index fa7c640e..7520e6ad 100644 --- a/src/components/ListStickyHeader/index.jsx +++ b/src/components/ListStickyHeader/index.jsx @@ -22,6 +22,7 @@ function ListStickyHeader({ children, listHeaderHeightShort, className }) { Date: Fri, 17 Apr 2020 12:20:32 +0300 Subject: [PATCH 137/175] EntryCard: reinit badge was added --- .../Entries/EntryCard/StyledEntryCard.jsx | 4 ++-- .../PersonEntriesCardReinit.jsx | 16 ---------------- .../Entries/PersonEntriesCard/index.jsx | 10 +--------- .../EntryCardPhoto/EntryCardPhotoBadge.jsx | 17 +++++++++++++++++ .../EntryCardPhoto/EntryCardPhotoBadges.jsx | 16 ++++++++++++++++ .../EntryCardPhoto/EntryCardPhotoFaceSize.jsx | 4 ++-- .../EntryCardPhoto/EntryCardPhotoReinit.jsx | 11 +++++++++++ .../EntryCardPhotos/EntryCardPhoto/index.jsx | 19 ++++++++++++++----- src/components/FaceSize.jsx | 17 ----------------- src/components/index.js | 1 - 10 files changed, 63 insertions(+), 52 deletions(-) delete mode 100644 src/components/Entries/PersonEntriesCard/PersonEntriesCardReinit.jsx create mode 100644 src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadge.jsx create mode 100644 src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadges.jsx create mode 100644 src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoReinit.jsx delete mode 100644 src/components/FaceSize.jsx diff --git a/src/components/Entries/EntryCard/StyledEntryCard.jsx b/src/components/Entries/EntryCard/StyledEntryCard.jsx index bc1d7fd6..a7e22234 100644 --- a/src/components/Entries/EntryCard/StyledEntryCard.jsx +++ b/src/components/Entries/EntryCard/StyledEntryCard.jsx @@ -6,9 +6,9 @@ import { StyledEntryCardPhoto, EntryCardInfoColumn, EntryCardInfoItemLabel, - EntryCardPhotoFaceSize, StyledEntryCardLiveness, } from "../components"; +import { EntryCardPhotoBadges } from "../components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadges"; const StyledEntryCard = styled(EntryCardContainer)` height: 114px; @@ -44,7 +44,7 @@ const StyledEntryCard = styled(EntryCardContainer)` } } - ${EntryCardPhotoFaceSize} { + ${EntryCardPhotoBadges} { top: -4px; } diff --git a/src/components/Entries/PersonEntriesCard/PersonEntriesCardReinit.jsx b/src/components/Entries/PersonEntriesCard/PersonEntriesCardReinit.jsx deleted file mode 100644 index 4bb7a7a1..00000000 --- a/src/components/Entries/PersonEntriesCard/PersonEntriesCardReinit.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import styled from "styled-components"; - -const PersonEntriesCardReinit = styled.p` - margin: 0; - position: absolute; - top: 60px; - left: 165px; - font-size: 210px; - line-height: 18px; - font-weight: 700; - letter-spacing: -10px; - color: #edf0f1; - opacity: 0.9; -`; - -export { PersonEntriesCardReinit }; diff --git a/src/components/Entries/PersonEntriesCard/index.jsx b/src/components/Entries/PersonEntriesCard/index.jsx index b4938967..839acfc0 100644 --- a/src/components/Entries/PersonEntriesCard/index.jsx +++ b/src/components/Entries/PersonEntriesCard/index.jsx @@ -12,7 +12,6 @@ import { IdCopy } from "../../IdCopy"; import { get } from "lodash-es"; import { timeFormat, formatFaceSize, formatSex } from "../../../utils/helpers"; -import { PersonEntriesCardReinit } from "./PersonEntriesCardReinit"; function PersonEntriesCard({ person, @@ -20,8 +19,6 @@ function PersonEntriesCard({ className, "data-testid": testId, }) { - const hasReinit = person.reinit > 0; - return ( 0} /> - {hasReinit && ( - - RE - - )} - diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadge.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadge.jsx new file mode 100644 index 00000000..2ee4abc5 --- /dev/null +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadge.jsx @@ -0,0 +1,17 @@ +import styled from "styled-components"; + +import { colors } from "../../../../../style"; + +const EntryCardPhotoBadge = styled.span` + display: inline-block; + padding-left: 4px; + padding-right: 4px; + height: 18px; + font-size: 12px; + font-weight: 600; + text-align: center; + color: ${colors.whiteSimple}; + border-radius: 4px; +`; + +export { EntryCardPhotoBadge }; diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadges.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadges.jsx new file mode 100644 index 00000000..136c1580 --- /dev/null +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoBadges.jsx @@ -0,0 +1,16 @@ +import styled from "styled-components"; + +import { EntryCardPhotoBadge } from "./EntryCardPhotoBadge"; + +const EntryCardPhotoBadges = styled.div` + position: absolute; + top: 0; + left: 0; + display: flex; + + ${EntryCardPhotoBadge}:not(:last-child) { + margin-right: 4px; + } +`; + +export { EntryCardPhotoBadges }; diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx index d8185aae..8535d0b2 100644 --- a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoFaceSize.jsx @@ -1,10 +1,10 @@ import styled from "styled-components"; -import { FaceSize } from "../../../../FaceSize"; +import { EntryCardPhotoBadge } from "./EntryCardPhotoBadge"; import { colors } from "../../../../../style"; -const EntryCardPhotoFaceSize = styled(FaceSize)` +const EntryCardPhotoFaceSize = styled(EntryCardPhotoBadge)` background-color: ${colors.bluish}; `; diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoReinit.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoReinit.jsx new file mode 100644 index 00000000..476b78f9 --- /dev/null +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/EntryCardPhotoReinit.jsx @@ -0,0 +1,11 @@ +import styled from "styled-components"; + +import { EntryCardPhotoBadge } from "./EntryCardPhotoBadge"; + +import { colors } from "../../../../../style"; + +const EntryCardPhotoReinit = styled(EntryCardPhotoBadge)` + background-color: ${colors.slate}; +`; + +export { EntryCardPhotoReinit }; diff --git a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/index.jsx b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/index.jsx index 27d05397..8e90442a 100644 --- a/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/index.jsx +++ b/src/components/Entries/components/EntryCardPhotos/EntryCardPhoto/index.jsx @@ -6,11 +6,14 @@ import { EntryCardPhotoImgContainer } from "./EntryCardPhotoImgContainer"; import { EntryCardPhotoImg } from "./EntryCardPhotoImg"; import { EntryCardPhotoTitle } from "./EntryCardPhotoTitle"; import { EntryCardPhotoFaceSize } from "./EntryCardPhotoFaceSize"; +import { EntryCardPhotoReinit } from "./EntryCardPhotoReinit"; +import { EntryCardPhotoBadges } from "./EntryCardPhotoBadges"; import noimage from "../../../../../assets/images/noimage.png"; function EntryCardPhoto({ facesize, + hasReinit, src, title, className, @@ -31,11 +34,16 @@ function EntryCardPhoto({ - {facesize && ( - - {facesize} - - )} + + {facesize && ( + {facesize} + )} + {hasReinit && ( + + RE + + )} + ); @@ -43,6 +51,7 @@ function EntryCardPhoto({ EntryCardPhoto.propTypes = { facesize: PropTypes.string, + hasReinit: PropTypes.bool, title: PropTypes.string, src: PropTypes.string, hidden: PropTypes.bool, diff --git a/src/components/FaceSize.jsx b/src/components/FaceSize.jsx deleted file mode 100644 index 46ea3983..00000000 --- a/src/components/FaceSize.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import styled from "styled-components"; - -import { colors } from "../style"; - -export const FaceSize = styled.div` - position: absolute; - top: 0px; - width: 36px; - height: 18px; - font-size: 11px; - font-weight: 600; - text-align: center; - color: ${colors.whiteSimple}; - background-color: ${colors.blueGray}; - border-radius: 4px; - box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15); -`; diff --git a/src/components/index.js b/src/components/index.js index 5636193d..001010aa 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -46,7 +46,6 @@ export * from "./Stepper"; export * from "./SegmentedTabs"; export * from "./Value"; export * from "./ValueSpan"; -export * from "./FaceSize"; export * from "./PopupContainer"; export * from "./GlobalStyles"; export * from "./I18nProvider"; From 5fba5148b97e331cc0f3cd94613770dc8bcfea8e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Fri, 17 Apr 2020 15:31:57 +0300 Subject: [PATCH 138/175] ListLayoutTop, PageCard: zIndex issue fix --- src/components/ListStickyHeader/index.jsx | 2 +- src/components/PageCard/StyledPageCard.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ListStickyHeader/index.jsx b/src/components/ListStickyHeader/index.jsx index 7520e6ad..0e96b356 100644 --- a/src/components/ListStickyHeader/index.jsx +++ b/src/components/ListStickyHeader/index.jsx @@ -22,7 +22,7 @@ function ListStickyHeader({ children, listHeaderHeightShort, className }) { Date: Fri, 17 Apr 2020 16:10:45 +0300 Subject: [PATCH 139/175] EntriesDateTimeFilter: top coords issue was fixed --- .../StyledEntriesDateTimeFilter.jsx | 7 ++ .../Entries/EntriesDateTimeFilter/index.jsx | 108 +++++++++--------- src/hooks/use-popup.js | 3 +- 3 files changed, 64 insertions(+), 54 deletions(-) create mode 100644 src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx diff --git a/src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx b/src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx new file mode 100644 index 00000000..e3a5e5b0 --- /dev/null +++ b/src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const StyledEntriesDateTimeFilter = styled.div` + position: relative; +`; + +export { StyledEntriesDateTimeFilter }; diff --git a/src/components/Entries/EntriesDateTimeFilter/index.jsx b/src/components/Entries/EntriesDateTimeFilter/index.jsx index 0185d4b4..60650984 100644 --- a/src/components/Entries/EntriesDateTimeFilter/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/index.jsx @@ -5,6 +5,7 @@ import { useState, useRef, useMemo } from "react"; import { useUpdateEffect } from "react-use"; import { usePositionPopup } from "../../../hooks"; +import { StyledEntriesDateTimeFilter } from "./StyledEntriesDateTimeFilter"; import { EntriesDateTimeFilterPopup } from "./EntriesDateTimeFilterPopup"; import { EntriesDateTimeFilterTabs } from "./EntriesDateTimeFilterTabs"; import { EntriesDateTimeFilterBottom } from "./EntriesDateTimeFilterBottom"; @@ -14,7 +15,7 @@ import { EntriesDateTimeFilterTotalTime } from "./EntriesDateTimeFilterTotalTime import { EntriesDateTimeFilterResetButton } from "./EntriesDateTimeFilterResetButton"; import { Times } from "../../icons"; -import { identity } from "lodash-es"; +import { identity, isEqual } from "lodash-es"; import dayjs from "dayjs"; import { isSameDate } from "../../../utils/helpers"; @@ -42,31 +43,33 @@ function EntriesDateTimeFilter({ }) { const [error, setError] = useState(null); const popupTrigger = useRef(null); + const filterWrapper = useRef(null); const { Portal, bind, - coords, + // coords, popupInner, togglePortal, closePortal, isOpen, - targetParams, + // targetParams, } = usePositionPopup({ pupupTrigger: popupTrigger, position: "bottom", + bindTo: filterWrapper.current, }); - function getPopupLeftCoord() { - if (popupInner.current) { - if (targetParams.width > popupInner.current.offsetWidth) { - return ( - coords.left + targetParams.width - popupInner.current.offsetWidth - ); - } + // function getPopupLeftCoord() { + // if (popupInner.current) { + // if (targetParams.width > popupInner.current.offsetWidth) { + // return ( + // coords.left + targetParams.width - popupInner.current.offsetWidth + // ); + // } - return coords.left; - } - } + // return coords.left; + // } + // } useUpdateEffect(() => { if (!isOpen) { @@ -116,47 +119,46 @@ function EntriesDateTimeFilter({ return ( - - {getValueRender(value)} - {(value[0] || value[1]) && ( - { - e.stopPropagation(); - onChange(valuesOnReset); - if (onReset) { - onReset(); - } - closePortal(); - }} - > - - - )} - - - + - {/* Сбрасываем все локальные состояния по открытию/закрытию */} - - - - - - - + {getValueRender(value)} + {(value[0] || value[1]) && ( + { + e.stopPropagation(); + if (!isEqual(value, valuesOnReset)) { + onChange(valuesOnReset); + } + + if (onReset) { + onReset(value, valuesOnReset); + } + + closePortal(); + }} + > + + + )} + + + + {/* Сбрасываем все локальные состояния по открытию/закрытию */} + + + + + + + + ); } diff --git a/src/hooks/use-popup.js b/src/hooks/use-popup.js index 0eb50983..2a4b43a7 100644 --- a/src/hooks/use-popup.js +++ b/src/hooks/use-popup.js @@ -24,7 +24,8 @@ function usePopup(params) { params.onOpen(targetEl); } }, - bindTo: document && document.getElementById("app-container"), + bindTo: + params.bindTo || (document && document.getElementById("app-container")), }); const [targetParams, setTargetParams] = useState({ From cb9dd4098d83be1569151fbfaad68a6b48f07732 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 11:42:54 +0300 Subject: [PATCH 140/175] dependencies were updated --- .eslintrc.js | 6 - .storybook/Provider.jsx | 2 +- .storybook/config.js | 2 +- README.md | 2 +- package-lock.json | 2905 +++++++++++++++++++++++++++------------ package.json | 36 +- 6 files changed, 2065 insertions(+), 888 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index bb6720d1..29048c83 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -28,12 +28,6 @@ module.exports = { }, }, rules: { - "prettier/prettier": [ - "error", - { - trailingComma: "es5", - }, - ], "react/no-unused-prop-types": 2, "no-console": "off", "react/display-name": 0, diff --git a/.storybook/Provider.jsx b/.storybook/Provider.jsx index 71930ea5..789e92c0 100644 --- a/.storybook/Provider.jsx +++ b/.storybook/Provider.jsx @@ -13,7 +13,7 @@ const ProviderWrapper = ({ children }) => ( ); -export const withProvider = story => ( +export const withProvider = (story) => ( {story()} ); diff --git a/.storybook/config.js b/.storybook/config.js index 155bee41..509103e1 100644 --- a/.storybook/config.js +++ b/.storybook/config.js @@ -6,7 +6,7 @@ import StoryRouter from "storybook-react-router"; function loadStories() { const req = require.context("../src", true, /\.stories\.js$/); - req.keys().forEach(filename => req(filename)); + req.keys().forEach((filename) => req(filename)); } addDecorator(withKnobs); diff --git a/README.md b/README.md index d2f1a8d3..33e85a5c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ An Identixone UI design language and React implementation. -> **Note**: UI kit is build on ES6 modules, so your app have to support this as well +> **Note**: Identixone UI kit is build on ES6 modules, so your app have to support it as well ## 📦 Install diff --git a/package-lock.json b/package-lock.json index 28467b85..df015cad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,38 +22,6 @@ "browserslist": "^4.9.1", "invariant": "^2.2.4", "semver": "^5.5.0" - }, - "dependencies": { - "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001038", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", - "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.390", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", - "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", - "dev": true - }, - "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", - "dev": true - } } }, "@babel/core": { @@ -242,38 +210,6 @@ "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" - }, - "dependencies": { - "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001038", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", - "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.390", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", - "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", - "dev": true - }, - "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", - "dev": true - } } }, "@babel/helper-create-class-features-plugin": { @@ -748,6 +684,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", + "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -784,6 +729,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz", + "integrity": "sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -878,14 +832,14 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-optimise-call-expression": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", "@babel/helper-replace-supers": "^7.8.6", @@ -894,17 +848,28 @@ }, "dependencies": { "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, "@babel/helper-replace-supers": { "version": "7.8.6", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", @@ -917,6 +882,12 @@ "@babel/types": "^7.8.6" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, "@babel/parser": { "version": "7.9.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", @@ -924,29 +895,29 @@ "dev": true }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -969,9 +940,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -1127,9 +1098,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", @@ -1282,9 +1253,9 @@ } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.5.tgz", + "integrity": "sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ==", "dev": true, "requires": { "@babel/compat-data": "^7.9.0", @@ -1296,7 +1267,7 @@ "@babel/plugin-proposal-json-strings": "^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-object-rest-spread": "^7.9.5", "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", "@babel/plugin-proposal-optional-chaining": "^7.9.0", "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", @@ -1313,9 +1284,9 @@ "@babel/plugin-transform-async-to-generator": "^7.8.3", "@babel/plugin-transform-block-scoped-functions": "^7.8.3", "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-classes": "^7.9.5", "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", "@babel/plugin-transform-dotall-regex": "^7.8.3", "@babel/plugin-transform-duplicate-keys": "^7.8.3", "@babel/plugin-transform-exponentiation-operator": "^7.8.3", @@ -1330,7 +1301,7 @@ "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", "@babel/plugin-transform-new-target": "^7.8.3", "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-parameters": "^7.9.5", "@babel/plugin-transform-property-literals": "^7.8.3", "@babel/plugin-transform-regenerator": "^7.8.7", "@babel/plugin-transform-reserved-words": "^7.8.3", @@ -1341,7 +1312,7 @@ "@babel/plugin-transform-typeof-symbol": "^7.8.4", "@babel/plugin-transform-unicode-regex": "^7.8.3", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", + "@babel/types": "^7.9.5", "browserslist": "^4.9.1", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -1349,46 +1320,33 @@ "semver": "^5.5.0" }, "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", + "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" } }, - "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } - }, - "caniuse-lite": { - "version": "1.0.30001038", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", - "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.390", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz", - "integrity": "sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==", - "dev": true - }, - "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", - "dev": true } } }, @@ -1685,17 +1643,30 @@ "dev": true }, "@jest/console": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.2.3.tgz", - "integrity": "sha512-k+37B1aSvOt9tKHWbZZSOy1jdgzesB0bj96igCVUG1nAH1W5EoUfgc5EXbBVU08KSLvkVdWopLXaO3xfVGlxtQ==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.4.0.tgz", + "integrity": "sha512-CfE0erx4hdJ6t7RzAcE1wLG6ZzsHSmybvIBQDoCkDM1QaSeWL9wJMzID/2BbHHa7ll9SsbbK43HjbERbBaFX2A==", "dev": true, "requires": { - "@jest/source-map": "^25.2.1", + "@jest/types": "^25.4.0", "chalk": "^3.0.0", - "jest-util": "^25.2.3", + "jest-message-util": "^25.4.0", + "jest-util": "^25.4.0", "slash": "^3.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -1755,33 +1726,33 @@ } }, "@jest/core": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.2.4.tgz", - "integrity": "sha512-WcWYShl0Bqfcb32oXtjwbiR78D/djhMdJW+ulp4/bmHgeODcsieqUJfUH+kEv8M7VNV77E6jds5aA+WuGh1nmg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.4.0.tgz", + "integrity": "sha512-h1x9WSVV0+TKVtATGjyQIMJENs8aF6eUjnCoi4jyRemYZmekLr8EJOGQqTWEX8W6SbZ6Skesy9pGXrKeAolUJw==", "dev": true, "requires": { - "@jest/console": "^25.2.3", - "@jest/reporters": "^25.2.4", - "@jest/test-result": "^25.2.4", - "@jest/transform": "^25.2.4", - "@jest/types": "^25.2.3", + "@jest/console": "^25.4.0", + "@jest/reporters": "^25.4.0", + "@jest/test-result": "^25.4.0", + "@jest/transform": "^25.4.0", + "@jest/types": "^25.4.0", "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.3", - "jest-changed-files": "^25.2.3", - "jest-config": "^25.2.4", - "jest-haste-map": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-regex-util": "^25.2.1", - "jest-resolve": "^25.2.3", - "jest-resolve-dependencies": "^25.2.4", - "jest-runner": "^25.2.4", - "jest-runtime": "^25.2.4", - "jest-snapshot": "^25.2.4", - "jest-util": "^25.2.3", - "jest-validate": "^25.2.3", - "jest-watcher": "^25.2.4", + "jest-changed-files": "^25.4.0", + "jest-config": "^25.4.0", + "jest-haste-map": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.4.0", + "jest-resolve-dependencies": "^25.4.0", + "jest-runner": "^25.4.0", + "jest-runtime": "^25.4.0", + "jest-snapshot": "^25.4.0", + "jest-util": "^25.4.0", + "jest-validate": "^25.4.0", + "jest-watcher": "^25.4.0", "micromatch": "^4.0.2", "p-each-series": "^2.1.0", "realpath-native": "^2.0.0", @@ -1790,6 +1761,18 @@ "strip-ansi": "^6.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -1873,61 +1856,28 @@ } }, "@jest/environment": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.2.4.tgz", - "integrity": "sha512-wA4xlhD19/gukkDpJ5HQsTle0pgnzI5qMFEjw267lpTDC8d9N7Ihqr5pI+l0p8Qn1SQhai+glSqxrGdzKy4jxw==", - "dev": true, - "requires": { - "@jest/fake-timers": "^25.2.4", - "@jest/types": "^25.2.3", - "jest-mock": "^25.2.3" - } - }, - "@jest/fake-timers": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.2.4.tgz", - "integrity": "sha512-oC1TJiwfMcBttVN7Wz+VZnqEAgYTiEMu0QLOXpypR89nab0uCB31zm/QeBZddhSstn20qe3yqOXygp6OwvKT/Q==", - "dev": true, - "requires": { - "@jest/types": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-mock": "^25.2.3", - "jest-util": "^25.2.3", - "lolex": "^5.0.0" - } - }, - "@jest/reporters": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.2.4.tgz", - "integrity": "sha512-VHbLxM03jCc+bTLOluW/IqHR2G0Cl0iATwIQbuZtIUast8IXO4fD0oy4jpVGpG5b20S6REA8U3BaQoCW/CeVNQ==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.4.0.tgz", + "integrity": "sha512-KDctiak4mu7b4J6BIoN/+LUL3pscBzoUCP+EtSPd2tK9fqyDY5OF+CmkBywkFWezS9tyH5ACOQNtpjtueEDH6Q==", "dev": true, "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^25.2.3", - "@jest/test-result": "^25.2.4", - "@jest/transform": "^25.2.4", - "@jest/types": "^25.2.3", - "chalk": "^3.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "jest-haste-map": "^25.2.3", - "jest-resolve": "^25.2.3", - "jest-util": "^25.2.3", - "jest-worker": "^25.2.1", - "node-notifier": "^6.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^3.1.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^4.0.1" + "@jest/fake-timers": "^25.4.0", + "@jest/types": "^25.4.0", + "jest-mock": "^25.4.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -1969,12 +1919,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -1986,66 +1930,31 @@ } } }, - "@jest/source-map": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.2.1.tgz", - "integrity": "sha512-PgScGJm1U27+9Te/cxP4oUFqJ2PX6NhBL2a6unQ7yafCgs8k02c0LSyjSIx/ao0AwcAdCczfAPDf5lJ7zoB/7A==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.3", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.2.4.tgz", - "integrity": "sha512-AI7eUy+q2lVhFnaibDFg68NGkrxVWZdD6KBr9Hm6EvN0oAe7GxpEwEavgPfNHQjU2mi6g+NsFn/6QPgTUwM1qg==", - "dev": true, - "requires": { - "@jest/console": "^25.2.3", - "@jest/transform": "^25.2.4", - "@jest/types": "^25.2.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.2.4.tgz", - "integrity": "sha512-TEZm/Rkd6YgskdpTJdYLBtu6Gc11tfWPuSpatq0duH77ekjU8dpqX2zkPdY/ayuHxztV5LTJoV5BLtI9mZfXew==", - "dev": true, - "requires": { - "@jest/test-result": "^25.2.4", - "jest-haste-map": "^25.2.3", - "jest-runner": "^25.2.4", - "jest-runtime": "^25.2.4" - } - }, - "@jest/transform": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.2.4.tgz", - "integrity": "sha512-6eRigvb+G6bs4kW5j1/y8wu4nCrmVuIe0epPBbiWaYlwawJ8yi1EIyK3d/btDqmBpN5GpN4YhR6iPPnDmkYdTA==", + "@jest/fake-timers": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.4.0.tgz", + "integrity": "sha512-lI9z+VOmVX4dPPFzyj0vm+UtaB8dCJJ852lcDnY0uCPRvZAaVGnMwBBc1wxtf+h7Vz6KszoOvKAt4QijDnHDkg==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^25.2.3", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^3.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.3", - "jest-haste-map": "^25.2.3", - "jest-regex-util": "^25.2.1", - "jest-util": "^25.2.3", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "realpath-native": "^2.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@jest/types": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-mock": "^25.4.0", + "jest-util": "^25.4.0", + "lolex": "^5.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -2087,12 +1996,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -2104,18 +2007,50 @@ } } }, - "@jest/types": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.2.3.tgz", - "integrity": "sha512-6oLQwO9mKif3Uph3RX5J1i3S7X7xtDHWBaaaoeKw8hOzV6YUd0qDcYcHZ6QXMHDIzSr7zzrEa51o2Ovlj6AtKQ==", + "@jest/reporters": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.4.0.tgz", + "integrity": "sha512-bhx/buYbZgLZm4JWLcRJ/q9Gvmd3oUh7k2V7gA4ZYBx6J28pIuykIouclRdiAC6eGVX1uRZT+GK4CQJLd/PwPg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^25.4.0", + "@jest/test-result": "^25.4.0", + "@jest/transform": "^25.4.0", + "@jest/types": "^25.4.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^25.4.0", + "jest-resolve": "^25.4.0", + "jest-util": "^25.4.0", + "jest-worker": "^25.4.0", + "node-notifier": "^6.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^3.1.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.1.3" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -2157,6 +2092,22 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-worker": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.4.0.tgz", + "integrity": "sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -2168,19 +2119,276 @@ } } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@jest/source-map": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.2.6.tgz", + "integrity": "sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.3", + "source-map": "^0.6.0" } }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "@jest/test-result": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.4.0.tgz", + "integrity": "sha512-8BAKPaMCHlL941eyfqhWbmp3MebtzywlxzV+qtngQ3FH+RBqnoSAhNEPj4MG7d2NVUrMOVfrwuzGpVIK+QnMAA==", + "dev": true, + "requires": { + "@jest/console": "^25.4.0", + "@jest/types": "^25.4.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.4.0.tgz", + "integrity": "sha512-240cI+nsM3attx2bMp9uGjjHrwrpvxxrZi8Tyqp/cfOzl98oZXVakXBgxODGyBYAy/UGXPKXLvNc2GaqItrsJg==", + "dev": true, + "requires": { + "@jest/test-result": "^25.4.0", + "jest-haste-map": "^25.4.0", + "jest-runner": "^25.4.0", + "jest-runtime": "^25.4.0" + } + }, + "@jest/transform": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.4.0.tgz", + "integrity": "sha512-t1w2S6V1sk++1HHsxboWxPEuSpN8pxEvNrZN+Ud/knkROWtf8LeUmz73A4ezE8476a5AM00IZr9a8FO9x1+j3g==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^25.4.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^3.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.3", + "jest-haste-map": "^25.4.0", + "jest-regex-util": "^25.2.6", + "jest-util": "^25.4.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.2.3.tgz", + "integrity": "sha512-6oLQwO9mKif3Uph3RX5J1i3S7X7xtDHWBaaaoeKw8hOzV6YUd0qDcYcHZ6QXMHDIzSr7zzrEa51o2Ovlj6AtKQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, @@ -2206,9 +2414,9 @@ } }, "@sinonjs/commons": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz", - "integrity": "sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", + "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -3659,9 +3867,9 @@ } }, "@testing-library/jest-dom": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.3.0.tgz", - "integrity": "sha512-Cdhpc3BHL888X55qBNyra9eM0UG63LCm/FqCWTa1Ou/0MpsUbQTM9vW1NU6/jBQFoSLgkFfDG5XVpm2V0dOm/A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.5.0.tgz", + "integrity": "sha512-7sWHrpxG4Yd8TmryI7Rtbx8Ff4mbs3ASye3oshQIuHvsCR+QHgr7rTR/PfeXvOmwUwR36wSTTAvrLKsPmr6VEQ==", "dev": true, "requires": { "@babel/runtime": "^7.9.2", @@ -3745,9 +3953,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", - "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz", + "integrity": "sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -3777,9 +3985,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", - "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.10.tgz", + "integrity": "sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -3835,19 +4043,19 @@ } }, "@types/jest": { - "version": "25.1.4", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.1.4.tgz", - "integrity": "sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.1.tgz", + "integrity": "sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==", "dev": true, "requires": { - "jest-diff": "^25.1.0", - "pretty-format": "^25.1.0" + "jest-diff": "^25.2.1", + "pretty-format": "^25.2.1" } }, "@types/js-cookie": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.5.tgz", - "integrity": "sha512-cpmwBRcHJmmZx0OGU7aPVwGWGbs4iKwVYchk9iuMtxNCA2zorwdaTz4GkLgs2WGxiRZRFKnV1k6tRUHX7tBMxg==" + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz", + "integrity": "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==" }, "@types/node": { "version": "13.1.7", @@ -3855,6 +4063,12 @@ "integrity": "sha512-HU0q9GXazqiKwviVxg9SI/+t/nAsGkvLDkIdxz+ObejG2nX6Si00TeLqHMoS+a/1tjH7a8YpKVQwtgHuMQsldg==", "dev": true }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, "@types/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz", @@ -3969,9 +4183,9 @@ } }, "@types/testing-library__jest-dom": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.2.tgz", - "integrity": "sha512-dZP+/WHndgCSmdaImITy0KhjGAa9c0hlGGkzefbtrPFpnGEPZECDA0zyvfSp8RKhHECJJSKHFExjOwzo0rHyIA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.3.tgz", + "integrity": "sha512-NdbKc6yseg6uq4UJFwimPws0iwsGugVbPoOTP2EH+PJMJKiZsoSg5F2H3XYweOyytftCOuIMuXifBUrF9CSvaQ==", "dev": true, "requires": { "@types/jest": "*" @@ -4954,20 +5168,32 @@ "dev": true }, "babel-jest": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.2.4.tgz", - "integrity": "sha512-+yDzlyJVWrqih9i2Cvjpt7COaN8vUwCsKGtxJLzg6I0xhxD54K8mvDUCliPKLufyzHh/c5C4MRj4Vk7VMjOjIg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.4.0.tgz", + "integrity": "sha512-p+epx4K0ypmHuCnd8BapfyOwWwosNCYhedetQey1awddtfmEX0MmdxctGl956uwUmjwXR5VSS5xJcGX9DvdIog==", "dev": true, "requires": { - "@jest/transform": "^25.2.4", - "@jest/types": "^25.2.3", - "@types/babel__core": "^7.1.0", + "@jest/transform": "^25.4.0", + "@jest/types": "^25.4.0", + "@types/babel__core": "^7.1.7", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^25.2.1", + "babel-preset-jest": "^25.4.0", "chalk": "^3.0.0", "slash": "^3.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -5184,9 +5410,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.1.tgz", - "integrity": "sha512-HysbCQfJhxLlyxDbKcB2ucGYV0LjqK4h6dBoI3RtFuOxTiTWK6XGZMsHb0tGh8iJdV4hC6Z2GCHzVvDeh9i0lQ==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz", + "integrity": "sha512-M3a10JCtTyKevb0MjuH6tU+cP/NVQZ82QPADqI1RQYY1OphztsCeIeQmTsHmF/NS6m0E51Zl4QNsI3odXSQF5w==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" @@ -5404,15 +5630,32 @@ "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", "dev": true }, + "babel-preset-current-node-syntax": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz", + "integrity": "sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, "babel-preset-jest": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.2.1.tgz", - "integrity": "sha512-zXHJBM5iR8oEO4cvdF83AQqqJf3tJrXy3x8nfu2Nlqvn4cneg4Ca8M7cQvC5S9BzDDy1O0tZ9iXru9J6E3ym+A==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz", + "integrity": "sha512-PwFiEWflHdu3JCeTr0Pb9NcHHE34qWFnPQRVPvqQITx4CsDCzs6o05923I10XvLvn9nNsRHuiVgB72wG/90ZHQ==", "dev": true, "requires": { - "@babel/plugin-syntax-bigint": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^25.2.1" + "babel-plugin-jest-hoist": "^25.4.0", + "babel-preset-current-node-syntax": "^0.1.2" } }, "babel-preset-minify": { @@ -5900,21 +6143,42 @@ } }, "browserslist": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz", - "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001017", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.44" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001043", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001043.tgz", + "integrity": "sha512-MrBDRPJPDBYwACtSQvxg9+fkna5jPXhJlKmuxenl/ml9uf8LHKlDmLpElu+zTW/bEz7lC1m0wTDD7jiIB+hgFg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.413", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.413.tgz", + "integrity": "sha512-Jm1Rrd3siqYHO3jftZwDljL2LYQafj3Kki5r+udqE58d0i91SkjItVJ5RwlJn9yko8i7MOcoidVKjQlgSdd1hg==", + "dev": true + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + } + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -6419,9 +6683,9 @@ "dev": true }, "collect-v8-coverage": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz", - "integrity": "sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, "collection-visit": { @@ -6625,12 +6889,12 @@ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.8.5", "semver": "7.0.0" }, "dependencies": { @@ -6967,9 +7231,9 @@ } }, "date-fns": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.11.1.tgz", - "integrity": "sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w==" + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.12.0.tgz", + "integrity": "sha512-qJgn99xxKnFgB1qL4jpxU7Q2t0LOn1p8KMIveef3UZD7kqjT3tpFNNdXJelEHhE+rUgffriXriw/sOSU+cS1Hw==" }, "dayjs": { "version": "1.8.24", @@ -7164,9 +7428,9 @@ } }, "diff-sequences": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.1.tgz", - "integrity": "sha512-foe7dXnGlSh3jR1ovJmdv+77VQj98eKCHHwJPbZ2eEf0fHwKbkZicpPxEch9smZ+n2dnF6QFwkOQdLq9hpeJUg==", + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", "dev": true }, "diffie-hellman": { @@ -7351,14 +7615,21 @@ } }, "downshift": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.0.5.tgz", - "integrity": "sha512-V1idov3Rkvz1YWA1K67aIx51EgokIDvep4x6KmU7HhsayI8DvTEZBeH4O92zeFVGximKujRO7ChBzBAf4PKWFA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.1.1.tgz", + "integrity": "sha512-QlUF0obUybUdvPu2JvKME80d0ecSa90oyq67bcMw4jLmsDkRT3/Dr3SvsEZmEg8pF5wWX+FkHCfIyGicPaQUZQ==", "requires": { - "@babel/runtime": "^7.4.5", - "compute-scroll-into-view": "^1.0.9", + "@babel/runtime": "^7.9.1", + "compute-scroll-into-view": "^1.0.13", "prop-types": "^15.7.2", - "react-is": "^16.9.0" + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "duplexer": { @@ -8020,9 +8291,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", + "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -8117,9 +8388,9 @@ }, "dependencies": { "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true } } @@ -8275,19 +8546,31 @@ } }, "expect": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-25.2.4.tgz", - "integrity": "sha512-hfuPhPds4yOsZtIw4kwAg70r0hqGmpqekgA+VX7pf/3wZ6FY+xIOXZhNsPMMMsspYG/YIsbAiwqsdnD4Ht+bCA==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.4.0.tgz", + "integrity": "sha512-7BDIX99BTi12/sNGJXA9KMRcby4iAmu1xccBOhyKCyEhjcVKS3hPmHdA/4nSI9QGIOkUropKqr3vv7WMDM5lvQ==", "dev": true, "requires": { - "@jest/types": "^25.2.3", + "@jest/types": "^25.4.0", "ansi-styles": "^4.0.0", - "jest-get-type": "^25.2.1", - "jest-matcher-utils": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-regex-util": "^25.2.1" + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-regex-util": "^25.2.6" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -8298,6 +8581,16 @@ "color-convert": "^2.0.1" } }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8312,6 +8605,21 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -8812,6 +9120,51 @@ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + }, + "dependencies": { + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, "find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", @@ -10242,14 +10595,14 @@ "dev": true }, "husky": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.3.tgz", - "integrity": "sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", + "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", "dev": true, "requires": { - "chalk": "^3.0.0", + "chalk": "^4.0.0", "ci-info": "^2.0.0", - "compare-versions": "^3.5.1", + "compare-versions": "^3.6.0", "cosmiconfig": "^6.0.0", "find-versions": "^3.2.0", "opencollective-postinstall": "^2.0.2", @@ -10270,9 +10623,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -10366,9 +10719,9 @@ "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" }, "i18next": { - "version": "19.3.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.3.4.tgz", - "integrity": "sha512-ef7AxxutzdhBsBNugE9jgqsbwesG1muJOtZ9ZrPARPs/jXegViTp4+8JCeMp8BAyTIo1Zn0giqc8+2UpqFjU0w==", + "version": "19.4.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.4.2.tgz", + "integrity": "sha512-gDctWhIgACc92Uub7vb0GTdtLKZTgiDIiBkGExOSPgqhCSyyPOb8svLxixzzSS3yMjC3fduK/BbkRt95JHwvDw==", "requires": { "@babel/runtime": "^7.3.1" } @@ -10468,6 +10821,61 @@ } } }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -11114,9 +11522,9 @@ } }, "istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-Vm9xwCiQ8t2cNNnckyeAV0UdxKpcQUz4nMxsBvIu8n2kmPSiyb5uaF/8LpmKr+yqL/MdOXaX2Nmdo4Qyxium9Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -11140,16 +11548,28 @@ } }, "jest": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-25.2.4.tgz", - "integrity": "sha512-Lu4LXxf4+durzN/IFilcAoQSisOwgHIXgl9vffopePpSSwFqfj1Pj4y+k3nL8oTbnvjxgDIsEcepy6he4bWqnQ==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.4.0.tgz", + "integrity": "sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw==", "dev": true, "requires": { - "@jest/core": "^25.2.4", + "@jest/core": "^25.4.0", "import-local": "^3.0.2", - "jest-cli": "^25.2.4" + "jest-cli": "^25.4.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11185,95 +11605,33 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "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 }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, "jest-cli": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.2.4.tgz", - "integrity": "sha512-zeY2pRDWKj2LZudIncvvguwLMEdcnJqc2jJbwza1beqi80qqLvkPF/BjbFkK2sIV3r+mfTJS+7ITrvK6pCdRjg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.4.0.tgz", + "integrity": "sha512-usyrj1lzCJZMRN1r3QEdnn8e6E6yCx/QN7+B1sLoA68V7f3WlsxSSQfy0+BAwRiF4Hz2eHauf11GZG3PIfWTXQ==", "dev": true, "requires": { - "@jest/core": "^25.2.4", - "@jest/test-result": "^25.2.4", - "@jest/types": "^25.2.3", + "@jest/core": "^25.4.0", + "@jest/test-result": "^25.4.0", + "@jest/types": "^25.4.0", "chalk": "^3.0.0", "exit": "^0.1.2", "import-local": "^3.0.2", "is-ci": "^2.0.0", - "jest-config": "^25.2.4", - "jest-util": "^25.2.3", - "jest-validate": "^25.2.3", + "jest-config": "^25.4.0", + "jest-util": "^25.4.0", + "jest-validate": "^25.4.0", "prompts": "^2.0.1", "realpath-native": "^2.0.0", "yargs": "^15.3.1" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -11286,54 +11644,107 @@ } }, "jest-changed-files": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.2.3.tgz", - "integrity": "sha512-EFxy94dvvbqRB36ezIPLKJ4fDIC+jAdNs8i8uTwFpaXd6H3LVc3ova1lNS4ZPWk09OCR2vq5kSdSQgar7zMORg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.4.0.tgz", + "integrity": "sha512-VR/rfJsEs4BVMkwOTuStRyS630fidFVekdw/lBaBQjx9KK3VZFOZ2c0fsom2fRp8pMCrCTP6LGna00o/DXGlqA==", "dev": true, "requires": { - "@jest/types": "^25.2.3", + "@jest/types": "^25.4.0", "execa": "^3.2.0", "throat": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" } }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" } }, + "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 + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -11376,6 +11787,15 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -11388,31 +11808,49 @@ } }, "jest-config": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.2.4.tgz", - "integrity": "sha512-fxy3nIpwJqOUQJRVF/q+pNQb6dv5b9YufOeCbpPZJ/md1zXpiupbhfehpfODhnKOfqbzSiigtSLzlWWmbRxnqQ==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.4.0.tgz", + "integrity": "sha512-egT9aKYxMyMSQV1aqTgam0SkI5/I2P9qrKexN5r2uuM2+68ypnc+zPGmfUxK7p1UhE7dYH9SLBS7yb+TtmT1AA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^25.2.4", - "@jest/types": "^25.2.3", - "babel-jest": "^25.2.4", + "@jest/test-sequencer": "^25.4.0", + "@jest/types": "^25.4.0", + "babel-jest": "^25.4.0", "chalk": "^3.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "jest-environment-jsdom": "^25.2.4", - "jest-environment-node": "^25.2.4", - "jest-get-type": "^25.2.1", - "jest-jasmine2": "^25.2.4", - "jest-regex-util": "^25.2.1", - "jest-resolve": "^25.2.3", - "jest-util": "^25.2.3", - "jest-validate": "^25.2.3", + "jest-environment-jsdom": "^25.4.0", + "jest-environment-node": "^25.4.0", + "jest-get-type": "^25.2.6", + "jest-jasmine2": "^25.4.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.4.0", + "jest-util": "^25.4.0", + "jest-validate": "^25.4.0", "micromatch": "^4.0.2", - "pretty-format": "^25.2.3", + "pretty-format": "^25.4.0", "realpath-native": "^2.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11460,6 +11898,18 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -11472,17 +11922,35 @@ } }, "jest-diff": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.2.3.tgz", - "integrity": "sha512-VtZ6LAQtaQpFsmEzps15dQc5ELbJxy4L2DOSo2Ev411TUEtnJPkAMD7JneVypeMJQ1y3hgxN9Ao13n15FAnavg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.4.0.tgz", + "integrity": "sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug==", "dev": true, "requires": { "chalk": "^3.0.0", - "diff-sequences": "^25.2.1", - "jest-get-type": "^25.2.1", - "pretty-format": "^25.2.3" + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.4.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11524,6 +11992,18 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -11536,27 +12016,45 @@ } }, "jest-docblock": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.2.3.tgz", - "integrity": "sha512-d3/tmjLLrH5fpRGmIm3oFa3vOaD/IjPxtXVOrfujpfJ9y1tCDB1x/tvunmdOVAyF03/xeMwburl6ITbiQT1mVA==", + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", + "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.2.3.tgz", - "integrity": "sha512-RTlmCjsBDK2c9T5oO4MqccA3/5Y8BUtiEy7OOQik1iyCgdnNdHbI0pNEpyapZPBG0nlvZ4mIu7aY6zNUvLraAQ==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.4.0.tgz", + "integrity": "sha512-lwRIJ8/vQU/6vq3nnSSUw1Y3nz5tkYSFIywGCZpUBd6WcRgpn8NmJoQICojbpZmsJOJNHm0BKdyuJ6Xdx+eDQQ==", "dev": true, "requires": { - "@jest/types": "^25.2.3", + "@jest/types": "^25.4.0", "chalk": "^3.0.0", - "jest-get-type": "^25.2.1", - "jest-util": "^25.2.3", - "pretty-format": "^25.2.3" + "jest-get-type": "^25.2.6", + "jest-util": "^25.4.0", + "pretty-format": "^25.4.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11598,6 +12096,18 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -11610,126 +12120,115 @@ } }, "jest-environment-jsdom": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.2.4.tgz", - "integrity": "sha512-5dm+tNwrLmhELdjAwiQnVGf/U9iFMWdTL4/wyrMg2HU6RQnCiuxpWbIigLHUhuP1P2Ak0F4k3xhjrikboKyShA==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.4.0.tgz", + "integrity": "sha512-KTitVGMDrn2+pt7aZ8/yUTuS333w3pWt1Mf88vMntw7ZSBNDkRS6/4XLbFpWXYfWfp1FjcjQTOKzbK20oIehWQ==", "dev": true, "requires": { - "@jest/environment": "^25.2.4", - "@jest/fake-timers": "^25.2.4", - "@jest/types": "^25.2.3", - "jest-mock": "^25.2.3", - "jest-util": "^25.2.3", + "@jest/environment": "^25.4.0", + "@jest/fake-timers": "^25.4.0", + "@jest/types": "^25.4.0", + "jest-mock": "^25.4.0", + "jest-util": "^25.4.0", "jsdom": "^15.2.1" - } - }, - "jest-environment-jsdom-global": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-global/-/jest-environment-jsdom-global-1.2.1.tgz", - "integrity": "sha512-XK/ddDfv8rURHoyfZwmhePv1mof3XFlPvkGfywIYU5Ype4/S/SRA0KNAdma9CuLV/KI+1jQh5BrGM3AqpJ/jRA==", - "dev": true - }, - "jest-environment-node": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.2.4.tgz", - "integrity": "sha512-Jkc5Y8goyXPrLRHnrUlqC7P4o5zn2m4zw6qWoRJ59kxV1f2a5wK+TTGhrhCwnhW/Ckpdl/pm+LufdvhJkvJbiw==", - "dev": true, - "requires": { - "@jest/environment": "^25.2.4", - "@jest/fake-timers": "^25.2.4", - "@jest/types": "^25.2.3", - "jest-mock": "^25.2.3", - "jest-util": "^25.2.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "jest-get-type": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.1.tgz", - "integrity": "sha512-EYjTiqcDTCRJDcSNKbLTwn/LcDPEE7ITk8yRMNAOjEsN6yp+Uu+V1gx4djwnuj/DvWg0YGmqaBqPVGsPxlvE7w==", - "dev": true - }, - "jest-haste-map": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.2.3.tgz", - "integrity": "sha512-pAP22OHtPr4qgZlJJFks2LLgoQUr4XtM1a+F5UaPIZNiCRnePA0hM3L7aiJ0gzwiNIYwMTfKRwG/S1L28J3A3A==", - "dev": true, - "requires": { - "@jest/types": "^25.2.3", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.3", - "jest-serializer": "^25.2.1", - "jest-util": "^25.2.3", - "jest-worker": "^25.2.1", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7", - "which": "^2.0.2" }, "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" } }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, - "optional": true + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "jest-jasmine2": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.2.4.tgz", - "integrity": "sha512-juoKrmNmLwaheNbAg71SuUF9ovwUZCFNTpKVhvCXWk+SSeORcIUMptKdPCoLXV3D16htzhTSKmNxnxSk4SrTjA==", + "jest-environment-jsdom-global": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-global/-/jest-environment-jsdom-global-2.0.2.tgz", + "integrity": "sha512-2jNQq5ytKmMHB8sxn/jktP9ldcLMT+scjvJPljqjaH3sw9exTxqINhH8qvROgTwn9CJGVEb3pfa//nVT+yQBnA==", + "dev": true + }, + "jest-environment-node": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.4.0.tgz", + "integrity": "sha512-wryZ18vsxEAKFH7Z74zi/y/SyI1j6UkVZ6QsllBuT/bWlahNfQjLNwFsgh/5u7O957dYFoXj4yfma4n4X6kU9A==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^25.2.4", - "@jest/source-map": "^25.2.1", - "@jest/test-result": "^25.2.4", - "@jest/types": "^25.2.3", - "chalk": "^3.0.0", - "co": "^4.6.0", - "expect": "^25.2.4", - "is-generator-fn": "^2.0.0", - "jest-each": "^25.2.3", - "jest-matcher-utils": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-runtime": "^25.2.4", - "jest-snapshot": "^25.2.4", - "jest-util": "^25.2.3", - "pretty-format": "^25.2.3", - "throat": "^5.0.0" + "@jest/environment": "^25.4.0", + "@jest/fake-timers": "^25.4.0", + "@jest/types": "^25.4.0", + "jest-mock": "^25.4.0", + "jest-util": "^25.4.0", + "semver": "^6.3.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11771,6 +12270,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -11782,28 +12287,531 @@ } } }, - "jest-leak-detector": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.2.3.tgz", - "integrity": "sha512-yblCMPE7NJKl7778Cf/73yyFWAas5St0iiEBwq7RDyaz6Xd4WPFnPz2j7yDb/Qce71A1IbDoLADlcwD8zT74Aw==", - "dev": true, - "requires": { - "jest-get-type": "^25.2.1", - "pretty-format": "^25.2.3" - } + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true }, - "jest-matcher-utils": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.2.3.tgz", - "integrity": "sha512-ZmiXiwQRVM9MoKjGMP5YsGGk2Th5ncyRxfXKz5AKsmU8m43kgNZirckVzaP61MlSa9LKmXbevdYqVp1ZKAw2Rw==", + "jest-haste-map": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.4.0.tgz", + "integrity": "sha512-5EoCe1gXfGC7jmXbKzqxESrgRcaO3SzWXGCnvp9BcT0CFMyrB1Q6LIsjl9RmvmJGQgW297TCfrdgiy574Rl9HQ==", "dev": true, "requires": { - "chalk": "^3.0.0", - "jest-diff": "^25.2.3", - "jest-get-type": "^25.2.1", - "pretty-format": "^25.2.3" - }, - "dependencies": { + "@jest/types": "^25.4.0", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.3", + "jest-serializer": "^25.2.6", + "jest-util": "^25.4.0", + "jest-worker": "^25.4.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "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 + }, + "jest-worker": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.4.0.tgz", + "integrity": "sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.4.0.tgz", + "integrity": "sha512-QccxnozujVKYNEhMQ1vREiz859fPN/XklOzfQjm2j9IGytAkUbSwjFRBtQbHaNZ88cItMpw02JnHGsIdfdpwxQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.4.0", + "@jest/source-map": "^25.2.6", + "@jest/test-result": "^25.4.0", + "@jest/types": "^25.4.0", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.4.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.4.0", + "jest-matcher-utils": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-runtime": "^25.4.0", + "jest-snapshot": "^25.4.0", + "jest-util": "^25.4.0", + "pretty-format": "^25.4.0", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.4.0.tgz", + "integrity": "sha512-7Y6Bqfv2xWsB+7w44dvZuLs5SQ//fzhETgOGG7Gq3TTGFdYvAgXGwV8z159RFZ6fXiCPm/szQ90CyfVos9JIFQ==", + "dev": true, + "requires": { + "jest-get-type": "^25.2.6", + "pretty-format": "^25.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz", + "integrity": "sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "jest-diff": "^25.4.0", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.4.0.tgz", + "integrity": "sha512-LYY9hRcVGgMeMwmdfh9tTjeux1OjZHMusq/E5f3tJN+dAoVVkJtq5ZUEPIcB7bpxDUt2zjUsrwg0EGgPQ+OhXQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.4.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.4.0.tgz", + "integrity": "sha512-MdazSfcYAUjJjuVTTnusLPzE0pE4VXpOUzWdj8sbM+q6abUjm3bATVPXFqTXrxSieR8ocpvQ9v/QaQCftioQFg==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11856,22 +12864,46 @@ } } }, - "jest-message-util": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.2.4.tgz", - "integrity": "sha512-9wWMH3Bf+GVTv0GcQLmH/FRr0x0toptKw9TA8U5YFLVXx7Tq9pvcNzTyJrcTJ+wLqNbMPPJlJNft4MnlcrtF5Q==", + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", + "dev": true + }, + "jest-resolve": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.4.0.tgz", + "integrity": "sha512-wOsKqVDFWUiv8BtLMCC6uAJ/pHZkfFgoBTgPtmYlsprAjkxrr2U++ZnB3l5ykBMd2O24lXvf30SMAjJIW6k2aA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^25.2.4", - "@jest/types": "^25.2.3", - "@types/stack-utils": "^1.0.1", + "@jest/types": "^25.4.0", + "browser-resolve": "^1.11.3", "chalk": "^3.0.0", - "micromatch": "^4.0.2", - "slash": "^3.0.0", - "stack-utils": "^1.0.1" + "jest-pnp-resolver": "^1.2.1", + "read-pkg-up": "^7.0.1", + "realpath-native": "^2.0.0", + "resolve": "^1.15.1", + "slash": "^3.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -11913,6 +12945,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "resolve": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz", + "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11930,41 +12971,29 @@ } } }, - "jest-mock": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.2.3.tgz", - "integrity": "sha512-xlf+pyY0j47zoCs8zGGOGfWyxxLximE8YFOfEK8s4FruR8DtM/UjNj61um+iDuMAFEBDe1bhCXkqiKoCmWjJzg==", - "dev": true, - "requires": { - "@jest/types": "^25.2.3" - } - }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", - "dev": true - }, - "jest-regex-util": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.1.tgz", - "integrity": "sha512-wroFVJw62LdqTdkL508ZLV82FrJJWVJMIuYG7q4Uunl1WAPTf4ftPKrqqfec4SvOIlvRZUdEX2TFpWR356YG/w==", - "dev": true - }, - "jest-resolve": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.2.3.tgz", - "integrity": "sha512-1vZMsvM/DBH258PnpUNSXIgtzpYz+vCVCj9+fcy4akZl4oKbD+9hZSlfe9RIDpU0Fc28ozHQrmwX3EqFRRIHGg==", + "jest-resolve-dependencies": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.4.0.tgz", + "integrity": "sha512-A0eoZXx6kLiuG1Ui7wITQPl04HwjLErKIJTt8GR3c7UoDAtzW84JtCrgrJ6Tkw6c6MwHEyAaLk7dEPml5pf48A==", "dev": true, "requires": { - "@jest/types": "^25.2.3", - "browser-resolve": "^1.11.3", - "chalk": "^3.0.0", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^2.0.0", - "resolve": "^1.15.1" + "@jest/types": "^25.4.0", + "jest-regex-util": "^25.2.6", + "jest-snapshot": "^25.4.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12006,15 +13035,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -12026,44 +13046,45 @@ } } }, - "jest-resolve-dependencies": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.2.4.tgz", - "integrity": "sha512-qhUnK4PfNHzNdca7Ub1mbAqE0j5WNyMTwxBZZJjQlUrdqsiYho/QGK65FuBkZuSoYtKIIqriR9TpGrPEc3P5Gg==", - "dev": true, - "requires": { - "@jest/types": "^25.2.3", - "jest-regex-util": "^25.2.1", - "jest-snapshot": "^25.2.4" - } - }, "jest-runner": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.2.4.tgz", - "integrity": "sha512-5xaIfqqxck9Wg2CV4b9KmJtf/sWO7zWQx7O+34GCLGPzoPcVmB3mZtdrQI1/jS3Reqjru9ycLjgLHSf6XoxRqA==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.4.0.tgz", + "integrity": "sha512-wWQSbVgj2e/1chFdMRKZdvlmA6p1IPujhpLT7TKNtCSl1B0PGBGvJjCaiBal/twaU2yfk8VKezHWexM8IliBfA==", "dev": true, "requires": { - "@jest/console": "^25.2.3", - "@jest/environment": "^25.2.4", - "@jest/test-result": "^25.2.4", - "@jest/types": "^25.2.3", + "@jest/console": "^25.4.0", + "@jest/environment": "^25.4.0", + "@jest/test-result": "^25.4.0", + "@jest/types": "^25.4.0", "chalk": "^3.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.3", - "jest-config": "^25.2.4", - "jest-docblock": "^25.2.3", - "jest-haste-map": "^25.2.3", - "jest-jasmine2": "^25.2.4", - "jest-leak-detector": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-resolve": "^25.2.3", - "jest-runtime": "^25.2.4", - "jest-util": "^25.2.3", - "jest-worker": "^25.2.1", + "jest-config": "^25.4.0", + "jest-docblock": "^25.3.0", + "jest-haste-map": "^25.4.0", + "jest-jasmine2": "^25.4.0", + "jest-leak-detector": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-resolve": "^25.4.0", + "jest-runtime": "^25.4.0", + "jest-util": "^25.4.0", + "jest-worker": "^25.4.0", "source-map-support": "^0.5.6", "throat": "^5.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12105,6 +13126,16 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-worker": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.4.0.tgz", + "integrity": "sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -12117,38 +13148,50 @@ } }, "jest-runtime": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.2.4.tgz", - "integrity": "sha512-6ehOUizgIghN+aV5YSrDzTZ+zJ9omgEjJbTHj3Jqes5D52XHfhzT7cSfdREwkNjRytrR7mNwZ7pRauoyNLyJ8Q==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.4.0.tgz", + "integrity": "sha512-lgNJlCDULtXu9FumnwCyWlOub8iytijwsPNa30BKrSNtgoT6NUMXOPrZvsH06U6v0wgD/Igwz13nKA2wEKU2VA==", "dev": true, "requires": { - "@jest/console": "^25.2.3", - "@jest/environment": "^25.2.4", - "@jest/source-map": "^25.2.1", - "@jest/test-result": "^25.2.4", - "@jest/transform": "^25.2.4", - "@jest/types": "^25.2.3", + "@jest/console": "^25.4.0", + "@jest/environment": "^25.4.0", + "@jest/source-map": "^25.2.6", + "@jest/test-result": "^25.4.0", + "@jest/transform": "^25.4.0", + "@jest/types": "^25.4.0", "@types/yargs": "^15.0.0", "chalk": "^3.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.3", - "jest-config": "^25.2.4", - "jest-haste-map": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-mock": "^25.2.3", - "jest-regex-util": "^25.2.1", - "jest-resolve": "^25.2.3", - "jest-snapshot": "^25.2.4", - "jest-util": "^25.2.3", - "jest-validate": "^25.2.3", + "jest-config": "^25.4.0", + "jest-haste-map": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-mock": "^25.4.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.4.0", + "jest-snapshot": "^25.4.0", + "jest-util": "^25.4.0", + "jest-validate": "^25.4.0", "realpath-native": "^2.0.0", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^15.3.1" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12196,12 +13239,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -12214,33 +13251,51 @@ } }, "jest-serializer": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.2.1.tgz", - "integrity": "sha512-fibDi7M5ffx6c/P66IkvR4FKkjG5ldePAK1WlbNoaU4GZmIAkS9Le/frAwRUFEX0KdnisSPWf+b1RC5jU7EYJQ==", + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.2.6.tgz", + "integrity": "sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ==", "dev": true }, "jest-snapshot": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.2.4.tgz", - "integrity": "sha512-nIwpW7FZCq5p0AE3Oyqyb6jL0ENJixXzJ5/CD/XRuOqp3gS5OM3O/k+NnTrniCXxPFV4ry6s9HNfiPQBi0wcoA==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.4.0.tgz", + "integrity": "sha512-J4CJ0X2SaGheYRZdLz9CRHn9jUknVmlks4UBeu270hPAvdsauFXOhx9SQP2JtRzhnR3cvro/9N9KP83/uvFfRg==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^25.2.3", + "@jest/types": "^25.4.0", "@types/prettier": "^1.19.0", "chalk": "^3.0.0", - "expect": "^25.2.4", - "jest-diff": "^25.2.3", - "jest-get-type": "^25.2.1", - "jest-matcher-utils": "^25.2.3", - "jest-message-util": "^25.2.4", - "jest-resolve": "^25.2.3", + "expect": "^25.4.0", + "jest-diff": "^25.4.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.4.0", + "jest-message-util": "^25.4.0", + "jest-resolve": "^25.4.0", "make-dir": "^3.0.0", "natural-compare": "^1.4.0", - "pretty-format": "^25.2.3", + "pretty-format": "^25.4.0", "semver": "^6.3.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12291,6 +13346,18 @@ "semver": "^6.0.0" } }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -12309,26 +13376,38 @@ } }, "jest-styled-components": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.0.0.tgz", - "integrity": "sha512-A1nl8q1ptZj1t5wd0x/UYjnqfld1GhZwRDPS9w0eD5P5R8G+Q4uHaBAbUjf+Arjexqh2BxfrGkTc3tDuhtdifg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.0.2.tgz", + "integrity": "sha512-i1Qke8Jfgx0Why31q74ohVj9S2FmMLUE8bNRSoK4DgiurKkXG6HC4NPhcOLAz6VpVd9wXkPn81hOt4aAQedqsA==", "dev": true, "requires": { "css": "^2.2.4" } }, "jest-util": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.2.3.tgz", - "integrity": "sha512-7tWiMICVSo9lNoObFtqLt9Ezt5exdFlWs5fLe1G4XLY2lEbZc814cw9t4YHScqBkWMfzth8ASHKlYBxiX2rdCw==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.4.0.tgz", + "integrity": "sha512-WSZD59sBtAUjLv1hMeKbNZXmMcrLRWcYqpO8Dz8b4CeCTZpfNQw2q9uwrYAD+BbJoLJlu4ezVPwtAmM/9/SlZA==", "dev": true, "requires": { - "@jest/types": "^25.2.3", + "@jest/types": "^25.4.0", "chalk": "^3.0.0", "is-ci": "^2.0.0", "make-dir": "^3.0.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12397,19 +13476,37 @@ } }, "jest-validate": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.2.3.tgz", - "integrity": "sha512-GObn91jzU0B0Bv4cusAwjP6vnWy78hJUM8MOSz7keRfnac/ZhQWIsUjvk01IfeXNTemCwgR57EtdjQMzFZGREg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.4.0.tgz", + "integrity": "sha512-hvjmes/EFVJSoeP1yOl8qR8mAtMR3ToBkZeXrD/ZS9VxRyWDqQ/E1C5ucMTeSmEOGLipvdlyipiGbHJ+R1MQ0g==", "dev": true, "requires": { - "@jest/types": "^25.2.3", + "@jest/types": "^25.4.0", "camelcase": "^5.3.1", "chalk": "^3.0.0", - "jest-get-type": "^25.2.1", + "jest-get-type": "^25.2.6", "leven": "^3.1.0", - "pretty-format": "^25.2.3" + "pretty-format": "^25.4.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12451,6 +13548,18 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz", + "integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==", + "dev": true, + "requires": { + "@jest/types": "^25.4.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -12463,19 +13572,31 @@ } }, "jest-watcher": { - "version": "25.2.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.2.4.tgz", - "integrity": "sha512-p7g7s3zqcy69slVzQYcphyzkB2FBmJwMbv6k6KjI5mqd6KnUnQPfQVKuVj2l+34EeuxnbXqnrjtUFmxhcL87rg==", + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.4.0.tgz", + "integrity": "sha512-36IUfOSRELsKLB7k25j/wutx0aVuHFN6wO94gPNjQtQqFPa2rkOymmx9rM5EzbF3XBZZ2oqD9xbRVoYa2w86gw==", "dev": true, "requires": { - "@jest/test-result": "^25.2.4", - "@jest/types": "^25.2.3", + "@jest/test-result": "^25.4.0", + "@jest/types": "^25.4.0", "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", - "jest-util": "^25.2.3", + "jest-util": "^25.4.0", "string-length": "^3.1.0" }, "dependencies": { + "@jest/types": { + "version": "25.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz", + "integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -12727,9 +13848,9 @@ "integrity": "sha1-4GQbR/QKOPITnCX9oFAL8o5DAVo=" }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "klaw": { @@ -12812,17 +13933,17 @@ "dev": true }, "lint-staged": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.1.1.tgz", - "integrity": "sha512-wAeu/ePaBAOfwM2+cVbgPWDtn17B0Sxiv0NvNEqDAIvB8Yhvl60vafKFiK4grcYn87K1iK+a0zVoETvKbdT9/Q==", + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.1.6.tgz", + "integrity": "sha512-45zaGxf4XZuwdUk87yRFE/1b4vTZmH2UnYmUPmindsgdAljOFpWWb0yEjxngmqERUS/MGauJexFF6BjLVg9VMA==", "dev": true, "requires": { - "chalk": "^3.0.0", - "commander": "^4.0.1", + "chalk": "^4.0.0", + "commander": "^5.0.0", "cosmiconfig": "^6.0.0", "debug": "^4.1.1", "dedent": "^0.7.0", - "execa": "^3.4.0", + "execa": "^4.0.0", "listr": "^0.14.3", "log-symbols": "^3.0.0", "micromatch": "^4.0.2", @@ -12843,9 +13964,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -12868,15 +13989,15 @@ "dev": true }, "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.0.0.tgz", + "integrity": "sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ==", "dev": true }, "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -12885,9 +14006,9 @@ } }, "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.0.tgz", + "integrity": "sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -12897,7 +14018,6 @@ "merge-stream": "^2.0.0", "npm-run-path": "^4.0.0", "onetime": "^5.1.0", - "p-finally": "^2.0.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" } @@ -12932,12 +14052,6 @@ "path-key": "^3.0.0" } }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -13671,9 +14785,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minipass": { @@ -13787,20 +14901,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "move-concurrently": { @@ -14499,6 +15605,12 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -14589,23 +15701,12 @@ } }, "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - } + "find-up": "^2.1.0" } }, "please-upgrade-node": { @@ -14816,9 +15917,9 @@ "dev": true }, "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", + "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", "dev": true }, "prettier-linter-helpers": { @@ -15663,9 +16764,9 @@ } }, "react-i18next": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.3.4.tgz", - "integrity": "sha512-IRZMD7PAM3C+fJNzRbyLNi1ZD0kc3Z3obBspJjEl+9H+ME41PhVor3BpdIqv/Rm7lUoGhMjmpu42J45ooJ61KA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.3.5.tgz", + "integrity": "sha512-x1dgM7UU/jKQ72/q3p9kkYz0C8fqAfMlUlx+SxqBUcRMTs/09HfnOUZFry1+GBpUcDHAg8R/vmPqL9rRzFO0UQ==", "requires": { "@babel/runtime": "^7.3.1", "html-parse-stringify2": "2.0.1" @@ -15731,9 +16832,9 @@ } }, "react-qr-svg": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-qr-svg/-/react-qr-svg-2.2.1.tgz", - "integrity": "sha512-rLDCZI9pIqD5lbBIatrqUMhP1gqQ7glqubXO/m/X87ikEPhXuY0hMLhYMuKoH4834G36ap8Az0HI4bXEJUN//w==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-qr-svg/-/react-qr-svg-2.2.2.tgz", + "integrity": "sha512-uUsleAZBsQ0DmN88hBXkUfzxdKzMgQMZxMfIrIj3SXyLM5iqVrGBkMWw57tiknmdet0vu/lvmljgROdLN8KzEA==", "requires": { "prop-types": "^15.5.8", "qr.js": "0.0.0" @@ -15861,11 +16962,11 @@ } }, "react-use": { - "version": "13.27.1", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-13.27.1.tgz", - "integrity": "sha512-bAwdqDMXs5lovEanXnL1izledfrPEUUv1afoTVB59eUiYcDyKul+M/dT/2WcgHjoY/R6QlrTcZoW4R7ifwvBfw==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-14.1.1.tgz", + "integrity": "sha512-3BVJJg+OrbgWG3aiyVhCgJuhx91T7juIr75QvFlMS+pesRZUd+PQNqoDhI+9pXwrc9FjCptvTHzl/YFpul3HHA==", "requires": { - "@types/js-cookie": "2.2.5", + "@types/js-cookie": "2.2.6", "@xobotyi/scrollbar-width": "1.9.5", "copy-to-clipboard": "^3.2.0", "fast-deep-equal": "^3.1.1", @@ -15904,6 +17005,73 @@ "lodash": "^4.0.1" } }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -16273,6 +17441,15 @@ "path-parse": "^1.0.6" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -17377,6 +18554,12 @@ "ansi-regex": "^2.0.0" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -17427,14 +18610,14 @@ } }, "styled-components": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.0.1.tgz", - "integrity": "sha512-E0xKTRIjTs4DyvC1MHu/EcCXIj6+ENCP8hP01koyoADF++WdBUOrSGwU1scJRw7/YaYOhDvvoad6VlMG+0j53A==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.1.0.tgz", + "integrity": "sha512-0Qs2wEkFBXHFlysz6CV831VG6HedcrFUwChjnWylNivsx14MtmqQsohi21rMHZxzuTba063dEyoe/SR6VGJI7Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.3", + "@emotion/is-prop-valid": "^0.8.8", "@emotion/stylis": "^0.8.4", "@emotion/unitless": "^0.7.4", "babel-plugin-styled-components": ">= 1", @@ -19058,9 +20241,9 @@ } }, "yargs-parser": { - "version": "18.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", - "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 5e0b80e9..93d3240f 100644 --- a/package.json +++ b/package.json @@ -52,10 +52,10 @@ "dependencies": { "@babel/runtime": "^7.9.2", "browser-cookie-lite": "^1.0.4", - "date-fns": "^2.11.1", + "date-fns": "^2.12.0", "dayjs": "^1.8.24", - "downshift": "^5.0.5", - "i18next": "^19.3.4", + "downshift": "^5.1.1", + "i18next": "^19.4.2", "jump.js": "^1.0.2", "lodash-es": "^4.17.15", "match-sorter": "^4.1.0", @@ -64,11 +64,11 @@ "rc-notification": "^4.0.0", "react-datepicker": "^2.14.1", "react-dropzone": "^10.2.2", - "react-i18next": "^11.3.4", - "react-qr-svg": "^2.2.1", + "react-i18next": "^11.3.5", + "react-qr-svg": "^2.2.2", "react-sticky-box": "^0.9.3", "react-transition-group": "^4.3.0", - "react-use": "^13.27.1", + "react-use": "^14.1.1", "react-useportal": "^1.0.13", "styled-icons": "^10.2.1", "styled-normalize": "^8.0.7", @@ -79,39 +79,39 @@ "devDependencies": { "@babel/core": "^7.9.0", "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/preset-env": "^7.9.0", + "@babel/preset-env": "^7.9.5", "@babel/preset-react": "^7.9.4", "@storybook/addon-actions": "^5.3.18", "@storybook/addon-knobs": "^5.3.18", "@storybook/react": "^5.3.18", - "@testing-library/jest-dom": "^5.3.0", + "@testing-library/jest-dom": "^5.5.0", "@testing-library/react": "^10.0.2", "babel-eslint": "^10.1.0", - "babel-jest": "^25.2.4", + "babel-jest": "^25.4.0", "babel-loader": "^8.1.0", "babel-plugin-dynamic-import-node": "^2.3.0", "better-npm-run": "^0.1.1", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.1", "eslint-plugin-import": "^2.20.2", - "eslint-plugin-prettier": "^3.1.2", + "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-react": "^7.19.0", "eslint-plugin-react-hooks": "^3.0.0", "formik": "^2.1.4", - "husky": "^4.2.3", + "husky": "^4.2.5", "identity-obj-proxy": "^3.0.0", - "jest": "^25.2.4", - "jest-environment-jsdom": "^25.2.4", - "jest-environment-jsdom-global": "^1.2.1", - "jest-styled-components": "^7.0.0", - "lint-staged": "^10.1.1", - "prettier": "^1.19.1", + "jest": "^25.4.0", + "jest-environment-jsdom": "^25.4.0", + "jest-environment-jsdom-global": "^2.0.2", + "jest-styled-components": "^7.0.2", + "lint-staged": "^10.1.6", + "prettier": "^2.0.4", "prop-types": "^15.7.2", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.1.2", "storybook-react-router": "^1.0.8", - "styled-components": "^5.0.1", + "styled-components": "^5.1.0", "test-data-bot": "^0.8.0" } } From 69141328bbca01f306080a85df6dea97cc6e1807 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 11:44:30 +0300 Subject: [PATCH 141/175] files formatted by prettier --- src/components/Button/Button.stories.js | 2 +- src/components/Button/ButtonSizes.jsx | 2 +- src/components/Button/ButtonThemes.jsx | 10 +++++----- src/components/CardSmall/CardSmall.stories.js | 2 +- .../CardSmall/CardSmallCheckbox/index.jsx | 2 +- src/components/DeleteSure/index.jsx | 2 +- .../DeleteSureButton/StyledDeleteSureButton.jsx | 2 +- .../index.jsx | 8 ++++---- .../index.jsx | 2 +- .../index.jsx | 2 +- .../EntriesDateTimeFilterTabs/index.jsx | 4 ++-- .../Entries/EntriesDateTimeFilter/index.jsx | 10 +++------- src/components/ErrorPageBoundary/index.jsx | 2 +- src/components/Header/Header.stories.js | 2 +- src/components/IdFormat/hooks/use-local-id.js | 2 +- .../InfiniteDropdown/InfiniteDropdown.stories.js | 6 +++--- src/components/ListLayout/ListLayout.stories.js | 10 +++++----- .../ListLayout/ListLayoutList/index.jsx | 2 +- src/components/Login/LoginForm/index.jsx | 8 ++++---- src/components/PageLoader/index.jsx | 4 ++-- src/components/Pagination/Pagination.stories.js | 2 +- .../PersonsGroup/PersonsGroupPerson/index.jsx | 2 +- src/components/PopupConfirm/index.jsx | 4 ++-- .../RouteSection/RouteSectionOverlay.jsx | 2 +- .../RouteSection/RouteSectionSpinner.jsx | 2 +- src/components/RouteSection/WithTransition.jsx | 2 +- src/components/SegmentedTabs/index.jsx | 2 +- src/components/Slider/SliderInner.jsx | 2 +- src/components/Slider/StyledSlider.jsx | 2 +- src/components/Stepper/__tests__/Stepper.js | 2 +- src/components/Stepper/index.jsx | 6 +++--- src/components/Tabs.js | 14 +++++++------- src/components/Text/TextDrag.jsx | 2 +- src/components/Text/TextTrim.jsx | 2 +- .../FormCheckbox/FormCheckbox.stories.js | 2 +- .../FormDropdown/FormDropdown.stories.js | 2 +- .../FormDropdown/__tests__/FormDropdown.js | 2 +- .../form/components/FormDropdown/index.jsx | 16 ++++++++-------- .../form/components/FormField/index.jsx | 2 +- .../form/components/FormInput/index.jsx | 6 +++--- .../FormMultiSelect/__tests__/FormMultiSelect.js | 10 +++++----- .../form/components/FormMultiSelect/index.jsx | 14 +++++++------- .../FormRangeSlider/__tests__/FormRangeSlider.js | 2 +- .../form/components/FormRangeSlider/index.jsx | 6 +++--- src/components/notification/index.jsx | 2 +- src/hooks/use-copy-to-clipboard.js | 2 +- src/hooks/use-infinite-menu.js | 2 +- src/hooks/use-pagination.js | 2 +- src/hooks/use-selectable-list.js | 8 ++++---- src/style/animations/fade-enter.jsx | 2 +- src/style/animations/fade-exit.jsx | 2 +- src/utils/helpers.js | 10 +++++----- test/generate.js | 8 ++++---- 53 files changed, 113 insertions(+), 117 deletions(-) diff --git a/src/components/Button/Button.stories.js b/src/components/Button/Button.stories.js index 07fbec6f..ae23209d 100644 --- a/src/components/Button/Button.stories.js +++ b/src/components/Button/Button.stories.js @@ -3,7 +3,7 @@ import { storiesOf } from "@storybook/react"; import { text, select, boolean } from "@storybook/addon-knobs"; import { action } from "@storybook/addon-actions"; -import Button from "./index.jsx"; +import { Button } from "./index.jsx"; storiesOf("Button", module).add("default", () => { const buttonText = text("Button text", "Arunoda"); diff --git a/src/components/Button/ButtonSizes.jsx b/src/components/Button/ButtonSizes.jsx index a12c806d..69c74a55 100644 --- a/src/components/Button/ButtonSizes.jsx +++ b/src/components/Button/ButtonSizes.jsx @@ -1,7 +1,7 @@ import { css } from "styled-components"; function getSize(height, paddnig) { - return function({ fit }) { + return function ({ fit }) { if (fit === "square" || fit === "circle") { return css` width: ${height}px; diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index 2afa9b5f..de0138a2 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -21,11 +21,11 @@ function getPseudoForShadow({ isRounded, fit, disabled }) { &:hover:after { ${!disabled && - css` - { - opacity: 1; - } - `} + css` + { + opacity: 1; + } + `} } `; } diff --git a/src/components/CardSmall/CardSmall.stories.js b/src/components/CardSmall/CardSmall.stories.js index b1bb4e4b..6ee01cbc 100644 --- a/src/components/CardSmall/CardSmall.stories.js +++ b/src/components/CardSmall/CardSmall.stories.js @@ -10,7 +10,7 @@ import { personMock } from "../../../test/__mocks__"; import { PlaylistAdd } from "../icons"; import { colors } from "../../style"; -storiesOf("Basic UI|CardSmall", module) +storiesOf("Data display|CardSmall", module) .add("default", () => { function CardSmallWrapper() { const [isSelected, setIsSelected] = useState(false); diff --git a/src/components/CardSmall/CardSmallCheckbox/index.jsx b/src/components/CardSmall/CardSmallCheckbox/index.jsx index 8d979e3e..491606e8 100644 --- a/src/components/CardSmall/CardSmallCheckbox/index.jsx +++ b/src/components/CardSmall/CardSmallCheckbox/index.jsx @@ -9,7 +9,7 @@ function CardSmallCheckbox({ name, onChange, checked, isHidden }) { return ( { + onClick={(e) => { e.stopPropagation(); }} isHidden={isHidden} diff --git a/src/components/DeleteSure/index.jsx b/src/components/DeleteSure/index.jsx index 54966463..7e544621 100644 --- a/src/components/DeleteSure/index.jsx +++ b/src/components/DeleteSure/index.jsx @@ -7,7 +7,7 @@ export class DeleteSure extends React.Component { children: PropTypes.func.isRequired, }; - handleClick = e => { + handleClick = (e) => { e.stopPropagation(); if (this.state.isSure) { diff --git a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx index 406cb96d..f7fcaa14 100644 --- a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx +++ b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx @@ -14,7 +14,7 @@ function getHoverStyles({ isDisabled }) { } const DeleteSureButton = styled(Button).attrs(() => ({ buttonTheme: "reset" }))` - background-color: ${props => props.color}; + background-color: ${(props) => props.color}; color: ${colors.slate}; ${({ isSure, deleteColor }) => diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx index 925d5cab..459959e9 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx @@ -69,7 +69,7 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { } }, [value, selectionComplete]); - const handleDateChange = date => { + const handleDateChange = (date) => { setError(null); if (!selectionComplete && !value[0]) { @@ -93,7 +93,7 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { } }; - const handleSelect = date => { + const handleSelect = (date) => { if ( !selectionComplete && value[0] && @@ -137,7 +137,7 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { { + onChange={(date) => { onChange([date, value[1]]); }} onFocus={() => { @@ -148,7 +148,7 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { { + onChange={(date) => { onChange([value[0], date]); }} onFocus={() => { diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx index a31c4758..ff294d07 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx @@ -22,7 +22,7 @@ function EntriesDateTimeFilterRelativePickerSelect({ {label} )} - {range.map(option => ( + {range.map((option) => ( + render={(props) => // eslint-disable-next-line react/prop-types props.isActive && } /> + render={(props) => // eslint-disable-next-line react/prop-types props.isActive && } diff --git a/src/components/Entries/EntriesDateTimeFilter/index.jsx b/src/components/Entries/EntriesDateTimeFilter/index.jsx index 60650984..d3977b8f 100644 --- a/src/components/Entries/EntriesDateTimeFilter/index.jsx +++ b/src/components/Entries/EntriesDateTimeFilter/index.jsx @@ -74,17 +74,13 @@ function EntriesDateTimeFilter({ useUpdateEffect(() => { if (!isOpen) { if (!value[0] && value[1]) { - const dayBefore = dayjs(value[1]) - .subtract(1, "day") - .toDate(); + const dayBefore = dayjs(value[1]).subtract(1, "day").toDate(); onChange([dayBefore, value[1]]); } if (value[0] && !value[1]) { - const dayAfter = dayjs(value[0]) - .add(1, "day") - .toDate(); + const dayAfter = dayjs(value[0]).add(1, "day").toDate(); onChange([value[0], dayAfter]); } @@ -131,7 +127,7 @@ function EntriesDateTimeFilter({ {(value[0] || value[1]) && ( { + onClick={(e) => { e.stopPropagation(); if (!isEqual(value, valuesOnReset)) { onChange(valuesOnReset); diff --git a/src/components/ErrorPageBoundary/index.jsx b/src/components/ErrorPageBoundary/index.jsx index 448b83a2..1d941e65 100644 --- a/src/components/ErrorPageBoundary/index.jsx +++ b/src/components/ErrorPageBoundary/index.jsx @@ -27,7 +27,7 @@ RedirectToError.propTypes = { error: PropTypes.object.isRequired, }; -export const withErrorPageBoundary = Component => { +export const withErrorPageBoundary = (Component) => { const WithErrorPageBoundary = ({ onError, ...restProps }) => { return ( diff --git a/src/components/Header/Header.stories.js b/src/components/Header/Header.stories.js index 672c9eb7..b635be9e 100644 --- a/src/components/Header/Header.stories.js +++ b/src/components/Header/Header.stories.js @@ -6,7 +6,7 @@ import { action } from "@storybook/addon-actions"; import { Header, HeaderTopMenu, HeaderAppMenu } from "./index.jsx"; import { HeaderTopMenuLinks, HeaderTopMenuUser } from "./HeaderTopMenu"; -storiesOf("Header", module).add("default", () => { +storiesOf("Navigation|Header", module).add("default", () => { const username = text("Username", "Arunoda Susiripala"); const topLinks = object("Top links", [ diff --git a/src/components/IdFormat/hooks/use-local-id.js b/src/components/IdFormat/hooks/use-local-id.js index 8e4cbacd..c39dbad6 100644 --- a/src/components/IdFormat/hooks/use-local-id.js +++ b/src/components/IdFormat/hooks/use-local-id.js @@ -1,6 +1,6 @@ import { hasProperty } from "../../../utils/helpers"; -const getShortId = id => id.split("-")[4]; +const getShortId = (id) => id.split("-")[4]; function useLocalId(props) { const { id, children } = props; diff --git a/src/components/InfiniteDropdown/InfiniteDropdown.stories.js b/src/components/InfiniteDropdown/InfiniteDropdown.stories.js index 484c0bcf..bef8c926 100644 --- a/src/components/InfiniteDropdown/InfiniteDropdown.stories.js +++ b/src/components/InfiniteDropdown/InfiniteDropdown.stories.js @@ -14,7 +14,7 @@ function isEven(n) { storiesOf("Basic UI|InfiniteDropdown", module) .add("default", () => { - const options = generateSourcesStats(10).map(option => ({ + const options = generateSourcesStats(10).map((option) => ({ label: option.name, value: option.id, })); @@ -32,7 +32,7 @@ storiesOf("Basic UI|InfiniteDropdown", module) ); }) .add("with custom item render", () => { - const options = generateSourcesStats(10).map(option => ({ + const options = generateSourcesStats(10).map((option) => ({ label: option.name, value: option.id, })); @@ -46,7 +46,7 @@ storiesOf("Basic UI|InfiniteDropdown", module) placeholder={isFetching ? "Loading..." : "Select value..."} width={240} withSearch={boolean("with search", false)} - renderItem={item => ( + renderItem={(item) => ( {`${isEven(item.value) ? "🍎" : "🍌"} ${item.label}`} )} /> diff --git a/src/components/ListLayout/ListLayout.stories.js b/src/components/ListLayout/ListLayout.stories.js index 4fbe7918..fac6c19d 100644 --- a/src/components/ListLayout/ListLayout.stories.js +++ b/src/components/ListLayout/ListLayout.stories.js @@ -212,7 +212,7 @@ storiesOf("List Layout", module) `Items selected: ${selected.length}`} } - renderItem={item => ( + renderItem={(item) => ( } - renderItem={item => ( + renderItem={(item) => ( ; }) .add("list of persons", () => { - const persons = (count => + const persons = ((count) => [...new Array(count)].map((_, id) => ({ ...personMock, idxid: "732e7919-508d-4cc2-b5a5-3e1b863c7d33" + id, @@ -445,7 +445,7 @@ storiesOf("List Layout", module) /> } columns={2} - renderItem={person => ( + renderItem={(person) => ( person.idxid === detailed)} + person={persons.find((person) => person.idxid === detailed)} />
} diff --git a/src/components/ListLayout/ListLayoutList/index.jsx b/src/components/ListLayout/ListLayoutList/index.jsx index 14ca26b9..3cedcf40 100644 --- a/src/components/ListLayout/ListLayoutList/index.jsx +++ b/src/components/ListLayout/ListLayoutList/index.jsx @@ -69,7 +69,7 @@ ListLayoutList.propTypes = { ListLayoutList.defaultProps = { items: [], - renderItem: item => ( + renderItem: (item) => ( {item} ), noItemsText: "No items", diff --git a/src/components/Login/LoginForm/index.jsx b/src/components/Login/LoginForm/index.jsx index 86f2ee87..b9b6ef91 100644 --- a/src/components/Login/LoginForm/index.jsx +++ b/src/components/Login/LoginForm/index.jsx @@ -100,7 +100,7 @@ function LoginFormComponent({ ( + render={(props) => ( ( + render={(props) => ( { - this.setState(state => ({ + setFirstLoad = (name) => { + this.setState((state) => ({ ...state, loadedPages: { ...state.loadedPages, diff --git a/src/components/Pagination/Pagination.stories.js b/src/components/Pagination/Pagination.stories.js index c6a61cfb..9318adbb 100644 --- a/src/components/Pagination/Pagination.stories.js +++ b/src/components/Pagination/Pagination.stories.js @@ -10,7 +10,7 @@ const StyledWrapper = styled.div` width: 500px; `; -storiesOf("Structures| Pagination", module).add("default", () => { +storiesOf("Navigation|Pagination", module).add("default", () => { const totalCount = number("total count", 1000); const limit = number("limit", 20); diff --git a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx index 1a1cffbe..eaecc1d1 100644 --- a/src/components/PersonsGroup/PersonsGroupPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupPerson/index.jsx @@ -95,7 +95,7 @@ function PersonsGroupPerson({ {({ togglePopup }) => ( { + onClick={(e) => { e.stopPropagation(); togglePopup(e); }} diff --git a/src/components/PopupConfirm/index.jsx b/src/components/PopupConfirm/index.jsx index a1771e9c..ccd00edb 100644 --- a/src/components/PopupConfirm/index.jsx +++ b/src/components/PopupConfirm/index.jsx @@ -38,12 +38,12 @@ function PopupConfirm({ title={title} okText={okText} cancelText={cancelText} - onConfirm={e => { + onConfirm={(e) => { e.stopPropagation(); closePopup(e); onConfirm(); }} - onCancel={e => { + onCancel={(e) => { e.stopPropagation(); closePopup(e); }} diff --git a/src/components/RouteSection/RouteSectionOverlay.jsx b/src/components/RouteSection/RouteSectionOverlay.jsx index 15d60806..45eade65 100644 --- a/src/components/RouteSection/RouteSectionOverlay.jsx +++ b/src/components/RouteSection/RouteSectionOverlay.jsx @@ -5,7 +5,7 @@ const RouteSectionOverlay = styled.div` top: 20px; left: -20px; width: 120%; - height: ${props => (props.height ? props.height + "px" : "100%")}; + height: ${(props) => (props.height ? props.height + "px" : "100%")}; &:after { content: ""; diff --git a/src/components/RouteSection/RouteSectionSpinner.jsx b/src/components/RouteSection/RouteSectionSpinner.jsx index 86212388..c184a175 100644 --- a/src/components/RouteSection/RouteSectionSpinner.jsx +++ b/src/components/RouteSection/RouteSectionSpinner.jsx @@ -14,7 +14,7 @@ const RouteSectionSpinner = styled(Spinner).attrs(() => ({ height: 40 }))` justify-content: center; background-color: #fff; z-index: 1000; - pointer-events: ${props => (props.transparentForEvents ? "none" : "auto")}; + pointer-events: ${(props) => (props.transparentForEvents ? "none" : "auto")}; svg { margin-top: -34px; diff --git a/src/components/RouteSection/WithTransition.jsx b/src/components/RouteSection/WithTransition.jsx index f9caa74e..77ed0b4d 100644 --- a/src/components/RouteSection/WithTransition.jsx +++ b/src/components/RouteSection/WithTransition.jsx @@ -18,7 +18,7 @@ Spinner.propTypes = { }; export const withTransition = (RouteComponent, spinnerHeight) => { - const WithTransition = props => ( + const WithTransition = (props) => ( props.isActive && } + render={(props) => props.isActive && } /> ); } diff --git a/src/components/Slider/SliderInner.jsx b/src/components/Slider/SliderInner.jsx index 70e8716c..c8305cd2 100644 --- a/src/components/Slider/SliderInner.jsx +++ b/src/components/Slider/SliderInner.jsx @@ -13,7 +13,7 @@ function animation(props) { } const SliderInner = styled.ul` - animation: ${props => animation(props)} 0.3s ease-in-out; + animation: ${(props) => animation(props)} 0.3s ease-in-out; height: 6500px; margin: 0; padding: 0; diff --git a/src/components/Slider/StyledSlider.jsx b/src/components/Slider/StyledSlider.jsx index c0fb090a..0b6a0f8a 100644 --- a/src/components/Slider/StyledSlider.jsx +++ b/src/components/Slider/StyledSlider.jsx @@ -3,7 +3,7 @@ import styled from "styled-components"; const StyledSlider = styled.div` overflow: hidden; width: 100%; - height: ${props => (props.height !== undefined ? props.height : "auto")}px; + height: ${(props) => (props.height !== undefined ? props.height : "auto")}px; `; export { StyledSlider }; diff --git a/src/components/Stepper/__tests__/Stepper.js b/src/components/Stepper/__tests__/Stepper.js index f7440950..29792ce1 100644 --- a/src/components/Stepper/__tests__/Stepper.js +++ b/src/components/Stepper/__tests__/Stepper.js @@ -32,7 +32,7 @@ describe("Stepper tests", () => { onReset={handleStepperResetMock} onStepChanges={onStepChangesMock} > - {stepperProps => ( + {(stepperProps) => (
{stepperProps.activeStepIndex} diff --git a/src/components/Stepper/index.jsx b/src/components/Stepper/index.jsx index c9ba526a..1b6b0411 100644 --- a/src/components/Stepper/index.jsx +++ b/src/components/Stepper/index.jsx @@ -9,11 +9,11 @@ const StepperContext = React.createContext({ reset: noop, }); -const withStepperContext = WrappedComponent => { - const WithStepperContext = props => { +const withStepperContext = (WrappedComponent) => { + const WithStepperContext = (props) => { return ( - {context => } + {(context) => } ); }; diff --git a/src/components/Tabs.js b/src/components/Tabs.js index d93a3315..dddc7992 100644 --- a/src/components/Tabs.js +++ b/src/components/Tabs.js @@ -11,10 +11,10 @@ const TabsContext = React.createContext({ toggleDisabled: () => {}, }); -const withTabsContext = WrappedComponent => { - const WithTabsContext = props => ( +const withTabsContext = (WrappedComponent) => { + const WithTabsContext = (props) => ( - {context => } + {(context) => } ); @@ -91,20 +91,20 @@ class Tabs extends Component { } } - openTab = tabName => { + openTab = (tabName) => { this.setState(({ disabledTabs }) => ({ activeTab: tabName, - disabledTabs: disabledTabs.filter(tab => tab !== tabName), + disabledTabs: disabledTabs.filter((tab) => tab !== tabName), })); }; - toggleDisabled = tabName => { + toggleDisabled = (tabName) => { this.setState(({ disabledTabs }) => ({ disabledTabs: toggleInArray(disabledTabs, tabName), })); }; - disableTab = tabName => { + disableTab = (tabName) => { this.setState(({ disabledTabs }) => ({ disabledTabs: disabledTabs.concat(tabName), })); diff --git a/src/components/Text/TextDrag.jsx b/src/components/Text/TextDrag.jsx index 9550e7a9..f2bf9999 100644 --- a/src/components/Text/TextDrag.jsx +++ b/src/components/Text/TextDrag.jsx @@ -3,5 +3,5 @@ import styled from "styled-components"; import { colors } from "../../style"; export const TextDrag = styled.span` - color: ${props => props.isLockDrop && colors.graySimple}; + color: ${(props) => props.isLockDrop && colors.graySimple}; `; diff --git a/src/components/Text/TextTrim.jsx b/src/components/Text/TextTrim.jsx index de420005..35ad8e80 100644 --- a/src/components/Text/TextTrim.jsx +++ b/src/components/Text/TextTrim.jsx @@ -5,7 +5,7 @@ import { css } from "styled-components"; настраивать отображаемое кол-во строк */ function textTrimStyles() { - return function() { + return function () { return css` text-overflow: ellipsis; white-space: nowrap; diff --git a/src/components/form/components/FormCheckbox/FormCheckbox.stories.js b/src/components/form/components/FormCheckbox/FormCheckbox.stories.js index a5d1c018..6b45806d 100644 --- a/src/components/form/components/FormCheckbox/FormCheckbox.stories.js +++ b/src/components/form/components/FormCheckbox/FormCheckbox.stories.js @@ -18,7 +18,7 @@ storiesOf("Form Components| FormCheckbox", module).add("default", () => { name="checkbox" checked={checked} onChange={() => { - setChecked(checked => !checked); + setChecked((checked) => !checked); }} disabled={isCheckboxDisabled} /> diff --git a/src/components/form/components/FormDropdown/FormDropdown.stories.js b/src/components/form/components/FormDropdown/FormDropdown.stories.js index 70c37880..15384610 100644 --- a/src/components/form/components/FormDropdown/FormDropdown.stories.js +++ b/src/components/form/components/FormDropdown/FormDropdown.stories.js @@ -205,7 +205,7 @@ storiesOf("Form Components/FormDropdown", module) width={number("width", 200)} withSearch={boolean("with search", false)} disabled={boolean("disabled", false)} - renderItem={item => ( + renderItem={(item) => ( {`${isEven(item.value) ? "🍎" : "🍌"} ${item.label}`} )} /> diff --git a/src/components/form/components/FormDropdown/__tests__/FormDropdown.js b/src/components/form/components/FormDropdown/__tests__/FormDropdown.js index e91a5ddf..ef34d7b9 100644 --- a/src/components/form/components/FormDropdown/__tests__/FormDropdown.js +++ b/src/components/form/components/FormDropdown/__tests__/FormDropdown.js @@ -42,7 +42,7 @@ function renderFormDropdown(props = {}) { name={componentName} options={options} value={value} - onChange={ev => { + onChange={(ev) => { setValue(ev); onChangeMock(ev); }} diff --git a/src/components/form/components/FormDropdown/index.jsx b/src/components/form/components/FormDropdown/index.jsx index 381b08a8..046b6645 100644 --- a/src/components/form/components/FormDropdown/index.jsx +++ b/src/components/form/components/FormDropdown/index.jsx @@ -80,7 +80,7 @@ function FormDropdown({ function getHighlighted(selected) { const selectedOptionIndex = selected ? searchInList(options, inputValue, ["label"]).findIndex( - item => item.value === selected.value + (item) => item.value === selected.value ) : 0; @@ -197,13 +197,13 @@ function FormDropdown({ if (multiple) { const selectedInOptions = selected.find( - item => item.value === option.value + (item) => item.value === option.value ); if (selectedInOptions) { const changes = selected - .filter(option => !isSingle(option)) - .filter(option => !isEqual(option, selectedInOptions)); + .filter((option) => !isSingle(option)) + .filter((option) => !isEqual(option, selectedInOptions)); if (hasDefault && changes.length === 0) { onChange(defaultOptions); @@ -211,7 +211,7 @@ function FormDropdown({ onChange(changes); } } else { - onChange(selected.filter(option => !isSingle(option)).concat(option)); + onChange(selected.filter((option) => !isSingle(option)).concat(option)); } } else { onChange(option); @@ -243,7 +243,7 @@ function FormDropdown({ function getIsOptionSelected(option, selectedItem) { if (multiple) { return ( - selectedItem.find(item => item.value === option.value) !== undefined + selectedItem.find((item) => item.value === option.value) !== undefined ); } else { return isEqual(selectedItem, option); @@ -255,7 +255,7 @@ function FormDropdown({ initialSelectedItem={value} selectedItem={selected} inputValue={inputValue} - itemToString={item => (item ? item.label : "")} + itemToString={(item) => (item ? item.label : "")} stateReducer={stateReducer} onChange={handleChange} onStateChange={handleStateChange} @@ -299,7 +299,7 @@ function FormDropdown({ options.filter(isDefault).length) ? ( { + onClick={(e) => { e.stopPropagation(); clearSelection(); closeMenu(); diff --git a/src/components/form/components/FormField/index.jsx b/src/components/form/components/FormField/index.jsx index 167719ef..14729950 100644 --- a/src/components/form/components/FormField/index.jsx +++ b/src/components/form/components/FormField/index.jsx @@ -34,7 +34,7 @@ function FormField(props) { const hasError = Boolean(touched && error); - const onChange = ev => { + const onChange = (ev) => { if (ev.type) { field.onChange(ev); } else { diff --git a/src/components/form/components/FormInput/index.jsx b/src/components/form/components/FormInput/index.jsx index 58ac8d5d..6a606e8c 100644 --- a/src/components/form/components/FormInput/index.jsx +++ b/src/components/form/components/FormInput/index.jsx @@ -31,15 +31,15 @@ FormInput.defaultProps = { type: "text", }; -FormInput.Password = function(props) { +FormInput.Password = function (props) { return ; }; -FormInput.Number = function(props) { +FormInput.Number = function (props) { return ; }; -FormInput.Uneditable = function(props) { +FormInput.Uneditable = function (props) { // eslint-disable-next-line react/prop-types return {props.value}; }; diff --git a/src/components/form/components/FormMultiSelect/__tests__/FormMultiSelect.js b/src/components/form/components/FormMultiSelect/__tests__/FormMultiSelect.js index 271557a2..badeeaeb 100644 --- a/src/components/form/components/FormMultiSelect/__tests__/FormMultiSelect.js +++ b/src/components/form/components/FormMultiSelect/__tests__/FormMultiSelect.js @@ -32,7 +32,7 @@ function renderFormMultiSelect(props) { name={componentName} value={value} options={options} - onChange={ev => { + onChange={(ev) => { setValue(ev); onChangeMock(ev); }} @@ -81,11 +81,11 @@ describe("FormMultiSelect tests", () => { fireEvent.click(getByTestId(`${componentName}-input`)); - optionsToSelect.forEach(option => { + optionsToSelect.forEach((option) => { fireEvent.click(getByTestId(`${componentName}-option-${option.value}`)); }); - optionsToSelect.forEach(option => { + optionsToSelect.forEach((option) => { expect(getByTestId(`${componentName}-tag-${option.value}`)); }); expect( @@ -104,11 +104,11 @@ describe("FormMultiSelect tests", () => { fireEvent.click(getByTestId(`${componentName}-input`)); - optionsToSelect.forEach(option => { + optionsToSelect.forEach((option) => { fireEvent.click(getByTestId(`${componentName}-option-${option.value}`)); }); - optionsToSelect.forEach(option => { + optionsToSelect.forEach((option) => { expect(getByTestId(`${componentName}-tag-${option.value}`)); }); diff --git a/src/components/form/components/FormMultiSelect/index.jsx b/src/components/form/components/FormMultiSelect/index.jsx index 7a6124e3..a0c53dbf 100644 --- a/src/components/form/components/FormMultiSelect/index.jsx +++ b/src/components/form/components/FormMultiSelect/index.jsx @@ -50,7 +50,7 @@ function FormMultiSelect(props) { function handleKeyDown(ev) { if (ev.keyCode === BACKSPACE_KEY_CODE && ev.target.value === "") { // Удаляем последний элемент - setSelected(selected => selected.slice(0, selected.length - 1)); + setSelected((selected) => selected.slice(0, selected.length - 1)); setIsOpen(false); } } @@ -106,11 +106,11 @@ function FormMultiSelect(props) { } function addItem(item) { - setSelected(selected => [...selected, item]); + setSelected((selected) => [...selected, item]); } function removeItem(item) { - setSelected(selected => selected.filter(i => i !== item)); + setSelected((selected) => selected.filter((i) => i !== item)); } function handleChange(option) { @@ -131,13 +131,13 @@ function FormMultiSelect(props) { } inputRef.current.focus(); - setIsOpen(isOpen => !isOpen); + setIsOpen((isOpen) => !isOpen); } return ( (item && item.label ? item.label : "")} + itemToString={(item) => (item && item.label ? item.label : "")} stateReducer={stateReducer} defaultHighlightedIndex={0} inputValue={inputValue} @@ -167,7 +167,7 @@ function FormMultiSelect(props) { onClick={handleTagsClick} data-testid={`${testId}-tags`} > - {selected.map(selected => { + {selected.map((selected) => { const tagName = selected.label || selected; const tagValue = selected.value || selected; @@ -211,7 +211,7 @@ function FormMultiSelect(props) { inputValue, options[0] && options[0].label && ["label"] ) - .filter(option => { + .filter((option) => { /** Проверка наличия объекта или примитива в массиве * TODO: Возможно стоит вынести в отдельную функцию */ diff --git a/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js b/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js index e84e4ab7..0948f56f 100644 --- a/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js +++ b/src/components/form/components/FormRangeSlider/__tests__/FormRangeSlider.js @@ -27,7 +27,7 @@ function renderFormRangeSlider(props) { data-testid={componentName} from={value[0]} to={value[1]} - onChange={ev => { + onChange={(ev) => { setValue(ev); onChangeMock(ev); }} diff --git a/src/components/form/components/FormRangeSlider/index.jsx b/src/components/form/components/FormRangeSlider/index.jsx index 9def02b6..b66abee2 100644 --- a/src/components/form/components/FormRangeSlider/index.jsx +++ b/src/components/form/components/FormRangeSlider/index.jsx @@ -9,10 +9,10 @@ import { getTestId } from "../../utils"; function formatter(decimals) { return { - from: function(value) { + from: function (value) { return `${round(value, decimals)}`; }, - to: function(value) { + to: function (value) { return `${round(value, decimals)}`; }, }; @@ -36,7 +36,7 @@ function FormRangeSlider(props) { min: minFrom, max: maxTo, }} - onChange={value => { + onChange={(value) => { onChange(!value ? value : value.map(Number)); }} data-testid={`${testId}-slider`} diff --git a/src/components/notification/index.jsx b/src/components/notification/index.jsx index 07756d40..547f970b 100644 --- a/src/components/notification/index.jsx +++ b/src/components/notification/index.jsx @@ -26,7 +26,7 @@ Notification.newInstance( ), }, - n => (notification = n) + (n) => (notification = n) ); export function open({ message, description, type, duration }) { diff --git a/src/hooks/use-copy-to-clipboard.js b/src/hooks/use-copy-to-clipboard.js index 251dce7c..6763162c 100644 --- a/src/hooks/use-copy-to-clipboard.js +++ b/src/hooks/use-copy-to-clipboard.js @@ -6,7 +6,7 @@ const isCopyAvailable = function useCopyToClipboard() { const [isCopied, setIsCopied] = useState(false); - const copyToClipboard = text => { + const copyToClipboard = (text) => { setIsCopied(false); if (typeof text == "string" || typeof text == "number") { diff --git a/src/hooks/use-infinite-menu.js b/src/hooks/use-infinite-menu.js index 8df01c5f..ad5ba0c8 100644 --- a/src/hooks/use-infinite-menu.js +++ b/src/hooks/use-infinite-menu.js @@ -5,7 +5,7 @@ function useInfiniteMenu({ limit, hasNext, fetchOptions }) { const [isListEnds, setIsListEnds] = useState(!hasNext); const { pagination, setPagination, setFetchParams } = useListFetch({ - fetchList: params => { + fetchList: (params) => { fetchOptions({ ...params, meta: { clearList: params.offset === 0 } }); }, pagination: { limit, offset: 0 }, diff --git a/src/hooks/use-pagination.js b/src/hooks/use-pagination.js index b58e5140..a7c55bc9 100644 --- a/src/hooks/use-pagination.js +++ b/src/hooks/use-pagination.js @@ -5,7 +5,7 @@ const calculateSelectedPage = (offset, limit) => { return offset / limit + 1 || 1; }; -export const usePagination = props => { +export const usePagination = (props) => { const { limit, offset, totalCount } = props; const fullPaginationNumbersLength = Math.ceil(totalCount / limit || 0); diff --git a/src/hooks/use-selectable-list.js b/src/hooks/use-selectable-list.js index 5270845e..b3148a3f 100644 --- a/src/hooks/use-selectable-list.js +++ b/src/hooks/use-selectable-list.js @@ -34,9 +34,9 @@ function useSelectableList({ options, value, onChange }) { function toggleSelected(option) { const optionPresentation = getOptionPresentation(option); - setSelected(selected => + setSelected((selected) => selected.includes(optionPresentation) - ? selected.filter(sel => optionPresentation !== sel) + ? selected.filter((sel) => optionPresentation !== sel) : selected.concat(optionPresentation) ); } @@ -56,10 +56,10 @@ function useSelectableList({ options, value, onChange }) { ) .concat([checkFrom, checkTo]); - setSelected(selected => + setSelected((selected) => isCheck ? uniq(selected.concat(hasToCheck)) - : selected.filter(option => !hasToCheck.includes(option)) + : selected.filter((option) => !hasToCheck.includes(option)) ); } diff --git a/src/style/animations/fade-enter.jsx b/src/style/animations/fade-enter.jsx index c2e20729..a9b6dbf0 100644 --- a/src/style/animations/fade-enter.jsx +++ b/src/style/animations/fade-enter.jsx @@ -1,6 +1,6 @@ import { css } from "styled-components"; -export const fadeEnter = timing => css` +export const fadeEnter = (timing) => css` &-appear { opacity: 0; } diff --git a/src/style/animations/fade-exit.jsx b/src/style/animations/fade-exit.jsx index a79b5e2c..94100be7 100644 --- a/src/style/animations/fade-exit.jsx +++ b/src/style/animations/fade-exit.jsx @@ -1,6 +1,6 @@ import { css } from "styled-components"; -export const fadeExit = timing => css` +export const fadeExit = (timing) => css` &-exit { opacity: 1; } diff --git a/src/utils/helpers.js b/src/utils/helpers.js index 91773530..891b1bcb 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -60,7 +60,7 @@ export function formatFaceSize(facesize) { // ARRAY export function toggleInArray(arr = [], item) { return arr.includes(item) - ? arr.filter(disabled => item !== disabled) + ? arr.filter((disabled) => item !== disabled) : arr.concat(item); } @@ -90,15 +90,15 @@ export function isNotEmpty(value, isZeroEmpty) { } export function findOptionByValue(options, value) { - return options.find(option => isEqual(option.value, value)); + return options.find((option) => isEqual(option.value, value)); } export function mapDataToGetParams(data) { return ( "?" + Object.keys(data) - .filter(key => data[key] !== null) - .map(key => `${key}=${data[key]}`) + .filter((key) => data[key] !== null) + .map((key) => `${key}=${data[key]}`) .join("&") ); } @@ -170,7 +170,7 @@ export function isValidDate(date, format) { } export function getFromMapByIds(map, ids) { - return ids.map(id => map[id]).filter(Boolean); + return ids.map((id) => map[id]).filter(Boolean); } export function removeKeyFromMap(map, key) { diff --git a/test/generate.js b/test/generate.js index b806871f..97b553e0 100644 --- a/test/generate.js +++ b/test/generate.js @@ -18,7 +18,7 @@ function getRandomInt(min, max) { } function getRandomName() { - return sequence(x => fake(f => f.hacker.verb() + `_${x}`)); + return sequence((x) => fake((f) => f.hacker.verb() + `_${x}`)); } const licenseTypes = ["basic", "standard", "standard+", "advanced"]; @@ -52,7 +52,7 @@ const sourceBuilder = build("Source") manual_create_liveness_only: bool(), manual_check_liveness: bool(), }) - .map(source => ({ + .map((source) => ({ ...source, store_images_for_confs: uniq(source.store_images_for_confs), })); @@ -78,8 +78,8 @@ const sourceStatsBuilder = build("Source Stats").fields({ }); const userBuilder = build("User").fields({ - username: fake(f => f.internet.userName()), - password: fake(f => f.internet.password()), + username: fake((f) => f.internet.userName()), + password: fake((f) => f.internet.password()), }); function generateSources(count) { From bdf56dba72f276b80ec74e722913861abae46a1a Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 11:47:25 +0300 Subject: [PATCH 142/175] Breadcrumbs: stories added --- .../Breadcrumbs/Breadcrumbs.stories.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/components/Breadcrumbs/Breadcrumbs.stories.js diff --git a/src/components/Breadcrumbs/Breadcrumbs.stories.js b/src/components/Breadcrumbs/Breadcrumbs.stories.js new file mode 100644 index 00000000..bc161a62 --- /dev/null +++ b/src/components/Breadcrumbs/Breadcrumbs.stories.js @@ -0,0 +1,38 @@ +import React from "react"; +import { storiesOf } from "@storybook/react"; + +import { useState } from "react"; + +import { Breadcrumbs } from "./index.jsx"; + +storiesOf("Navigation|Breadcrumbs", module).add("default", () => { + const [active, setActive] = useState("first"); + return ( + + { + setActive("first"); + }} + > + First + + { + setActive("second"); + }} + > + Second + + { + setActive("thrid"); + }} + > + Thrid + + + ); +}); From c4ab92ae622623e440efb1b0e7631718912fba55 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 12:02:57 +0300 Subject: [PATCH 143/175] DeleteSureButton: button now has constant width --- .../DeleteSureButton.stories.js | 17 +++++++ .../DeleteSureButton/hooks/index.js | 1 + .../DeleteSureButton/hooks/use-delete-sure.js | 18 +++++++ src/components/DeleteSureButton/index.jsx | 49 ++++++++++++------- 4 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 src/components/DeleteSureButton/DeleteSureButton.stories.js create mode 100644 src/components/DeleteSureButton/hooks/index.js create mode 100644 src/components/DeleteSureButton/hooks/use-delete-sure.js diff --git a/src/components/DeleteSureButton/DeleteSureButton.stories.js b/src/components/DeleteSureButton/DeleteSureButton.stories.js new file mode 100644 index 00000000..7c5e9755 --- /dev/null +++ b/src/components/DeleteSureButton/DeleteSureButton.stories.js @@ -0,0 +1,17 @@ +import React from "react"; +import { storiesOf } from "@storybook/react"; +import { text, boolean } from "@storybook/addon-knobs"; +import { action } from "@storybook/addon-actions"; + +import { DeleteSureButton } from "./index.jsx"; + +storiesOf("Controls|DeleteSureButton", module).add("default", () => { + return ( + + ); +}); diff --git a/src/components/DeleteSureButton/hooks/index.js b/src/components/DeleteSureButton/hooks/index.js new file mode 100644 index 00000000..e9da280c --- /dev/null +++ b/src/components/DeleteSureButton/hooks/index.js @@ -0,0 +1 @@ +export * from "./use-delete-sure"; diff --git a/src/components/DeleteSureButton/hooks/use-delete-sure.js b/src/components/DeleteSureButton/hooks/use-delete-sure.js new file mode 100644 index 00000000..4a1dd2cd --- /dev/null +++ b/src/components/DeleteSureButton/hooks/use-delete-sure.js @@ -0,0 +1,18 @@ +import { useState, useEffect } from "react"; + +function useDeleteSure(onDelete) { + const [isSure, setIsSure] = useState(false); + + useEffect(() => { + if (isSure) { + onDelete(); + } + }, [isSure]); + + return { + isSure, + setIsSure, + }; +} + +export { useDeleteSure }; diff --git a/src/components/DeleteSureButton/index.jsx b/src/components/DeleteSureButton/index.jsx index 7fff46ad..adbe27a3 100644 --- a/src/components/DeleteSureButton/index.jsx +++ b/src/components/DeleteSureButton/index.jsx @@ -1,13 +1,13 @@ import React from "react"; import PropTypes from "prop-types"; +import { useRef } from "react"; +import { useDeleteSure } from "./hooks"; import { useTranslation } from "../../hooks"; import StyledDeleteSureButton from "./StyledDeleteSureButton"; import { colors } from "../../style"; -import { DeleteSure } from "../DeleteSure"; - import { resources } from "./DeleteSureButton.resources.js"; import { isUndefined } from "lodash-es"; @@ -22,6 +22,13 @@ function DeleteSureButton({ color, }) { const { t, i18n } = useTranslation(); + const { isSure, setIsSure } = useDeleteSure(onDelete); + const buttonRef = useRef(null); + const buttonWidth = useRef(null); + + if (buttonWidth.current === null && buttonRef.current) { + buttonWidth.current = buttonRef.current.getBoundingClientRect().width; + } i18n.addResourceBundle("en", "DeleteSureButton", resources.en); i18n.addResourceBundle("ru", "DeleteSureButton", resources.ru); @@ -34,23 +41,27 @@ function DeleteSureButton({ : deleteText; return ( - - {({ isSure, handleClick, handleMouseLeave }) => ( - - {isSure ? textSure : textDelete} - - )} - + { + setIsSure(true); + }} + onMouseLeave={() => { + setIsSure(false); + }} + size={size} + isDisabled={isDisabled} + data-testid="delete-button" + style={ + buttonWidth.current !== null ? { width: buttonWidth.current } : null + } + > + {isSure ? textSure : textDelete} + ); } From aea838020e1a8e1dc1c51fc2cb8b84f974fcba7e Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 12:03:41 +0300 Subject: [PATCH 144/175] DeleteSure: component was removed --- src/components/DeleteSure/index.jsx | 37 ----------------------------- src/components/index.js | 1 - 2 files changed, 38 deletions(-) delete mode 100644 src/components/DeleteSure/index.jsx diff --git a/src/components/DeleteSure/index.jsx b/src/components/DeleteSure/index.jsx deleted file mode 100644 index 7e544621..00000000 --- a/src/components/DeleteSure/index.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -export class DeleteSure extends React.Component { - static propTypes = { - onDelete: PropTypes.func.isRequired, - children: PropTypes.func.isRequired, - }; - - handleClick = (e) => { - e.stopPropagation(); - - if (this.state.isSure) { - this.props.onDelete(); - } - - this.setState({ isSure: true }); - }; - - handleMouseLeave = () => { - if (this.state.isSure) { - this.setState({ isSure: false }); - } - }; - - state = { - isSure: false, - handleClick: this.handleClick, - handleMouseLeave: this.handleMouseLeave, - }; - - render() { - const { children } = this.props; - - return children(this.state); - } -} diff --git a/src/components/index.js b/src/components/index.js index 001010aa..addfa554 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -5,7 +5,6 @@ export * from "./Button"; export * from "./ButtonLink"; export * from "./CardSmall"; export * from "./CopyItem"; -export * from "./DeleteSure"; export * from "./DeleteSureButton"; export * from "./Entries"; export * from "./ErrorBoundary"; From 4174864b1a0e7d6835911043713a90cf02540f84 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 12:30:34 +0300 Subject: [PATCH 145/175] DeleteSureButton: width now depends on deleteText prop --- .../DeleteSurePseudoButton.jsx | 13 +++ .../StyledDeleteSureButton.jsx | 33 ++++--- .../DeleteSureButton/hooks/index.js | 1 - .../DeleteSureButton/hooks/use-delete-sure.js | 18 ---- src/components/DeleteSureButton/index.jsx | 86 +++++++++++-------- 5 files changed, 85 insertions(+), 66 deletions(-) create mode 100644 src/components/DeleteSureButton/DeleteSurePseudoButton.jsx delete mode 100644 src/components/DeleteSureButton/hooks/index.js delete mode 100644 src/components/DeleteSureButton/hooks/use-delete-sure.js diff --git a/src/components/DeleteSureButton/DeleteSurePseudoButton.jsx b/src/components/DeleteSureButton/DeleteSurePseudoButton.jsx new file mode 100644 index 00000000..1f568a83 --- /dev/null +++ b/src/components/DeleteSureButton/DeleteSurePseudoButton.jsx @@ -0,0 +1,13 @@ +import styled from "styled-components"; +import { StyledDeleteSureButton } from "./index"; + +/** + * Этот компонент используется для того, + * чтобы расчитать итоговый размер кнопки + */ +const DeleteSurePseudoButton = styled(StyledDeleteSureButton)` + position: absolute; + visibility: hidden; +`; + +export { DeleteSurePseudoButton }; diff --git a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx index f7fcaa14..7235aa5b 100644 --- a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx +++ b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx @@ -5,24 +5,35 @@ import Button from "../Button"; import { colors } from "../../style"; function getHoverStyles({ isDisabled }) { - return !isDisabled - ? css` - background-color: ${({ deleteColor }) => deleteColor}; - color: ${colors.whiteSimple}; - ` - : ``; + return ( + !isDisabled && + css` + background-color: ${({ deleteColor }) => deleteColor}; + color: ${colors.whiteSimple}; + ` + ); } -const DeleteSureButton = styled(Button).attrs(() => ({ buttonTheme: "reset" }))` +function getSureStyles({ isSure, deleteColor }) { + return ( + isSure && + css` + background-color: ${deleteColor}; + color: ${colors.whiteSimple}; + ` + ); +} + +const StyledDeleteSureButton = styled(Button).attrs(() => ({ + buttonTheme: "reset", +}))` background-color: ${(props) => props.color}; color: ${colors.slate}; - - ${({ isSure, deleteColor }) => - isSure && `background-color: ${deleteColor}; color: ${colors.whiteSimple};`} + ${getSureStyles} &:hover { ${getHoverStyles}; } `; -export default DeleteSureButton; +export { StyledDeleteSureButton }; diff --git a/src/components/DeleteSureButton/hooks/index.js b/src/components/DeleteSureButton/hooks/index.js deleted file mode 100644 index e9da280c..00000000 --- a/src/components/DeleteSureButton/hooks/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from "./use-delete-sure"; diff --git a/src/components/DeleteSureButton/hooks/use-delete-sure.js b/src/components/DeleteSureButton/hooks/use-delete-sure.js deleted file mode 100644 index 4a1dd2cd..00000000 --- a/src/components/DeleteSureButton/hooks/use-delete-sure.js +++ /dev/null @@ -1,18 +0,0 @@ -import { useState, useEffect } from "react"; - -function useDeleteSure(onDelete) { - const [isSure, setIsSure] = useState(false); - - useEffect(() => { - if (isSure) { - onDelete(); - } - }, [isSure]); - - return { - isSure, - setIsSure, - }; -} - -export { useDeleteSure }; diff --git a/src/components/DeleteSureButton/index.jsx b/src/components/DeleteSureButton/index.jsx index adbe27a3..fbede78d 100644 --- a/src/components/DeleteSureButton/index.jsx +++ b/src/components/DeleteSureButton/index.jsx @@ -1,38 +1,32 @@ import React from "react"; import PropTypes from "prop-types"; -import { useRef } from "react"; -import { useDeleteSure } from "./hooks"; +import { useState, useRef, useEffect } from "react"; import { useTranslation } from "../../hooks"; -import StyledDeleteSureButton from "./StyledDeleteSureButton"; -import { colors } from "../../style"; +import { StyledDeleteSureButton } from "./StyledDeleteSureButton"; +import { DeleteSurePseudoButton } from "./DeleteSurePseudoButton"; import { resources } from "./DeleteSureButton.resources.js"; import { isUndefined } from "lodash-es"; +import { colors } from "../../style"; function DeleteSureButton({ onDelete, deleteColor, size, isDisabled, - className, deleteText, sureText, color, + className, + "data-testid": testId, }) { - const { t, i18n } = useTranslation(); - const { isSure, setIsSure } = useDeleteSure(onDelete); - const buttonRef = useRef(null); - const buttonWidth = useRef(null); - - if (buttonWidth.current === null && buttonRef.current) { - buttonWidth.current = buttonRef.current.getBoundingClientRect().width; - } + const [isSure, setIsSure] = useState(false); + const { t, i18n } = useTranslation(); i18n.addResourceBundle("en", "DeleteSureButton", resources.en); i18n.addResourceBundle("ru", "DeleteSureButton", resources.ru); - const textSure = isUndefined(sureText) ? t("DeleteSureButton:Sure") : sureText; @@ -40,34 +34,53 @@ function DeleteSureButton({ ? t("DeleteSureButton:Delete") : deleteText; + const pseudoButtonRef = useRef(null); + const [buttonWidth, setButtonWidth] = useState(null); + useEffect(() => { + if (pseudoButtonRef.current) { + setButtonWidth(pseudoButtonRef.current.getBoundingClientRect().width); + } + }, [deleteText]); + return ( - { - setIsSure(true); - }} - onMouseLeave={() => { - setIsSure(false); - }} - size={size} - isDisabled={isDisabled} - data-testid="delete-button" - style={ - buttonWidth.current !== null ? { width: buttonWidth.current } : null - } - > - {isSure ? textSure : textDelete} - + <> + { + if (isSure) { + onDelete(); + } + + setIsSure((isSure) => !isSure); + }} + onMouseLeave={() => { + setIsSure(false); + }} + size={size} + isDisabled={isDisabled} + data-testid={testId} + style={buttonWidth !== null ? { width: buttonWidth } : null} + > + {isSure ? textSure : textDelete} + + + {textDelete} + + ); } DeleteSureButton.defaultProps = { deleteColor: colors.brownSimple, color: colors.blueWhite, + "data-testid": "delete-button", }; DeleteSureButton.propTypes = { @@ -76,9 +89,10 @@ DeleteSureButton.propTypes = { size: PropTypes.string, isDisabled: PropTypes.bool, deleteColor: PropTypes.string, - className: PropTypes.string, deleteText: PropTypes.string, sureText: PropTypes.string, + className: PropTypes.string, + "data-testid": PropTypes.string, }; export { DeleteSureButton, StyledDeleteSureButton }; From 3092046666bd9915a4d368327d24a3417cfc2223 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 13:03:33 +0300 Subject: [PATCH 146/175] CopyItem: onCopy prop added, stories added --- src/components/CopyItem/CopyItem.stories.js | 12 ++++++++++++ src/components/CopyItem/CopyItemIcon.jsx | 1 + src/components/CopyItem/index.jsx | 12 +++++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/components/CopyItem/CopyItem.stories.js diff --git a/src/components/CopyItem/CopyItem.stories.js b/src/components/CopyItem/CopyItem.stories.js new file mode 100644 index 00000000..62fecb3d --- /dev/null +++ b/src/components/CopyItem/CopyItem.stories.js @@ -0,0 +1,12 @@ +import React from "react"; +import { storiesOf } from "@storybook/react"; +import { text } from "@storybook/addon-knobs"; +import { action } from "@storybook/addon-actions"; + +import { CopyItem } from "./index.jsx"; + +storiesOf("Controls|CopyItem", module).add("default", () => { + const textToCopy = text("text to copy", "Copy me!"); + + return {textToCopy}; +}); diff --git a/src/components/CopyItem/CopyItemIcon.jsx b/src/components/CopyItem/CopyItemIcon.jsx index 727b17e3..c7d020b1 100644 --- a/src/components/CopyItem/CopyItemIcon.jsx +++ b/src/components/CopyItem/CopyItemIcon.jsx @@ -1,6 +1,7 @@ import styled from "styled-components"; import { Clone } from "../icons"; + import { colors } from "../../style"; const CopyItemIcon = styled(Clone)` diff --git a/src/components/CopyItem/index.jsx b/src/components/CopyItem/index.jsx index bb456a9a..05c3fae4 100644 --- a/src/components/CopyItem/index.jsx +++ b/src/components/CopyItem/index.jsx @@ -8,7 +8,13 @@ import { useFlash } from "../Flash"; import { StyledCopyItem } from "./StyledCopyItem"; import { CopyItemIcon } from "./CopyItemIcon"; -function CopyItem({ children, value, className, "data-testid": testId }) { +function CopyItem({ + children, + value, + onCopy, + className, + "data-testid": testId, +}) { const { flash, isFlashing } = useFlash(); const [{ isCopyAvailable, isCopied }, copyToClipboard] = useCopyToClipboard(); @@ -21,6 +27,9 @@ function CopyItem({ children, value, className, "data-testid": testId }) { useEffect(() => { if (isCopied) { flash(); + if (onCopy) { + onCopy(); + } } }, [isCopied]); @@ -40,6 +49,7 @@ function CopyItem({ children, value, className, "data-testid": testId }) { CopyItem.propTypes = { children: PropTypes.string.isRequired, value: PropTypes.string, + onCopy: PropTypes.func, className: PropTypes.string, "data-testid": PropTypes.string, }; From 8ee46582b2a95074729fe16962a77579a7505c11 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 13:22:31 +0300 Subject: [PATCH 147/175] react-i18next jest mock added --- test/__mocks__/react-i18next.js | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/__mocks__/react-i18next.js diff --git a/test/__mocks__/react-i18next.js b/test/__mocks__/react-i18next.js new file mode 100644 index 00000000..35a1ca45 --- /dev/null +++ b/test/__mocks__/react-i18next.js @@ -0,0 +1,58 @@ +// https://github.com/i18next/react-i18next/tree/master/example/test-jest +const React = require("react"); +const reactI18next = require("react-i18next"); + +const hasChildren = (node) => + node && (node.children || (node.props && node.props.children)); + +const getChildren = (node) => + node && node.children ? node.children : node.props && node.props.children; + +const renderNodes = (reactNodes) => { + if (typeof reactNodes === "string") { + return reactNodes; + } + + return Object.keys(reactNodes).map((key, i) => { + const child = reactNodes[key]; + const isElement = React.isValidElement(child); + + if (typeof child === "string") { + return child; + } + if (hasChildren(child)) { + const inner = renderNodes(getChildren(child)); + return React.cloneElement(child, { ...child.props, key: i }, inner); + } + if (typeof child === "object" && !isElement) { + return Object.keys(child).reduce( + (str, childKey) => `${str}${child[childKey]}`, + "" + ); + } + + return child; + }); +}; + +const useMock = [(k) => k, {}]; +useMock.t = (k) => k; +useMock.i18n = { addResourceBundle: () => {} }; + +module.exports = { + // this mock makes sure any components using the translate HoC receive the t function as a prop + withTranslation: () => (Component) => (props) => ( + k} {...props} /> + ), + Trans: ({ children }) => renderNodes(children), + Translation: ({ children }) => children((k) => k, { i18n: {} }), + useTranslation: () => useMock, + + // mock if needed + I18nextProvider: reactI18next.I18nextProvider, + initReactI18next: reactI18next.initReactI18next, + setDefaults: reactI18next.setDefaults, + getDefaults: reactI18next.getDefaults, + setI18n: reactI18next.setI18n, + getI18n: reactI18next.getI18n, +}; From ac2e54dcf3b4f980a9f72b88b5ed4cff927fa90d Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 13:26:06 +0300 Subject: [PATCH 148/175] DeleteSureButton: tests added --- .../__tests__/DeleteSureButton.js | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/components/DeleteSureButton/__tests__/DeleteSureButton.js diff --git a/src/components/DeleteSureButton/__tests__/DeleteSureButton.js b/src/components/DeleteSureButton/__tests__/DeleteSureButton.js new file mode 100644 index 00000000..91c95bbd --- /dev/null +++ b/src/components/DeleteSureButton/__tests__/DeleteSureButton.js @@ -0,0 +1,63 @@ +import React from "react"; +import { fireEvent } from "@testing-library/react"; + +import { render } from "../../../../test/utils"; +import { DeleteSureButton } from "../index.jsx"; + +describe("DeleteSureButton tests", () => { + const onDeleteMock = jest.fn(); + + afterEach(() => { + onDeleteMock.mockClear(); + }); + afterAll(() => { + onDeleteMock.mockReset(); + }); + + const defaultProps = { + onDelete: onDeleteMock, + isDisabled: false, + }; + + function getDefaultDeleteSureButton(props) { + return render(); + } + + function renderDeleteSureButton(props) { + return getDefaultDeleteSureButton(props); + } + + test("DeleteSureButton renders inside text correctly", () => { + const deleteText = "some delete text"; + const sureText = "some sure text"; + + const { getByTestId } = renderDeleteSureButton({ + deleteText, + sureText, + }); + + expect(getByTestId("delete-button")).toHaveTextContent(deleteText); + + fireEvent.mouseEnter(getByTestId("delete-button")); + expect(getByTestId("delete-button")).toHaveTextContent(deleteText); + + fireEvent.click(getByTestId("delete-button")); + expect(getByTestId("delete-button")).toHaveTextContent(sureText); + + fireEvent.mouseLeave(getByTestId("delete-button")); + expect(getByTestId("delete-button")).toHaveTextContent(deleteText); + + fireEvent.click(getByTestId("delete-button")); + fireEvent.click(getByTestId("delete-button")); + expect(getByTestId("delete-button")).toHaveTextContent(deleteText); + }); + + test("DeleteSureButton calls onDelete callback correctly", () => { + const { getByTestId } = renderDeleteSureButton(); + + fireEvent.click(getByTestId("delete-button")); + fireEvent.click(getByTestId("delete-button")); + + expect(onDeleteMock).toHaveBeenCalledTimes(1); + }); +}); From 46bd61c525ae88d20742731734e4dc9eeaf0c445 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 18:04:57 +0300 Subject: [PATCH 149/175] DatePicker: component was created based on EntriesDateTimeFilter --- convention.md | 4 +- package-lock.json | 6 + package.json | 1 + .../DatePicker/DatePicker.stories.js | 15 ++ .../DatePickerDateTimeInputInput.jsx} | 6 +- .../DatePickerDateTimeInputLabel.jsx} | 6 +- .../StyledDatePickerDateTimeInput.jsx} | 4 +- .../DatePickerDateTimeInput}/index.jsx | 32 ++-- .../DatePickerDateTimeInputs.jsx | 7 + .../DatePickerDateTimePicker}/index.jsx | 49 +++-- .../DatePickerDateTimePicker}/styles.css | 0 .../DatePicker/DatePickerAbsolute/index.jsx | 14 ++ .../DatePicker/DatePickerBottom.jsx | 7 + .../DatePicker/DatePickerControl/index.jsx | 9 + .../StyledDatePickerError.jsx} | 6 +- .../DatePicker/DatePickerError/index.jsx | 13 ++ .../DatePickerPopup.jsx} | 8 +- .../DatePickerRelativePickerSelectLabel.jsx | 12 ++ .../DatePickerRelativePickerSelectOption.jsx} | 12 +- .../StyledDatePickerRelativePickerSelect.jsx} | 4 +- .../DatePickerRelativePickerSelect/index.jsx | 51 ++++++ .../DatePickerRelativePicker}/index.jsx | 39 ++-- .../DatePicker/DatePickerRelative/index.jsx | 14 ++ .../DatePicker/DatePickerResetButton.jsx | 7 + .../DatePickerTabs/DatePickerTabsInner.jsx} | 4 +- .../DatePickerTabsTabbarButton.jsx} | 8 +- .../StyledDatePickerTabsTabbar.jsx | 7 + .../DatePickerTabsTabbar/index.jsx | 38 ++++ .../DatePickerTabs/StyledDatePickerTabs.jsx | 5 + .../DatePicker/DatePickerTabs/index.jsx | 40 ++++ .../StyledDatePickerTotalTime.jsx} | 8 +- .../DatePickerTotalTime}/index.jsx | 20 +- .../DatePicker/StyledDatePicker.jsx | 7 + .../DatePicker/__tests__/DatePicker.js | 172 ++++++++++++++++++ .../index.jsx | 96 +++++----- .../EntriesDateTimeFilterDateTimeInputs.jsx | 7 - .../EntriesDateTimeFilterAbsolute/index.jsx | 16 -- .../EntriesDateTimeFilterBottom.jsx | 7 - .../EntriesDateTimeFilterControl/index.jsx | 9 - .../EntriesDateTimeFilterError/index.jsx | 15 -- ...ateTimeFilterRelativePickerSelectLabel.jsx | 12 -- .../index.jsx | 51 ------ .../EntriesDateTimeFilterRelative/index.jsx | 22 --- .../EntriesDateTimeFilterResetButton.jsx | 7 - .../StyledEntriesDateTimeFilterTabsTabbar.jsx | 7 - .../EntriesDateTimeFilterTabsTabbar/index.jsx | 37 ---- .../StyledEntriesDateTimeFilterTabs.jsx | 5 - .../EntriesDateTimeFilterTabs/index.jsx | 40 ---- .../StyledEntriesDateTimeFilter.jsx | 7 - src/components/Entries/index.js | 1 - 50 files changed, 590 insertions(+), 384 deletions(-) create mode 100644 src/components/DatePicker/DatePicker.stories.js rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx => DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputInput.jsx} (69%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx => DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputLabel.jsx} (52%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/StyledEntriesDateTimeFilterDateTimeInput.jsx => DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/StyledDatePickerDateTimeInput.jsx} (54%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput => DatePicker/DatePickerAbsolute/DatePickerDateTimeInput}/index.jsx (74%) create mode 100644 src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInputs.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker => DatePicker/DatePickerAbsolute/DatePickerDateTimePicker}/index.jsx (75%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker => DatePicker/DatePickerAbsolute/DatePickerDateTimePicker}/styles.css (100%) create mode 100644 src/components/DatePicker/DatePickerAbsolute/index.jsx create mode 100644 src/components/DatePicker/DatePickerBottom.jsx create mode 100644 src/components/DatePicker/DatePickerControl/index.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx => DatePicker/DatePickerError/StyledDatePickerError.jsx} (54%) create mode 100644 src/components/DatePicker/DatePickerError/index.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx => DatePicker/DatePickerPopup.jsx} (56%) create mode 100644 src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectLabel.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx => DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx} (62%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/StyledEntriesDateTimeFilterRelativePickerSelect.jsx => DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/StyledDatePickerRelativePickerSelect.jsx} (51%) create mode 100644 src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/index.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker => DatePicker/DatePickerRelative/DatePickerRelativePicker}/index.jsx (74%) create mode 100644 src/components/DatePicker/DatePickerRelative/index.jsx create mode 100644 src/components/DatePicker/DatePickerResetButton.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsInner.jsx => DatePicker/DatePickerTabs/DatePickerTabsInner.jsx} (63%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx => DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx} (62%) create mode 100644 src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/StyledDatePickerTabsTabbar.jsx create mode 100644 src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/index.jsx create mode 100644 src/components/DatePicker/DatePickerTabs/StyledDatePickerTabs.jsx create mode 100644 src/components/DatePicker/DatePickerTabs/index.jsx rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx => DatePicker/DatePickerTotalTime/StyledDatePickerTotalTime.jsx} (53%) rename src/components/{Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime => DatePicker/DatePickerTotalTime}/index.jsx (79%) create mode 100644 src/components/DatePicker/StyledDatePicker.jsx create mode 100644 src/components/DatePicker/__tests__/DatePicker.js rename src/components/{Entries/EntriesDateTimeFilter => DatePicker}/index.jsx (58%) delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInputs.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterBottom.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/StyledEntriesDateTimeFilterTabsTabbar.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/StyledEntriesDateTimeFilterTabs.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx delete mode 100644 src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx diff --git a/convention.md b/convention.md index 551c8f78..c4107086 100644 --- a/convention.md +++ b/convention.md @@ -78,7 +78,7 @@ import { SomeIcon } from "icons"; import { brandColor } from "colors"; import { brandImage } from "images"; import { isEqual } from "lodash-es"; -import { resources } from "./AwesomeComponent.resources.js" +import { resources } from "./AwesomeComponent.resources.js"; /** деструктуризация пропсов * в API компонента обязательно должен быть `data-testid` и `className` пропсы @@ -94,7 +94,7 @@ function AwesomeComponent({ // подключение переводов для компонента ns - `AwesomeComponent` i18n.addResourceBundle("en", "AwesomeComponent", resources.en); i18n.addResourceBundle("ru", "AwesomeComponent", resources.ru); - + // использование hooks const [some, setSome] = useState(false); const prevSome = usePrevious(some); diff --git a/package-lock.json b/package-lock.json index df015cad..b457bf15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14909,6 +14909,12 @@ "minimist": "^1.2.5" } }, + "mockdate": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/mockdate/-/mockdate-2.0.5.tgz", + "integrity": "sha512-ST0PnThzWKcgSLyc+ugLVql45PvESt3Ul/wrdV/OPc/6Pr8dbLAIJsN1cIp41FLzbN+srVTNIRn+5Cju0nyV6A==", + "dev": true + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", diff --git a/package.json b/package.json index 93d3240f..ab85f2f3 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "jest-environment-jsdom-global": "^2.0.2", "jest-styled-components": "^7.0.2", "lint-staged": "^10.1.6", + "mockdate": "^2.0.5", "prettier": "^2.0.4", "prop-types": "^15.7.2", "react": "^16.13.1", diff --git a/src/components/DatePicker/DatePicker.stories.js b/src/components/DatePicker/DatePicker.stories.js new file mode 100644 index 00000000..8ff52713 --- /dev/null +++ b/src/components/DatePicker/DatePicker.stories.js @@ -0,0 +1,15 @@ +import React, { useState } from "react"; + +import { storiesOf } from "@storybook/react"; + +import { DatePicker } from "./index"; + +storiesOf("Controls|DatePicker", module).add("default", () => { + function DatePickerWrapper() { + const [value, setValue] = useState([null, null]); + + return ; + } + + return ; +}); diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputInput.jsx similarity index 69% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx rename to src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputInput.jsx index c575bcdf..9c0433df 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputInput.jsx +++ b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputInput.jsx @@ -1,8 +1,8 @@ import styled from "styled-components"; -import { colors } from "../../../../../style"; +import { colors } from "../../../../style"; -const EntriesDateTimeFilterDateTimeInputInput = styled.input` +const DatePickerDateTimeInputInput = styled.input` background-color: ${colors.grayLight}; height: 30px; width: ${({ width }) => (width ? width + "px" : "auto")}; @@ -19,4 +19,4 @@ const EntriesDateTimeFilterDateTimeInputInput = styled.input` } `; -export { EntriesDateTimeFilterDateTimeInputInput }; +export { DatePickerDateTimeInputInput }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputLabel.jsx similarity index 52% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx rename to src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputLabel.jsx index 4c9aa9df..3a36319c 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/EntriesDateTimeFilterDateTimeInputLabel.jsx +++ b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/DatePickerDateTimeInputLabel.jsx @@ -1,8 +1,8 @@ import styled from "styled-components"; -import { colors } from "../../../../../style"; +import { colors } from "../../../../style"; -const EntriesDateTimeFilterDateTimeInputLabel = styled.label` +const DatePickerDateTimeInputLabel = styled.label` display: inline-block; font-size: 14px; font-weight: 300; @@ -11,4 +11,4 @@ const EntriesDateTimeFilterDateTimeInputLabel = styled.label` color: ${colors.darkBlack}; `; -export { EntriesDateTimeFilterDateTimeInputLabel }; +export { DatePickerDateTimeInputLabel }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/StyledEntriesDateTimeFilterDateTimeInput.jsx b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/StyledDatePickerDateTimeInput.jsx similarity index 54% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/StyledEntriesDateTimeFilterDateTimeInput.jsx rename to src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/StyledDatePickerDateTimeInput.jsx index f0e5ba31..f50de6ba 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/StyledEntriesDateTimeFilterDateTimeInput.jsx +++ b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/StyledDatePickerDateTimeInput.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -const StyledEntriesDateTimeFilterDateTimeInput = styled.div` +const StyledDatePickerDateTimeInput = styled.div` display: flex; align-items: center; @@ -9,4 +9,4 @@ const StyledEntriesDateTimeFilterDateTimeInput = styled.div` } `; -export { StyledEntriesDateTimeFilterDateTimeInput }; +export { StyledDatePickerDateTimeInput }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/index.jsx b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/index.jsx similarity index 74% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/index.jsx rename to src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/index.jsx index 0098796c..d85e1489 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInput/index.jsx +++ b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInput/index.jsx @@ -5,12 +5,12 @@ import dayjs from "dayjs"; import { useState, useEffect } from "react"; import { usePrevious, useUpdateEffect } from "react-use"; -import { StyledEntriesDateTimeFilterDateTimeInput } from "./StyledEntriesDateTimeFilterDateTimeInput"; -import { EntriesDateTimeFilterDateTimeInputLabel } from "./EntriesDateTimeFilterDateTimeInputLabel"; -import { EntriesDateTimeFilterDateTimeInputInput } from "./EntriesDateTimeFilterDateTimeInputInput"; +import { StyledDatePickerDateTimeInput } from "./StyledDatePickerDateTimeInput"; +import { DatePickerDateTimeInputLabel } from "./DatePickerDateTimeInputLabel"; +import { DatePickerDateTimeInputInput } from "./DatePickerDateTimeInputInput"; import { isEqual } from "lodash-es"; -import { isValidDate } from "../../../../../utils/helpers"; +import { isValidDate } from "../../../../utils/helpers"; function getDateFromDateTime(value) { return value ? dayjs(value).format("YYYY/MM/DD") : ""; @@ -20,7 +20,7 @@ function getTimeFromDateTime(value) { return value ? dayjs(value).format("HH:mm:ss") : ""; } -function EntriesDateTimeFilterDateTimeInput({ +function DatePickerDateTimeInput({ value, onChange, onFocus, @@ -65,13 +65,13 @@ function EntriesDateTimeFilterDateTimeInput({ }, [value]); return ( - + {label && ( - + {label} - + )} - { setDateValue(value); @@ -87,7 +87,7 @@ function EntriesDateTimeFilterDateTimeInput({ data-testid={`${testId}-date`} width={107} /> - { setTimeValue(value); @@ -107,16 +107,16 @@ function EntriesDateTimeFilterDateTimeInput({ data-testid={`${testId}-time`} width={88} /> - + ); } -EntriesDateTimeFilterDateTimeInput.propTypes = { +DatePickerDateTimeInput.propTypes = { label: PropTypes.string, - value: PropTypes.object.isRequired, - onChange: PropTypes.func.isRequied, - onFocus: PropTypes.func.isRequied, + value: PropTypes.object, + onChange: PropTypes.func.isRequired, + onFocus: PropTypes.func.isRequired, "data-testid": PropTypes.string, }; -export { EntriesDateTimeFilterDateTimeInput }; +export { DatePickerDateTimeInput }; diff --git a/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInputs.jsx b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInputs.jsx new file mode 100644 index 00000000..be752c78 --- /dev/null +++ b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimeInputs.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const DatePickerDateTimeInputs = styled.div` + padding-top: 16px; +`; + +export { DatePickerDateTimeInputs }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimePicker/index.jsx similarity index 75% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx rename to src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimePicker/index.jsx index 459959e9..e5098fb2 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/index.jsx +++ b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimePicker/index.jsx @@ -4,9 +4,9 @@ import PropTypes from "prop-types"; import { useState, useEffect, useContext } from "react"; import DatePicker from "react-datepicker"; -import { EntriesDateTimeFilterDateTimeInputs } from "../EntriesDateTimeFilterDateTimeInputs"; -import { EntriesDateTimeFilterDateTimeInput } from "../EntriesDateTimeFilterDateTimeInput"; -import { EntriesDateTimeFilterContext } from "../../index"; +import { DatePickerDateTimeInputs } from "../DatePickerDateTimeInputs"; +import { DatePickerDateTimeInput } from "../DatePickerDateTimeInput"; +import { DatePickerContext } from "../../index"; import dayjs from "dayjs"; import isSameOrAfter from "dayjs/plugin/isSameOrAfter"; @@ -19,12 +19,12 @@ registerLocale("en-GB", enGb); dayjs.extend(isSameOrAfter); dayjs.extend(isToday); -function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { +function DatePickerDateTimePicker({ value, onChange }) { const [selectionComplete, toggleSelectionComplete] = useState( value[0] && value[1] ); - const { setError, initialDateFrom, initialDateTo } = useContext( - EntriesDateTimeFilterContext + const { setError, initialDateFrom, initialDateTo, testId } = useContext( + DatePickerContext ); useEffect(() => { @@ -51,10 +51,14 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { return; } - if (value[1] && dayjs(value[1]).isAfter()) { + if (value[1] && initialDateTo && dayjs(value[1]).isAfter(initialDateTo)) { onChange([value[0], dayjs(currentDate).toDate()]); - setError("Dates after today are not supported."); + setError( + `Dates after ${ + dayjs(initialDateTo).isToday() ? "today" : initialDateTo + } are not supported.` + ); return; } @@ -80,6 +84,11 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { } if (!selectionComplete && value[0] && !value[1]) { + if (dayjs(value[0]).isAfter(date)) { + onChange([date, value[0]]); + return; + } + onChange([value[0], date]); return; } @@ -100,7 +109,11 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { !value[1] && sameDay(date, value[0]) ) { - if (dayjs(date).isToday()) { + if ( + initialDateTo && + dayjs(initialDateTo).isToday() && + dayjs(date).isToday() + ) { handleDateChange(new Date()); } else { date.setHours(23, 59, 59, 999); @@ -133,8 +146,8 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { minDate={initialDateFrom ? new Date(initialDateFrom) : undefined} maxDate={initialDateTo ? new Date(initialDateTo) : undefined} /> - - + { @@ -143,9 +156,9 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { onFocus={() => { setError(null); }} - data-testid="entries-date-time-from" + data-testid={`${testId}-from`} /> - { @@ -154,20 +167,20 @@ function EntriesDateTimeFilterDateTimePicker({ value, onChange }) { onFocus={() => { setError(null); }} - data-testid="entries-date-time-to" + data-testid={`${testId}-to`} /> - + ); } -EntriesDateTimeFilterDateTimePicker.defaultProps = { +DatePickerDateTimePicker.defaultProps = { value: [], }; -EntriesDateTimeFilterDateTimePicker.propTypes = { +DatePickerDateTimePicker.propTypes = { value: PropTypes.array.isRequired, onChange: PropTypes.func.isRequired, }; -export { EntriesDateTimeFilterDateTimePicker }; +export { DatePickerDateTimePicker }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css b/src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimePicker/styles.css similarity index 100% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimePicker/styles.css rename to src/components/DatePicker/DatePickerAbsolute/DatePickerDateTimePicker/styles.css diff --git a/src/components/DatePicker/DatePickerAbsolute/index.jsx b/src/components/DatePicker/DatePickerAbsolute/index.jsx new file mode 100644 index 00000000..5b5d0987 --- /dev/null +++ b/src/components/DatePicker/DatePickerAbsolute/index.jsx @@ -0,0 +1,14 @@ +import React from "react"; + +import { useContext } from "react"; +import { DatePickerContext } from "../index"; + +import { DatePickerDateTimePicker } from "./DatePickerDateTimePicker"; + +function DatePickerAbsolute() { + const { value, onChange } = useContext(DatePickerContext); + + return ; +} + +export { DatePickerAbsolute }; diff --git a/src/components/DatePicker/DatePickerBottom.jsx b/src/components/DatePicker/DatePickerBottom.jsx new file mode 100644 index 00000000..652d7667 --- /dev/null +++ b/src/components/DatePicker/DatePickerBottom.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const DatePickerBottom = styled.div` + padding-top: 19px; +`; + +export { DatePickerBottom }; diff --git a/src/components/DatePicker/DatePickerControl/index.jsx b/src/components/DatePicker/DatePickerControl/index.jsx new file mode 100644 index 00000000..465a5d5e --- /dev/null +++ b/src/components/DatePicker/DatePickerControl/index.jsx @@ -0,0 +1,9 @@ +import styled from "styled-components"; + +import { FormDropdownControl } from "../../form/components/FormDropdown/FormDropdownControl"; + +const DatePickerControl = styled(FormDropdownControl)` + min-width: 127px; +`; + +export { DatePickerControl }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx b/src/components/DatePicker/DatePickerError/StyledDatePickerError.jsx similarity index 54% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx rename to src/components/DatePicker/DatePickerError/StyledDatePickerError.jsx index 873b6c8c..ef1e250d 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/StyledEntriesDateTimeFilterError.jsx +++ b/src/components/DatePicker/DatePickerError/StyledDatePickerError.jsx @@ -1,8 +1,8 @@ import styled from "styled-components"; -import { colors } from "../../../../style"; +import { colors } from "../../../style"; -const StyledEntriesDateTimeFilterError = styled.p` +const StyledDatePickerError = styled.p` font-size: 14px; line-height: 18px; text-align: center; @@ -11,4 +11,4 @@ const StyledEntriesDateTimeFilterError = styled.p` margin-bottom: 6px; `; -export { StyledEntriesDateTimeFilterError }; +export { StyledDatePickerError }; diff --git a/src/components/DatePicker/DatePickerError/index.jsx b/src/components/DatePicker/DatePickerError/index.jsx new file mode 100644 index 00000000..e32c4e19 --- /dev/null +++ b/src/components/DatePicker/DatePickerError/index.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import { useContext } from "react"; +import { DatePickerContext } from "../index"; + +import { StyledDatePickerError } from "./StyledDatePickerError"; + +function DatePickerError() { + const { error } = useContext(DatePickerContext); + + return error ? {error} : null; +} + +export { DatePickerError }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx b/src/components/DatePicker/DatePickerPopup.jsx similarity index 56% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx rename to src/components/DatePicker/DatePickerPopup.jsx index 8af4f468..112b5e7b 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterPopup.jsx +++ b/src/components/DatePicker/DatePickerPopup.jsx @@ -1,9 +1,9 @@ import styled from "styled-components"; -import { colors } from "../../../style"; -import { PopupContainer } from "../../PopupContainer"; +import { colors } from "../../style"; +import { PopupContainer } from "../PopupContainer"; -const EntriesDateTimeFilterPopup = styled(PopupContainer)` +const DatePickerPopup = styled(PopupContainer)` background-color: ${colors.whiteSimple}; width: 356px; min-height: 490px; @@ -14,4 +14,4 @@ const EntriesDateTimeFilterPopup = styled(PopupContainer)` z-index: 11; `; -export { EntriesDateTimeFilterPopup }; +export { DatePickerPopup }; diff --git a/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectLabel.jsx b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectLabel.jsx new file mode 100644 index 00000000..41a1eb91 --- /dev/null +++ b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectLabel.jsx @@ -0,0 +1,12 @@ +import styled from "styled-components"; + +import { colors } from "../../../../../style"; + +const DatePickerRelativePickerSelectLabel = styled.label` + width: 64px; + font-size: 12px; + font-weight: 600; + color: ${colors.darkBlack}; +`; + +export { DatePickerRelativePickerSelectLabel }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx similarity index 62% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx rename to src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx index 9783aebb..1af95561 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectOption.jsx +++ b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx @@ -1,11 +1,11 @@ import styled, { css } from "styled-components"; -import { Button } from "../../../../../Button"; -import { colors } from "../../../../../../style"; +import { Button } from "../../../../Button"; +import { colors } from "../../../../../style"; -const EntriesDateTimeFilterRelativePickerSelectOption = styled( - Button -).attrs(() => ({ buttonTheme: "reset" }))` +const DatePickerRelativePickerSelectOption = styled(Button).attrs(() => ({ + buttonTheme: "reset", +}))` font-size: 12px; font-weight: 600; height: 32px; @@ -29,4 +29,4 @@ const EntriesDateTimeFilterRelativePickerSelectOption = styled( } `; -export { EntriesDateTimeFilterRelativePickerSelectOption }; +export { DatePickerRelativePickerSelectOption }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/StyledEntriesDateTimeFilterRelativePickerSelect.jsx b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/StyledDatePickerRelativePickerSelect.jsx similarity index 51% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/StyledEntriesDateTimeFilterRelativePickerSelect.jsx rename to src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/StyledDatePickerRelativePickerSelect.jsx index 2edd1d98..733ae48e 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/StyledEntriesDateTimeFilterRelativePickerSelect.jsx +++ b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/StyledDatePickerRelativePickerSelect.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -const StyledEntriesDateTimeFilterRelativePickerSelect = styled.div` +const StyledDatePickerRelativePickerSelect = styled.div` display: flex; align-items: center; @@ -9,4 +9,4 @@ const StyledEntriesDateTimeFilterRelativePickerSelect = styled.div` } `; -export { StyledEntriesDateTimeFilterRelativePickerSelect }; +export { StyledDatePickerRelativePickerSelect }; diff --git a/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/index.jsx b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/index.jsx new file mode 100644 index 00000000..02205116 --- /dev/null +++ b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/index.jsx @@ -0,0 +1,51 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { StyledDatePickerRelativePickerSelect } from "./StyledDatePickerRelativePickerSelect"; +import { DatePickerRelativePickerSelectLabel } from "./DatePickerRelativePickerSelectLabel"; +import { DatePickerRelativePickerSelectOption } from "./DatePickerRelativePickerSelectOption"; + +function DatePickerRelativePickerSelect({ + label, + range, + value, + onChange, + "data-testid": testId, +}) { + return ( + + {label && ( + + {label} + + )} + {range.map((option) => ( + onChange(option)} + data-testid={`${testId}-option-${option}`} + > + {option} + + ))} + + ); +} + +DatePickerRelativePickerSelect.defaultProps = { + range: [], +}; + +DatePickerRelativePickerSelect.propTypes = { + label: PropTypes.string, + range: PropTypes.array.isRequired, + value: PropTypes.number, + onChange: PropTypes.func.isRequired, + "data-testid": PropTypes.string, +}; + +export { DatePickerRelativePickerSelect }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/index.jsx b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/index.jsx similarity index 74% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/index.jsx rename to src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/index.jsx index 370732aa..2a2da63a 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/index.jsx +++ b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/index.jsx @@ -1,10 +1,11 @@ import React from "react"; import PropTypes from "prop-types"; -import { useState } from "react"; +import { useState, useContext } from "react"; +import { DatePickerContext } from "../../index"; import { useUpdateEffect } from "react-use"; -import { EntriesDateTimeFilterRelativePickerSelect } from "./EntriesDateTimeFilterRelativePickerSelect"; +import { DatePickerRelativePickerSelect } from "./DatePickerRelativePickerSelect"; import dayjs from "dayjs"; @@ -88,13 +89,14 @@ function getInitialSelected(value, currentDate) { return {}; } -function EntriesDateTimeFilterRelativePicker({ value, onChange, currentDate }) { +function DatePickerRelativePicker({ value, onChange }) { + const { initialDateTo: currentDate, testId } = useContext(DatePickerContext); const [selected, setSelected] = useState( getInitialSelected(value, currentDate) ); useUpdateEffect(() => { - const currentDateObj = dayjs(currentDate); + const currentDateObj = currentDate ? dayjs(currentDate) : dayjs(); onChange([ currentDateObj.subtract(selected.value, selected.type).toDate(), @@ -113,56 +115,55 @@ function EntriesDateTimeFilterRelativePicker({ value, onChange, currentDate }) { return ( <> - - - - - - ); } -EntriesDateTimeFilterRelativePicker.propTypes = { +DatePickerRelativePicker.propTypes = { value: PropTypes.array.isRequired, onChange: PropTypes.func.isRequired, - currentDate: PropTypes.string.isRequired, }; -export { EntriesDateTimeFilterRelativePicker }; +export { DatePickerRelativePicker }; diff --git a/src/components/DatePicker/DatePickerRelative/index.jsx b/src/components/DatePicker/DatePickerRelative/index.jsx new file mode 100644 index 00000000..99b26e20 --- /dev/null +++ b/src/components/DatePicker/DatePickerRelative/index.jsx @@ -0,0 +1,14 @@ +import React from "react"; + +import { useContext } from "react"; +import { DatePickerContext } from "../index"; + +import { DatePickerRelativePicker } from "./DatePickerRelativePicker"; + +function DatePickerRelative() { + const { value, onChange } = useContext(DatePickerContext); + + return ; +} + +export { DatePickerRelative }; diff --git a/src/components/DatePicker/DatePickerResetButton.jsx b/src/components/DatePicker/DatePickerResetButton.jsx new file mode 100644 index 00000000..e25ac98f --- /dev/null +++ b/src/components/DatePicker/DatePickerResetButton.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +import { FormDropdownResetButton } from "../form/components/FormDropdown/FormDropdownResetButton"; + +const DatePickerResetButton = styled(FormDropdownResetButton)``; + +export { DatePickerResetButton }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsInner.jsx b/src/components/DatePicker/DatePickerTabs/DatePickerTabsInner.jsx similarity index 63% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsInner.jsx rename to src/components/DatePicker/DatePickerTabs/DatePickerTabsInner.jsx index 7bfd85a5..62e079bb 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsInner.jsx +++ b/src/components/DatePicker/DatePickerTabs/DatePickerTabsInner.jsx @@ -1,10 +1,10 @@ import styled from "styled-components"; -const EntriesDateTimeFilterTabsInner = styled.div` +const DatePickerTabsInner = styled.div` height: 375px; box-sizing: border-box; padding-bottom: 16px; border-bottom: solid 1px rgba(34, 34, 34, 0.12); `; -export { EntriesDateTimeFilterTabsInner }; +export { DatePickerTabsInner }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx similarity index 62% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx rename to src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx index 1626f665..3732a24e 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/EntriesDateTimeFilterTabsTabbarButton.jsx +++ b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx @@ -1,9 +1,9 @@ import styled, { css } from "styled-components"; -import { Button } from "../../../../Button"; -import { colors } from "../../../../../style"; +import { Button } from "../../../Button"; +import { colors } from "../../../../style"; -const EntriesDateTimeFilterTabsTabbarButton = styled(Button).attrs(() => ({ +const DatePickerTabsTabbarButton = styled(Button).attrs(() => ({ buttonTheme: "reset", }))` padding: 0; @@ -25,4 +25,4 @@ const EntriesDateTimeFilterTabsTabbarButton = styled(Button).attrs(() => ({ } `; -export { EntriesDateTimeFilterTabsTabbarButton }; +export { DatePickerTabsTabbarButton }; diff --git a/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/StyledDatePickerTabsTabbar.jsx b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/StyledDatePickerTabsTabbar.jsx new file mode 100644 index 00000000..461e1254 --- /dev/null +++ b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/StyledDatePickerTabsTabbar.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const StyledDatePickerTabsTabbar = styled.div` + margin-bottom: 24px; +`; + +export { StyledDatePickerTabsTabbar }; diff --git a/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/index.jsx b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/index.jsx new file mode 100644 index 00000000..6e251601 --- /dev/null +++ b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/index.jsx @@ -0,0 +1,38 @@ +import React from "react"; + +import { useContext } from "react"; +import { TabsContext } from "../../../../components/Tabs"; +import { DatePickerContext } from "../../index"; + +import { StyledDatePickerTabsTabbar } from "./StyledDatePickerTabsTabbar"; +import { DatePickerTabsTabbarButton } from "./DatePickerTabsTabbarButton"; + +function DatePickerTabsTabbar() { + const { openTab, activeTab } = useContext(TabsContext); + const { testId } = useContext(DatePickerContext); + + return ( + + { + openTab("absolute"); + }} + > + Absolute + + { + openTab("relative"); + }} + > + Relative + + + ); +} + +export { DatePickerTabsTabbar }; diff --git a/src/components/DatePicker/DatePickerTabs/StyledDatePickerTabs.jsx b/src/components/DatePicker/DatePickerTabs/StyledDatePickerTabs.jsx new file mode 100644 index 00000000..a0990984 --- /dev/null +++ b/src/components/DatePicker/DatePickerTabs/StyledDatePickerTabs.jsx @@ -0,0 +1,5 @@ +import styled from "styled-components"; + +const StyledDatePickerTabs = styled.div``; + +export { StyledDatePickerTabs }; diff --git a/src/components/DatePicker/DatePickerTabs/index.jsx b/src/components/DatePicker/DatePickerTabs/index.jsx new file mode 100644 index 00000000..70a8dd5a --- /dev/null +++ b/src/components/DatePicker/DatePickerTabs/index.jsx @@ -0,0 +1,40 @@ +import React from "react"; + +import { Tabs } from "../../Tabs"; +import { DatePickerTabsTabbar } from "./DatePickerTabsTabbar"; +import { DatePickerTabsInner } from "./DatePickerTabsInner"; +import { DatePickerAbsolute } from "../DatePickerAbsolute"; +import { DatePickerRelative } from "../DatePickerRelative"; +import { StyledDatePickerTabs } from "./StyledDatePickerTabs"; + +const { TabPanes, TabPane } = Tabs; + +function DatePickerTabs() { + return ( + + + + + + + // eslint-disable-next-line react/prop-types + props.isActive && + } + /> + + // eslint-disable-next-line react/prop-types + props.isActive && + } + /> + + + + + ); +} + +export { DatePickerTabs }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx b/src/components/DatePicker/DatePickerTotalTime/StyledDatePickerTotalTime.jsx similarity index 53% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx rename to src/components/DatePicker/DatePickerTotalTime/StyledDatePickerTotalTime.jsx index 09da6bda..cf44f88c 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/StyledEntriesDateTimeFilterTotalTime.jsx +++ b/src/components/DatePicker/DatePickerTotalTime/StyledDatePickerTotalTime.jsx @@ -1,17 +1,17 @@ import styled from "styled-components"; -import { colors } from "../../../../style"; +import { colors } from "../../../style"; -const StyledEntriesDateTimeFilterTotalTime = styled.p` +const StyledDatePickerTotalTime = styled.p` margin: 0; text-align: center; font-size: 14px; line-height: 1.29; color: ${colors.darkBlack}; - bold { + b { font-weight: 700; } `; -export { StyledEntriesDateTimeFilterTotalTime }; +export { StyledDatePickerTotalTime }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/index.jsx b/src/components/DatePicker/DatePickerTotalTime/index.jsx similarity index 79% rename from src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/index.jsx rename to src/components/DatePicker/DatePickerTotalTime/index.jsx index ee56875e..665a8761 100644 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTotalTime/index.jsx +++ b/src/components/DatePicker/DatePickerTotalTime/index.jsx @@ -2,14 +2,14 @@ import React from "react"; import { useContext } from "react"; -import { StyledEntriesDateTimeFilterTotalTime } from "./StyledEntriesDateTimeFilterTotalTime"; -import { EntriesDateTimeFilterContext } from "../index"; +import { StyledDatePickerTotalTime } from "./StyledDatePickerTotalTime"; +import { DatePickerContext } from "../index"; import dayjs from "dayjs"; -function EntriesDateTimeFilterTotalTime() { +function DatePickerTotalTime() { const { value, initialDateFrom, initialDateTo } = useContext( - EntriesDateTimeFilterContext + DatePickerContext ); const isDateToInitial = @@ -44,22 +44,22 @@ function EntriesDateTimeFilterTotalTime() { .diff(value[0], "second"); return ( - + Total time selected:{" "} {isDateToInitial && isDateFromInitial ? ( - all + all ) : ( - + {diffYear ? diffYear + "y " : null} {diffMonth ? diffMonth + "m " : null} {diffDay ? diffDay + "d " : null} {diffHour ? diffHour + "h " : null} {diffMinute ? diffMinute + "m " : null} {diffSecond ? diffSecond + "s" : null} - + )} - + ); } -export { EntriesDateTimeFilterTotalTime }; +export { DatePickerTotalTime }; diff --git a/src/components/DatePicker/StyledDatePicker.jsx b/src/components/DatePicker/StyledDatePicker.jsx new file mode 100644 index 00000000..4b3c9f9e --- /dev/null +++ b/src/components/DatePicker/StyledDatePicker.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +const StyledDatePicker = styled.div` + position: relative; +`; + +export { StyledDatePicker }; diff --git a/src/components/DatePicker/__tests__/DatePicker.js b/src/components/DatePicker/__tests__/DatePicker.js new file mode 100644 index 00000000..f4039012 --- /dev/null +++ b/src/components/DatePicker/__tests__/DatePicker.js @@ -0,0 +1,172 @@ +import React from "react"; + +import { useState } from "react"; + +import { render } from "../../../../test/utils"; +import { fireEvent } from "@testing-library/react"; + +import { DatePicker } from "../index.jsx"; + +import MockDate from "mockdate"; + +describe("DatePicker tests", () => { + const onChangeMock = jest.fn(); + const onResetMock = jest.fn(); + const onStateChangeMock = jest.fn(); + + beforeAll(() => { + MockDate.set("2001-09-04", 0); + }); + afterEach(() => { + onChangeMock.mockClear(); + onResetMock.mockClear(); + onStateChangeMock.mockClear(); + }); + afterAll(() => { + onChangeMock.mockReset(); + onResetMock.mockReset(); + onStateChangeMock.mockReset(); + MockDate.reset(); + }); + + const testId = "date-picker"; + function getComponentTestId(component) { + return `${testId}-${component}`; + } + + function DatePickerConsumer(props) { + const [value, setValue] = useState([null, null]); + + const defaultProps = { + valuesOnReset: [null, null], + onReset: onResetMock, + onStateChange: onStateChangeMock, + initialDateFrom: null, + initialDateTo: null, + "data-testid": testId, + value, + onChange: (value) => { + setValue(value); + onChangeMock(value); + }, + }; + + return ; + } + + function getDefaultDatePicker(props) { + return render(); + } + + function renderDatePicker(props) { + return getDefaultDatePicker(props); + } + + test("DatePicker should open and close popup correctly", () => { + const { getByTestId } = renderDatePicker(); + + expect(getByTestId(getComponentTestId("popup"))).not.toBeVisible(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + expect(getByTestId(getComponentTestId("popup"))).toBeVisible(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + expect(getByTestId(getComponentTestId("popup"))).not.toBeVisible(); + }); + + describe("DatePicker absolute", () => { + function getDateToCompare(date) { + /* + * хак нужен из-за того, что react-datepicker не позволяет выставить utcOffset + * (игнорирует проп) + */ + return new Date(new Date(date) - 240 * 60000); + } + + test("DatePicker should call onChange correctly if last date is after first date", () => { + const firstDate = getDateToCompare("2001-09-13T00:00:00.000Z"); + const lastDate = getDateToCompare("2001-09-18T00:00:00.000Z"); + const firstDateDay = "13"; + const lastDateDay = "18"; + const { getByText, getByTestId } = renderDatePicker(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + fireEvent.click(getByText(firstDateDay)); + fireEvent.click(getByText(lastDateDay)); + fireEvent.click(getByTestId(getComponentTestId("control"))); + + expect(onChangeMock.mock.calls).toEqual([ + [[firstDate, null]], + [[firstDate, lastDate]], + ]); + }); + + test("DatePicker should call onChange correctly if last date is before first date", () => { + const firstDate = getDateToCompare("2001-09-18T00:00:00.000Z"); + const lastDate = getDateToCompare("2001-09-13T00:00:00.000Z"); + const firstDateDay = "18"; + const lastDateDay = "13"; + const { getByText, getByTestId } = renderDatePicker(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + fireEvent.click(getByText(firstDateDay)); + fireEvent.click(getByText(lastDateDay)); + fireEvent.click(getByTestId(getComponentTestId("control"))); + + expect(onChangeMock.mock.calls).toEqual([ + [[firstDate, null]], + [[lastDate, firstDate]], + ]); + }); + + test("DatePicker should set dateTo to next day after dateFrom after closing, if only dateFrom selected", () => { + const dateFrom = getDateToCompare("2001-09-13T00:00:00.000Z"); + const dateTo = getDateToCompare("2001-09-14T00:00:00.000Z"); + const dateFromDay = "13"; + const { getByText, getByTestId } = renderDatePicker(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + fireEvent.click(getByText(dateFromDay)); + onChangeMock.mockClear(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + + expect(onChangeMock.mock.calls).toEqual([[[dateFrom, dateTo]]]); + }); + + test("DatePicker should reset value to resetValues on reset click", () => { + const valuesOnReset = [ + getDateToCompare("2001-09-13T00:00:00.000Z"), + getDateToCompare("2001-09-14T00:00:00.000Z"), + ]; + const dateFromDay = "15"; + const dateToDay = "18"; + const { getByText, getByTestId } = renderDatePicker({ valuesOnReset }); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + fireEvent.click(getByText(dateFromDay)); + fireEvent.click(getByText(dateToDay)); + onChangeMock.mockClear(); + + fireEvent.click(getByTestId(getComponentTestId("reset"))); + + expect(onChangeMock.mock.calls).toEqual([[valuesOnReset]]); + }); + }); + + describe("DatePicker relative", () => { + test("DatePicker should call onChange correctly on relative select change", () => { + const expectedValue = [ + new Date("2001-09-01T00:00:00.000Z"), + new Date("2001-09-04T00:00:00.000Z"), + ]; + const { getByTestId } = renderDatePicker(); + + fireEvent.click(getByTestId(getComponentTestId("control"))); + fireEvent.click(getByTestId(getComponentTestId("relative"))); + fireEvent.click(getByTestId(getComponentTestId("relative-day-option-3"))); + + expect(onChangeMock.mock.calls).toEqual([[expectedValue]]); + }); + }); +}); diff --git a/src/components/Entries/EntriesDateTimeFilter/index.jsx b/src/components/DatePicker/index.jsx similarity index 58% rename from src/components/Entries/EntriesDateTimeFilter/index.jsx rename to src/components/DatePicker/index.jsx index d3977b8f..bc61b4ca 100644 --- a/src/components/Entries/EntriesDateTimeFilter/index.jsx +++ b/src/components/DatePicker/index.jsx @@ -3,23 +3,23 @@ import PropTypes from "prop-types"; import { useState, useRef, useMemo } from "react"; import { useUpdateEffect } from "react-use"; -import { usePositionPopup } from "../../../hooks"; - -import { StyledEntriesDateTimeFilter } from "./StyledEntriesDateTimeFilter"; -import { EntriesDateTimeFilterPopup } from "./EntriesDateTimeFilterPopup"; -import { EntriesDateTimeFilterTabs } from "./EntriesDateTimeFilterTabs"; -import { EntriesDateTimeFilterBottom } from "./EntriesDateTimeFilterBottom"; -import { EntriesDateTimeFilterControl } from "./EntriesDateTimeFilterControl"; -import { EntriesDateTimeFilterError } from "./EntriesDateTimeFilterError"; -import { EntriesDateTimeFilterTotalTime } from "./EntriesDateTimeFilterTotalTime"; -import { EntriesDateTimeFilterResetButton } from "./EntriesDateTimeFilterResetButton"; -import { Times } from "../../icons"; +import { usePositionPopup } from "../../hooks"; + +import { StyledDatePicker } from "./StyledDatePicker"; +import { DatePickerPopup } from "./DatePickerPopup"; +import { DatePickerTabs } from "./DatePickerTabs"; +import { DatePickerBottom } from "./DatePickerBottom"; +import { DatePickerControl } from "./DatePickerControl"; +import { DatePickerError } from "./DatePickerError"; +import { DatePickerTotalTime } from "./DatePickerTotalTime"; +import { DatePickerResetButton } from "./DatePickerResetButton"; +import { Times } from "../icons"; import { identity, isEqual } from "lodash-es"; +import { isEqual as isDatesEqual } from "date-fns"; import dayjs from "dayjs"; -import { isSameDate } from "../../../utils/helpers"; -const EntriesDateTimeFilterContext = React.createContext({ +const DatePickerContext = React.createContext({ value: [], onChange: identity, error: null, @@ -32,7 +32,7 @@ export function formatDateTime(value) { return dayjs(value).format("YYYY/MM/DD (HH:mm:ss)"); } -function EntriesDateTimeFilter({ +function DatePicker({ value, onChange, valuesOnReset, @@ -40,6 +40,8 @@ function EntriesDateTimeFilter({ onStateChange, initialDateFrom, initialDateTo, + className, + "data-testid": testId, }) { const [error, setError] = useState(null); const popupTrigger = useRef(null); @@ -75,18 +77,18 @@ function EntriesDateTimeFilter({ if (!isOpen) { if (!value[0] && value[1]) { const dayBefore = dayjs(value[1]).subtract(1, "day").toDate(); - onChange([dayBefore, value[1]]); } if (value[0] && !value[1]) { const dayAfter = dayjs(value[0]).add(1, "day").toDate(); - onChange([value[0], dayAfter]); } } - onStateChange({ isOpen }); + if (onStateChange) { + onStateChange({ isOpen }); + } }, [isOpen]); function getValueRender(value) { @@ -94,7 +96,7 @@ function EntriesDateTimeFilter({ if (value[0] && !value[1]) return `From ${formatDateTime(value[0])}`; if (!value[0] && value[1]) return `To ${formatDateTime(value[1])}`; - if (isSameDate(value[0], initialDateFrom)) { + if (isDatesEqual(value[0], initialDateFrom)) { return `All to ${formatDateTime(value[1])}`; } @@ -109,24 +111,24 @@ function EntriesDateTimeFilter({ setError, initialDateFrom, initialDateTo, + testId, }), - [value, error, initialDateFrom, initialDateTo] + [value, error, initialDateFrom, initialDateTo, testId] ); return ( - - - + + {getValueRender(value)} {(value[0] || value[1]) && ( - { e.stopPropagation(); if (!isEqual(value, valuesOnReset)) { @@ -141,36 +143,44 @@ function EntriesDateTimeFilter({ }} > - + )} - + - + {/* Сбрасываем все локальные состояния по открытию/закрытию */} - - - - - - + + + + + + - - + + ); } -EntriesDateTimeFilter.propTypes = { +DatePicker.propTypes = { value: PropTypes.array.isRequired, onChange: PropTypes.func.isRequired, - onStateChange: PropTypes.func.isRequired, - initialDateFrom: PropTypes.string.isRequired, - initialDateTo: PropTypes.string.isRequired, + onStateChange: PropTypes.func, + initialDateFrom: PropTypes.string, + initialDateTo: PropTypes.string, valuesOnReset: PropTypes.array.isRequired, onReset: PropTypes.func, + className: PropTypes.string, + "data-testid": PropTypes.string, }; -EntriesDateTimeFilter.defaultProps = { +DatePicker.defaultProps = { + value: [null, null], valuesOnReset: [null, null], + "data-testid": "date-picker", }; -export { EntriesDateTimeFilter, EntriesDateTimeFilterContext }; +export { DatePicker, DatePickerContext }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInputs.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInputs.jsx deleted file mode 100644 index e781fb7b..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/EntriesDateTimeFilterDateTimeInputs.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -const EntriesDateTimeFilterDateTimeInputs = styled.div` - padding-top: 16px; -`; - -export { EntriesDateTimeFilterDateTimeInputs }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/index.jsx deleted file mode 100644 index c90103d3..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterAbsolute/index.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import { useContext } from "react"; -import { EntriesDateTimeFilterContext } from "../index"; - -import { EntriesDateTimeFilterDateTimePicker } from "./EntriesDateTimeFilterDateTimePicker"; - -function EntriesDateTimeFilterAbsolute() { - const { value, onChange } = useContext(EntriesDateTimeFilterContext); - - return ( - - ); -} - -export { EntriesDateTimeFilterAbsolute }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterBottom.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterBottom.jsx deleted file mode 100644 index e850557c..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterBottom.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -const EntriesDateTimeFilterBottom = styled.div` - padding-top: 19px; -`; - -export { EntriesDateTimeFilterBottom }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx deleted file mode 100644 index 54063422..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterControl/index.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import styled from "styled-components"; - -import { FormDropdownControl } from "../../../form/components/FormDropdown/FormDropdownControl"; - -const EntriesDateTimeFilterControl = styled(FormDropdownControl)` - min-width: 127px; -`; - -export { EntriesDateTimeFilterControl }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/index.jsx deleted file mode 100644 index 7f794852..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterError/index.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; -import { useContext } from "react"; -import { EntriesDateTimeFilterContext } from "../index"; - -import { StyledEntriesDateTimeFilterError } from "./StyledEntriesDateTimeFilterError"; - -function EntriesDateTimeFilterError() { - const { error } = useContext(EntriesDateTimeFilterContext); - - return error ? ( - {error} - ) : null; -} - -export { EntriesDateTimeFilterError }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx deleted file mode 100644 index 8152756c..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/EntriesDateTimeFilterRelativePickerSelectLabel.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import styled from "styled-components"; - -import { colors } from "../../../../../../style"; - -const EntriesDateTimeFilterRelativePickerSelectLabel = styled.label` - width: 64px; - font-size: 12px; - font-weight: 600; - color: ${colors.darkBlack}; -`; - -export { EntriesDateTimeFilterRelativePickerSelectLabel }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx deleted file mode 100644 index ff294d07..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/EntriesDateTimeFilterRelativePicker/EntriesDateTimeFilterRelativePickerSelect/index.jsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; - -import { StyledEntriesDateTimeFilterRelativePickerSelect } from "./StyledEntriesDateTimeFilterRelativePickerSelect"; -import { EntriesDateTimeFilterRelativePickerSelectLabel } from "./EntriesDateTimeFilterRelativePickerSelectLabel"; -import { EntriesDateTimeFilterRelativePickerSelectOption } from "./EntriesDateTimeFilterRelativePickerSelectOption"; - -function EntriesDateTimeFilterRelativePickerSelect({ - label, - range, - value, - onChange, - "data-testid": testId, -}) { - return ( - - {label && ( - - {label} - - )} - {range.map((option) => ( - onChange(option)} - data-testid={`${testId}-option-${option}`} - > - {option} - - ))} - - ); -} - -EntriesDateTimeFilterRelativePickerSelect.defaultProps = { - range: [], -}; - -EntriesDateTimeFilterRelativePickerSelect.propTypes = { - label: PropTypes.string, - range: PropTypes.array.isRequired, - value: PropTypes.number.isRequired, - onChange: PropTypes.func.isRequired, - "data-testid": PropTypes.string, -}; - -export { EntriesDateTimeFilterRelativePickerSelect }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx deleted file mode 100644 index a80e40f2..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterRelative/index.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; - -import { useContext } from "react"; -import { EntriesDateTimeFilterContext } from "../index"; - -import { EntriesDateTimeFilterRelativePicker } from "./EntriesDateTimeFilterRelativePicker"; - -function EntriesDateTimeFilterRelative() { - const { value, onChange, initialDateTo } = useContext( - EntriesDateTimeFilterContext - ); - - return ( - - ); -} - -export { EntriesDateTimeFilterRelative }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx deleted file mode 100644 index 809bc2fd..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterResetButton.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -import { FormDropdownResetButton } from "../../form/components/FormDropdown/FormDropdownResetButton"; - -const EntriesDateTimeFilterResetButton = styled(FormDropdownResetButton)``; - -export { EntriesDateTimeFilterResetButton }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/StyledEntriesDateTimeFilterTabsTabbar.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/StyledEntriesDateTimeFilterTabsTabbar.jsx deleted file mode 100644 index d312dc4d..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/StyledEntriesDateTimeFilterTabsTabbar.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -const StyledEntriesDateTimeFilterTabsTabbar = styled.div` - margin-bottom: 24px; -`; - -export { StyledEntriesDateTimeFilterTabsTabbar }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx deleted file mode 100644 index f599e56a..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/EntriesDateTimeFilterTabsTabbar/index.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from "react"; - -import { useContext } from "react"; - -import { TabsContext } from "../../../../../components/Tabs"; - -import { StyledEntriesDateTimeFilterTabsTabbar } from "./StyledEntriesDateTimeFilterTabsTabbar"; -import { EntriesDateTimeFilterTabsTabbarButton } from "./EntriesDateTimeFilterTabsTabbarButton"; - -function EntriesDateTimeFilterTabsTabbar() { - const { openTab, activeTab } = useContext(TabsContext); - - return ( - - { - openTab("absolute"); - }} - > - Absolute - - { - openTab("relative"); - }} - > - Relative - - - ); -} - -export { EntriesDateTimeFilterTabsTabbar }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/StyledEntriesDateTimeFilterTabs.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/StyledEntriesDateTimeFilterTabs.jsx deleted file mode 100644 index b9338501..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/StyledEntriesDateTimeFilterTabs.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import styled from "styled-components"; - -const StyledEntriesDateTimeFilterTabs = styled.div``; - -export { StyledEntriesDateTimeFilterTabs }; diff --git a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx b/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx deleted file mode 100644 index 3d44787e..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/EntriesDateTimeFilterTabs/index.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from "react"; - -import { Tabs } from "../../../Tabs"; -import { EntriesDateTimeFilterTabsTabbar } from "./EntriesDateTimeFilterTabsTabbar"; -import { EntriesDateTimeFilterTabsInner } from "./EntriesDateTimeFilterTabsInner"; -import { EntriesDateTimeFilterAbsolute } from "../EntriesDateTimeFilterAbsolute"; -import { EntriesDateTimeFilterRelative } from "../EntriesDateTimeFilterRelative"; -import { StyledEntriesDateTimeFilterTabs } from "./StyledEntriesDateTimeFilterTabs"; - -const { TabPanes, TabPane } = Tabs; - -function EntriesDateTimeFilterTabs() { - return ( - - - - - - - // eslint-disable-next-line react/prop-types - props.isActive && - } - /> - - // eslint-disable-next-line react/prop-types - props.isActive && - } - /> - - - - - ); -} - -export { EntriesDateTimeFilterTabs }; diff --git a/src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx b/src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx deleted file mode 100644 index e3a5e5b0..00000000 --- a/src/components/Entries/EntriesDateTimeFilter/StyledEntriesDateTimeFilter.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; - -const StyledEntriesDateTimeFilter = styled.div` - position: relative; -`; - -export { StyledEntriesDateTimeFilter }; diff --git a/src/components/Entries/index.js b/src/components/Entries/index.js index 608fae7f..0060ce20 100644 --- a/src/components/Entries/index.js +++ b/src/components/Entries/index.js @@ -3,6 +3,5 @@ export { EntryPersonCard } from "./EntryPersonCard"; export { PersonEntriesCard } from "./PersonEntriesCard"; export * from "./components"; -export * from "./EntriesDateTimeFilter"; export * from "./config"; From f8cb69dc958067bde37ec6438cdfc08ebfc14937 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Mon, 20 Apr 2020 18:22:08 +0300 Subject: [PATCH 150/175] DeleteSureButton: issue with hided pseudo button was fixed --- src/components/DeleteSureButton/index.jsx | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/DeleteSureButton/index.jsx b/src/components/DeleteSureButton/index.jsx index fbede78d..b3b21146 100644 --- a/src/components/DeleteSureButton/index.jsx +++ b/src/components/DeleteSureButton/index.jsx @@ -3,6 +3,7 @@ import PropTypes from "prop-types"; import { useState, useRef, useEffect } from "react"; import { useTranslation } from "../../hooks"; +import usePortal from "react-useportal"; import { StyledDeleteSureButton } from "./StyledDeleteSureButton"; import { DeleteSurePseudoButton } from "./DeleteSurePseudoButton"; @@ -23,6 +24,7 @@ function DeleteSureButton({ "data-testid": testId, }) { const [isSure, setIsSure] = useState(false); + const { Portal } = usePortal(); const { t, i18n } = useTranslation(); i18n.addResourceBundle("en", "DeleteSureButton", resources.en); @@ -49,7 +51,8 @@ function DeleteSureButton({ className={className} deleteColor={deleteColor} isSure={isSure} - onClick={() => { + onClick={(ev) => { + ev.stopPropagation(); if (isSure) { onDelete(); } @@ -66,13 +69,15 @@ function DeleteSureButton({ > {isSure ? textSure : textDelete} - - {textDelete} - + + + {textDelete} + + ); } From 123a71f64f2c1d6e7a4ac44416306be22f406994 Mon Sep 17 00:00:00 2001 From: Dmitriy Balashov Date: Tue, 21 Apr 2020 11:04:47 +0300 Subject: [PATCH 151/175] Button: component refactoring --- src/components/Button/Button.stories.js | 23 +-- src/components/Button/ButtonFits.jsx | 16 +- src/components/Button/ButtonSizes.jsx | 6 - src/components/Button/ButtonThemes.jsx | 153 +++--------------- src/components/Button/StyledButton.jsx | 17 +- src/components/Button/index.jsx | 78 +++++---- src/components/ButtonLink.jsx | 18 +-- src/components/CardSmall/CardSmallButton.jsx | 4 +- .../DatePickerRelativePickerSelectOption.jsx | 4 +- .../DatePickerTabsTabbarButton.jsx | 4 +- .../StyledDeleteSureButton.jsx | 6 +- .../PersonEntriesCard.stories.js | 2 +- .../EntryCardActionsButton/index.jsx | 2 +- .../HeaderTopMenuUserUsernameLogout.jsx | 6 +- .../ListLayout/ListLayout.stories.js | 12 +- .../Login/LoginForm/LoginFormButton.jsx | 2 +- src/components/PageCard/PageCard.stories.js | 4 +- .../Pagination/PaginationButton.jsx | 4 +- src/components/Pagination/index.jsx | 1 + .../PersonsGroupListPersonButton.jsx | 2 +- .../PersonsGroupListPerson/index.jsx | 2 +- .../PopupConfirmPopupButton.jsx | 2 +- .../PopupConfirm/PopupConfirmPopup/index.jsx | 8 +- src/components/Search/SearchClearButton.jsx | 4 +- .../SegmentedTabsTabbar/index.jsx | 2 +- .../StyledShownControlButtonArrow.jsx | 3 +- .../ShownControl/__tests__/ShownControl.js | 4 +- src/components/ShownControl/index.jsx | 9 +- .../FormDropdown/FormDropdownControl.jsx | 4 +- .../FormDropdown/FormDropdownResetButton.jsx | 7 +- .../FormMultiSelectTagsItemRemoveButton.jsx | 4 +- .../notification/NotificationCloseButton.jsx | 6 +- 32 files changed, 132 insertions(+), 287 deletions(-) diff --git a/src/components/Button/Button.stories.js b/src/components/Button/Button.stories.js index ae23209d..ee9d2b73 100644 --- a/src/components/Button/Button.stories.js +++ b/src/components/Button/Button.stories.js @@ -5,40 +5,25 @@ import { action } from "@storybook/addon-actions"; import { Button } from "./index.jsx"; -storiesOf("Button", module).add("default", () => { +storiesOf("Controls|Button", module).add("default", () => { const buttonText = text("Button text", "Arunoda"); - const buttonTheme = select( + const theme = select( "Button theme", - [ - "light", - "light-gray", - "dark", - "blue", - "warning", - "ghost", - "ghost-dark", - "active", - "warning", - "reset", - "lighter", - "disabled", - ], + ["light", "dark", "green", "blue"], "light" ); const buttonSize = select("Button size", ["medium", "large"], "medium"); const buttonFit = select("Button fit", ["rect", "square", "circle"], "rect"); const isButtonDisabled = boolean("Is disabled", false); - const isButtonRounded = boolean("Is rounded", true); return ( diff --git a/src/components/Button/ButtonFits.jsx b/src/components/Button/ButtonFits.jsx index a59a0c95..44a7b524 100644 --- a/src/components/Button/ButtonFits.jsx +++ b/src/components/Button/ButtonFits.jsx @@ -1,13 +1,27 @@ import { css } from "styled-components"; -const rectFit = css``; +const rectFit = css` + border-radius: 4px; + + &:after { + border-radius: 4px; + } +`; const squareFit = css` border-radius: 5px; + + &:after { + border-radius: 5px; + } `; const circleFit = css` border-radius: 50%; + + &:after { + border-radius: 50%; + } `; export default { diff --git a/src/components/Button/ButtonSizes.jsx b/src/components/Button/ButtonSizes.jsx index 69c74a55..5f497017 100644 --- a/src/components/Button/ButtonSizes.jsx +++ b/src/components/Button/ButtonSizes.jsx @@ -18,17 +18,11 @@ function getSize(height, paddnig) { const mediumSize = css` font-size: 16px; - font-weight: 600; - letter-spacing: 0.013px; - ${getSize(30, 12)} `; const largeSize = css` font-size: 18px; - font-weight: 600; - letter-spacing: 0.013px; - ${getSize(40, 30)} `; diff --git a/src/components/Button/ButtonThemes.jsx b/src/components/Button/ButtonThemes.jsx index de0138a2..631c07cf 100644 --- a/src/components/Button/ButtonThemes.jsx +++ b/src/components/Button/ButtonThemes.jsx @@ -2,7 +2,7 @@ import { css } from "styled-components"; import { colors } from "../../style"; -function getPseudoForShadow({ isRounded, fit, disabled }) { +function getPseudoForShadow() { return css` position: relative; @@ -14,18 +14,13 @@ function getPseudoForShadow({ isRounded, fit, disabled }) { z-index: -1; width: 100%; height: 100%; - border-radius: ${fit === "circle" ? "50%" : isRounded ? "3px" : "0px"}; opacity: 0; transition: opacity 0.3s ease-in-out; + box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); } &:hover:after { - ${!disabled && - css` - { - opacity: 1; - } - `} + opacity: 1; } `; } @@ -35,102 +30,31 @@ const resetTheme = css` `; const disabledTheme = css` - color: #fff; - background-color: #aaaaaa; + color: ${colors.whiteSimple}; + background-color: ${colors.grayWhite}; `; const lightTheme = css` color: ${colors.darkBlack}; - background-color: #e4e9eb; - - ${getPseudoForShadow} - - &:after { - box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); + background-color: ${colors.blueWhite}; + &:hover { + background-color: ${colors.slate}; + color: ${colors.whiteSimple}; } - ${({ disabled }) => { - return disabled - ? disabledTheme - : css` - &:hover { - background-color: ${colors.slate}; - color: #fff; - } - `; - }} -`; - -const lighterTheme = css` - color: ${colors.slate}; - background-color: #f3f3f3; -`; - -const lighterGrayTheme = css` - color: ${colors.slate}; - background-color: #9fa7ae; + ${getPseudoForShadow} `; const darkTheme = css` - color: #fff; + color: ${colors.whiteSimple}; background-color: ${colors.slate}; - ${getPseudoForShadow} - - &:after { - box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); - } - - ${({ disabled }) => { - return disabled - ? disabledTheme - : css` - &:hover { - color: #fff; - background-color: ${colors.slate}; - } - `; - }} `; const blueTheme = css` - color: #fff; + color: ${colors.whiteSimple}; background-color: #1a5d7b; - ${getPseudoForShadow} - - &:after { - box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); - } - - ${({ disabled }) => - !disabled && - css` - &:hover { - background-color: #1a5d7b; - } - `} -`; - -const ghostTheme = css` - color: #fff; - background-color: #ccc; -`; - -const ghostDarkTheme = css` - color: ${colors.slate}; - background-color: #f3f3f3; -`; - -const activeTheme = css` - background-color: ${colors.slate}; - color: #fff; - box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15); -`; - -const warningTheme = css` - color: #fff; - background-color: #ac3d03; `; const greenTheme = css` @@ -142,64 +66,23 @@ const greenTheme = css` const outlineTheme = css` color: ${colors.slate}; border: 1px solid ${colors.slate}; - - ${getPseudoForShadow} - - ${({ disabled }) => - !disabled - ? css` - &:hover { - color: #fff; - background-color: ${colors.slate}; - } - ` - : css` - opacity: 0.4; - `} - - - &:after { - box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); + &:hover { + color: ${colors.whiteSimple}; + background-color: ${colors.slate}; } -`; - -const outlineAccentTheme = css` - color: ${colors.bloodOrange}; - border: 1px solid ${colors.bloodOrange}; ${getPseudoForShadow} - - ${({ disabled }) => - !disabled - ? css` - &:hover { - color: #fff; - background-color: ${colors.bloodOrange}; - } - ` - : css` - opacity: 0.4; - `} - - &:after { box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); } `; export default { - light: lightTheme, - dark: darkTheme, - blue: blueTheme, - ghost: ghostTheme, - "ghost-dark": ghostDarkTheme, - active: activeTheme, - warning: warningTheme, reset: resetTheme, - lighter: lighterTheme, disabled: disabledTheme, - "light-gray": lighterGrayTheme, + light: lightTheme, + dark: darkTheme, outline: outlineTheme, - "outline-accent": outlineAccentTheme, green: greenTheme, + blue: blueTheme, }; diff --git a/src/components/Button/StyledButton.jsx b/src/components/Button/StyledButton.jsx index 270c29b7..b1af4aba 100644 --- a/src/components/Button/StyledButton.jsx +++ b/src/components/Button/StyledButton.jsx @@ -6,21 +6,18 @@ import ButtonFits from "./ButtonFits"; const StyledButton = styled.button` display: inline-block; - cursor: ${({ disabled }) => (disabled ? "not-allowed" : "pointer")}; + box-sizing: border-box; + padding: 0; + border: none; outline: ${({ isHardOutline }) => isHardOutline ? "none !important" : "none"}; - border: none; - padding: 0; - box-sizing: border-box; + cursor: ${({ disabled }) => (disabled ? "not-allowed" : "pointer")}; + font-weight: 600; transition: background-color 100ms, border-color 100ms, box-shadow 100ms, color 100ms, opacity 100ms; - - border-radius: ${({ isRounded }) => (isRounded ? "3px" : "0px")}; - - ${({ buttonTheme }) => ButtonThemes[buttonTheme]}; + ${({ theme, disabled }) => ButtonThemes[disabled ? "disabled" : theme]}; ${({ size }) => ButtonSizes[size]}; ${({ fit }) => ButtonFits[fit]}; - ${({ isFullWidth }) => isFullWidth && css` @@ -28,4 +25,4 @@ const StyledButton = styled.button` `} `; -export default StyledButton; +export { StyledButton }; diff --git a/src/components/Button/index.jsx b/src/components/Button/index.jsx index 5e99860a..ce02d867 100644 --- a/src/components/Button/index.jsx +++ b/src/components/Button/index.jsx @@ -1,38 +1,50 @@ import React from "react"; import PropTypes from "prop-types"; -import StyledButton from "./StyledButton"; +import { StyledButton } from "./StyledButton"; const Button = React.forwardRef((props, ref) => { const { onClick, + onMouseEnter, onMouseLeave, + onKeyPress, + onKeyUp, + onKeyDown, + onFocus, + onBlur, children, isDisabled, type, size, - buttonTheme, + theme, fit, - className, - isRounded, isFullWidth, - ...restProps + isHardOutline, + className, + "data-testid": testId, } = props; return ( {children} @@ -41,51 +53,37 @@ const Button = React.forwardRef((props, ref) => { Button.propTypes = { className: PropTypes.string, - // Кнопка может выполнять функцию submit, и этот обработчик не нужен + "data-testid": PropTypes.string, onClick: PropTypes.func, + onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, - children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]), + onKeyPress: PropTypes.func, + onKeyUp: PropTypes.func, + onKeyDown: PropTypes.func, + onFocus: PropTypes.func, + onBlur: PropTypes.func, + children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]).isRequired, isDisabled: PropTypes.bool, - isRounded: PropTypes.bool, isFullWidth: PropTypes.bool, type: PropTypes.oneOf(["button", "submit"]), - size: PropTypes.oneOf(["small", "medium", "large"]), - fit: PropTypes.oneOf(["rect", "square", "circle"]), - // Названо так, потому что конфликтует с props.theme из styled-theming - buttonTheme: PropTypes.oneOf([ - "light", - "light-gray", - "dark", - "blue", - "warning", - "ghost", - "ghost-dark", - "active", - "warning", - "reset", - "lighter", - "disabled", - "outline", - "outline-accent", - "green", - ]), - + size: PropTypes.oneOf(["medium", "large"]).isRequired, + fit: PropTypes.oneOf(["rect", "square", "circle"]).isRequired, + theme: PropTypes.oneOf(["light", "dark", "reset", "outline", "green", "blue"]) + .isRequired, // Проперти добавлено для того, чтобы в FF не показывать аутлайн (работает только через !important) // Но при желании его можно поставить в false, чтобы установать свой аутлайн isHardOutline: PropTypes.bool, }; Button.defaultProps = { - isDisabled: false, - isRounded: true, - isFullWidth: false, type: "button", size: "medium", - buttonTheme: "light", + theme: "reset", fit: "rect", + isDisabled: false, + isFullWidth: false, isHardOutline: true, + "data-testid": "button", }; export { Button, StyledButton }; - -export default Button; diff --git a/src/components/ButtonLink.jsx b/src/components/ButtonLink.jsx index 829e509a..a796f26b 100644 --- a/src/components/ButtonLink.jsx +++ b/src/components/ButtonLink.jsx @@ -3,21 +3,16 @@ import React from "react"; import PropTypes from "prop-types"; import styled from "styled-components"; -import StyledButton from "./Button/StyledButton"; +import { StyledButton } from "./Button"; import { Link } from "react-router-dom"; -const LinkWithOmittedProps = ({ - isRounded, - size, - buttonTheme, - fit, - ...restProps -}) => ; +const LinkWithOmittedProps = ({ size, theme, fit, ...restProps }) => ( + +); LinkWithOmittedProps.propTypes = { - isRounded: PropTypes.bool, size: PropTypes.string, - buttonTheme: PropTypes.string, + theme: PropTypes.string, fit: PropTypes.string, }; @@ -29,8 +24,7 @@ export const ButtonLink = styled(StyledButton).attrs(() => ({ `; ButtonLink.defaultProps = { - isRounded: true, size: "medium", - buttonTheme: "light", + theme: "light", fit: "rect", }; diff --git a/src/components/CardSmall/CardSmallButton.jsx b/src/components/CardSmall/CardSmallButton.jsx index 1f3cdb58..d733f621 100644 --- a/src/components/CardSmall/CardSmallButton.jsx +++ b/src/components/CardSmall/CardSmallButton.jsx @@ -2,9 +2,7 @@ import styled from "styled-components"; import { Button } from "../Button"; -const CardSmallButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` +const CardSmallButton = styled(Button)` width: 24px; height: 24px; position: absolute; diff --git a/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx index 1af95561..f4d153ed 100644 --- a/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx +++ b/src/components/DatePicker/DatePickerRelative/DatePickerRelativePicker/DatePickerRelativePickerSelect/DatePickerRelativePickerSelectOption.jsx @@ -3,9 +3,7 @@ import styled, { css } from "styled-components"; import { Button } from "../../../../Button"; import { colors } from "../../../../../style"; -const DatePickerRelativePickerSelectOption = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` +const DatePickerRelativePickerSelectOption = styled(Button)` font-size: 12px; font-weight: 600; height: 32px; diff --git a/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx index 3732a24e..18a9234e 100644 --- a/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx +++ b/src/components/DatePicker/DatePickerTabs/DatePickerTabsTabbar/DatePickerTabsTabbarButton.jsx @@ -3,9 +3,7 @@ import styled, { css } from "styled-components"; import { Button } from "../../../Button"; import { colors } from "../../../../style"; -const DatePickerTabsTabbarButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` +const DatePickerTabsTabbarButton = styled(Button)` padding: 0; font-size: 13px; font-weight: bold; diff --git a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx index 7235aa5b..0ec0c0da 100644 --- a/src/components/DeleteSureButton/StyledDeleteSureButton.jsx +++ b/src/components/DeleteSureButton/StyledDeleteSureButton.jsx @@ -1,6 +1,6 @@ import styled, { css } from "styled-components"; -import Button from "../Button"; +import { Button } from "../Button"; import { colors } from "../../style"; @@ -24,9 +24,7 @@ function getSureStyles({ isSure, deleteColor }) { ); } -const StyledDeleteSureButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` +const StyledDeleteSureButton = styled(Button)` background-color: ${(props) => props.color}; color: ${colors.slate}; ${getSureStyles} diff --git a/src/components/Entries/PersonEntriesCard/PersonEntriesCard.stories.js b/src/components/Entries/PersonEntriesCard/PersonEntriesCard.stories.js index 435c6025..ecaa72b5 100644 --- a/src/components/Entries/PersonEntriesCard/PersonEntriesCard.stories.js +++ b/src/components/Entries/PersonEntriesCard/PersonEntriesCard.stories.js @@ -18,7 +18,7 @@ storiesOf("Entries|PersonEntriesCard", module).add("default", () => { actions={ close - + lists ({ - buttonTheme: "reset", -}))` +export const HeaderTopMenuUserUsernameLogout = styled(Button)` font-size: 15px; line-height: 15px; color: #222; diff --git a/src/components/ListLayout/ListLayout.stories.js b/src/components/ListLayout/ListLayout.stories.js index fac6c19d..c2897048 100644 --- a/src/components/ListLayout/ListLayout.stories.js +++ b/src/components/ListLayout/ListLayout.stories.js @@ -155,7 +155,7 @@ storiesOf("List Layout", module) title="Some title" buttons={ - - diff --git a/src/components/Pagination/PaginationButton.jsx b/src/components/Pagination/PaginationButton.jsx index 8f8867b7..f4512e6e 100644 --- a/src/components/Pagination/PaginationButton.jsx +++ b/src/components/Pagination/PaginationButton.jsx @@ -11,9 +11,7 @@ function getActiveStyles() { `; } -const PaginationButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` +const PaginationButton = styled(Button)` &:hover { ${getActiveStyles} } diff --git a/src/components/Pagination/index.jsx b/src/components/Pagination/index.jsx index f2e937c1..b9e17947 100644 --- a/src/components/Pagination/index.jsx +++ b/src/components/Pagination/index.jsx @@ -14,6 +14,7 @@ import { BoxRightArrow, BoxLeftArrow } from "../icons"; const DOTS = "..."; const END_LIMIT_PADDINGNUM = 3; +// Deprecated function Pagination({ visibleRange, nearStartBorderNum, diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx index caadfb4d..7c8b751c 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/PersonsGroupListPersonButton.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import Button from "../../Button"; +import { Button } from "../../Button"; export const PersonsGroupListPersonButton = styled(Button)` &:not(:last-child) { diff --git a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx index 33f5f8f4..b0a4c504 100644 --- a/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx +++ b/src/components/PersonsGroup/PersonsGroupListPerson/index.jsx @@ -53,7 +53,7 @@ export function PersonsGroupListPerson({ diff --git a/src/components/PopupConfirm/PopupConfirmPopup/PopupConfirmPopupButton.jsx b/src/components/PopupConfirm/PopupConfirmPopup/PopupConfirmPopupButton.jsx index 251fe546..bfed6e17 100644 --- a/src/components/PopupConfirm/PopupConfirmPopup/PopupConfirmPopupButton.jsx +++ b/src/components/PopupConfirm/PopupConfirmPopup/PopupConfirmPopupButton.jsx @@ -1,6 +1,6 @@ import styled from "styled-components"; -import Button from "../../Button"; +import { Button } from "../../Button"; export const PopupConfirmPopupButton = styled(Button)` width: 105px; diff --git a/src/components/PopupConfirm/PopupConfirmPopup/index.jsx b/src/components/PopupConfirm/PopupConfirmPopup/index.jsx index 196f2b31..44bf1ab7 100644 --- a/src/components/PopupConfirm/PopupConfirmPopup/index.jsx +++ b/src/components/PopupConfirm/PopupConfirmPopup/index.jsx @@ -11,15 +11,11 @@ function PopupConfirmPopup({ title, okText, cancelText, onConfirm, onCancel }) { {title} - + {okText} diff --git a/src/components/Search/SearchClearButton.jsx b/src/components/Search/SearchClearButton.jsx index 12997670..072a6f5a 100644 --- a/src/components/Search/SearchClearButton.jsx +++ b/src/components/Search/SearchClearButton.jsx @@ -4,9 +4,7 @@ import { Button } from "../Button"; import { colors } from "../../style"; -const SearchClearButton = styled(Button).attrs(() => ({ - buttonTheme: "reset", -}))` +const SearchClearButton = styled(Button)` position: absolute; right: 16px; padding: 0; diff --git a/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx b/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx index 135eddc5..e8f51ef4 100644 --- a/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx +++ b/src/components/SegmentedTabs/SegmentedTabsTabbar/index.jsx @@ -20,7 +20,7 @@ function SegmentedTabsTabbar({ options, "data-testid": testId, className }) { return (