From 1e3e9363282cf397b62a6e040028105cfea0c516 Mon Sep 17 00:00:00 2001 From: Nancy <68706811+nancy-dassana@users.noreply.github.com> Date: Thu, 19 Nov 2020 14:10:30 -0800 Subject: [PATCH] v0.6.6 -> v0.7.0 (#146) * feat #144 - Form Toggle (#145) * feat #142 - Table refactor (#143) --- jest.config.js | 1 + package-lock.json | 2435 ++++++++++++----- package.json | 22 +- src/__mocks__/table_mock_data.ts | 20 +- src/components/Button/utils.ts | 6 +- src/components/Form/FieldLabel/index.tsx | 11 +- src/components/Form/Form.stories.tsx | 5 + .../FormRadioGroup/FormRadioGroup.test.tsx | 2 +- .../Form/FormSelect/FormSelect.test.tsx | 2 +- .../FormSubmitButton.test.tsx | 1 + .../Form/FormSubmitButton/index.tsx | 9 +- .../Form/FormToggle/FormToggle.test.tsx | 107 + src/components/Form/FormToggle/index.tsx | 82 + src/components/Form/index.tsx | 2 + src/components/NotificationV2/utils.ts | 7 +- src/components/Select/index.tsx | 11 +- src/components/Table/Table.stories.mdx | 52 +- src/components/Table/Table.stories.tsx | 80 +- .../Table/__tests__/Table.sort.test.ts | 2 +- src/components/Table/__tests__/Table.test.tsx | 35 +- src/components/Table/__tests__/utils.test.tsx | 36 +- .../Table/fixtures/0_sample_data.ts | 32 +- .../Table/fixtures/1_sample_data.ts | 14 +- .../Table/fixtures/2_sample_data.ts | 13 +- .../Table/fixtures/3_sample_data.ts | 13 +- src/components/Table/index.tsx | 109 +- src/components/Table/styles.ts | 275 ++ src/components/Table/types.ts | 6 +- src/components/Table/utils.tsx | 54 +- src/components/Toggle/index.tsx | 6 + src/components/Toggle/utils.ts | 6 +- src/components/Tree/TreeSkeleton.tsx | 6 +- src/components/assets/styles/colors.ts | 109 +- src/components/assets/styles/styleguide.ts | 9 + src/components/assets/styles/themes.ts | 10 +- 35 files changed, 2707 insertions(+), 883 deletions(-) create mode 100644 src/components/Form/FormToggle/FormToggle.test.tsx create mode 100644 src/components/Form/FormToggle/index.tsx create mode 100644 src/components/Table/styles.ts diff --git a/jest.config.js b/jest.config.js index bc58949d..2b6f35e3 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,5 +2,6 @@ module.exports = { collectCoverageFrom: ['lib/**/*.{ts,tsx,js,jsx}'], coverageDirectory: 'coverage', preset: 'ts-jest', + resetMocks: true, testEnvironment: 'node' } diff --git a/package-lock.json b/package-lock.json index 26a63c3b..913edcd0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@dassana-io/web-components", - "version": "0.6.3", + "version": "0.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -318,6 +318,28 @@ "@babel/types": "^7.10.4" } }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-split-export-declaration": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", @@ -331,6 +353,12 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", @@ -415,6 +443,16 @@ "@babel/plugin-syntax-export-default-from": "^7.12.1" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", @@ -424,6 +462,16 @@ "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", @@ -538,6 +586,15 @@ "@babel/helper-plugin-utils": "^7.10.4" } }, + "@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.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", @@ -1359,9 +1416,9 @@ "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, "@dassana-io/web-utils": { - "version": "0.6.0", - "resolved": "https://npm.pkg.github.com/download/@dassana-io/web-utils/0.6.0/97b3785535233b50d92f1ef9d87c43bde7279b20faa81fa97566d7cf992504f6", - "integrity": "sha512-Wt2fvIi15OfxFx/o7uS6dxzaFTqw9pZUYyq11g8c3XlXa9ePE/jTe2DI601CCHIBl3BAkMvw4D+vV6lTiNv4DA==", + "version": "0.7.2", + "resolved": "https://npm.pkg.github.com/download/@dassana-io/web-utils/0.7.2/411c8a46f25abbc037a133a1ceffa8c421580dcd36976627cefb9ff85262d7bf", + "integrity": "sha512-5+0sTM60qHtXH4s9jsS7fuFrtRlxw2wsKjw1WF6fd5ok0fdVjCWPhJPIplPHUmkZ6TRPxqOWqh+WsCQ0JySnuA==", "requires": { "@testing-library/react-hooks": "^3.4.1", "@types/jest": "^24.9.1", @@ -1371,6 +1428,7 @@ "json-merge-patch": "^1.0.0", "lodash": "^4.17.20", "mitt": "^2.1.0", + "moment-timezone": "^0.5.31", "npm": "^6.14.8", "prettier": "^2.1.1", "react": "^16.13.1", @@ -1388,9 +1446,9 @@ } }, "@types/node": { - "version": "12.19.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.3.tgz", - "integrity": "sha512-8Jduo8wvvwDzEVJCOvS/G6sgilOLvvhn1eMmK3TW8/T217O7u1jdrK6ImKLv80tVryaPSVeKu6sjDEiFjd4/eg==" + "version": "12.19.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.5.tgz", + "integrity": "sha512-Wgdl27uw/jUYUFyajUGKSjDNGxmJrZi9sjeG6UJImgUtKbJoO9aldx+1XODN1EpNDX9DirvbvHHmTsNlb8GwMA==" }, "axios": { "version": "0.20.0", @@ -1419,9 +1477,9 @@ } }, "@emotion/core": { - "version": "10.0.35", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.35.tgz", - "integrity": "sha512-sH++vJCdk025fBlRZSAhkRlSUoqSqgCzYf5fMOmqqi3bM6how+sQpg3hkgJonj8GxXM4WbD7dRO+4tegDB9fUw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.1.1.tgz", + "integrity": "sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA==", "requires": { "@babel/runtime": "^7.5.5", "@emotion/cache": "^10.0.27", @@ -1472,9 +1530,9 @@ }, "dependencies": { "csstype": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.13.tgz", - "integrity": "sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==" + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.14.tgz", + "integrity": "sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A==" } } }, @@ -2050,13 +2108,13 @@ } }, "@mdx-js/loader": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.6.19.tgz", - "integrity": "sha512-sUOVonSzd6w821p8jCL2ET5KK24cu1w3igGwcXG/T+ZTl81EjUR9Tbv4Q50jxWS9umtmk5GcdAZndnDmpRHZXQ==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.6.21.tgz", + "integrity": "sha512-4xNtT7oal4PrLSpZE+75nj9XMwYwc5BuoHmer1GDmer2Hhg8DCLxskk4lWpXnMv+IUg7MboK0EAtZ2fk0szt3A==", "dev": true, "requires": { - "@mdx-js/mdx": "1.6.19", - "@mdx-js/react": "1.6.19", + "@mdx-js/mdx": "1.6.21", + "@mdx-js/react": "1.6.21", "loader-utils": "2.0.0" }, "dependencies": { @@ -2074,24 +2132,24 @@ } }, "@mdx-js/mdx": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.19.tgz", - "integrity": "sha512-L3eLhEFnV/2bcb9XwOegsRmLHd1oEDQPtTBVezhptQ5U1YM+/WQNzx1apjzVTAyukwOanUXnTUMjRUtqJNgFCg==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.21.tgz", + "integrity": "sha512-z35VI6qDw9eAzR/obtgHbYVUdb/Pm+oUnlP1lLR94Oe05Xs2H7vlAgpuFBCLH5g/egzAc2wZCyoVydr25CsF+A==", "dev": true, "requires": { "@babel/core": "7.11.6", "@babel/plugin-syntax-jsx": "7.10.4", "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.19", - "babel-plugin-apply-mdx-type-prop": "1.6.19", - "babel-plugin-extract-import-names": "1.6.19", + "@mdx-js/util": "1.6.21", + "babel-plugin-apply-mdx-type-prop": "1.6.21", + "babel-plugin-extract-import-names": "1.6.21", "camelcase-css": "2.0.1", "detab": "2.0.3", "hast-util-raw": "6.0.1", "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "9.1.1", + "mdast-util-to-hast": "9.1.2", "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.19", + "remark-mdx": "1.6.21", "remark-parse": "8.0.3", "remark-squeeze-paragraphs": "4.0.0", "style-to-object": "0.3.0", @@ -2125,12 +2183,12 @@ } }, "@babel/generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", - "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.12.1", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -2145,12 +2203,12 @@ } }, "@babel/helper-module-imports": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", - "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.5" } }, "@babel/helper-module-transforms": { @@ -2171,15 +2229,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", - "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/helper-simple-access": { @@ -2201,32 +2259,32 @@ } }, "@babel/parser": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", - "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/traverse": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", - "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", + "@babel/generator": "^7.12.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.1", - "@babel/types": "^7.12.1", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", - "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -2243,15 +2301,15 @@ } }, "@mdx-js/react": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.19.tgz", - "integrity": "sha512-RS37Tagqyp2R0XFPoUZeSbZC5uJQRPhqOHWeT1LEwxESjMWb3VORHz7E827ldeQr3UW6VEQEyq/THegu+bLj6A==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.21.tgz", + "integrity": "sha512-CgSNT9sq2LAlhEbVlPg7DwUQkypz+CWaWGcJbkgmp9WCAy6vW33CQ44UbKPiH3wet9o+UbXeQOqzZd041va83g==", "dev": true }, "@mdx-js/util": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.19.tgz", - "integrity": "sha512-bkkQNSHz3xSr3KRHUQ2Qk2XhewvvXAOUqjIUKwcQuL4ijOA4tUHZfUgXExi5CpMysrX7izcsyICtXjZHlfJUjg==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.21.tgz", + "integrity": "sha512-6sANhqfEHu6gdHZSrzDjN18Y48mIon8f2Os6J+IFmMHN0IhNG/0PUIIsI07kA1sZ9t6vgZNBloVmcDa5WOSe6A==", "dev": true }, "@mrmlnc/readdir-enhanced": { @@ -2400,17 +2458,17 @@ } }, "@storybook/addon-actions": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.27.tgz", - "integrity": "sha512-GtYSjwGeuRSOAVLuSM2Kae5w17aUgKNXzy1zrWlXlBpTrcyhciRsRBSMGV3PV3EpF3HpxQfyWmJZa3OgFsXdRw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.28.tgz", + "integrity": "sha512-DrApIt/rMCBrynJsFbmXPba2BCAj+yOybCsr0cqNNMkaZytAnoeDEqseCdWUtNXSgDnprAQ0HIrS2TIf4twh8w==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/client-api": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core-events": "6.0.27", - "@storybook/theming": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/client-api": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core-events": "6.0.28", + "@storybook/theming": "6.0.28", "core-js": "^3.0.1", "fast-deep-equal": "^3.1.1", "global": "^4.3.2", @@ -2426,17 +2484,17 @@ } }, "@storybook/addon-backgrounds": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.0.27.tgz", - "integrity": "sha512-TO7+ip7KzcADftuH+BFfH8aWVHfHs50Cl4/02uv8AQ/mLZFmb/HkuGDBfRwCv4fWclX613mmL9P0M4sbpYUlGw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.0.28.tgz", + "integrity": "sha512-yASdONGm7/Y9v+oBT4aStdMo+o/WeUlIu5Ll0M433e9k6bv4YV1p13uZMlyGDlIKLVpb+4GG31mupPT6YoHmKw==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core-events": "6.0.27", - "@storybook/theming": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core-events": "6.0.28", + "@storybook/theming": "6.0.28", "core-js": "^3.0.1", "memoizerific": "^1.11.3", "react": "^16.8.3", @@ -2444,31 +2502,31 @@ } }, "@storybook/addon-controls": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.0.27.tgz", - "integrity": "sha512-YdAwizkDJKo+TpsBB4nnorZZuSdl7+lI0kD7CUUicDdcTAQdI/mNUvKOCKVWAnYLzQmdWRc3e3GNvp003Q155g==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.0.28.tgz", + "integrity": "sha512-wG42u5wkLSuk5M3VPAr6ui/lH75tU1BNGZWtCbDDVPRX/EOF3WxXDhS8gvWefyNcmshnFlbCOhA1Xt7rrLPfpg==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/client-api": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/node-logger": "6.0.27", - "@storybook/theming": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/client-api": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/node-logger": "6.0.28", + "@storybook/theming": "6.0.28", "core-js": "^3.0.1", "ts-dedent": "^1.1.1" } }, "@storybook/addon-cssresources": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-cssresources/-/addon-cssresources-6.0.27.tgz", - "integrity": "sha512-aHe2ChW6JWV/fgujWxxz3pETj4cgamafQZqERLN+z+YY0+xqeQ3xqbC1LW4gI0NprAm0sT3w1sx9kGw9xI6UVA==", - "requires": { - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core-events": "6.0.27", - "@storybook/theming": "6.0.27", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-cssresources/-/addon-cssresources-6.0.28.tgz", + "integrity": "sha512-yoErPrf5d4vHshvNOgTh6nAT9oFVejqyuy5hItrUAgo4bvpf9wh4mgjqiNtNwiGlXvrnCKjGasPSy/YrrHNvXA==", + "requires": { + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core-events": "6.0.28", + "@storybook/theming": "6.0.28", "core-js": "^3.0.1", "global": "^4.3.2", "react": "^16.8.3", @@ -2476,9 +2534,9 @@ } }, "@storybook/addon-docs": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.0.27.tgz", - "integrity": "sha512-NXSNulvpH2CL/aPPVa/llVc7SFOZUMkECcVmNf3aO0inE3nn2QN1dW3LfJaESuZYwLKFRa7qY+0CmvNqOrHXrQ==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.0.28.tgz", + "integrity": "sha512-JaZTAZsHMuEs3a3Tqk1JOPfVvUmqzmaBrjn4aDv37eNlTGY+IL8kjgy2iQBaotiIDsZjKx6dSMrL/DAxbD2+UQ==", "dev": true, "requires": { "@babel/generator": "^7.9.6", @@ -2489,18 +2547,18 @@ "@mdx-js/loader": "^1.5.1", "@mdx-js/mdx": "^1.5.1", "@mdx-js/react": "^1.5.1", - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/client-api": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core": "6.0.27", - "@storybook/core-events": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/client-api": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core": "6.0.28", + "@storybook/core-events": "6.0.28", "@storybook/csf": "0.0.1", - "@storybook/node-logger": "6.0.27", - "@storybook/postinstall": "6.0.27", - "@storybook/source-loader": "6.0.27", - "@storybook/theming": "6.0.27", + "@storybook/node-logger": "6.0.28", + "@storybook/postinstall": "6.0.28", + "@storybook/source-loader": "6.0.28", + "@storybook/theming": "6.0.28", "acorn": "^7.1.0", "acorn-jsx": "^5.1.0", "acorn-walk": "^7.0.0", @@ -2522,21 +2580,21 @@ }, "dependencies": { "@jest/transform": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.1.tgz", - "integrity": "sha512-oNFAqVtqRxZRx6vXL3I4bPKUK0BIlEeaalkwxyQGGI8oXDQBtYQBpiMe5F7qPs4QdvvFYB42gPGIMMcxXaBBxQ==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.1", + "jest-haste-map": "^26.6.2", "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.1", + "jest-util": "^26.6.2", "micromatch": "^4.0.2", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -2545,9 +2603,9 @@ } }, "@jest/types": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.1.tgz", - "integrity": "sha512-ywHavIKNpAVrStiRY5wiyehvcktpijpItvGiK72RAn5ctqmzvPk8OvKnvHeBqa1XdQr959CTWAJMqxI8BTibyg==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -2567,9 +2625,9 @@ } }, "@types/yargs": { - "version": "15.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", - "integrity": "sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==", + "version": "15.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", + "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -2687,12 +2745,12 @@ } }, "jest-haste-map": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.1.tgz", - "integrity": "sha512-9kPafkv0nX6ta1PrshnkiyhhoQoFWncrU/uUBt3/AP1r78WSCU5iLceYRTwDvJl67H3RrXqSlSVDDa/AsUB7OQ==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -2700,9 +2758,9 @@ "fsevents": "^2.1.2", "graceful-fs": "^4.2.4", "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.5.0", - "jest-util": "^26.6.1", - "jest-worker": "^26.6.1", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", "micromatch": "^4.0.2", "sane": "^4.0.3", "walker": "^1.0.7" @@ -2715,9 +2773,9 @@ "dev": true }, "jest-serializer": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.5.0.tgz", - "integrity": "sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, "requires": { "@types/node": "*", @@ -2725,12 +2783,12 @@ } }, "jest-util": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.1.tgz", - "integrity": "sha512-xCLZUqVoqhquyPLuDXmH7ogceGctbW8SMyQVjD9o+1+NPWI7t0vO08udcFLVPLgKWcvc+zotaUv/RuaR6l8HIA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -2739,9 +2797,9 @@ } }, "jest-worker": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", - "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -2827,36 +2885,36 @@ } }, "@storybook/addon-essentials": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.0.27.tgz", - "integrity": "sha512-JmiMojlqivAG3kaIAIdKX2eOd4jlNK0ATfcU7PLjTh45BlW08erQIwdLAmU5BlTld/HcwCiGkpGKC7KJgcjGGQ==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.0.28.tgz", + "integrity": "sha512-zpq3A1IsbnKdooI7Tr4wvfpjWjtziXHWckki+WSdq5AOYEpevlDa7fzf5+gxHr3HKvpHYXKioq6YD5FdZ5k7Fw==", "dev": true, "requires": { - "@storybook/addon-actions": "6.0.27", - "@storybook/addon-backgrounds": "6.0.27", - "@storybook/addon-controls": "6.0.27", - "@storybook/addon-docs": "6.0.27", - "@storybook/addon-toolbars": "6.0.27", - "@storybook/addon-viewport": "6.0.27", - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/node-logger": "6.0.27", + "@storybook/addon-actions": "6.0.28", + "@storybook/addon-backgrounds": "6.0.28", + "@storybook/addon-controls": "6.0.28", + "@storybook/addon-docs": "6.0.28", + "@storybook/addon-toolbars": "6.0.28", + "@storybook/addon-viewport": "6.0.28", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/node-logger": "6.0.28", "core-js": "^3.0.1", "regenerator-runtime": "^0.13.3", "ts-dedent": "^1.1.1" } }, "@storybook/addon-links": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.0.27.tgz", - "integrity": "sha512-3jgGy+wgeJuqrdOPQCIOTk8TBtFGGoAbzahnuDjh4eH34uSAZgVurME3ojdnqq743ELzMZXL78Y46otZOzVnkA==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.0.28.tgz", + "integrity": "sha512-5i0nh8vKQKRZGQAnI05VBPSKnZYlaIeB7sPcAzBvb1a8aSVQS4O1MBS9H5e92iN9N4QD7GujhN0aQh3aRbq/hw==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/core-events": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/core-events": "6.0.28", "@storybook/csf": "0.0.1", - "@storybook/router": "6.0.27", + "@storybook/router": "6.0.28", "@types/qs": "^6.9.0", "core-js": "^3.0.1", "global": "^4.3.2", @@ -2867,15 +2925,15 @@ } }, "@storybook/addon-storyshots": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-6.0.27.tgz", - "integrity": "sha512-CUahFScZZwpb4+J79KyzJwACFBjnwoh/t7dAQ9KYKhAW7UG2lBiI83L8pVkZYx3LdMpcsqBaVwiueiRDOHzjGw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-6.0.28.tgz", + "integrity": "sha512-5tOKVlCJHVzDesYCwSBW6oOHmmOli2Lo2Rup6ygMq6ZYQUfwyrtA352WzZpW9MKH2VryxKrd0jNrcxVVMDDHFA==", "dev": true, "requires": { "@jest/transform": "^26.0.0", - "@storybook/addons": "6.0.27", - "@storybook/client-api": "6.0.27", - "@storybook/core": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/client-api": "6.0.28", + "@storybook/core": "6.0.28", "@types/glob": "^7.1.1", "@types/jest": "^25.1.1", "@types/jest-specific-snapshot": "^0.5.3", @@ -2891,21 +2949,21 @@ }, "dependencies": { "@jest/transform": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.1.tgz", - "integrity": "sha512-oNFAqVtqRxZRx6vXL3I4bPKUK0BIlEeaalkwxyQGGI8oXDQBtYQBpiMe5F7qPs4QdvvFYB42gPGIMMcxXaBBxQ==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.1", + "jest-haste-map": "^26.6.2", "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.1", + "jest-util": "^26.6.2", "micromatch": "^4.0.2", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -2914,9 +2972,9 @@ } }, "@jest/types": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.1.tgz", - "integrity": "sha512-ywHavIKNpAVrStiRY5wiyehvcktpijpItvGiK72RAn5ctqmzvPk8OvKnvHeBqa1XdQr959CTWAJMqxI8BTibyg==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -2992,9 +3050,9 @@ } }, "@types/yargs": { - "version": "15.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", - "integrity": "sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==", + "version": "15.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", + "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -3176,12 +3234,12 @@ "dev": true }, "jest-haste-map": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.1.tgz", - "integrity": "sha512-9kPafkv0nX6ta1PrshnkiyhhoQoFWncrU/uUBt3/AP1r78WSCU5iLceYRTwDvJl67H3RrXqSlSVDDa/AsUB7OQ==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -3189,9 +3247,9 @@ "fsevents": "^2.1.2", "graceful-fs": "^4.2.4", "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.5.0", - "jest-util": "^26.6.1", - "jest-worker": "^26.6.1", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", "micromatch": "^4.0.2", "sane": "^4.0.3", "walker": "^1.0.7" @@ -3204,9 +3262,9 @@ "dev": true }, "jest-serializer": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.5.0.tgz", - "integrity": "sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, "requires": { "@types/node": "*", @@ -3214,12 +3272,12 @@ } }, "jest-util": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.1.tgz", - "integrity": "sha512-xCLZUqVoqhquyPLuDXmH7ogceGctbW8SMyQVjD9o+1+NPWI7t0vO08udcFLVPLgKWcvc+zotaUv/RuaR6l8HIA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -3228,9 +3286,9 @@ } }, "jest-worker": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", - "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -3255,12 +3313,12 @@ "dev": true }, "pretty-format": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.1.tgz", - "integrity": "sha512-MeqqsP5PYcRBbGMvwzsyBdmAJ4EFX7pWFyl7x4+dMVg5pE0ZDdBIvEH2ergvIO+Gvwv1wh64YuOY9y5LuyY/GA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^17.0.1" @@ -3367,30 +3425,30 @@ } }, "@storybook/addon-toolbars": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.0.27.tgz", - "integrity": "sha512-Ak0srUPOX9m44UfQwZK4ue1hCNvkhfhB5PfVwjN6KyglpRCCNdFIT3BIPshmPXSyO1eeRL4rufxWtvtcqCodag==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.0.28.tgz", + "integrity": "sha512-fEic2tl3I0P99G0b30btElbvRrTdwcXfhM9sdLSEyn8b95KIB1hyt0IJVYgdhy8f1Lwbu6hSn8hrcwzeg1Reww==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/client-api": "6.0.27", - "@storybook/components": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/client-api": "6.0.28", + "@storybook/components": "6.0.28", "core-js": "^3.0.1" } }, "@storybook/addon-viewport": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.0.27.tgz", - "integrity": "sha512-oSHJeWsWr21UIxp5yU+aTpegBLBphz1Vx49t1v3uqxTWZaUAWtXTbdZxkvTd4kkEDzEEyUa4Vj8UoXPMTpYBAA==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.0.28.tgz", + "integrity": "sha512-I2I6+V0GCtypn0AKw4s1EKHicPqHyQfcM9T7RMbeZIf11Dc71hbbRt9U6kajZ8go84qzXGPm8/Vd0kvDO28WaA==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core-events": "6.0.27", - "@storybook/theming": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core-events": "6.0.28", + "@storybook/theming": "6.0.28", "core-js": "^3.0.1", "global": "^4.3.2", "memoizerific": "^1.11.3", @@ -3399,34 +3457,34 @@ } }, "@storybook/addons": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.0.27.tgz", - "integrity": "sha512-ruumzJ1BLQ/2+KbV6qTN1OWPqejPWczY2EjEKo8azMlmZ4xBSiczi5HvDto/fYt6fMQfzgkdIUAcofHGf4XQGQ==", - "requires": { - "@storybook/api": "6.0.27", - "@storybook/channels": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/core-events": "6.0.27", - "@storybook/router": "6.0.27", - "@storybook/theming": "6.0.27", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.0.28.tgz", + "integrity": "sha512-3Brf9w/u2sw0huarcO1iLFBmGt7KtApRxX4bFcsRiPPFxliDrmb1sAsd37UbKp8qBSw1U6FByjuTJQ7xn/TDhg==", + "requires": { + "@storybook/api": "6.0.28", + "@storybook/channels": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/core-events": "6.0.28", + "@storybook/router": "6.0.28", + "@storybook/theming": "6.0.28", "core-js": "^3.0.1", "global": "^4.3.2", "regenerator-runtime": "^0.13.3" } }, "@storybook/api": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.0.27.tgz", - "integrity": "sha512-48LDFK+mOdPBHjZWYTOLZnOJ3XPn8OxJm7h5dCuuFe6wblQIYxXeyBwn6BVOkmonmNJ9OglUGY7KqslaOrGYyQ==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.0.28.tgz", + "integrity": "sha512-6dWjz5HSM3v8c+J0Z/lGYGujs4ZKSt1lJUWaH/MPvuoeDiVm+1jKLwWTAMlMnOP9o8xgNTuQtEbQkNG2D66oQA==", "requires": { "@reach/router": "^1.3.3", - "@storybook/channels": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/core-events": "6.0.27", + "@storybook/channels": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/core-events": "6.0.28", "@storybook/csf": "0.0.1", - "@storybook/router": "6.0.27", + "@storybook/router": "6.0.28", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.0.27", + "@storybook/theming": "6.0.28", "@types/reach__router": "^1.3.5", "core-js": "^3.0.1", "fast-deep-equal": "^3.1.1", @@ -3442,14 +3500,14 @@ } }, "@storybook/channel-postmessage": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.0.27.tgz", - "integrity": "sha512-ygLbzJ/WbllPL4albJUSRoiRC3M+Q/stq66PWkLBlb1NhoXanPbmLBFaAiGsypXyH/E9Z6bQT88eUyzM5IlTmw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.0.28.tgz", + "integrity": "sha512-HnLKXPIwZo+JvuG1aYfGX+BoDVpmYbZBlFDSSKroBdCWZRxJJ7OQIOjBWfnf9RxOJqtwEZfVylgtmIUr9ult3Q==", "dev": true, "requires": { - "@storybook/channels": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/core-events": "6.0.27", + "@storybook/channels": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/core-events": "6.0.28", "core-js": "^3.0.1", "global": "^4.3.2", "qs": "^6.6.0", @@ -3457,9 +3515,9 @@ } }, "@storybook/channels": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.0.27.tgz", - "integrity": "sha512-W47tQO/1oAUDEb51URIsodT/G0QPkzpPVy+Q3bJ9buJ9TLIO/qObAH9pYw9ggUOgIJmHJY54I1KN7QAvhuVCfw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.0.28.tgz", + "integrity": "sha512-Ow1fR0GGdlfAQlagOrXHs7QQlCQ0xTKoznQgUFv1KxKw/bMwMtTJcpCYGSAuDzCzypCIR4EHtIHZxJsd/A2ieg==", "requires": { "core-js": "^3.0.1", "ts-dedent": "^1.1.1", @@ -3467,16 +3525,16 @@ } }, "@storybook/client-api": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.0.27.tgz", - "integrity": "sha512-4AaBZCds2dr4JVVlOVa2LF3Vjv0VcLVWaqibydPRO6Ch2shDw2ImwQxYBEq0WygfHR7VzG1cmOK8D92C7goPKA==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.0.28.tgz", + "integrity": "sha512-KZ6cw6MU8exXyahHrpNAG5gmSioCXw6I5k0IOH/xzkJpN/9IMbYSbACvxbSKHeCIZorhcWNVWJjth8Kc6dD4Hg==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/channel-postmessage": "6.0.27", - "@storybook/channels": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/core-events": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/channel-postmessage": "6.0.28", + "@storybook/channels": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/core-events": "6.0.28", "@storybook/csf": "0.0.1", "@types/qs": "^6.9.0", "@types/webpack-env": "^1.15.2", @@ -3492,22 +3550,22 @@ } }, "@storybook/client-logger": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.0.27.tgz", - "integrity": "sha512-IY/p0f9XxfHZWVkjeIYOwF6xuonjgmZ9mYPy7Ks47zzDFrUe0/g5cqfBJBUj1YOqlANbF6XCO8YiKXjkE70olw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.0.28.tgz", + "integrity": "sha512-FOgeRQknrlm5PTgfY0THPrcrDyxu4ImuFOn+VWQW60mf9ShJQl45BEgm4bm9hbblYYnVHtnskWUOJfxqhHvgjg==", "requires": { "core-js": "^3.0.1", "global": "^4.3.2" } }, "@storybook/components": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.0.27.tgz", - "integrity": "sha512-CnWgr/jgo7/XU+s7jhpNYevUivEsJccMRxuyOI+Ry8ndnoheifT4fp4+O5OaOeC08hStlPyad85LdTbOKigt7g==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.0.28.tgz", + "integrity": "sha512-rp18w+xC5/ATQThnUR6Rv2cg/DAokbV88uZLPCGHX8HsPY2jFPLyCsWnNiIHBF/SfUCjIlljChlX3bzGk+SQUA==", "requires": { - "@storybook/client-logger": "6.0.27", + "@storybook/client-logger": "6.0.28", "@storybook/csf": "0.0.1", - "@storybook/theming": "6.0.27", + "@storybook/theming": "6.0.28", "@types/overlayscrollbars": "^1.9.0", "@types/react-color": "^3.0.1", "@types/react-syntax-highlighter": "11.0.4", @@ -3530,9 +3588,9 @@ } }, "@storybook/core": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.0.27.tgz", - "integrity": "sha512-qHONOXU8g17IfSaMF0HaSQfUFUGqOIBCX6g5qNHuzuASNsrdDmSr6xgF9+htltaQjSpC+s/4zOpn7kXfh1+eGQ==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.0.28.tgz", + "integrity": "sha512-NIEeU4NXl6vK6NVIisR90QYWomTexXEmF9cFcr02DcxKwFTNixSfBuquDFt6o7OTLNgmUQ5r2y+fXlQ4vDTG4w==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.8.3", @@ -3556,20 +3614,20 @@ "@babel/preset-react": "^7.8.3", "@babel/preset-typescript": "^7.9.0", "@babel/register": "^7.10.5", - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/channel-postmessage": "6.0.27", - "@storybook/channels": "6.0.27", - "@storybook/client-api": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core-events": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/channel-postmessage": "6.0.28", + "@storybook/channels": "6.0.28", + "@storybook/client-api": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core-events": "6.0.28", "@storybook/csf": "0.0.1", - "@storybook/node-logger": "6.0.27", - "@storybook/router": "6.0.27", + "@storybook/node-logger": "6.0.28", + "@storybook/router": "6.0.28", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.0.27", - "@storybook/ui": "6.0.27", + "@storybook/theming": "6.0.28", + "@storybook/ui": "6.0.28", "@types/glob-base": "^0.3.0", "@types/micromatch": "^4.0.1", "@types/node-fetch": "^2.5.4", @@ -4119,13 +4177,21 @@ "dev": true }, "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } } }, "kind-of": { @@ -4374,9 +4440,9 @@ } }, "@storybook/core-events": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.0.27.tgz", - "integrity": "sha512-w+Q2pt7DyhonWhHqjeBMMHMtV8h07ROOF9P40RthepT6/GO/471X33cgngr0i0uPgqha3JajNIl9fwAybsIROw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.0.28.tgz", + "integrity": "sha512-YT691sQEyoTabXZGCeCXulIO31aXfiWpvE7vW7t3F/uo/Xv6aiNcY/Fzy1vRNcbgCAf3EWsBtzb1eh0FCJkyuA==", "requires": { "core-js": "^3.0.1" } @@ -4390,9 +4456,9 @@ } }, "@storybook/node-logger": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.0.27.tgz", - "integrity": "sha512-HlVWi2EvWPAOS19BctlhDZ989oBd7MvFbkgr2xTs01UhH96DcsUXCeMwQGhw1D5wgvpi7JtM4Y830BsBBiBLJQ==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.0.28.tgz", + "integrity": "sha512-foGRKU9n6tRcN+Os2XJvsWMQQoUubUjuX6/pIyh+rGVOfOxbK56logE/UDOAsdibGMiof9MOldNeGmYS51vPCg==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -4454,25 +4520,25 @@ } }, "@storybook/postinstall": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.0.27.tgz", - "integrity": "sha512-GgrBCuOQKhlM3+X+bVCdoQqCofzfwCQS+21VgAfJ8bFeCHT8n6kY48OTf+vr6uosjSuQ7sJCiHWvosk3OqBsXA==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.0.28.tgz", + "integrity": "sha512-XskRT8G3QQ9kW3xRuiXrM/77IZXu6pYLK0cNuVSiWqvd5FDQ0lPYdaeiZv75ZAxVBtoKFYISLu89rhGPosGkUA==", "dev": true, "requires": { "core-js": "^3.0.1" } }, "@storybook/preset-create-react-app": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.1.4.tgz", - "integrity": "sha512-VwzGCvv+HnEDXxSwF6ITRIZ4EaMhiMu1Mxrwm+nb49XTT2VME8VTzmbDjrdpZXPXUJrwLYmvqzaBT/qGZoMlgA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.1.5.tgz", + "integrity": "sha512-tzYcCRD5j22/HoDZ1tvsKaVnzyd4qqTE9sn3cx56Reb0XHcm4XkvG87jx0NvBGPCZrsThyBAtB3+XNxoFbI+9Q==", "dev": true, "requires": { "@types/babel__core": "^7.1.7", "@types/webpack": "^4.41.13", "babel-plugin-react-docgen": "^4.1.0", "pnp-webpack-plugin": "^1.6.4", - "react-docgen-typescript-plugin": "^0.5.0", + "react-docgen-typescript-plugin": "^0.6.2", "semver": "^7.3.2" }, "dependencies": { @@ -4485,16 +4551,16 @@ } }, "@storybook/react": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.0.27.tgz", - "integrity": "sha512-otIWq00UR7vfE4eeX9TIlgXy+UmaRitzqLRaFwdJCHUUWp9GZRrTcQLphJ5bl2tRO3GuzA/YO8VtJLGpCnkGXg==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.0.28.tgz", + "integrity": "sha512-a0X5htjhqlBYQbuQlllTHD8VBeiEUs0UMU3lnJv79B2B2BiIaXK0w5ptyQyiOznP5OzSLnjZEQwmiefepFpr3g==", "dev": true, "requires": { "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", - "@storybook/addons": "6.0.27", - "@storybook/core": "6.0.27", - "@storybook/node-logger": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/core": "6.0.28", + "@storybook/node-logger": "6.0.28", "@storybook/semver": "^7.3.2", "@svgr/webpack": "^5.4.0", "@types/webpack-env": "^1.15.2", @@ -4512,142 +4578,965 @@ "webpack": "^4.43.0" }, "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "@babel/compat-data": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", "dev": true }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true + "@babel/generator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "dev": true + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", + "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/types": "^7.12.1" + } }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + } }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + } }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz", - "integrity": "sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A==", - "dev": true + "@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } }, - "@svgr/babel-preset": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.4.0.tgz", - "integrity": "sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A==", + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.4.0" + "@babel/types": "^7.12.5" } }, - "@svgr/core": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.4.0.tgz", - "integrity": "sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ==", + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "dev": true, "requires": { - "@svgr/plugin-jsx": "^5.4.0", - "camelcase": "^6.0.0", - "cosmiconfig": "^6.0.0" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" } }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz", - "integrity": "sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg==", + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/types": "^7.9.5" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" } }, - "@svgr/plugin-jsx": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz", - "integrity": "sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw==", + "@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/core": "^7.7.5", - "@svgr/babel-preset": "^5.4.0", - "@svgr/hast-util-to-babel-ast": "^5.4.0", - "svg-parser": "^2.0.2" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, - "@svgr/plugin-svgo": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz", - "integrity": "sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA==", + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "cosmiconfig": "^6.0.0", - "merge-deep": "^3.0.2", - "svgo": "^1.2.2" + "@babel/types": "^7.12.1" } }, - "@svgr/webpack": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.4.0.tgz", - "integrity": "sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg==", + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/core": "^7.9.0", - "@babel/plugin-transform-react-constant-elements": "^7.9.0", - "@babel/preset-env": "^7.9.5", - "@babel/preset-react": "^7.9.4", - "@svgr/core": "^5.4.0", - "@svgr/plugin-jsx": "^5.4.0", - "@svgr/plugin-svgo": "^5.4.0", - "loader-utils": "^2.0.0" + "@babel/types": "^7.11.0" } }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", + "@babel/parser": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", + "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz", + "integrity": "sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.5.tgz", + "integrity": "sha512-1JJusg3iPgsZDthyWiCr3KQiGs31ikU/mSf2N2dSYEAO0GEImmVUbWf0VoSDGDFTAn5Dj4DUiR6SdIXHY7tELA==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + } + }, + "@babel/traverse": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "dev": true + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "dev": true + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "dev": true + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "dev": true + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "dev": true + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "dev": true + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dev": true, + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dev": true, + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "@babel/preset-react": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.5.tgz", + "integrity": "sha512-jcs++VPrgyFehkMezHtezS2BpnUlR7tQFAyesJn1vGTO9aTFZrgIQrA5YydlTwxbcjMwkFY6i04flCigRRr3GA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.5", + "@babel/plugin-transform-react-jsx-development": "^7.12.5", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + } + } + } + }, + "@webassemblyjs/ast": { + "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.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "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 @@ -4816,24 +5705,26 @@ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, - "ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "tslib": "^2.0.1" + "fill-range": "^7.0.1" } }, - "babel-plugin-react-docgen": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz", - "integrity": "sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==", + "browserslist": { + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "ast-types": "^0.14.2", - "lodash": "^4.17.15", - "react-docgen": "^5.0.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "cacache": { @@ -4859,10 +5750,41 @@ "y18n": "^4.0.0" } }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001158", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz", + "integrity": "sha512-s5loVYY+yKpuVA3HyW8BarzrtJvwHReuzugQXlv1iR3LKSReoFXRm86mT6hT7PEF5RxW+XQZg+6nYjlywYzQ+g==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "electron-to-chromium": { + "version": "1.3.598", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.598.tgz", + "integrity": "sha512-G5Ztk23/ubLYVPxPXnB1uu105uzIPd4xB/D8ld8x1GaSC9+vU9NZL16nYZya8H77/7CCKKN7dArzJL3pBs8N7A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "eslint-scope": { @@ -4875,6 +5797,27 @@ "estraverse": "^4.1.1" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "kind-of": { + "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 + }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -4886,6 +5829,50 @@ "json5": "^2.1.2" } }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "dev": true + }, + "react-docgen-typescript-plugin": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.2.tgz", + "integrity": "sha512-NQfWyWLmzUnedkiN2nPDb6Nkm68ik6fqbC3UvgjqYSeZsbKijXUA4bmV6aU7qICOXdop9PevPdjEgJuAN0nNVQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "endent": "^2.0.1", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^1.20.1", + "react-docgen-typescript-loader": "^3.7.2", + "tslib": "^2.0.0" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.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.2.0" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -4897,10 +5884,10 @@ "ajv-keywords": "^3.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "ssri": { @@ -4927,6 +5914,23 @@ "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } }, "tslib": { @@ -4966,6 +5970,78 @@ "webpack-sources": "^1.4.1" }, "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -4985,15 +6061,46 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } + }, + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } } } } } }, "@storybook/router": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.0.27.tgz", - "integrity": "sha512-jo6d48mZLeHyv8wYf0NnV0eCtJ7LRsBaf1x2c967u4GAQ128+bYXm0iZwAtv4kYmH3YgETGuCbKpZyQbjbhUVQ==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.0.28.tgz", + "integrity": "sha512-omp2LRq3LYc7A89PM0WpJnioedzCme3jJbJXRR7tFva4N+aP6JGaFTJZZdk2NHXHxerGfWG0Cs9G6HNAw9nN1A==", "requires": { "@reach/router": "^1.3.3", "@types/reach__router": "^1.3.5", @@ -5013,13 +6120,13 @@ } }, "@storybook/source-loader": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.0.27.tgz", - "integrity": "sha512-mLncCAN0s9mcUY7/wFAwJvXDV2ts5XxB40ZHRZKlseTiI011uwf1AEBOmeSWft/CxOtbicHTYbIHdMokuWNjmg==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.0.28.tgz", + "integrity": "sha512-oBWQlIS6fgkcPt5CzE7ASqNKKxlks/1b1GxPr95fLiIhAkPs64DdvZ+6QP1req62CI4zBOyFj4wZHX/sYpfPzQ==", "dev": true, "requires": { - "@storybook/addons": "6.0.27", - "@storybook/client-logger": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/client-logger": "6.0.28", "@storybook/csf": "0.0.1", "core-js": "^3.0.1", "estraverse": "^4.2.0", @@ -5044,14 +6151,14 @@ } }, "@storybook/theming": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.0.27.tgz", - "integrity": "sha512-6jm7tJuGUZzSftRQce776fS9/Pt5OAypmaTOj035z3RWswoQ1pj8olXVnSNxSt6jyYoWrJru8kiCl7w78q0rPg==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.0.28.tgz", + "integrity": "sha512-dcZXDkO1LYcnWUejAzvjl3OPBnAB1m2+fzmRx0dBrgm2O+fcNXTadQ6SXZYKaSz37lS+aGtYG7I9nurwhXMMXA==", "requires": { "@emotion/core": "^10.0.20", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.17", - "@storybook/client-logger": "6.0.27", + "@storybook/client-logger": "6.0.28", "core-js": "^3.0.1", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.19", @@ -5063,21 +6170,21 @@ } }, "@storybook/ui": { - "version": "6.0.27", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.0.27.tgz", - "integrity": "sha512-hxTeoe3QTSJ4P9EI8Kc8hroxem5OXEYq77zKq8XxgtOKhVzhQVaA+c4p/t6Z68+yK693CCp07+6QvGo++EQEHw==", + "version": "6.0.28", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.0.28.tgz", + "integrity": "sha512-LGYW+hGiRu+5QRrZXamEt7aoHWQMfYWAaSO8hJldD5lfIXUXcoWUm0Mx7CRpUhw22LzmidrwZijyxlTnuTRZyw==", "dev": true, "requires": { "@emotion/core": "^10.0.20", - "@storybook/addons": "6.0.27", - "@storybook/api": "6.0.27", - "@storybook/channels": "6.0.27", - "@storybook/client-logger": "6.0.27", - "@storybook/components": "6.0.27", - "@storybook/core-events": "6.0.27", - "@storybook/router": "6.0.27", + "@storybook/addons": "6.0.28", + "@storybook/api": "6.0.28", + "@storybook/channels": "6.0.28", + "@storybook/client-logger": "6.0.28", + "@storybook/components": "6.0.28", + "@storybook/core-events": "6.0.28", + "@storybook/router": "6.0.28", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.0.27", + "@storybook/theming": "6.0.28", "@types/markdown-to-jsx": "^6.11.0", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", @@ -6248,9 +7355,9 @@ } }, "@types/uglify-js": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.3.tgz", - "integrity": "sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", + "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -6277,9 +7384,9 @@ "dev": true }, "@types/webpack": { - "version": "4.41.21", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.21.tgz", - "integrity": "sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA==", + "version": "4.41.25", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", + "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", "dev": true, "requires": { "@types/anymatch": "*", @@ -6305,9 +7412,9 @@ "dev": true }, "@types/webpack-sources": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-1.4.2.tgz", - "integrity": "sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", + "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", "dev": true, "requires": { "@types/node": "*", @@ -6671,6 +7778,12 @@ "ansi-regex": "^3.0.0" } }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, "webpack-log": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", @@ -6681,14 +7794,6 @@ "log-symbols": "^2.1.0", "loglevelnext": "^1.0.1", "uuid": "^3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } } } } @@ -7288,10 +8393,21 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-types": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", - "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", - "dev": true + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } }, "ast-types-flow": { "version": "0.0.7", @@ -7600,13 +8716,13 @@ "dev": true }, "babel-plugin-apply-mdx-type-prop": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.19.tgz", - "integrity": "sha512-zAuL11EaBbeNpfTqsa9xP7mkvX3V4LaEV6M9UUaI4zQtTqN5JwvDyhNsALQs5Ud7WFQSXtoqU74saTgE+rgZOw==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.21.tgz", + "integrity": "sha512-+vQarmm+g+kePH4CMp2iEN/HOx1oEvZeSKCdKCEZlnJOthXzkpaRAbM3ZNCiKqVr9WuoqPNfoXQ0EVppYpIwfg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.19" + "@mdx-js/util": "1.6.21" } }, "babel-plugin-dynamic-import-node": { @@ -7635,9 +8751,9 @@ } }, "babel-plugin-extract-import-names": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.19.tgz", - "integrity": "sha512-5kbSEhQdg1ybR9OnxybbyR1PXw51z6T6ZCtX3vYSU6t1pC/+eBlSzWXyU2guStbwQgJyxS+mHWSNnL7PUdzAlw==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.21.tgz", + "integrity": "sha512-mCjTry00HB/4xHGunxQNMOGZ7JEGJdEScNh7C1WJBto7nePyn9wCdYAZP61pGC6+z3ETH5btY20mqg0plcxZGA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "7.10.4" @@ -7804,14 +8920,14 @@ "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" }, "babel-plugin-react-docgen": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.1.0.tgz", - "integrity": "sha512-vzpnBlfGv8XOhJM2zbPyyqw2OLEbelgZZsaaRRTpVwNKuYuc+pUg4+dy7i9gCRms0uOQn4osX571HRcCJMJCmA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz", + "integrity": "sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==", "dev": true, "requires": { + "ast-types": "^0.14.2", "lodash": "^4.17.15", - "react-docgen": "^5.0.0", - "recast": "^0.14.7" + "react-docgen": "^5.0.0" } }, "babel-plugin-require-context-hook": { @@ -14428,9 +15544,9 @@ } }, "hast-to-hyperscript": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.0.tgz", - "integrity": "sha512-NJvMYU3GlMLs7hN3CRbsNlMzusVNkYBogVWDGybsuuVQ336gFLiD+q9qtFZT2meSHzln3pNISZWTASWothMSMg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", "dev": true, "requires": { "@types/unist": "^2.0.3", @@ -14443,23 +15559,38 @@ } }, "hast-util-from-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.0.tgz", - "integrity": "sha512-3ZYnfKenbbkhhNdmOQqgH10vnvPivTdsOJCri+APn0Kty+nRkDHArnaX9Hiaf8H+Ig+vkNptL+SRY/6RwWJk1Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", "dev": true, "requires": { "@types/parse5": "^5.0.0", - "ccount": "^1.0.0", - "hastscript": "^5.0.0", + "hastscript": "^6.0.0", "property-information": "^5.0.0", "vfile": "^4.0.0", + "vfile-location": "^3.2.0", "web-namespaces": "^1.0.0" + }, + "dependencies": { + "hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + } } }, "hast-util-parse-selector": { - "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==" + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" }, "hast-util-raw": { "version": "6.0.1", @@ -16015,9 +17146,9 @@ }, "dependencies": { "@jest/types": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.1.tgz", - "integrity": "sha512-ywHavIKNpAVrStiRY5wiyehvcktpijpItvGiK72RAn5ctqmzvPk8OvKnvHeBqa1XdQr959CTWAJMqxI8BTibyg==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -16043,9 +17174,9 @@ "dev": true }, "@types/yargs": { - "version": "15.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", - "integrity": "sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==", + "version": "15.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", + "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -16105,9 +17236,9 @@ "dev": true }, "diff-sequences": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.5.0.tgz", - "integrity": "sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, "escape-string-regexp": { @@ -16117,16 +17248,16 @@ "dev": true }, "expect": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.1.tgz", - "integrity": "sha512-BRfxIBHagghMmr1D2MRY0Qv5d3Nc8HCqgbDwNXw/9izmM5eBb42a2YjLKSbsqle76ozGkAEPELQX4IdNHAKRNA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "ansi-styles": "^4.0.0", "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.1", - "jest-message-util": "^26.6.1", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", "jest-regex-util": "^26.0.0" } }, @@ -16145,6 +17276,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -16152,15 +17292,15 @@ "dev": true }, "jest-diff": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.1.tgz", - "integrity": "sha512-BBNy/zin2m4kG5In126O8chOBxLLS/XMTuuM2+YhgyHk87ewPzKTuTJcqj3lOWOi03NNgrl+DkMeV/exdvG9gg==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^26.5.0", + "diff-sequences": "^26.6.2", "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.1" + "pretty-format": "^26.6.2" } }, "jest-get-type": { @@ -16170,12 +17310,12 @@ "dev": true }, "jest-haste-map": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.1.tgz", - "integrity": "sha512-9kPafkv0nX6ta1PrshnkiyhhoQoFWncrU/uUBt3/AP1r78WSCU5iLceYRTwDvJl67H3RrXqSlSVDDa/AsUB7OQ==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -16183,38 +17323,39 @@ "fsevents": "^2.1.2", "graceful-fs": "^4.2.4", "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.5.0", - "jest-util": "^26.6.1", - "jest-worker": "^26.6.1", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", "micromatch": "^4.0.2", "sane": "^4.0.3", "walker": "^1.0.7" } }, "jest-matcher-utils": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.1.tgz", - "integrity": "sha512-9iu3zrsYlUnl8pByhREF9rr5eYoiEb1F7ymNKg6lJr/0qD37LWS5FSW/JcoDl8UdMX2+zAzabDs7sTO+QFKjCg==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^26.6.1", + "jest-diff": "^26.6.2", "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.1" + "pretty-format": "^26.6.2" } }, "jest-message-util": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.1.tgz", - "integrity": "sha512-cqM4HnqncIebBNdTKrBoWR/4ufHTll0pK/FWwX0YasK+TlBQEMqw3IEdynuuOTjDPFO3ONlFn37280X48beByw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.2" } @@ -16226,25 +17367,25 @@ "dev": true }, "jest-resolve": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.1.tgz", - "integrity": "sha512-hiHfQH6rrcpAmw9xCQ0vD66SDuU+7ZulOuKwc4jpbmFFsz0bQG/Ib92K+9/489u5rVw0btr/ZhiHqBpmkbCvuQ==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.1", + "jest-util": "^26.6.2", "read-pkg-up": "^7.0.1", "resolve": "^1.18.1", "slash": "^3.0.0" } }, "jest-serializer": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.5.0.tgz", - "integrity": "sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, "requires": { "@types/node": "*", @@ -16252,36 +17393,36 @@ } }, "jest-snapshot": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.1.tgz", - "integrity": "sha512-JA7bZp7HRTIJYAi85pJ/OZ2eur2dqmwIToA5/6d7Mn90isGEfeF9FvuhDLLEczgKP1ihreBzrJ6Vr7zteP5JNA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.0.0", "chalk": "^4.0.0", - "expect": "^26.6.1", + "expect": "^26.6.2", "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.1", + "jest-diff": "^26.6.2", "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.1", - "jest-matcher-utils": "^26.6.1", - "jest-message-util": "^26.6.1", - "jest-resolve": "^26.6.1", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^26.6.1", + "pretty-format": "^26.6.2", "semver": "^7.3.2" } }, "jest-util": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.1.tgz", - "integrity": "sha512-xCLZUqVoqhquyPLuDXmH7ogceGctbW8SMyQVjD9o+1+NPWI7t0vO08udcFLVPLgKWcvc+zotaUv/RuaR6l8HIA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -16290,9 +17431,9 @@ } }, "jest-worker": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", - "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -16317,12 +17458,12 @@ "dev": true }, "pretty-format": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.1.tgz", - "integrity": "sha512-MeqqsP5PYcRBbGMvwzsyBdmAJ4EFX7pWFyl7x4+dMVg5pE0ZDdBIvEH2ergvIO+Gvwv1wh64YuOY9y5LuyY/GA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, "requires": { - "@jest/types": "^26.6.1", + "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^17.0.1" @@ -16366,12 +17507,12 @@ } }, "resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, "requires": { - "is-core-module": "^2.0.0", + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, @@ -16388,9 +17529,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz", - "integrity": "sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -17685,13 +18826,13 @@ } }, "mdast-util-to-hast": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.1.tgz", - "integrity": "sha512-vpMWKFKM2mnle+YbNgDXxx95vv0CoLU0v/l3F5oFAG5DV7qwkZVWA206LsAdOnEVyf5vQcLnb3cWJywu7mUxsQ==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.2.tgz", + "integrity": "sha512-OpkFLBC2VnNAb2FNKcKWu9FMbJhQKog+FCT8nuKmQNIKXyT1n3SIskE7uWDep6x+cA20QXlK5AETHQtYmQmxtQ==", "dev": true, "requires": { "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.3", + "@types/unist": "^2.0.0", "mdast-util-definitions": "^3.0.0", "mdurl": "^1.0.0", "unist-builder": "^2.0.0", @@ -18145,6 +19286,14 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, + "moment-timezone": { + "version": "0.5.32", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.32.tgz", + "integrity": "sha512-Z8QNyuQHQAmWucp8Knmgei8YNo28aLjJq6Ma+jy1ZSpSk5nyfRT8xgUbSQvD2+2UajISfenndwvFuH3NGS+nvA==", + "requires": { + "moment": ">= 2.9.0" + } + }, "moo": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", @@ -23294,12 +24443,6 @@ "clipboard": "^2.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -24349,14 +25492,14 @@ "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==" }, "react-docgen": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.3.0.tgz", - "integrity": "sha512-hUrv69k6nxazOuOmdGeOpC/ldiKy7Qj/UFpxaQi0eDMrUFUTIPGtY5HJu7BggSmiyAMfREaESbtBL9UzdQ+hyg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.3.1.tgz", + "integrity": "sha512-YG7YujVTwlLslr2Ny8nQiUfbBuEwKsLHJdQTSdEga1eY/nRFh/7LjCWUn6ogYhu2WDKg4z+6W/BJtUi+DPUIlA==", "dev": true, "requires": { "@babel/core": "^7.7.5", "@babel/runtime": "^7.7.6", - "ast-types": "^0.13.2", + "ast-types": "^0.14.2", "commander": "^2.19.0", "doctrine": "^3.0.0", "neo-async": "^2.6.1", @@ -24365,9 +25508,9 @@ } }, "react-docgen-typescript": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.20.1.tgz", - "integrity": "sha512-vU6puLsSwfCS+nI/6skQ52sJIx/uW7+9aMI/V/zPHAXr6s8OQzD5LeL9rXx/Hdt2aNfm4yTX9oJ8ClH/5PKQNg==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.20.5.tgz", + "integrity": "sha512-AbLGMtn76bn7SYBJSSaKJrZ0lgNRRR3qL60PucM5M4v/AXyC8221cKBXW5Pyt9TfDRfe+LDnPNlg7TibxX0ovA==", "dev": true }, "react-docgen-typescript-loader": { @@ -24382,9 +25525,9 @@ } }, "react-docgen-typescript-plugin": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.2.tgz", - "integrity": "sha512-NQfWyWLmzUnedkiN2nPDb6Nkm68ik6fqbC3UvgjqYSeZsbKijXUA4bmV6aU7qICOXdop9PevPdjEgJuAN0nNVQ==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.6.2.tgz", + "integrity": "sha512-Orw0WKdJGAg5eMZGbEMw/rKonoxbi8epU6RJWTW3ukWuTarxckFXTltGvm8XADAWlBHak30KD71XThtJruxfTg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -24439,9 +25582,9 @@ } }, "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", "dev": true } } @@ -24510,9 +25653,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", - "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -24844,9 +25987,9 @@ } }, "react-textarea-autosize": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.2.0.tgz", - "integrity": "sha512-grajUlVbkx6VdtSxCgzloUIphIZF5bKr21OYMceWPKkniy7H0mRAT/AXPrRtObAe+zUePnNlBwUc4ivVjUGIjw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.0.tgz", + "integrity": "sha512-3GLWFAan2pbwBeoeNDoqGmSbrShORtgWfaWX0RJDivsUrpShh01saRM5RU/i4Zmf+whpBVEY5cA90Eq8Ub1N3w==", "requires": { "@babel/runtime": "^7.10.2", "use-composed-ref": "^1.0.0", @@ -24948,32 +26091,6 @@ "util.promisify": "^1.0.0" } }, - "recast": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", - "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", - "dev": true, - "requires": { - "ast-types": "0.11.3", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - }, - "dependencies": { - "ast-types": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", - "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -25155,16 +26272,16 @@ "dev": true }, "remark-mdx": { - "version": "1.6.19", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.19.tgz", - "integrity": "sha512-UKK1CFatVPNhgjsIlNQ3GjVl3+6O7x7Hag6oyntFTg8s7sgq+rhWaSfM/6lW5UWU6hzkj520KYBuBlsaSriGtA==", + "version": "1.6.21", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.21.tgz", + "integrity": "sha512-IGb3l46a6NFi62egT+WXeTT3T8wYTunmPCEGTfDO6oRAfuss9VAb/3InVCKKGXXoiNi0mTuplI0EFusdCLGk3A==", "dev": true, "requires": { "@babel/core": "7.11.6", "@babel/helper-plugin-utils": "7.10.4", "@babel/plugin-proposal-object-rest-spread": "7.11.0", "@babel/plugin-syntax-jsx": "7.10.4", - "@mdx-js/util": "1.6.19", + "@mdx-js/util": "1.6.21", "is-alphabetical": "1.0.4", "remark-parse": "8.0.3", "unified": "9.2.0" @@ -25195,12 +26312,12 @@ } }, "@babel/generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", - "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.12.1", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -25215,12 +26332,12 @@ } }, "@babel/helper-module-imports": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", - "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.5" } }, "@babel/helper-module-transforms": { @@ -25241,15 +26358,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", - "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/helper-simple-access": { @@ -25271,9 +26388,9 @@ } }, "@babel/parser": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", - "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-object-rest-spread": { @@ -25288,26 +26405,26 @@ } }, "@babel/traverse": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", - "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", + "@babel/generator": "^7.12.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.1", - "@babel/types": "^7.12.1", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", - "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -27397,9 +28514,9 @@ } }, "telejson": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.0.2.tgz", - "integrity": "sha512-XCrDHGbinczsscs8LXFr9jDhvy37yBk9piB7FJrCfxE8oP66WDkolNMpaBkWYgQqB9dQGBGtTDzGQPedc9KJmw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.0.tgz", + "integrity": "sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA==", "requires": { "@types/is-function": "^1.0.0", "global": "^4.4.0", @@ -27407,7 +28524,7 @@ "is-regex": "^1.1.1", "is-symbol": "^1.0.3", "isobject": "^4.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "memoizerific": "^1.11.3" }, "dependencies": { @@ -27525,9 +28642,9 @@ "dev": true }, "jest-worker": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", - "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -28023,9 +29140,9 @@ }, "dependencies": { "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": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, "is-plain-obj": { @@ -28080,15 +29197,15 @@ "dev": true }, "unist-util-generated": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.5.tgz", - "integrity": "sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", "dev": true }, "unist-util-is": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", - "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.3.tgz", + "integrity": "sha512-bTofCFVx0iQM8Jqb1TBDVRIQW03YkD3p66JOd/aCWuqzlLyUtx1ZAGw/u+Zw+SttKvSVcvTiKYbfrtLoLefykw==", "dev": true }, "unist-util-position": { @@ -28098,9 +29215,9 @@ "dev": true }, "unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.1.tgz", + "integrity": "sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q==", "dev": true, "requires": { "unist-util-is": "^4.0.0" @@ -28388,17 +29505,17 @@ }, "dependencies": { "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": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true } } }, "vfile-location": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", - "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", "dev": true }, "vfile-message": { diff --git a/package.json b/package.json index 522f60d8..f3e56854 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dassana-io/web-components", - "version": "0.6.6", + "version": "0.7.0", "publishConfig": { "registry": "https://npm.pkg.github.com/dassana-io" }, @@ -11,8 +11,8 @@ }, "dependencies": { "@ant-design/icons": "^4.2.2", - "@dassana-io/web-utils": "^0.6.0", - "@storybook/addon-cssresources": "^6.0.27", + "@dassana-io/web-utils": "^0.7.2", + "@storybook/addon-cssresources": "^6.0.28", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", "@testing-library/react-hooks": "^3.4.2", @@ -77,14 +77,14 @@ "@rollup/plugin-commonjs": "^15.1.0", "@rollup/plugin-image": "^2.0.5", "@rollup/plugin-node-resolve": "^9.0.0", - "@storybook/addon-actions": "^6.0.27", - "@storybook/addon-essentials": "^6.0.27", - "@storybook/addon-links": "^6.0.27", - "@storybook/addon-storyshots": "^6.0.27", - "@storybook/addons": "^6.0.27", - "@storybook/preset-create-react-app": "^3.1.4", - "@storybook/react": "^6.0.27", - "@storybook/theming": "^6.0.27", + "@storybook/addon-actions": "^6.0.28", + "@storybook/addon-essentials": "^6.0.28", + "@storybook/addon-links": "^6.0.28", + "@storybook/addon-storyshots": "^6.0.28", + "@storybook/addons": "^6.0.28", + "@storybook/preset-create-react-app": "^3.1.5", + "@storybook/react": "^6.0.28", + "@storybook/theming": "^6.0.28", "@svgr/rollup": "^5.4.0", "@types/bytes": "^3.1.0", "@types/classnames": "^2.2.10", diff --git a/src/__mocks__/table_mock_data.ts b/src/__mocks__/table_mock_data.ts index ceb0b63e..01b477d3 100644 --- a/src/__mocks__/table_mock_data.ts +++ b/src/__mocks__/table_mock_data.ts @@ -8,16 +8,17 @@ import { const { component, number, string } = ColumnTypes const { none, byte, date, icon, link, toggle, tag } = ColumnFormats -export interface DataType { - string: string - number: number - date: number +export interface Data { byte: number - tag: string + date: number + icon: string + icon_key: string + id: number link: string + number: number + string: string + tag: string toggle: boolean - icon_key: string - icon: string } export const dateFormat = 'MM/DD/YYYY' @@ -94,12 +95,13 @@ const columns: ColumnType[] = [ } ] -const data: DataType[] = [ +const data: Data[] = [ { byte: 1024, date: 1599193037581, icon: 'test', icon_key: 'dassana', + id: 0, link: 'test', number: 0, string: 'Dassana', @@ -108,6 +110,6 @@ const data: DataType[] = [ } ] -const tableProps: TableProps = { columns, data } +const tableProps: TableProps = { columns, data } export default tableProps diff --git a/src/components/Button/utils.ts b/src/components/Button/utils.ts index 60c38d47..d7c2b086 100644 --- a/src/components/Button/utils.ts +++ b/src/components/Button/utils.ts @@ -2,7 +2,7 @@ import { styleguide, themedStyles, ThemeType } from 'components/assets/styles' const { borderRadius, - colors: { blacks } + colors: { blacks, grays } } = styleguide const { dark, light } = ThemeType @@ -19,10 +19,10 @@ const buttonPalette = { }, [light]: { color: blacks['lighten-30'], - disabledBgColor: blacks['lighten-90'], + disabledBgColor: grays.base, hoverColor: blacks['darken-20'], primaryBackgroundColor: blacks.base, - primaryDisabledBgColor: blacks['lighten-90'], + primaryDisabledBgColor: grays.base, primaryDisabledTextColor: blacks['lighten-80'], primaryHoverBgColor: blacks['lighten-50'] } diff --git a/src/components/Form/FieldLabel/index.tsx b/src/components/Form/FieldLabel/index.tsx index f4b98283..d6db5ce0 100644 --- a/src/components/Form/FieldLabel/index.tsx +++ b/src/components/Form/FieldLabel/index.tsx @@ -1,3 +1,4 @@ +import cn from 'classnames' import { createUseStyles } from 'react-jss' import { Skeleton } from 'components/Skeleton' import { @@ -47,6 +48,7 @@ const useStyles = createUseStyles({ }) export interface FieldLabelProps { + classes?: string[] fullWidth?: boolean label: string loading?: boolean @@ -55,23 +57,26 @@ export interface FieldLabelProps { } const FieldLabel: FC = ({ + classes = [], fullWidth = false, label, loading = false, required = false, skeletonWidth = 100 }: FieldLabelProps) => { - const classes = useStyles({ fullWidth }) + const fieldLabelClasses = useStyles({ fullWidth }) return ( -
+
{loading ? ( ) : ( <> {label} {!required && ( - Optional + + Optional + )} )} diff --git a/src/components/Form/Form.stories.tsx b/src/components/Form/Form.stories.tsx index 572bcc7e..6ae65f98 100644 --- a/src/components/Form/Form.stories.tsx +++ b/src/components/Form/Form.stories.tsx @@ -45,6 +45,11 @@ const Template: Story> = (args: FormProps) => ( name='severity' options={basicOptions} /> + ({ - ...jest.requireActual('react-hook-form'), + ...(jest.requireActual('react-hook-form') as {}), Controller: () =>
, useFormContext: () => ({ control: jest.fn(), diff --git a/src/components/Form/FormSelect/FormSelect.test.tsx b/src/components/Form/FormSelect/FormSelect.test.tsx index df4b89ed..ebf3f3e3 100644 --- a/src/components/Form/FormSelect/FormSelect.test.tsx +++ b/src/components/Form/FormSelect/FormSelect.test.tsx @@ -8,7 +8,7 @@ import FormSelect, { FormSelectProps } from './index' import { mount, ReactWrapper } from 'enzyme' jest.mock('react-hook-form', () => ({ - ...jest.requireActual('react-hook-form'), + ...(jest.requireActual('react-hook-form') as {}), Controller: () =>
, useFormContext: () => ({ control: jest.fn(), diff --git a/src/components/Form/FormSubmitButton/FormSubmitButton.test.tsx b/src/components/Form/FormSubmitButton/FormSubmitButton.test.tsx index 4c1d6f40..32d28ebe 100644 --- a/src/components/Form/FormSubmitButton/FormSubmitButton.test.tsx +++ b/src/components/Form/FormSubmitButton/FormSubmitButton.test.tsx @@ -15,6 +15,7 @@ const getMockFormContext = (isDirty = true) => formState: { isDirty }, + getValues: jest.fn() as any, handleSubmit: (onSubmit: any) => onSubmit() } as reactHookForm.UseFormMethods) diff --git a/src/components/Form/FormSubmitButton/index.tsx b/src/components/Form/FormSubmitButton/index.tsx index 54b3fb33..69660703 100644 --- a/src/components/Form/FormSubmitButton/index.tsx +++ b/src/components/Form/FormSubmitButton/index.tsx @@ -7,19 +7,22 @@ import React, { FC, useContext } from 'react' export interface FormButtonProps extends Omit { - isDisabled?: (formState: FormStateProxy) => boolean + isDisabled?: ( + formState: FormStateProxy, + formValues: Record + ) => boolean } const FormSubmitButton: FC = ({ isDisabled, ...rest }: FormButtonProps) => { - const { handleSubmit, formState } = useFormContext() + const { handleSubmit, formState, getValues } = useFormContext() const { loading, onSubmit } = useContext(FieldContext) const { isDirty } = formState const isButtonDisabled = () => - isDisabled ? isDisabled(formState) : !isDirty + isDisabled ? isDisabled(formState, getValues()) : !isDirty useShortcut({ additionalConditionalFn: () => !isButtonDisabled(), diff --git a/src/components/Form/FormToggle/FormToggle.test.tsx b/src/components/Form/FormToggle/FormToggle.test.tsx new file mode 100644 index 00000000..a5ddc38b --- /dev/null +++ b/src/components/Form/FormToggle/FormToggle.test.tsx @@ -0,0 +1,107 @@ +import { Controller } from 'react-hook-form' +import FieldContext from '../FieldContext' +import FieldLabel from '../FieldLabel' +import React from 'react' +import { Toggle } from 'components/Toggle' +import FormToggle, { FormToggleProps } from './index' +import { mount, ReactWrapper } from 'enzyme' + +jest.mock('react-hook-form', () => ({ + ...(jest.requireActual('react-hook-form') as {}), + Controller: () =>
, + useFormContext: () => ({ + control: jest.fn(), + errors: () => ({ foo: true }) + }) +})) + +let wrapper: ReactWrapper + +const mockOnSubmit = jest.fn() + +beforeEach(() => { + wrapper = mount( + + + + ) +}) + +afterEach(() => { + jest.resetAllMocks() +}) + +describe('FormToggle', () => { + it('renders', () => { + expect(wrapper).toHaveLength(1) + }) + + it('correctly passes a default value from initial values if it exists', () => { + expect(wrapper.find(Controller).props().defaultValue).toEqual(true) + }) + + it('correctly passes a default value from initial values if defaultChecked is true', () => { + wrapper = mount( + + + + ) + + expect(wrapper.find(Controller).props().defaultValue).toEqual(true) + }) + + it('should render a Toggle component', () => { + const mockOnChange = jest.fn() + const test = { + onChange: mockOnChange, + value: true + } as jest.Mocked + + const toggle = wrapper.find(Controller).invoke('render')!(test) + + expect(toggle.type).toBe(Toggle) + + toggle.props.onChange(true) + + expect(mockOnChange).toHaveBeenCalled() + }) + + it('should not render the label with the default width if fullWidth is passed as true', () => { + const div = document.createElement('div') + div.setAttribute('id', 'container') + document.body.appendChild(div) + + wrapper = mount( + + + , + { + attachTo: document.getElementById('container') + } + ) + + const style = window.getComputedStyle( + wrapper.find(FieldLabel).getDOMNode() + ) + + expect(style.width).not.toEqual(255) + }) +}) diff --git a/src/components/Form/FormToggle/index.tsx b/src/components/Form/FormToggle/index.tsx new file mode 100644 index 00000000..d15cdd39 --- /dev/null +++ b/src/components/Form/FormToggle/index.tsx @@ -0,0 +1,82 @@ +import { BaseFieldProps } from '../types' +import { createUseStyles } from 'react-jss' +import FieldLabel from '../FieldLabel' +import { getFormFieldDataTag } from '../utils' +import { styleguide } from 'components/assets/styles' +import { Controller, useFormContext } from 'react-hook-form' +import FieldContext, { FieldContextProps } from '../FieldContext' +import React, { FC, useContext } from 'react' +import { Toggle, ToggleProps } from 'components/Toggle' + +const { flexAlignCenter, font, spacing } = styleguide + +const useStyles = createUseStyles({ + container: { + ...flexAlignCenter, + padding: `${spacing.m}px 0` + }, + label: { + ...font.body, + paddingBottom: 0, + paddingRight: spacing.s, + width: ({ fullWidth }) => (fullWidth ? '100%' : 255) + } +}) + +export interface FormToggleProps + extends Omit, + Omit { + label: string + fullWidth?: boolean +} + +const FormToggle: FC = ({ + defaultChecked = false, + fullWidth = false, + label, + labelSkeletonWidth, + name, + rules = {}, + ...rest +}: FormToggleProps) => { + const { control } = useFormContext() + const { initialValues, loading } = useContext( + FieldContext + ) + + const classes = useStyles({ fullWidth }) + + rules.required = true + + const defaultValue = (initialValues[name] as boolean) || defaultChecked + + // TODO: add info tips + return ( +
+ + ( + onChange(checked)} + {...rest} + /> + )} + rules={rules} + /> +
+ ) +} + +export default FormToggle diff --git a/src/components/Form/index.tsx b/src/components/Form/index.tsx index 5ca4013a..91b9e208 100644 --- a/src/components/Form/index.tsx +++ b/src/components/Form/index.tsx @@ -4,6 +4,7 @@ import FormInput from './FormInput' import FormRadioGroup from './FormRadioGroup' import FormSelect from './FormSelect' import FormSubmitButton from './FormSubmitButton' +import FormToggle from './FormToggle' import FormTree from './FormTree' import { FieldValues, UseFormMethods } from 'react-hook-form/dist/types/form' import { FormProvider, SubmitHandler, useForm } from 'react-hook-form' @@ -65,6 +66,7 @@ Form.SubmitButton = FormSubmitButton Form.Input = FormInput Form.RadioGroup = FormRadioGroup Form.Select = FormSelect +Form.Toggle = FormToggle Form.Tree = FormTree export type { UseFormMethods } from 'react-hook-form/dist/types/form' diff --git a/src/components/NotificationV2/utils.ts b/src/components/NotificationV2/utils.ts index d6d26d4d..24799987 100644 --- a/src/components/NotificationV2/utils.ts +++ b/src/components/NotificationV2/utils.ts @@ -4,7 +4,7 @@ import { v4 as uuidV4 } from 'uuid' import { themedStyles, themes, ThemeType } from '../assets/styles/themes' import { useCallback, useEffect, useState } from 'react' -const { spacing } = styleguide +const { borderRadius, flexSpaceBetween, spacing } = styleguide export const NOTIFICATION_CONTAINER_ID = 'notification-root' @@ -90,12 +90,11 @@ export const generateNotificationStyles = (themeType: ThemeType) => { const palette = themes[themeType] return { + ...flexSpaceBetween, background: palette.background.primary, border: `1px solid ${base.borderColor}`, - borderRadius: 4, + borderRadius, color: base.color, - display: 'flex', - justifyContent: 'space-between', marginBottom: spacing.m, padding: spacing.m, position: 'relative', diff --git a/src/components/Select/index.tsx b/src/components/Select/index.tsx index 72f32dc9..52d2b4c4 100644 --- a/src/components/Select/index.tsx +++ b/src/components/Select/index.tsx @@ -8,11 +8,14 @@ import { getDataTestAttributeProp } from '../utils' import { Skeleton } from '../Skeleton' import { defaultFieldWidth, - fieldErrorStyles + fieldErrorStyles, + styleguide } from '../assets/styles/styleguide' import { Icon, IconName, SharedIconProps } from '../Icon' import React, { FC } from 'react' +const { flexAlignCenter } = styleguide + const { Option } = AntDSelect const useStyles = createUseStyles({ @@ -24,13 +27,11 @@ const useStyles = createUseStyles({ width: '100%' }, icon: { - alignItems: 'center', - display: 'flex', + ...flexAlignCenter, paddingRight: 7.5 }, option: { - alignItems: 'center', - display: 'flex' + ...flexAlignCenter } }) diff --git a/src/components/Table/Table.stories.mdx b/src/components/Table/Table.stories.mdx index 562faca6..0deb8032 100644 --- a/src/components/Table/Table.stories.mdx +++ b/src/components/Table/Table.stories.mdx @@ -14,7 +14,7 @@ The following examples start from a basic table and don't show all possible type Simple usage of the `Table` requires two props — `data` and `columns`. -1. `data` - Data must be provided as an array of objects with keys that match column key - `dataIndex`. +1. `data` - Data must be provided as an array of objects with keys that match column key - `dataIndex`. Each data item must also include a unique `id` of type `string` or `number`. 2. `columns` - Columns must be provided as an array of objects with — a required `dataIndex` key, a required `title` key which will be the title of the column and a required data `type` key which determines the type of data to be rendered. Array order in columns will determine the column order in the table. You specify the data object interface and the `ColumnType` will be imported from Dassana's library. The `ColumnType` shown here isn't comprehensive, but stripped down to keep things simple: @@ -42,9 +42,10 @@ import { TableProps } from '@dassana-io/web-components' -// You specify the data object interface. This will be referred to as DataType +// You specify the data object interface. export interface Person { name: string + id: number | string age: number } @@ -66,22 +67,27 @@ const columns: ColumnType[] = [ const data: Person[] = [ { age: 36, + id: 0, name: 'Lorem' }, { age: 32, + id: 1, name: 'Ipsum' }, { age: 45, + id: 2, name: 'Amet' }, { age: 50, + id: 3, name: 'Elit' }, { age: 22, + id: 4, name: 'Dolor' } ] @@ -256,11 +262,12 @@ import { } from '@dassana-io/web-components' export interface File { - file_name: string - data_size: number created_at: number - updated_at?: number // Pass an optional type if there will be missing data + data_size: number + id: number + file_name: string last_opened?: number + updated_at?: number // Pass an optional type if there will be missing data } const { number, string } = ColumnTypes @@ -306,29 +313,34 @@ const data: File[] = [ created_at: 1598400668681, data_size: 1048576, file_name: 'IMG_4542.jpeg', + id: 0, last_opened: 1598400668681 }, { created_at: 1582330066861, data_size: 1998576, file_name: 'test_123.png', + id: 1, last_opened: 1603779899922 }, { created_at: 1553223066861, data_size: 1024, file_name: 'passwords.txt', + id: 2, updated_at: 1582330063211 }, { created_at: 1511022066861, data_size: 4194599, - file_name: 'birthday.mp4' + file_name: 'birthday.mp4', + id: 3 }, { created_at: 1515021066861, data_size: 2048, file_name: 'letter.txt', + id: 4, updated_at: 1515121066861 } ] @@ -444,12 +456,13 @@ import { } from '@dassana-io/web-components' export interface Client { - name: string - start_date: number - role: { name: string; color: string } - linked_in: string admin_access: boolean company: IconName + id: number + linked_in: string + name: string + role: { name: string; color: string } + start_date: number } const { component, number, string } = ColumnTypes @@ -507,6 +520,7 @@ const data: Client[] = [ { admin_access: true, company: 'azure', + id: 0, linked_in: 'lorem-i', name: 'Lorem Ipsum', role: { color: 'blue', name: 'CEO' }, @@ -515,6 +529,7 @@ const data: Client[] = [ { admin_access: false, company: 'aws', + id: 1, linked_in: 'dolor-s', name: 'Dolor Sit', role: { color: 'magenta', name: 'Software Engineer' }, @@ -523,6 +538,7 @@ const data: Client[] = [ { admin_access: true, company: 'dassana', + id: 2, linked_in: 'amet-c', name: 'Amet Consectetur', role: { color: 'green', name: 'Designer' }, @@ -531,6 +547,7 @@ const data: Client[] = [ { admin_access: false, company: 'googleCloudService', + id: 3, linked_in: 'duis-irure', name: 'Duis Irure', role: { color: 'purple', name: 'Business Development' }, @@ -557,13 +574,14 @@ The rendered table: Make sure to declare keys as optional in the typescript interface if there will be missing data. ```ts -interface Client { - name?: string - start_date?: number - role?: { name: string; color: string } - linked_in?: string +export interface Client1 { admin_access?: boolean company?: string + id: number + linked_in?: string + name?: string + role?: { name: string; color: string } + start_date?: number } ``` @@ -696,3 +714,7 @@ type ComponentType = ComponentIconType | ComponentLinkType | ComponentTagType | export type type ColumnType = StringType | NumberType | ComponentType ``` + + + + diff --git a/src/components/Table/Table.stories.tsx b/src/components/Table/Table.stories.tsx index 2ddb579e..9e7425f8 100644 --- a/src/components/Table/Table.stories.tsx +++ b/src/components/Table/Table.stories.tsx @@ -1,26 +1,29 @@ import { action } from '@storybook/addon-actions' -import React from 'react' +import cloneDeep from 'lodash/cloneDeep' import { Story } from '@storybook/react/types-6-0' -import { Table, TableProps } from '.' +import { DataId, Table, TableProps } from '.' +import React, { Key, useState } from 'react' import tableData0, { Person } from './fixtures/0_sample_data' import tableData1, { File } from './fixtures/1_sample_data' import tableData2, { Client } from './fixtures/2_sample_data' import tableData3, { Client1 } from './fixtures/3_sample_data' const commonArgTypes = { + activeRowKey: { + control: { disable: true } + }, dataTag: { control: { disable: true } }, onRowClick: { control: { disable: true }, - defaultValue: action('onRowClick'), description: 'Optional callback that runs when a table row is clicked.', table: { type: { detail: ` - interface OnRowClick { - (data: DataType, rowIndex: number): void -}` + interface OnRowClick { + (data: Data, rowIndex: number): void + }` } } }, @@ -39,6 +42,26 @@ const commonArgTypes = { } } +const DecoratedTableStory = (props: TableProps) => { + const [activeRowKey, setActiveRowKey] = useState('') + + const onRowClick = (clickedRowData: Data, i: number) => { + action('onRowClick')(clickedRowData, i) + + activeRowKey === clickedRowData.id + ? setActiveRowKey('') + : setActiveRowKey(clickedRowData.id) + } + + return ( + + {...props} + activeRowKey={activeRowKey} + onRowClick={onRowClick} + /> + ) +} + const SimpleTemplate: Story> = args => ( {...args} /> ) @@ -50,7 +73,7 @@ Simple.argTypes = { ...commonArgTypes, columns: { description: - 'Array of column objects. Click to view a simplified partial ColumnType interface used for this simple table.', + 'Array of column objects. Click to view a simplified partial Column interface used for this simple table.', table: { type: { detail: ` @@ -65,7 +88,7 @@ Simple.argTypes = { }, data: { description: - 'Array of data objects. The DataType should be defined and provided when you use the table. For this table, the DataType would be: ', + 'Array of data objects. The Data should be defined and provided when you use the table. For this table, the Data would be: ', table: { type: { detail: ` @@ -79,7 +102,7 @@ Simple.argTypes = { } const NumberTemplate: Story> = args => ( - {...args} /> + ) export const Number = NumberTemplate.bind({}) Number.args = { @@ -90,7 +113,7 @@ Number.argTypes = { columns: { description: /* eslint-disable quotes */ - "Array of column objects. Click to view a partial ColumnType interface (`'number'` type):", + "Array of column objects. Click to view a partial Column interface (`'number'` type):", table: { type: { detail: ` @@ -102,7 +125,7 @@ Number.argTypes = { sort?: boolean } -interface NumberDateType { +interface NumberDate { dataIndex: string title: string type: ColumnTypes.number @@ -121,13 +144,13 @@ interface NumberByteType { sort?: boolean } -type NumberType = NumberDefaultType | NumberDateType | NumberByteType` +type NumberType = NumberDefaultType | NumberDate | NumberByteType` } } }, data: { description: - 'Array of data objects. The DataType should be defined and provided when you use the table. For this table, the DataType would be: ', + 'Array of data objects. The Data should be defined and provided when you use the table. For this table, the Data would be: ', table: { type: { detail: ` @@ -142,7 +165,7 @@ type NumberType = NumberDefaultType | NumberDateType | NumberByteType` } } const MixedTemplate: Story> = args => ( - {...args} /> + {...args} /> ) export const Mixed = MixedTemplate.bind({}) Mixed.args = { @@ -152,12 +175,12 @@ Mixed.argTypes = { ...commonArgTypes, columns: { control: { disable: true }, - description: `Array of column objects. [Click to view a partial ColumnType interface.](/?path=/docs/table--simple#representing-columntype-with-typescript-1)` + description: `Array of column objects. [Click to view a partial Column interface.](/?path=/docs/table--simple#representing-columntype-with-typescript-1)` }, data: { control: { disable: true }, description: - 'Array of data objects. The DataType should be defined and provided when you use the table. For this table, the DataType would be: ', + 'Array of data objects. The Data should be defined and provided when you use the table. For this table, the Data would be: ', table: { type: { detail: ` @@ -175,7 +198,7 @@ Mixed.argTypes = { } const MissingCellsTemplate: Story> = args => ( - {...args} /> + {...args} /> ) export const MissingCells = MissingCellsTemplate.bind({}) MissingCells.args = { @@ -185,7 +208,7 @@ MissingCells.argTypes = { ...commonArgTypes, columns: { control: { disable: true }, - description: `Array of column objects. [Click to view a partial ColumnType interface.](/?path=/docs/table--simple#representing-columntype-with-typescript-1)` + description: `Array of column objects. [Click to view a partial Column interface.](/?path=/docs/table--simple#representing-columntype-with-typescript-1)` }, data: { control: { disable: true }, @@ -206,3 +229,24 @@ MissingCells.argTypes = { } } } + +export const Paginated = NumberTemplate.bind({}) + +const paginatedData = [ + ...cloneDeep(tableData1.data), + ...cloneDeep(tableData1.data.slice(0, 3)), + ...cloneDeep(tableData1.data), + ...cloneDeep(tableData1.data.slice(1, 4)), + ...cloneDeep(tableData1.data), + ...cloneDeep(tableData1.data.slice(0, 2)), + ...cloneDeep(tableData1.data) +] + +Paginated.args = { + columns: tableData1.columns, + data: paginatedData.map((item, i) => { + item.id = i + return item + }) +} +Paginated.argTypes = commonArgTypes diff --git a/src/components/Table/__tests__/Table.sort.test.ts b/src/components/Table/__tests__/Table.sort.test.ts index a8dc5f53..e66a803a 100644 --- a/src/components/Table/__tests__/Table.sort.test.ts +++ b/src/components/Table/__tests__/Table.sort.test.ts @@ -15,7 +15,7 @@ function compareArrsOfObjs(arr1: ObjectType[], arr2: ObjectType[]) { }) } -function createDataCopy(tableProps: TableProps) { +function createDataCopy(tableProps: TableProps) { return JSON.parse(JSON.stringify(tableProps)) } diff --git a/src/components/Table/__tests__/Table.test.tsx b/src/components/Table/__tests__/Table.test.tsx index 51ca3bdf..996a33b4 100644 --- a/src/components/Table/__tests__/Table.test.tsx +++ b/src/components/Table/__tests__/Table.test.tsx @@ -2,16 +2,16 @@ import { act } from 'react-dom/test-utils' import moment from 'moment' import React from 'react' import { Input as AntDInput, Table as AntDTable } from 'antd' -import mockData, { DataType, dateFormat } from '__mocks__/table_mock_data' +import mockData, { Data, dateFormat } from '__mocks__/table_mock_data' import mockData0, { Person } from '../fixtures/0_sample_data' import { mount, ReactWrapper } from 'enzyme' import { Table, TableProps } from '..' /* Helper functions */ -export function createTable(tableProps: TableProps) { +export function createTable(tableProps: TableProps) { return (
- {...tableProps} /> + {...tableProps} />
) } @@ -44,6 +44,7 @@ export function formatDate({ : moment(unixTS).format(displayFormat) } +const mockOnRowClick = jest.fn() let wrapper: ReactWrapper beforeEach(() => { @@ -51,7 +52,7 @@ beforeEach(() => { }) afterEach(() => { - wrapper.unmount() + jest.resetAllMocks() }) describe('Table', () => { @@ -82,7 +83,7 @@ describe('Table', () => { }) it('renders all types and formats of data', () => { - wrapper = mount(createTable(mockData)) + wrapper = mount(createTable(mockData)) const expected = { _FORMATTED_DATA: [ formatDate({ @@ -95,6 +96,7 @@ describe('Table', () => { date: 1599193037581, icon: 'test', icon_key: 'dassana', + id: 0, key: 0, link: 'test', number: 0, @@ -168,7 +170,7 @@ describe('Table search and searchProps', () => { it('it renders the search bar to the right if searchProps.placement is passed as right', async () => { wrapper = mount( - createTable({ + createTable({ ...mockData, searchProps: { placement: 'right' } }) @@ -184,7 +186,7 @@ describe('Table search and searchProps', () => { it('correctly passes the placeholder prop to the searchbar input', () => { wrapper = mount( - createTable({ + createTable({ ...mockData, searchProps: { placeholder: 'Mock placeholder' } }) @@ -196,10 +198,8 @@ describe('Table search and searchProps', () => { }) }) -describe('Table onRowClick', () => { +describe('Table onRowClick, activeRowKey', () => { it('calls onRowClick handler when a table row is clicked', () => { - const mockOnRowClick = jest.fn() - wrapper = mount( createTable({ ...mockData0, onRowClick: mockOnRowClick }) ) @@ -213,4 +213,19 @@ describe('Table onRowClick', () => { it('does not pass an onRow prop if onRowClick prop does not exist', () => { expect(wrapper.find(AntDTable).props().onRow).toBeFalsy() }) + + it('applies the active row styles if activeRowKey index passed with a valid key', () => { + wrapper = mount( + createTable({ + ...mockData0, + activeRowKey: 0, + onRowClick: mockOnRowClick + }) + ) + + // eslint-disable-next-line quotes + const tableRow = wrapper.find('tr[data-row-key=0]') + + expect(tableRow.getDOMNode().classList.toString()).toContain('active') + }) }) diff --git a/src/components/Table/__tests__/utils.test.tsx b/src/components/Table/__tests__/utils.test.tsx index a069aae4..c9736416 100644 --- a/src/components/Table/__tests__/utils.test.tsx +++ b/src/components/Table/__tests__/utils.test.tsx @@ -1,16 +1,50 @@ import { formatDate } from './Table.test' -import mockData0 from '../fixtures/0_sample_data' import mockData2 from '../fixtures/2_sample_data' import { ColumnFormats, ColumnType, ColumnTypes } from '..' import { createByteFormatter, createDateFormatter, + mapData, mapFilterKeys, processColumns, processData } from '../utils' +import mockData0, { Person } from '../fixtures/0_sample_data' import mockData1, { dateFormat0, dateFormat1 } from '../fixtures/1_sample_data' +describe('mapData', () => { + it('returns a hash of data items with the item id mapped to the item', () => { + const mockMappedData = { + 0: { + age: 36, + id: 0, + name: 'Lorem' + }, + 1: { + age: 32, + id: 1, + name: 'Ipsum' + }, + 2: { + age: 45, + id: 2, + name: 'Amet' + }, + 3: { + age: 50, + id: 3, + name: 'Elit' + }, + 4: { + age: 22, + id: 4, + name: 'Dolor' + } + } + expect(mapData(mockData0.data)).toMatchObject(mockMappedData) + }) +}) + describe('processColumns', () => { it('returns correctly formatted columns', () => { const mockProcessedCols = [ diff --git a/src/components/Table/fixtures/0_sample_data.ts b/src/components/Table/fixtures/0_sample_data.ts index b3742a3d..672b3481 100644 --- a/src/components/Table/fixtures/0_sample_data.ts +++ b/src/components/Table/fixtures/0_sample_data.ts @@ -2,47 +2,53 @@ import { ColumnType, ColumnTypes, TableProps } from '../.' export interface Person { name: string + id: number | string age: number } const { number, string } = ColumnTypes +const columns: ColumnType[] = [ + { + dataIndex: 'name', + title: 'Name', + type: string + }, + { + dataIndex: 'age', + title: 'Age', + type: number + } +] + const data: Person[] = [ { age: 36, + id: 0, name: 'Lorem' }, { age: 32, + id: 1, name: 'Ipsum' }, { age: 45, + id: 2, name: 'Amet' }, { age: 50, + id: 3, name: 'Elit' }, { age: 22, + id: 4, name: 'Dolor' } ] -const columns: ColumnType[] = [ - { - dataIndex: 'name', - title: 'Name', - type: string - }, - { - dataIndex: 'age', - title: 'Age', - type: number - } -] - const tableData0: TableProps = { columns, data } export default tableData0 diff --git a/src/components/Table/fixtures/1_sample_data.ts b/src/components/Table/fixtures/1_sample_data.ts index 6ca73a06..66a0a0af 100644 --- a/src/components/Table/fixtures/1_sample_data.ts +++ b/src/components/Table/fixtures/1_sample_data.ts @@ -2,11 +2,12 @@ import { DateDisplayFormat } from '../types' import { ColumnFormats, ColumnType, ColumnTypes, TableProps } from '..' export interface File { - file_name: string - data_size: number created_at: number - updated_at?: number // Pass an optional type if there will be missing data + data_size: number + id: number + file_name: string last_opened?: number + updated_at?: number // Pass an optional type if there will be missing data } export const dateFormat0 = 'MMM D, YYYY h:mm A' @@ -55,29 +56,34 @@ const data: File[] = [ created_at: 1598400668681, data_size: 1048576, file_name: 'IMG_4542.jpeg', + id: 0, last_opened: 1598400668681 }, { created_at: 1582330066861, data_size: 1998576, file_name: 'test_123.png', + id: 1, last_opened: 1603779899922 }, { created_at: 1553223066861, data_size: 1024, file_name: 'passwords.txt', + id: 2, updated_at: 1582330063211 }, { created_at: 1511022066861, data_size: 4194599, - file_name: 'birthday.mp4' + file_name: 'birthday.mp4', + id: 3 }, { created_at: 1515021066861, data_size: 2048, file_name: 'letter.txt', + id: 4, updated_at: 1515121066861 } ] diff --git a/src/components/Table/fixtures/2_sample_data.ts b/src/components/Table/fixtures/2_sample_data.ts index 1ffefa98..d28d7a9f 100644 --- a/src/components/Table/fixtures/2_sample_data.ts +++ b/src/components/Table/fixtures/2_sample_data.ts @@ -5,12 +5,13 @@ const { component, number, string } = ColumnTypes const { date, icon, link, toggle, tag } = ColumnFormats export interface Client { - name: string - start_date: number - role: { name: string; color: string } - linked_in: string admin_access: boolean company: IconName + id: number + linked_in: string + name: string + role: { name: string; color: string } + start_date: number } const columns: ColumnType[] = [ @@ -65,6 +66,7 @@ const data: Client[] = [ { admin_access: true, company: 'azure', + id: 0, linked_in: 'lorem-i', name: 'Lorem Ipsum', role: { color: 'blue', name: 'CEO' }, @@ -73,6 +75,7 @@ const data: Client[] = [ { admin_access: false, company: 'aws', + id: 1, linked_in: 'dolor-s', name: 'Dolor Sit', role: { color: 'magenta', name: 'Software Engineer' }, @@ -81,6 +84,7 @@ const data: Client[] = [ { admin_access: true, company: 'dassana', + id: 2, linked_in: 'amet-c', name: 'Amet Consectetur', role: { color: 'green', name: 'Designer' }, @@ -89,6 +93,7 @@ const data: Client[] = [ { admin_access: false, company: 'googleCloudService', + id: 3, linked_in: 'duis-irure', name: 'Duis Irure', role: { color: 'purple', name: 'Business Development' }, diff --git a/src/components/Table/fixtures/3_sample_data.ts b/src/components/Table/fixtures/3_sample_data.ts index dcdbac41..bf62036c 100644 --- a/src/components/Table/fixtures/3_sample_data.ts +++ b/src/components/Table/fixtures/3_sample_data.ts @@ -4,12 +4,13 @@ const { component, number, string } = ColumnTypes const { date, icon, link, toggle, tag } = ColumnFormats export interface Client1 { - name?: string - start_date?: number - role?: { name: string; color: string } - linked_in?: string admin_access?: boolean company?: string + id: number + linked_in?: string + name?: string + role?: { name: string; color: string } + start_date?: number } const columns: ColumnType[] = [ @@ -69,23 +70,27 @@ const data: Client1[] = [ { admin_access: false, company: 'dassana', + id: 0, linked_in: 'lorem-i', name: 'Lorem Ipsum', role: { color: 'blue', name: 'CEO' }, start_date: 1519782342212 }, { + id: 1, role: { color: 'magenta', name: 'Software Engineer' }, start_date: 1553932342212 }, { company: 'googleCloudService', + id: 2, linked_in: 'amet-c', name: 'Amet Consectetur' }, { admin_access: true, company: 'azure', + id: 3, linked_in: 'duis-irure', name: 'Duis Irure', role: { color: 'purple', name: 'Business Development' }, diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx index 34dd53bb..02cb562c 100644 --- a/src/components/Table/index.tsx +++ b/src/components/Table/index.tsx @@ -3,31 +3,23 @@ import 'antd/lib/pagination/style/index.css' import { Table as AntDTable } from 'antd' import cn from 'classnames' import { CommonComponentProps } from '../types' -import { createUseStyles } from 'react-jss' import debounce from 'lodash/debounce' import Fuse from 'fuse.js' import { getDataTestAttributeProp } from '../utils' import { Input } from '../Input' -import { styleguide } from 'components/assets/styles' -import { ColumnType, ParentDataType } from './types' -import { mapFilterKeys, processColumns, processData } from './utils' -import React, { ChangeEvent, ReactElement, useCallback, useState } from 'react' - -const { flexDown, spacing } = styleguide - -const useStyles = createUseStyles({ - searchBar: { - alignSelf: props => - props.searchProps.placement === 'right' ? 'flex-end' : 'flex-start', - marginBottom: spacing.m - }, - tableContainer: { - ...flexDown - } -}) - -export interface OnRowClick { - (data: DataType, rowIndex: number): void +import { useStyles } from './styles' +import { ColumnType, TableData } from './types' +import { mapData, mapFilterKeys, processColumns, processData } from './utils' +import React, { + ChangeEvent, + Key, + useCallback, + useEffect, + useState +} from 'react' + +export interface OnRowClick { + (data: TableData, rowIndex: number): void } export interface SearchProps { @@ -41,9 +33,13 @@ export interface SearchProps { placement?: 'left' | 'right' } -export interface TableProps extends CommonComponentProps { +export interface TableProps extends CommonComponentProps { /** - * Array of classes to pass to button. + * Key(id) of active row if onRowClick exists + */ + activeRowKey?: Key + /** + * Array of classes to pass to Table */ classes?: string[] /** @@ -53,22 +49,24 @@ export interface TableProps extends CommonComponentProps { /** * Array of data objects */ - data: DataType[] + data: TableData[] /** * Optional callback that runs when a table row is clicked */ - onRowClick?: OnRowClick + onRowClick?: OnRowClick> /** - * Optional prop to enable/disable table search. + * Optional prop to enable/disable table search */ search?: boolean /** - * Optional props for search input. + * Optional props for search input */ searchProps?: SearchProps } -export function Table({ +// eslint-disable-next-line comma-spacing +export const Table = ({ + activeRowKey = '', classes = [], columns, data, @@ -76,14 +74,34 @@ export function Table({ onRowClick, search = true, searchProps = {} as SearchProps -}: TableProps): ReactElement { +}: TableProps) => { const [searchTerm, setSearchTerm] = useState('') - const [filteredData, setFilteredData] = useState([]) + const [filteredData, setFilteredData] = useState[]>([]) + + const tableClasses = useStyles({ + onRowClick, + searchProps + }) + + const [mappedData, setMappedData] = useState(mapData>(data)) + const [processedColumns, setProcessedColumns] = useState( + processColumns>(columns) + ) + const [processedData, setProcessedData] = useState( + processData>(data, columns) + ) - const tableClasses = useStyles({ searchProps }) + useEffect(() => { + setMappedData(mapData>(data)) + }, [data]) - const processedColumns = processColumns(columns) - const processedData = processData(data, columns) + useEffect(() => { + setProcessedColumns(processColumns>(columns)) + }, [columns]) + + useEffect(() => { + setProcessedData(processData>(data, columns)) + }, [columns, data]) const delayedSearch = useCallback( debounce(q => searchTable(q), 250), @@ -96,25 +114,36 @@ export function Table({ threshold: 0.1 }) + const getRowClassName = (record: TableData, _: number) => + cn({ + [tableClasses.activeRow]: onRowClick && activeRowKey === record.key, + [tableClasses.row]: true + }) + + const getRowKey = (record: TableData) => record.key + + const handleChange = (e: ChangeEvent) => + delayedSearch(e.target.value) + const searchTable = (value: string) => { setSearchTerm(value) const filteredData = fuse .search(value) - .map(({ item }: Fuse.FuseResult): DataType => item) + .map( + ({ item }: Fuse.FuseResult>): TableData => + item + ) setFilteredData(filteredData) } - const handleChange = (e: ChangeEvent) => - delayedSearch(e.target.value) - let optionalProps = {} if (onRowClick) { optionalProps = { - onRow: (_: Record, rowIndex: number) => ({ - onClick: () => onRowClick(data[rowIndex], rowIndex) + onRow: (record: Record, rowIndex: number) => ({ + onClick: () => onRowClick(mappedData[record.id], rowIndex) }) } } @@ -132,6 +161,8 @@ export function Table({ diff --git a/src/components/Table/styles.ts b/src/components/Table/styles.ts new file mode 100644 index 00000000..a4c1c401 --- /dev/null +++ b/src/components/Table/styles.ts @@ -0,0 +1,275 @@ +import { createUseStyles } from 'react-jss' +import { TableProps } from '.' +import { styleguide, themedStyles, ThemeType } from 'components/assets/styles' + +const { + borderRadius, + colors: { blacks, grays, whites }, + flexDown, + font, + spacing +} = styleguide + +const { dark, light } = ThemeType + +const paginationPalette = { + [dark]: { + disabledBgColor: blacks.base, + hoverColor: blacks['lighten-80'] + }, + [light]: { + disabledBgColor: grays.base, + hoverColor: blacks['darken-20'] + } +} + +export const generatePaginationStyles = (themeType: ThemeType) => { + const { + base: { backgroundColor, borderColor, color }, + disabled + } = themedStyles[themeType] + + const { disabledBgColor, hoverColor } = paginationPalette[themeType] + + return { + '& .ant-pagination.ant-table-pagination > li': { + '&.ant-pagination-disabled, &.ant-pagination-disabled:hover': { + '& button.ant-pagination-item-link': { + backgroundColor: disabledBgColor, + borderColor, + color: disabled.color + } + }, + '&.ant-pagination-item, & button.ant-pagination-item-link': { + '& a': { color }, + backgroundColor, + borderColor, + borderRadius, + color + }, + '&.ant-pagination-item.ant-pagination-item-active, &.ant-pagination-item:hover, &:hover': { + '& a': { color: hoverColor }, + '& button.ant-pagination-item-link': { + borderColor: hoverColor, + color: hoverColor + }, + borderColor: hoverColor + }, + borderRadius + } + } +} + +const tablePalette = { + [dark]: { + arrow: { + active: blacks['lighten-60'], + base: blacks['lighten-30'] + }, + td: { + active: { + background: blacks['darken-40'] + }, + base: { + background: blacks.base, + border: blacks['darken-40'] + }, + hover: { + background: blacks['darken-20'] + }, + sort: { + background: blacks['darken-20'] + } + }, + th: { + base: { + background: blacks['darken-20'] + }, + sort: { + background: blacks['darken-40'] + } + } + }, + [light]: { + arrow: { + active: blacks['lighten-30'], + base: blacks['lighten-60'] + }, + td: { + active: { + background: grays.base + }, + base: { + background: whites.base, + border: grays.base + }, + hover: { + background: grays['lighten-40'] + }, + sort: { + background: grays['lighten-40'] + } + }, + th: { + base: { + background: grays['lighten-40'] + }, + sort: { + background: grays.base + } + } + } +} + +const generateTableStyles = (themeType: ThemeType) => { + const { + base: { color } + } = themedStyles[themeType] + + const { arrow, td, th } = tablePalette[themeType] + + return { + ...flexDown, + '& .ant-table-wrapper': { + ...generatePaginationStyles(themeType), + '& .ant-table': { + '& > .ant-table-container': { + '& table': { + '& .ant-table-thead > tr > th': { + '& > .ant-table-column-sorters > .ant-table-column-sorter': { + '& .active': { + color: arrow.active + }, + color: arrow.base + }, + '&.ant-table-column-sort': { + background: th.sort.background + }, + background: th.base.background, + borderBottom: 'none', + borderRadius: 0, + color, + fontWeight: 400 + } + }, + cursor: 'default' + }, + background: td.base.background + } + } + } +} + +const cellClasses = '& > td' +const lastCellAfterClasses = '&:last-child::after' +const rowClasses = '&.ant-table-row.ant-table-row-level-0' +const rowHoverCellClasses = '&:hover > td' + +const generateThemedCellStyles = (themeType: ThemeType) => { + const { + base: { color } + } = themedStyles[themeType] + + const { td } = tablePalette[themeType] + + return { + [cellClasses]: { + '&.ant-table-column-sort': { + background: td.sort.background + }, + background: td.base.background, + borderBottom: `1px solid ${td.base.border}`, + color + }, + [rowHoverCellClasses]: { + background: td.hover.background + } + } +} + +const generateThemedActiveCellStyles = (themeType: ThemeType) => { + const { td } = tablePalette[themeType] + + return { + background: td.active.background + } +} + +const generateThemedRowIconStyles = (themeType: ThemeType, active = false) => { + const { arrow } = tablePalette[themeType] + + return { + color: active ? arrow.active : arrow.base + } +} + +const generateLightRowIconStyles = (isActive = false) => ({ + ...generateThemedRowIconStyles(light, isActive), + content: (props: TableProps<{}>) => (props.onRowClick ? '"\u27e9"' : '""'), + fontSize: font.body.fontSize, + lineHeight: '12px', + position: 'absolute', + right: spacing.l, + top: `calc(50% - ${font.body.fontSize / 2}px)` +}) + +export const useStyles = createUseStyles({ + activeRow: {}, + row: { + [rowClasses]: { + '&$activeRow': { + [cellClasses]: { + ...generateThemedActiveCellStyles(light), + [lastCellAfterClasses]: generateLightRowIconStyles(true) + } + }, + [cellClasses]: { + ...generateThemedCellStyles(light)[cellClasses], + '&:last-child': { + paddingRight: props => + props.onRowClick ? 2 * spacing.l : spacing.m + }, + cursor: props => (props.onRowClick ? 'pointer' : 'default'), + fontWeight: 300 + }, + [rowHoverCellClasses]: { + ...generateThemedCellStyles(light)[rowHoverCellClasses], + [lastCellAfterClasses]: generateLightRowIconStyles() + } + } + }, + searchBar: { + alignSelf: props => + props.searchProps.placement === 'right' ? 'flex-end' : 'flex-start', + marginBottom: spacing.m + }, + tableContainer: generateTableStyles(light), + // eslint-disable-next-line sort-keys + '@global': { + [`.${dark}`]: { + '& $row': { + [rowClasses]: { + '&$activeRow': { + [cellClasses]: { + ...generateThemedActiveCellStyles(dark), + [lastCellAfterClasses]: generateThemedRowIconStyles( + dark, + true + ) + } + }, + [cellClasses]: { + ...generateThemedCellStyles(dark)[cellClasses] + }, + [rowHoverCellClasses]: { + ...generateThemedCellStyles(dark)[rowHoverCellClasses], + [lastCellAfterClasses]: generateThemedRowIconStyles( + dark + ) + } + } + }, + '& $tableContainer': generateTableStyles(dark) + } + } +}) diff --git a/src/components/Table/types.ts b/src/components/Table/types.ts index f3ea9a84..c5dfa417 100644 --- a/src/components/Table/types.ts +++ b/src/components/Table/types.ts @@ -94,6 +94,8 @@ type ComponentType = export type ColumnType = StringType | NumberType | ComponentType -export interface ParentDataType extends Record { - id?: Key +export interface DataId extends Record { + id: Key } + +export type TableData = Data & DataId diff --git a/src/components/Table/utils.tsx b/src/components/Table/utils.tsx index e9b32d64..acabcfce 100644 --- a/src/components/Table/utils.tsx +++ b/src/components/Table/utils.tsx @@ -7,9 +7,9 @@ import { ColumnFormats, ColumnType, ColumnTypes, + DataId, DateDisplayFormat, - NumberDateType, - ParentDataType + NumberDateType } from './types' import { Icon, IconName, IconProps } from '../Icon' import { Link, LinkProps } from '../Link' @@ -18,23 +18,37 @@ import { Toggle, ToggleProps } from '../Toggle' /* ------- Exported Functions ------- */ +interface MappedData { + [id: string]: TableData +} + +export const mapData = (data: TableData[]) => { + const mappedData: MappedData = {} + + for (const item of data) { + mappedData[item.id] = item + } + + return mappedData +} + /* Takes columns prop passed to Table and returns columns formatted to satisfy antD requirements. */ -export function processColumns( +export function processColumns( columns: ColumnType[] ) { return columns.map(column => { const { dataIndex, title, sort = true } = column - const antDColumn: AntDColumnType = { + const antDColumn: AntDColumnType = { dataIndex, showSorterTooltip: false, title } - applyRender(column, antDColumn) + applyRender(column, antDColumn) if (sort) { - applySort(column, antDColumn) + applySort(column, antDColumn) } return antDColumn @@ -47,16 +61,16 @@ Takes data prop passed to Table and returns data: 2. with an added _FORMATTED_DATA key and array of formatted data value (this makes rows searchable by formatted data). */ -export function processData( - data: DataType[], +export function processData( + data: TableData[], columns: ColumnType[] ) { const mappedFormat = mapDataIndexToFormatter(columns) - return data.map((item, i) => ({ + return data.map(item => ({ ...item, _FORMATTED_DATA: createFormattedData(mappedFormat, item), - key: item.id ? item.id : i + key: item.id })) } @@ -105,7 +119,7 @@ export function mapFilterKeys(columns: ColumnType[]) { based on data type and format. */ function compareStrings(column: ColumnType) { - return (a: ParentDataType, b: ParentDataType) => { + return (a: Record, b: Record) => { const compareValA: string = a[column.dataIndex] || '' const compareValB: string = b[column.dataIndex] || '' @@ -114,7 +128,7 @@ function compareStrings(column: ColumnType) { } function compareNumbers(column: ColumnType) { - return (a: ParentDataType, b: ParentDataType) => { + return (a: Record, b: Record) => { const valA = a[column.dataIndex] const valB = b[column.dataIndex] @@ -128,7 +142,7 @@ function compareNumbers(column: ColumnType) { function compareTags(column: ColumnType) { /* Note: If BE doesn't send exactly { color: 'blue', name: 'CEO' } as data, this will break. */ - return (a: ParentDataType, b: ParentDataType) => { + return (a: Record, b: Record) => { const valA = a[column.dataIndex] const valB = b[column.dataIndex] @@ -140,7 +154,7 @@ function compareTags(column: ColumnType) { } function compareBooleans(column: ColumnType) { - return (a: ParentDataType, b: ParentDataType) => { + return (a: Record, b: Record) => { const valA = a[column.dataIndex] const valB = b[column.dataIndex] @@ -152,9 +166,9 @@ function compareBooleans(column: ColumnType) { } /* Sets antD column sorter prop as appropriate compare function. */ -function applySort( +function applySort( column: ColumnType, - antDColumn: AntDColumnType + antDColumn: AntDColumnType ) { const { component, number, string } = ColumnTypes const { icon, link, tag, toggle } = ColumnFormats @@ -193,9 +207,9 @@ depending on data type and format. Render function takes data value as input and returns a custom formatted value( can be a string or React Element). */ -function applyRender( +function applyRender( column: ColumnType, - antDColumn: AntDColumnType + antDColumn: AntDColumnType ) { const { component, number } = ColumnTypes const { byte, date, icon, link, tag, toggle } = ColumnFormats @@ -311,9 +325,9 @@ function applyRender( Creates array of formatted data so that rows can be searched and filtered by formatted data. */ -function createFormattedData( +function createFormattedData( mappedFormat: Record, - item: DataType + item: TableData ) { // @ts-ignore return Object.keys(mappedFormat).map(key => mappedFormat[key](item[key])) diff --git a/src/components/Toggle/index.tsx b/src/components/Toggle/index.tsx index 00909ba9..c821dd89 100644 --- a/src/components/Toggle/index.tsx +++ b/src/components/Toggle/index.tsx @@ -32,6 +32,10 @@ export interface ToggleProps extends CommonComponentProps { * Determines whether the Switch is checked */ checked: boolean + /** + * Determines whether the Switch is checked by default + */ + defaultChecked?: boolean /** * Whether switch will be disabled */ @@ -46,6 +50,7 @@ export const Toggle: FC = ({ checked, classes = [], dataTag, + defaultChecked = false, disabled = false, onChange, size = 'default' @@ -56,6 +61,7 @@ export const Toggle: FC = ({ const antDProps = { checked, + defaultChecked, disabled, onChange, size diff --git a/src/components/Toggle/utils.ts b/src/components/Toggle/utils.ts index facd0bad..6b06ce26 100644 --- a/src/components/Toggle/utils.ts +++ b/src/components/Toggle/utils.ts @@ -1,7 +1,7 @@ import colors from 'components/assets/styles/colors' import { ThemeType } from 'components/assets/styles/themes' -const { blacks, whites } = colors +const { blacks, grays, whites } = colors const { dark, light } = ThemeType @@ -9,7 +9,7 @@ const togglePalette = { [dark]: { active: { primary: blacks['lighten-30'], - secondary: blacks['lighten-90'] + secondary: grays.base }, disabled: { primary: blacks['lighten-10'], @@ -24,7 +24,7 @@ const togglePalette = { active: { primary: blacks.base, secondary: whites.base }, disabled: { primary: blacks['lighten-80'], - secondary: blacks['lighten-90'] + secondary: grays.base }, inactive: { primary: blacks['lighten-50'], diff --git a/src/components/Tree/TreeSkeleton.tsx b/src/components/Tree/TreeSkeleton.tsx index 62b10e38..02195e46 100644 --- a/src/components/Tree/TreeSkeleton.tsx +++ b/src/components/Tree/TreeSkeleton.tsx @@ -1,16 +1,18 @@ import { createUseStyles } from 'react-jss' import random from 'lodash/random' import { Skeleton } from '../Skeleton' +import { styleguide } from 'components/assets/styles' import times from 'lodash/times' import React, { FC, Fragment, Key } from 'react' +const { flexAlignCenter } = styleguide + const useStyles = createUseStyles({ skeletonLabel: { marginLeft: 5 }, treeNodeSkeleton: { - alignItems: 'center', - display: 'flex', + ...flexAlignCenter, marginLeft: props => (props.nestLevel ? props.nestLevel * 20 : 0), paddingBottom: 10 } diff --git a/src/components/assets/styles/colors.ts b/src/components/assets/styles/colors.ts index e83a22c6..7d660a02 100644 --- a/src/components/assets/styles/colors.ts +++ b/src/components/assets/styles/colors.ts @@ -2,19 +2,33 @@ import { ColorManipulationTypes, manipulateColor } from 'components/utils' const { shade, tint } = ColorManipulationTypes -const black = '#282A35' -const white = '#FEFEFE' +enum Colors { + black = 'black', + blue = 'blue', + gray = 'gray', + green = 'green', + orange = 'orange', + red = 'red', + white = 'white' +} + +const { black, blue, gray, green, orange, red, white } = Colors -const blue = '#2F54EB' -const green = '#59C93D' -const orange = '#EEAB47' -const red = '#EE5C47' +const baseColors = { + [black]: '#282A35', + [blue]: '#2F54EB', + [gray]: '#EAEAEB', + [green]: '#59C93D', + [orange]: '#EEAB47', + [red]: '#EE5C47', + [white]: '#FEFEFE' +} -const lightenPercentages = [10, 20, 30, 40, 50, 60, 70, 80, 90] -const darkenPercentages = [10, 20] +interface Base { + base: string +} -interface LightShadeType { - 'lighten-90': string +interface BlackTints { 'lighten-80': string 'lighten-70': string 'lighten-60': string @@ -25,63 +39,72 @@ interface LightShadeType { 'lighten-10': string } -interface DarkShadeType { +interface BlackShades { 'darken-10': string 'darken-20': string + 'darken-40': string } -interface ShadeType extends LightShadeType, DarkShadeType { - base: string -} +type Blacks = Base & BlackShades & BlackTints -const generateLightShades = (baseColor: string, percentArr: number[]) => { - const shades: LightShadeType = {} as LightShadeType +interface Grays extends Base { + 'lighten-70': string + 'lighten-40': string +} - percentArr.forEach(percentage => { - const shadeKey = `lighten-${percentage}` as keyof LightShadeType - shades[shadeKey] = manipulateColor(baseColor, percentage, tint) - }) +const percentages: Record = { + [black]: { + darken: [10, 20, 40], + lighten: [10, 20, 30, 40, 50, 60, 70, 80] + }, + [gray]: { lighten: [40, 70] } +} - return shades +interface GenerateColors { + ( + baseColor: string, + type: ColorManipulationTypes.shade | ColorManipulationTypes.tint, + percentArr: number[] + ): Record } -const generateDarkShades = (baseColor: string, percentArr: number[]) => { - const shades: DarkShadeType = {} as DarkShadeType +const generateColors: GenerateColors = (baseColor, type, percentArr = []) => { + const colors = {} as Record percentArr.forEach(percentage => { - const shadeKey = `darken-${percentage}` as keyof DarkShadeType - shades[shadeKey] = manipulateColor(baseColor, percentage, shade) + const key = + type === shade ? `darken-${percentage}` : `lighten-${percentage}` + + colors[key] = manipulateColor(baseColor, percentage, type) }) - return shades + return colors } -const generateShades = (baseColor: string) => { - const shades: ShadeType = { - base: baseColor, - ...generateLightShades(baseColor, lightenPercentages), - ...generateDarkShades(baseColor, darkenPercentages) - } - - return shades -} +const generateTintsAndShades = (color: Colors) => ({ + base: baseColors[color], + ...generateColors(baseColors[color], tint, percentages[color]?.lighten), + ...generateColors(baseColors[color], shade, percentages[color]?.darken) +}) export interface ColorsType { - blacks: ShadeType + blacks: Blacks blues: { base: string } + grays: Grays greens: { base: string } oranges: { base: string } reds: { base: string } - whites: { base: string; 'darken-5': string } + whites: { base: string } } const colors: ColorsType = { - blacks: generateShades(black), - blues: { base: blue }, - greens: { base: green }, - oranges: { base: orange }, - reds: { base: red }, - whites: { base: white, 'darken-5': manipulateColor(white, 5, shade) } + blacks: generateTintsAndShades(black) as Blacks, + blues: { base: baseColors[blue] }, + grays: generateTintsAndShades(gray) as Grays, + greens: { base: baseColors[green] }, + oranges: { base: baseColors[orange] }, + reds: { base: baseColors[red] }, + whites: { base: baseColors[white] } } export default colors diff --git a/src/components/assets/styles/styleguide.ts b/src/components/assets/styles/styleguide.ts index e6002933..4922eca6 100644 --- a/src/components/assets/styles/styleguide.ts +++ b/src/components/assets/styles/styleguide.ts @@ -17,6 +17,10 @@ export const fieldErrorStyles = { export const styleguide = { borderRadius: 4, colors, + flexAlignCenter: { + alignItems: 'center', + display: 'flex' + }, flexCenter: { alignItems: 'center', display: 'flex', @@ -26,6 +30,11 @@ export const styleguide = { display: 'flex', flexDirection: 'column' }, + flexJustifyCenter: { + display: 'flex', + justifyContent: 'center' + }, + flexSpaceBetween: { display: 'flex', justifyContent: 'space-between' diff --git a/src/components/assets/styles/themes.ts b/src/components/assets/styles/themes.ts index 54f7a9cd..6592e11b 100644 --- a/src/components/assets/styles/themes.ts +++ b/src/components/assets/styles/themes.ts @@ -1,6 +1,6 @@ import colors from './colors' -const { blacks, greens, oranges, reds, whites } = colors +const { blacks, greens, grays, oranges, reds, whites } = colors export enum ThemeType { dark = 'dark', @@ -36,20 +36,20 @@ export interface Theme { const lightPalette: Theme = { background: { primary: whites.base, - secondary: blacks['lighten-90'] + secondary: grays.base }, border: blacks['lighten-80'], primary: blacks.base, secondary: blacks['lighten-30'], state: { active: blacks.base, - disabled: blacks['lighten-90'], + disabled: grays.base, error: reds.base, hover: blacks.base, inactive: blacks['lighten-70'], loading: { - primary: blacks['lighten-90'], - secondary: whites['darken-5'] + primary: grays.base, + secondary: grays['lighten-40'] }, success: greens.base, warning: oranges.base