From a26001c2e74b680fe37c022ba7f53630b70116a7 Mon Sep 17 00:00:00 2001 From: srijanjeet Date: Mon, 21 Feb 2022 16:46:27 +0530 Subject: [PATCH 1/2] New Design --- .github/workflows/node.js.yml | 25 +- package-lock.json | 446 ++++++++++++++++++++++-- package.json | 3 + public/index.html | 11 +- src/App.js | 27 +- src/actions/upsolve.actions.js | 40 +++ src/assets/Upsolve/reload.png | Bin 0 -> 20144 bytes src/assets/Upsolve/tags-icon2.png | Bin 0 -> 36463 bytes src/helpers/Upsolve/PracticeApi.js | 57 +++ src/helpers/Upsolve/SimpleApi.js | 59 ++++ src/helpers/Upsolve/Upsolve.js | 64 ++++ src/helpers/Upsolve/VirtualApi.js | 55 +++ src/pages/Navbar.js | 82 +++++ src/pages/Upsolve/CarouselUpsolve.js | 124 +++++++ src/pages/Upsolve/CommonContestCard.js | 11 + src/pages/Upsolve/CommonQues.js | 43 +++ src/pages/Upsolve/Lastpages.js | 94 +++++ src/pages/Upsolve/Toggle.js | 133 +++++++ src/pages/Upsolve/Validate.js | 64 ++++ src/pages/Upsolve/mainUpsolve.js | 144 ++++++++ src/styles/Navbar/Navigation.css | 126 +++++++ src/styles/Upsolve/upsolve.css | 457 +++++++++++++++++++++++++ src/utils/Upsolveresponsive.js | 8 + yarn.lock | 183 ++++++++-- 24 files changed, 2170 insertions(+), 86 deletions(-) create mode 100644 src/actions/upsolve.actions.js create mode 100644 src/assets/Upsolve/reload.png create mode 100644 src/assets/Upsolve/tags-icon2.png create mode 100644 src/helpers/Upsolve/PracticeApi.js create mode 100644 src/helpers/Upsolve/SimpleApi.js create mode 100644 src/helpers/Upsolve/Upsolve.js create mode 100644 src/helpers/Upsolve/VirtualApi.js create mode 100644 src/pages/Navbar.js create mode 100644 src/pages/Upsolve/CarouselUpsolve.js create mode 100644 src/pages/Upsolve/CommonContestCard.js create mode 100644 src/pages/Upsolve/CommonQues.js create mode 100644 src/pages/Upsolve/Lastpages.js create mode 100644 src/pages/Upsolve/Toggle.js create mode 100644 src/pages/Upsolve/Validate.js create mode 100644 src/pages/Upsolve/mainUpsolve.js create mode 100644 src/styles/Navbar/Navigation.css create mode 100644 src/utils/Upsolveresponsive.js diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c126b8c..ef413da 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -2,13 +2,12 @@ name: CI/CD on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] jobs: build: - runs-on: ubuntu-latest strategy: @@ -16,16 +15,16 @@ jobs: node-version: [12.x] steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - - name: Set up Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} - - name: Install dependencies - run: npm install + - name: Install dependencies + run: npm install - - name: Build - run: npm run build + - name: Build + run: npm run build diff --git a/package-lock.json b/package-lock.json index 9d1820a..296ed93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,9 @@ "query-string": "^7.0.1", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-elastic-carousel": "^0.11.5", + "react-icons": "^4.3.1", + "react-multi-carousel": "^2.6.5", "react-router": "^6.0.2", "react-router-dom": "^6.0.2", "react-scripts": "4.0.3" @@ -151,11 +154,14 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { @@ -251,11 +257,14 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { @@ -333,9 +342,12 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { "version": "7.12.17", @@ -1318,13 +1330,15 @@ } }, "node_modules/@babel/types": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", - "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { @@ -1368,6 +1382,33 @@ "node": ">=10" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "peer": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "peer": true + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "peer": true + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "peer": true + }, "node_modules/@eslint/eslintrc": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", @@ -3582,6 +3623,27 @@ "node": ">=8" } }, + "node_modules/babel-plugin-styled-components": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz", + "integrity": "sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "peer": true + }, "node_modules/babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -4724,6 +4786,12 @@ "node": ">=6" } }, + "node_modules/camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=", + "peer": true + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -5478,6 +5546,15 @@ "node": ">=6.0.0" } }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -5619,6 +5696,23 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "node_modules/css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "peer": true, + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/css-to-react-native/node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "peer": true + }, "node_modules/css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -8627,6 +8721,21 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -14449,16 +14558,83 @@ "react": "17.0.2" } }, + "node_modules/react-elastic-carousel": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/react-elastic-carousel/-/react-elastic-carousel-0.11.5.tgz", + "integrity": "sha512-//k1IWUiUNXXNE8LHw4bLdP+8YCXLQHbeSOPiZo/+sTkUBp/YB/hjGKWH4RqSJ59AjF8PoxB+SUbqhdPTcwAuw==", + "dependencies": { + "classnames": "^2.2.6", + "react-only-when": "^1.0.2", + "react-swipeable": "^5.5.1", + "resize-observer-polyfill": "1.5.0" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "prop-types": "^15.5.4", + "react": "15 - 17", + "react-dom": "15 - 17", + "styled-components": "^5.1.0" + } + }, + "node_modules/react-elastic-carousel/node_modules/react-only-when": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-only-when/-/react-only-when-1.0.2.tgz", + "integrity": "sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q==", + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "prop-types": "^15.5.4", + "react": "^15.0.0 || ^16.0.0", + "react-dom": "^15.0.0 || ^16.0.0" + } + }, + "node_modules/react-elastic-carousel/node_modules/react-swipeable": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz", + "integrity": "sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw==", + "dependencies": { + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "^16.0.0-0" + } + }, + "node_modules/react-elastic-carousel/node_modules/resize-observer-polyfill": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz", + "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" + }, "node_modules/react-error-overlay": { "version": "6.0.9", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" }, + "node_modules/react-icons": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz", + "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" }, + "node_modules/react-multi-carousel": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/react-multi-carousel/-/react-multi-carousel-2.6.5.tgz", + "integrity": "sha512-i5iuAm5XRT/h7uBL9/pGWeRsQXzqvjBrPVP1sobKgDKEvfZuKFpYp/alaQhTRM56Jtkb8jZpSqLn52Ku6jJbDg==", + "engines": { + "node": ">=8" + } + }, "node_modules/react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -16823,6 +16999,48 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/styled-components": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.3.tgz", + "integrity": "sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -19237,11 +19455,11 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -19328,11 +19546,11 @@ } }, "@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { @@ -19410,9 +19628,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/helper-validator-option": { "version": "7.12.17", @@ -20178,12 +20396,11 @@ } }, "@babel/types": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", - "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -20216,6 +20433,33 @@ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "peer": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "peer": true + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "peer": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "peer": true + }, "@eslint/eslintrc": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", @@ -21914,6 +22158,24 @@ } } }, + "babel-plugin-styled-components": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz", + "integrity": "sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==", + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "peer": true + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -22869,6 +23131,12 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=", + "peer": true + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -23497,6 +23765,12 @@ "postcss": "^7.0.5" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", + "peer": true + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -23593,6 +23867,25 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "peer": true, + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "peer": true + } + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -25918,6 +26211,23 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "peer": true, + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + } + } + }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -30366,16 +30676,59 @@ "scheduler": "^0.20.2" } }, + "react-elastic-carousel": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/react-elastic-carousel/-/react-elastic-carousel-0.11.5.tgz", + "integrity": "sha512-//k1IWUiUNXXNE8LHw4bLdP+8YCXLQHbeSOPiZo/+sTkUBp/YB/hjGKWH4RqSJ59AjF8PoxB+SUbqhdPTcwAuw==", + "requires": { + "classnames": "^2.2.6", + "react-only-when": "^1.0.2", + "react-swipeable": "^5.5.1", + "resize-observer-polyfill": "1.5.0" + }, + "dependencies": { + "react-only-when": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-only-when/-/react-only-when-1.0.2.tgz", + "integrity": "sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q==", + "requires": {} + }, + "react-swipeable": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz", + "integrity": "sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw==", + "requires": { + "prop-types": "^15.6.2" + } + }, + "resize-observer-polyfill": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz", + "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" + } + } + }, "react-error-overlay": { "version": "6.0.9", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" }, + "react-icons": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz", + "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", + "requires": {} + }, "react-is": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" }, + "react-multi-carousel": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/react-multi-carousel/-/react-multi-carousel-2.6.5.tgz", + "integrity": "sha512-i5iuAm5XRT/h7uBL9/pGWeRsQXzqvjBrPVP1sobKgDKEvfZuKFpYp/alaQhTRM56Jtkb8jZpSqLn52Ku6jJbDg==" + }, "react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -32223,6 +32576,35 @@ } } }, + "styled-components": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.3.tgz", + "integrity": "sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==", + "peer": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", diff --git a/package.json b/package.json index 01c1ab9..d6c713a 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "query-string": "^7.0.1", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-elastic-carousel": "^0.11.5", + "react-icons": "^4.3.1", + "react-multi-carousel": "^2.6.5", "react-router": "^6.0.2", "react-router-dom": "^6.0.2", "react-scripts": "4.0.3" diff --git a/public/index.html b/public/index.html index 7fb47ab..050d51a 100644 --- a/public/index.html +++ b/public/index.html @@ -2,13 +2,14 @@ - + - + diff --git a/src/App.js b/src/App.js index 3f4904b..69156f4 100644 --- a/src/App.js +++ b/src/App.js @@ -10,9 +10,6 @@ import { import Homepage from './pages/Homepage' import Login from './pages/LogReg/Login' import Register from './pages/LogReg/Register' -import CodeforcesUp from './pages/Upsolve/CodeforcesUp' -import CodechefUp from './pages/Upsolve/CodechefUp' -import AtcoderUp from './pages/Upsolve/AtcoderUp' import Parent from './pages/Ladders-Practice/Parent' import Profile from './pages/Profile/Profile' import FillInfo from './pages/LogReg/FillInfo' @@ -34,6 +31,9 @@ import TermsAndConditions from './pages/ExtraInfo/TermsAndConditions' import Contests from '../src/pages/Contests/Contests' import { Layout, Menu } from 'antd' import ContestAPI from './actions/Contest' +import mainUpsolve from './pages/Upsolve/mainUpsolve' +import { atcoder, codechef, codeforces } from './actions/upsolve.actions' +import Navbar from './pages/Navbar' const { Header, Footer, Content } = Layout @@ -116,7 +116,7 @@ const App = () => { <> -
+ {/*
{new Array(7).fill(null).map((_, index) => { @@ -124,7 +124,9 @@ const App = () => { return {`nav ${key}`} })} -
+
*/} + + @@ -135,11 +137,20 @@ const App = () => { } /> } /> {/* Login/Registration */} - } /> + {/* Codeforces upsolve */} - } /> + {/* Atcoder Upsolve */} - } /> + {/* Codechef upsolve */} } /> {/* Homepage */} } /> diff --git a/src/actions/upsolve.actions.js b/src/actions/upsolve.actions.js new file mode 100644 index 0000000..bf41ad3 --- /dev/null +++ b/src/actions/upsolve.actions.js @@ -0,0 +1,40 @@ +export async function codeforces(accessToken, vir, page) { + return fetch( + `https://api.codedigger.tech/problems/upsolve/codeforces?${ + vir ? `virtual=true;page=${page}` : `page=${page}` + }`, + { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + } + ) +} +export async function codechef(accessToken, page) { + return fetch( + `https://api.codedigger.tech/problems/upsolve/codechef?page=${page}`, + { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + } + ) +} +export async function atcoder(accessToken, page, Prac) { + return fetch( + `https://api.codedigger.tech/problems/upsolve/atcoder?${ + Prac ? `practice=true;page=${page}` : `page=${page}` + }`, + { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + } + ) +} diff --git a/src/assets/Upsolve/reload.png b/src/assets/Upsolve/reload.png new file mode 100644 index 0000000000000000000000000000000000000000..7401ba0439eaefe1f2d1adb998864b3d075d99a8 GIT binary patch literal 20144 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 kNHJvoK1B{v;zyH$b}Iw~x+Hq)$ literal 0 HcmV?d00001 diff --git a/src/assets/Upsolve/tags-icon2.png b/src/assets/Upsolve/tags-icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a8a6c547a95acbf2124a82860ab435e4369842 GIT binary patch literal 36463 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 Yp_+LAxcYz-0|2}X^-XS9=-Ea54_lR6H2?qr literal 0 HcmV?d00001 diff --git a/src/helpers/Upsolve/PracticeApi.js b/src/helpers/Upsolve/PracticeApi.js new file mode 100644 index 0000000..f749476 --- /dev/null +++ b/src/helpers/Upsolve/PracticeApi.js @@ -0,0 +1,57 @@ +async function PracticeAPI( + setFirstPage, + setLastPage, + page, + PracticeToggle, + setPracticeToggle, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform +) { + const creds = JSON.parse(localStorage.getItem('creds')) + const acessToken = creds.access + const response = await platform(acessToken, page, PracticeToggle) + if (response.status === 200) { + const data = await response.json() + if (data.status === 'OK' && data.result.length > 0) { + const newLinks = data.links + setFirstPage(newLinks.first.split('=')[1]) + setLastPage(newLinks.last.split('=')[1]) + if (newLinks.prev !== null) { + setPreviousPage(newLinks.prev.split('=')[1]) + } + if (newLinks.next !== null) { + setNextPage(newLinks.next.split('=')[1]) + } + setLastPage(data.meta.last_page) + setCurrentPage(data.meta.current_page) + const result = await data.result + await setData(result) + } else if (PracticeToggle == true) { + localStorage.setItem( + 'err', + 'Please practice or compete to view this page' + ) + window.location = '/home' + } else { + setPracticeToggle(true) + } + + setLoader(false) + } else { + const data = await response.json() + + if ( + data.error === + "You haven't Entered your Atcoder Handle in your Profile.. Update Now!" + ) { + localStorage.setItem('err', data.error) + window.location = '/home' + } + } +} + +export default PracticeAPI diff --git a/src/helpers/Upsolve/SimpleApi.js b/src/helpers/Upsolve/SimpleApi.js new file mode 100644 index 0000000..b3ee974 --- /dev/null +++ b/src/helpers/Upsolve/SimpleApi.js @@ -0,0 +1,59 @@ +async function SimpleAPIData( + setFirstPage, + setLastPage, + page, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform +) { + const creds = JSON.parse(localStorage.getItem('creds')) + const acessToken = creds.access + const response = await platform(acessToken, page) + + if (response.status === 200) { + const data = await response.json() + + if (data.status === 'OK') { + if (data.result.length > 0) { + const newLinks = data.links + await setFirstPage(newLinks.first.split('=')[1]) + + await setLastPage(newLinks.last.split('=')[1]) + + if (newLinks.prev !== null) { + setPreviousPage(newLinks.prev.split('=')[1]) + } + if (newLinks.next !== null) { + setNextPage(newLinks.next.split('=')[1]) + } + await setLastPage(data.meta.last_page) + await setCurrentPage(data.meta.current_page) + } else { + localStorage.setItem( + 'err', + 'Codechef upsolve is available when you participate in atleast one contest' + ) + window.location = '/home' + } + } else { + localStorage.setItem('err', 'No contest found for this handle') + window.location = '/home' + } + + const result = await data.result + await setData(result) + setLoader(false) + } else if (response.status == 500) { + localStorage.setItem('err', 'No contest found for this handle') + window.location = '/home' + } else { + const data = await response.json() + localStorage.setItem('err', data.error) + window.location = '/home' + } +} + +export default SimpleAPIData diff --git a/src/helpers/Upsolve/Upsolve.js b/src/helpers/Upsolve/Upsolve.js new file mode 100644 index 0000000..de6fac5 --- /dev/null +++ b/src/helpers/Upsolve/Upsolve.js @@ -0,0 +1,64 @@ +import SimpleAPIData from './SimpleApi' +import PracticeAPI from './PracticeApi' +import virtualAPI from './VirtualApi' + +function APIData( + datarequired, + setFirstPage, + setLastPage, + page, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform, + PracticeToggle, + setPracticeToggle, + virtualDataToggle, + setvirtualDataToggle +) { + if (datarequired === 'simpleData') { + SimpleAPIData( + setFirstPage, + setLastPage, + page, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform + ) + } else if (datarequired === 'PracticeData') { + PracticeAPI( + setFirstPage, + setLastPage, + page, + PracticeToggle, + setPracticeToggle, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform + ) + } else if (datarequired === 'virtualData') { + virtualAPI( + setFirstPage, + setLastPage, + page, + virtualDataToggle, + setvirtualDataToggle, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform + ) + } +} + +export default APIData diff --git a/src/helpers/Upsolve/VirtualApi.js b/src/helpers/Upsolve/VirtualApi.js new file mode 100644 index 0000000..70689df --- /dev/null +++ b/src/helpers/Upsolve/VirtualApi.js @@ -0,0 +1,55 @@ +async function virtualAPI( + setFirstPage, + setLastPage, + page, + virtualDataToggle, + setvirtualDataToggle, + setPreviousPage, + setNextPage, + setCurrentPage, + setData, + setLoader, + platform +) { + const creds = JSON.parse(localStorage.getItem('creds')) + const acessToken = creds.access + + const response = await platform(acessToken, virtualDataToggle, page) + if (response.status == 200) { + const data = await response.json() + + if (data.status === 'OK') { + if (data.result.length > 0) { + const newLinks = data.links + setFirstPage(newLinks.first.split('=')[1]) + setLastPage(newLinks.last.split('=')[1]) + if (newLinks.prev !== null) { + setPreviousPage(newLinks.prev.split('=')[1]) + } + if (newLinks.next !== null) { + setNextPage(newLinks.next.split('=')[1]) + } + await setLastPage(data.meta.last_page) + setCurrentPage(data.meta.current_page) + } else if (virtualDataToggle == false) { + setvirtualDataToggle(true) + } else { + localStorage.setItem( + 'err', + 'Codeforces upsolve is available when you participate in atleast one contest(official/virtual)' + ) + window.location = '/home' + } + } + + const result = await data.result + await setData(result) + setLoader(false) + } else { + setLoader(false) + localStorage.setItem('err', data.error) + window.location = '/home' + } +} + +export default virtualAPI diff --git a/src/pages/Navbar.js b/src/pages/Navbar.js new file mode 100644 index 0000000..34a51d0 --- /dev/null +++ b/src/pages/Navbar.js @@ -0,0 +1,82 @@ +import React, { useState } from 'react' +import logo1 from '../assets/Common/codedigger-logo-64px.png' +import '../styles/Navbar/Navigation.css' +import { GiHamburgerMenu } from 'react-icons/gi' + +export default function Navbar() { + const [hamOnclick, sethamOnclick] = useState(false) + return ( + <> + + + ) +} diff --git a/src/pages/Upsolve/CarouselUpsolve.js b/src/pages/Upsolve/CarouselUpsolve.js new file mode 100644 index 0000000..79b45bb --- /dev/null +++ b/src/pages/Upsolve/CarouselUpsolve.js @@ -0,0 +1,124 @@ +import React from 'react' +import { Row, Col } from 'antd' +// import Carousel from 'react-multi-carousel' +import Carousel from 'react-elastic-carousel' +import CommonCard from './CommonContestCard' +import CommonQues from './CommonQues' +import RESPONSIVE from '../../utils/Upsolveresponsive' +import 'react-multi-carousel/lib/styles.css' +import { + FaExclamationCircle, + FaRegPauseCircle, + FaCheckCircle, + FaArrowAltCircleUp, +} from 'react-icons/fa' + +const slicingQname = (s) => { + const t = s.length + if (t > 12) { + return `${s.substring(0, 12)}....` + } else { + return s + } +} + +export default function Carousel_Upsolve(props) { + return ( + <> + + +

+ + + + + + + {props.problems.map((prob) => { + if (prob.status === 'solved') { + if (props.notAttemptedToggle == false) { + return ( + +
+ } + /> +
+ + ) + } + } else if (prob.status === 'wrong') { + return ( + + {' '} +
+ } + /> +
+ + ) + } else if (prob.status === 'upsolved') { + if (props.notAttemptedToggle == false) { + return ( + +
+ } + /> +
+ + ) + } + } else if (prob.status == 'not_attempt') { + return ( + + {' '} +
+ } + /> +
+ + ) + } + })} +
+ +
+ + ) +} diff --git a/src/pages/Upsolve/CommonContestCard.js b/src/pages/Upsolve/CommonContestCard.js new file mode 100644 index 0000000..b694459 --- /dev/null +++ b/src/pages/Upsolve/CommonContestCard.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default function CommonCard(props) { + return ( +
+
+
{props.name}
+
+
+ ) +} diff --git a/src/pages/Upsolve/CommonQues.js b/src/pages/Upsolve/CommonQues.js new file mode 100644 index 0000000..1e0248d --- /dev/null +++ b/src/pages/Upsolve/CommonQues.js @@ -0,0 +1,43 @@ +import React from 'react' +import { Popover, Button } from 'antd' +import Tags from '../../assets/Upsolve/tags-icon2.png' +import { FaFolderPlus } from 'react-icons/fa' + +export default function CommonQues(props) { + return ( + <> + +
+ {props.sitename !== 'atcoder' ? ( + +
+ {props.tags.substr(2, props.tags.length - 1)} +
+
+ } + > + + + ) : ( + ' ' + )} +
+ + {' '} + {props.icon}{' '} + + {props.status} +
+ + + ) +} diff --git a/src/pages/Upsolve/Lastpages.js b/src/pages/Upsolve/Lastpages.js new file mode 100644 index 0000000..e9fce18 --- /dev/null +++ b/src/pages/Upsolve/Lastpages.js @@ -0,0 +1,94 @@ +import React from 'react' +import '../../styles/Upsolve/upsolve.css' + +export default function lastpages(props) { + return ( + <> + + + ) +} diff --git a/src/pages/Upsolve/Toggle.js b/src/pages/Upsolve/Toggle.js new file mode 100644 index 0000000..8552a8e --- /dev/null +++ b/src/pages/Upsolve/Toggle.js @@ -0,0 +1,133 @@ +import React from 'react' +import { Switch } from 'antd' +import { BsFillBarChartFill, BsFillInfoCircleFill } from 'react-icons/bs' +import { FiRefreshCw } from 'react-icons/fi' +import { + FaExclamationCircle, + FaRegPauseCircle, + FaCheckCircle, + FaArrowAltCircleUp, + FaSignal, +} from 'react-icons/fa' +import { Checkbox } from 'antd' + +export default function Toggle(props) { + return ( + <> +
+
+ +
+ +
+

Upsolve

+

+ Lorem ipsum dolor, sit amet consectetur adipisicing elit. Magni a + eligendi repellendus est odit, illo cum aliquam quasi, sit non iste + fuga, vitae eum rerum exercitationem. Laborum quasi impedit quas. +

+
+
+
+

Status

+ { + props.setUpdate(props.update + 1) + }} + className="upsolveRefresh" + > + + +
+ +
+ { + props.setnotAttemptedToggle(!props.notAttemptedToggle) + }} + > + {' '} + + + {' '} + / + + + {' '} + +
+
+ { + props.setPracticeToggle(!props.PracticeToggle) + props.setvirtualPracticeToggle(!props.virtualPracticeToggle) + props.setnextPage(1) + }} + > + {' '} + Virtual Only{' '} + + + + +
+
im
+
+ + {/* +

{props.siteName}

+ +
+ +
+
+
Include Practice
+
+ { + props.setPracticeToggle(!props.PracticeToggle) + props.setvirtualPracticeToggle(!props.virtualPracticeToggle) + props.setnextPage(1) + }} + /> +
+
+
+
Only Wrong/Not Attempted
+
+ { + props.setnotAttemptedToggle(!props.notAttemptedToggle) + }} + /> +
+
+
+ +
+
*/} +
+ + ) +} diff --git a/src/pages/Upsolve/Validate.js b/src/pages/Upsolve/Validate.js new file mode 100644 index 0000000..d0a71cb --- /dev/null +++ b/src/pages/Upsolve/Validate.js @@ -0,0 +1,64 @@ +async function Validate() { + let count = 0 + + const toValidate = await JSON.parse(localStorage.getItem('creds')) + if (toValidate === null) { + localStorage.setItem('err', 'Please login to continue...') + window.location = '/login' + } else { + const acc = toValidate.access + const ref = toValidate.refresh + const first = toValidate.first + const username = toValidate.username + const response = await fetch( + `https://api.codedigger.tech/auth/check-auth/`, + { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${acc}`, + }, + } + ) + // console.log("validation"); + + if (response.status !== 200) { + const refResponse = await fetch( + 'https://api.codedigger.tech/auth/token/refresh/', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + refresh: ref, + }), + } + ) + + //refResponse gives access token if valid ref token is passed else not + + if (refResponse.status == 200) { + // console.log('getting new'); + + const newData = await refResponse.json() + const newAcc = newData.access + localStorage.setItem( + 'creds', + JSON.stringify({ + access: newAcc, + refresh: ref, + first: first, + username: username, + }) + ) + window.location = '/home' + } else { + localStorage.clear() + localStorage.setItem('err', 'Please login to continue...') + window.location = '/login' + } + } + } +} +export default Validate diff --git a/src/pages/Upsolve/mainUpsolve.js b/src/pages/Upsolve/mainUpsolve.js new file mode 100644 index 0000000..ea9c4b8 --- /dev/null +++ b/src/pages/Upsolve/mainUpsolve.js @@ -0,0 +1,144 @@ +import React, { useState, useEffect } from 'react' +import Validate from './Validate' +import Toggle from './Toggle' +import Carousel_Upsolve from './CarouselUpsolve' +import Lastpages from './Lastpages' +import { Spin, Alert } from 'antd' +import APIData from '../../helpers/Upsolve/Upsolve.js' +import logo from '../../assets/SitesImages/Codechef/codechef-png.png' +import refresh from '../../assets/Upsolve/reload.png' +import '../../styles/Upsolve/upsolve.css' + +const mainUpsolve = (requiredData, platform, siteName) => { + const [notAttemptedToggle, setnotAttemptedToggle] = useState(false) + const pageNumbers = [] + const [nextpage, setnextPage] = useState(1) + const [loader, setLoader] = useState(false) + const [previousPage, setpreviousPage] = useState(null) + const [next, setNext] = useState(2) + const [firstPage, setFirstPage] = useState(1) + const [lastPage, setLastpage] = useState(null) + const [APIdata, setData] = useState([]) + + const [virtualPracticeToggle, setvirtualPracticeToggle] = useState(false) + const [PracticeToggle, setPracticeToggle] = useState(false) + + const [currentPage, setcurrentPage] = useState(1) + let [update, setUpdate] = useState(0) + + useEffect(() => { + setFirstPage(null) + setLastpage(null) + setnextPage(nextpage) + setpreviousPage(null) + setNext(null) + Validate() + + APIData( + requiredData, + setFirstPage, + setLastpage, + nextpage, + setpreviousPage, + setNext, + setcurrentPage, + setData, + setLoader, + platform, + PracticeToggle, + setPracticeToggle, + virtualPracticeToggle, + setvirtualPracticeToggle + ) + }, [ + nextpage, + virtualPracticeToggle, + notAttemptedToggle, + PracticeToggle, + update, + ]) + + if (lastPage != null) { + for (let i = 1; i <= lastPage; i++) { + pageNumbers.push(i) + } + } + + return ( + <> + {/* */} + + {loader ? ( + // + + + + ) : ( +
+ {APIdata.length > 0 ? ( + <> + + {APIdata.map((res) => { + return ( + <> + {res.problems.length > 0 ? ( + <> + + + ) : ( + <> + )} + + ) + })} + +
+ +
+ {/*
*/} + + ) : ( + // +

Loading

+ )} +
+ )} + + ) +} +export default mainUpsolve diff --git a/src/styles/Navbar/Navigation.css b/src/styles/Navbar/Navigation.css new file mode 100644 index 0000000..66d94c4 --- /dev/null +++ b/src/styles/Navbar/Navigation.css @@ -0,0 +1,126 @@ +.main-nav { + margin: 0; + padding: 0; + width: 100%; + height: 4rem; + display: grid; + grid-template-columns: 2rem 1fr 2fr 1fr 1rem; + background-color: black; + position: sticky; + top: 0; + z-index: 99; +} + +.leftSide { + display: flex; + align-items: center; + background: none; + grid-column: 2/3; + height: 4rem; +} +.logo { + display: flex; + align-items: center; + justify-content: center; + background: none; +} +.logo h1 { + color: white; +} +.rightSide { + grid-column: 3/4; + height: 4rem; +} +.rightSide ul { + height: 4rem; + display: flex; + align-items: center; + justify-content: space-around; +} + +ul li { + list-style: none; + font-size: 15px; + padding: 3px 6px; +} +li a { + text-decoration: none; +} +ul li:hover { + cursor: pointer; + /* background-color: aquamarine; */ + background-color: rgb(5, 43, 53); + + color: black; + border-radius: 8px; + /* opacity: 0.8; */ +} +.btn { + display: flex; + justify-content: flex-end; + align-items: center; + height: 4rem; + grid-column: 4/5; + width: 100%; +} +button { + margin: 0 2px; + padding: 0.2rem 1rem; + border-radius: 6px; + border: 2px solid aqua; + background-color: black; + color: white; +} +button:hover { + cursor: pointer; + background-color: rgb(8, 83, 102); +} +.hamburger { + display: none; +} +.none { + display: none; +} + +@media only screen and (max-width: 800px) { + .btn button { + padding: 5px 6px; + } +} + +@media (max-width: 752px) { + .main-nav { + grid-template-columns: 2rem 1fr 1fr 0; + } + .rightSide { + display: none; + } + .btn button { + display: none; + } + .hamburger { + display: block; + font-size: 2.5rem; + } + .hamNavbar { + grid-column: 2/4; + z-index: 999; + background: black; + display: flex; + align-items: center; + padding-left: 0rem; + height: 20rem; + transition: all 2s linear; + transform-origin: top; + flex-direction: column; + position: relative; + top: 0; + padding: 0; + } + .hamNavbar ul li { + margin-bottom: 0.6rem; + } + .hamNavbar ul { + padding: 0; + } +} diff --git a/src/styles/Upsolve/upsolve.css b/src/styles/Upsolve/upsolve.css index e69de29..512716a 100644 --- a/src/styles/Upsolve/upsolve.css +++ b/src/styles/Upsolve/upsolve.css @@ -0,0 +1,457 @@ +* { + box-sizing: border-box; +} +.ant-row { + margin: 0; +} +.solved { + color: #30ec30; + height: 96px; + text-align: center; + padding-top: 10px; + background-color: #191c1f; + width: 14rem; + min-width: fit-content; + box-shadow: 2px 2px 2px 3px black; + overflow: auto; + border-left: 5px solid #00b88a; + padding-top: 1.25rem; + font-size: 1rem; +} +.wrong { + background-color: #191c1f; + color: white; + height: 96px; + width: 14rem; + text-align: center; + padding-top: 10px; + box-shadow: 2px 2px 2px 3px black; + min-width: fit-content; + overflow: auto; + border-left: 5px solid #ff3752; + padding-top: 1.25rem; + font-size: 1rem; +} +.upsolved { + color: tomato; + background-color: #191c1f; + height: 96px; + text-align: center; + width: 14rem; + padding-top: 10px; + box-shadow: 2px 2px 2px 3px black; + border-left: 2px solid lightskyblue; + min-width: fit-content; + overflow: auto; + border-left: 5px solid #ffb422; + padding-top: 1.25rem; + font-size: 1rem; +} +.contestName { + font-size: 1rem; + font-weight: 900; + box-shadow: 2px 2px 2px 3px black; + font-size: larger; + background-color: #191c1f; + height: 98px; + text-align: center; + padding-top: 10px; + margin-left: 1.2rem; + color: white; + display: flex; + justify-content: center; + width: 16rem; + align-items: center; + overflow: auto; + z-index: 3; +} + +.sc-gsDKAQ { + width: 245px !important; +} +.not_attempted { + background-color: #191c1f; + width: 14rem; + color: white; + box-shadow: 2px 2px 2px 3px black; + height: 96px; + text-align: center; + padding-top: 10px; + min-width: fit-content; + overflow: auto; + border-left: 5px solid #8141a8; + padding-top: 1.25rem; + font-size: 1rem; +} + +.contestRow { + height: 90px; + margin: 1rem 0; + border-radius: 10px; +} +.tags { + background: rgb(126, 122, 8); + background: linear-gradient( + 0deg, + rgba(126, 122, 8, 1) 0%, + rgba(253, 208, 45, 1) 91% + ); + border: 1px solid rgb(39, 38, 38); + border-radius: 5px; + margin-left: 8px; +} +.rec-pagination { + display: none !important; +} + +.TagImage { + position: absolute; + left: 12.5rem; + top: 4.5rem; + width: 25px; + height: 15px; + float: right; + background: none; +} + +Col { + border-radius: 10px; +} +.heads { + text-align: center; +} +.flags { + margin: auto; + display: flex; + justify-content: space-around; +} + +.virtualPracticeToggle { + float: right; + border-radius: 10px; + color: rgb(255, 250, 250); + background-color: rgb(0, 83, 161); + padding: 8px; +} +.box { + width: 20%; + margin: 0 auto; + background: rgba(255, 255, 255, 0.2); + padding: 5px; + border-radius: 20px/50px; + background-clip: padding-box; + text-align: center; +} + +.button { + font-size: 0.8rem; + padding: 5px; + color: #fff; + border: 2px solid #06d85f; + border-radius: 20px/50px; + text-decoration: none; + cursor: pointer; + transition: all 0.3s ease-out; +} +.button:hover { + background: #06d85f; +} + +.overlay { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(3, 3, 3, 0.7); + transition: opacity 500ms; + visibility: hidden; + opacity: 0; +} +.statusIcon { + margin-right: 1rem; +} +.overlay:target { + visibility: visible; + opacity: 1; +} +.btnUpdate { + float: right; + border-radius: 35px; +} +.popover { + margin: 2px auto; + padding: 2px; + background: #fff; + border-radius: 5px; + width: 20%; + position: relative; + transition: all 2s ease-in-out; + background-color: beige; +} + +.popover h2 { + margin-top: 0; + color: #333; + font-family: Tahoma, Arial, sans-serif; +} +.popover .close { + position: absolute; + top: 2px; + right: 30px; + transition: all 200ms; + font-size: 10px; + font-weight: bold; + text-decoration: none; + color: #333; +} +.popup .close:hover { + color: #06d85f; +} +.popup .content { + max-height: 10%; + overflow: auto; +} + +@media screen and (max-width: 700px) { + .box { + width: 40%; + } + .popup { + width: 40%; + } +} +.loading-animation { + display: block; + margin: auto; +} +.paginator { + text-align: center; + margin: auto; + padding: 30px; + display: block; +} +.pagination { + border-radius: 5px; + text-align: center; +} +a { + text-align: center; + text-decoration: none; + color: white; +} +.upperButtons { + display: flex; + justify-content: space-between; + margin-top: 20px; + padding: 2px; + border-radius: 3px; + margin: 2px; +} +.green { + color: #00b88a; +} +.red { + color: #ff3752; +} +.filterWrong { + color: #ff3752; +} +.viol { + color: #8141a8; +} +.filterNotAttempted { + color: #8141a8; +} +.blue { + color: #ffb422; +} +.tagsbox { + color: black; +} +.active-page { + background-color: rgb(0, 162, 255); + padding: 9px; + position: relative; + top: -0.32rem; +} + +.page-link { + background-color: black; +} +.paginate { + align-items: center; + display: flex; +} +.body { + padding-left: 8px; + overflow: hidden; + margin-bottom: 100px; +} + +.ant-switch { + margin-right: 1rem; + background-color: rgb(58, 55, 55); +} +.ant-switch-checked { + background-color: rgb(14, 94, 7); +} +.pagination { + display: flex; +} +.react-multi-carousel-item { + display: flex; + align-items: center; + justify-content: center; +} + +.page-link { + position: relative; + top: -0.9rem; + margin: 2px; +} +.TagImage:hover { + cursor: pointer; +} + +.contestName h6 { + background: none; + color: whitesmoke; + font-size: 0.9rem; +} + +.Sitename div { + display: flex; + flex-direction: column; +} + +.Right-Side { + display: flex; + float: right; +} +.Right-Side div { + float: right; + border-radius: 5px; +} +.Right-Side div div { + display: block; +} +.Right-Side div h6 { + font-size: 0.8rem; + padding-right: 1rem; + padding: 3px; + color: white; + margin-top: 2px; +} +.refreshImg { + width: 50px; + height: 48px; +} +.btnUpdate { + border: none; + height: 10%; + background: none; +} + +.switch { + display: block; + margin-left: 45px; +} +.ImgLogo { + width: 220px; + height: 30px; + background: white; +} + +.contestRow { + margin: 2.5rem 6rem !important; +} + +.qname { + display: flex; + justify-content: space-around; +} +.Cardcont { + background: none; +} + +.noDisplay { + display: none !important; +} +.heading { + color: white; + font-size: 3rem; +} + +.Sitename { + display: grid; + grid-template-columns: 1rem 0.5fr 2fr 0.6fr 3rem; + margin-top: 2rem; + margin-left: 9rem; + margin-right: 6rem; +} + +.upsolveIcon { + color: aqua; + font-size: 6rem; + border: 10px solid aqua; + padding: 0.8rem; + margin-right: 1rem; + grid-column: 2/3; + padding-left: 2rem; +} +.upsolveInfo { + display: flex; + flex-direction: column; + color: whitesmoke; + grid-column: 3/4; +} +.upsolveFilter { + background-color: #191c1f; + grid-column: 4/5; + padding: 1rem; +} +.upsolveFilter h4 { + color: white; +} +.upsolveRefresh { + color: aqua; + font-size: 1.5rem; + position: absolute; + right: 13%; +} +.upsolveRefresh svg:hover { + cursor: pointer; +} +.filterHeading { + display: flex; +} + +FaArrowAltCircleUp { + color: red; +} +.filterCheckbox { + margin-bottom: 6px; +} +.Spacing { + margin-left: 3rem; +} + +.rec-carousel .rec-arrow { + background-color: #191c1f; + color: #00b88a; + border-radius: 0; + height: 85%; + border-radius: 8px; + border: 2px solid black; +} + +.rec-arrow-left { + margin-left: 13px; +} + +.status { + display: flex; + justify-content: flex-start; + margin-left: 1.4rem; +} diff --git a/src/utils/Upsolveresponsive.js b/src/utils/Upsolveresponsive.js new file mode 100644 index 0000000..e958d94 --- /dev/null +++ b/src/utils/Upsolveresponsive.js @@ -0,0 +1,8 @@ +const RESPONSIVE = [ + { width: 1, itemsToShow: 1 }, + { width: 550, itemsToShow: 2 }, + { width: 768, itemsToShow: 3 }, + { width: 1300, itemsToShow: 4 }, +] + +export default RESPONSIVE diff --git a/yarn.lock b/yarn.lock index d3f88a5..d9dbddc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -114,12 +114,12 @@ "jsesc" "^2.5.1" "source-map" "^0.5.0" -"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": - "integrity" "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" - "version" "7.12.13" +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13", "@babel/helper-annotate-as-pure@^7.16.0": + "integrity" "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.16.7" "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": "integrity" "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==" @@ -195,12 +195,12 @@ dependencies: "@babel/types" "^7.12.17" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13": - "integrity" "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz" - "version" "7.12.13" +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": + "integrity" "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.16.7" "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.12.17": "integrity" "sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ==" @@ -269,10 +269,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-validator-identifier@^7.12.11": - "integrity" "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" - "version" "7.12.11" +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.16.7": + "integrity" "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" + "version" "7.16.7" "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": "integrity" "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" @@ -1181,7 +1181,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": "integrity" "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==" "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz" "version" "7.12.17" @@ -1196,13 +1196,12 @@ "globals" "^11.1.0" "lodash" "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - "integrity" "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz" - "version" "7.12.17" +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + "integrity" "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz" + "version" "7.16.8" dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - "lodash" "^4.17.19" + "@babel/helper-validator-identifier" "^7.16.7" "to-fast-properties" "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1233,6 +1232,28 @@ "resolved" "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz" "version" "3.4.0" +"@emotion/is-prop-valid@^0.8.8": + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + "version" "0.7.4" + +"@emotion/stylis@^0.8.4": + "integrity" "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + "resolved" "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" + "version" "0.8.5" + +"@emotion/unitless@^0.7.4": + "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + "version" "0.7.5" + "@eslint/eslintrc@^0.3.0": "integrity" "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==" "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz" @@ -2667,6 +2688,21 @@ "resolved" "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz" "version" "0.3.7" +"babel-plugin-styled-components@>= 1.12.0": + "integrity" "sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==" + "resolved" "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + "babel-plugin-syntax-jsx" "^6.18.0" + "lodash" "^4.17.11" + +"babel-plugin-syntax-jsx@^6.18.0": + "integrity" "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + "version" "6.18.0" + "babel-plugin-syntax-object-rest-spread@^6.8.0": "integrity" "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" "resolved" "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" @@ -3158,6 +3194,11 @@ "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" "version" "6.2.0" +"camelize@^1.0.0": + "integrity" "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + "resolved" "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz" + "version" "1.0.0" + "caniuse-api@^3.0.0": "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" @@ -3732,6 +3773,11 @@ dependencies: "postcss" "^7.0.5" +"css-color-keywords@^1.0.0": + "integrity" "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + "resolved" "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" + "version" "1.0.0" + "css-color-names@^0.0.4", "css-color-names@0.0.4": "integrity" "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" @@ -3804,6 +3850,15 @@ "domutils" "^2.8.0" "nth-check" "^2.0.1" +"css-to-react-native@^3.0.0": + "integrity" "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==" + "resolved" "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "camelize" "^1.0.0" + "css-color-keywords" "^1.0.0" + "postcss-value-parser" "^4.0.2" + "css-tree@^1.1.2": "integrity" "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==" "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz" @@ -5617,6 +5672,13 @@ "minimalistic-assert" "^1.0.0" "minimalistic-crypto-utils" "^1.0.1" +"hoist-non-react-statics@^3.0.0": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + "hoopy@^0.1.4": "integrity" "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" "resolved" "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" @@ -8935,9 +8997,9 @@ "version" "3.3.1" "postcss-value-parser@^4.0.2": - "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" - "version" "4.1.0" + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" "postcss-value-parser@^4.1.0": "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" @@ -9052,7 +9114,7 @@ "kleur" "^3.0.3" "sisteransi" "^1.0.5" -"prop-types@^15.7.2": +"prop-types@^15.5.4", "prop-types@^15.6.2", "prop-types@^15.7.2": "integrity" "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==" "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" "version" "15.7.2" @@ -9614,7 +9676,7 @@ "strip-ansi" "6.0.0" "text-table" "0.2.0" -"react-dom@*", "react-dom@^17.0.2", "react-dom@>= 16.9.0", "react-dom@>=16.0.0", "react-dom@>=16.8", "react-dom@>=16.9.0": +"react-dom@*", "react-dom@^15.0.0 || ^16.0.0", "react-dom@^17.0.2", "react-dom@>= 16.8.0", "react-dom@>= 16.9.0", "react-dom@>=16.0.0", "react-dom@>=16.8", "react-dom@>=16.9.0", "react-dom@15 - 17": "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" "version" "17.0.2" @@ -9623,26 +9685,56 @@ "object-assign" "^4.1.1" "scheduler" "^0.20.2" +"react-elastic-carousel@^0.11.5": + "integrity" "sha512-//k1IWUiUNXXNE8LHw4bLdP+8YCXLQHbeSOPiZo/+sTkUBp/YB/hjGKWH4RqSJ59AjF8PoxB+SUbqhdPTcwAuw==" + "resolved" "https://registry.npmjs.org/react-elastic-carousel/-/react-elastic-carousel-0.11.5.tgz" + "version" "0.11.5" + dependencies: + "classnames" "^2.2.6" + "react-only-when" "^1.0.2" + "react-swipeable" "^5.5.1" + "resize-observer-polyfill" "1.5.0" + "react-error-overlay@^6.0.9": "integrity" "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz" "version" "6.0.9" +"react-icons@^4.3.1": + "integrity" "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==" + "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz" + "version" "4.3.1" + "react-is@^16.12.0": "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" "version" "16.13.1" +"react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + "react-is@^16.8.1": "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" "version" "16.13.1" -"react-is@^17.0.1": +"react-is@^17.0.1", "react-is@>= 16.8.0": "integrity" "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz" "version" "17.0.1" +"react-multi-carousel@^2.6.5": + "integrity" "sha512-i5iuAm5XRT/h7uBL9/pGWeRsQXzqvjBrPVP1sobKgDKEvfZuKFpYp/alaQhTRM56Jtkb8jZpSqLn52Ku6jJbDg==" + "resolved" "https://registry.npmjs.org/react-multi-carousel/-/react-multi-carousel-2.6.5.tgz" + "version" "2.6.5" + +"react-only-when@^1.0.2": + "integrity" "sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q==" + "resolved" "https://registry.npmjs.org/react-only-when/-/react-only-when-1.0.2.tgz" + "version" "1.0.2" + "react-refresh@^0.8.3", "react-refresh@>=0.8.3 <0.10.0": "integrity" "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz" @@ -9729,7 +9821,14 @@ optionalDependencies: "fsevents" "^2.1.3" -"react@*", "react@^17.0.2", "react@>= 16", "react@>= 16.9.0", "react@>=16.0.0", "react@>=16.8", "react@>=16.9.0", "react@17.0.2": +"react-swipeable@^5.5.1": + "integrity" "sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw==" + "resolved" "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz" + "version" "5.5.1" + dependencies: + "prop-types" "^15.6.2" + +"react@*", "react@^15.0.0 || ^16.0.0", "react@^16.0.0-0", "react@^17.0.2", "react@>= 16", "react@>= 16.8.0", "react@>= 16.9.0", "react@>=16.0.0", "react@>=16.8", "react@>=16.9.0", "react@15 - 17", "react@17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -10004,6 +10103,11 @@ "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" "version" "1.5.1" +"resize-observer-polyfill@1.5.0": + "integrity" "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" + "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz" + "version" "1.5.0" + "resolve-cwd@^2.0.0": "integrity" "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=" "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" @@ -11003,6 +11107,22 @@ "loader-utils" "^2.0.0" "schema-utils" "^2.7.0" +"styled-components@^5.1.0", "styled-components@>= 2": + "integrity" "sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==" + "resolved" "https://registry.npmjs.org/styled-components/-/styled-components-5.3.3.tgz" + "version" "5.3.3" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + "babel-plugin-styled-components" ">= 1.12.0" + "css-to-react-native" "^3.0.0" + "hoist-non-react-statics" "^3.0.0" + "shallowequal" "^1.1.0" + "supports-color" "^5.5.0" + "stylehacks@^4.0.0": "integrity" "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==" "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" @@ -11019,6 +11139,13 @@ dependencies: "has-flag" "^3.0.0" +"supports-color@^5.5.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + "supports-color@^6.1.0": "integrity" "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" From 4d8ffbcf6192a5401c3a3ca00a43458be9f0b2c5 Mon Sep 17 00:00:00 2001 From: srijanjeet Date: Fri, 25 Feb 2022 22:32:40 +0530 Subject: [PATCH 2/2] Updated --- yarn.lock | 195 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 156 insertions(+), 39 deletions(-) diff --git a/yarn.lock b/yarn.lock index b9673d8..d9dbddc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -114,12 +114,12 @@ "jsesc" "^2.5.1" "source-map" "^0.5.0" -"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": - "integrity" "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" - "version" "7.12.13" +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13", "@babel/helper-annotate-as-pure@^7.16.0": + "integrity" "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.16.7" "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": "integrity" "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==" @@ -195,12 +195,12 @@ dependencies: "@babel/types" "^7.12.17" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13": - "integrity" "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz" - "version" "7.12.13" +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": + "integrity" "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.16.7" "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.12.17": "integrity" "sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ==" @@ -269,10 +269,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-validator-identifier@^7.12.11": - "integrity" "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" - "version" "7.12.11" +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.16.7": + "integrity" "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" + "version" "7.16.7" "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": "integrity" "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" @@ -1181,7 +1181,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": "integrity" "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==" "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz" "version" "7.12.17" @@ -1196,13 +1196,12 @@ "globals" "^11.1.0" "lodash" "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - "integrity" "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz" - "version" "7.12.17" +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + "integrity" "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz" + "version" "7.16.8" dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - "lodash" "^4.17.19" + "@babel/helper-validator-identifier" "^7.16.7" "to-fast-properties" "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1233,6 +1232,28 @@ "resolved" "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz" "version" "3.4.0" +"@emotion/is-prop-valid@^0.8.8": + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + "version" "0.7.4" + +"@emotion/stylis@^0.8.4": + "integrity" "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + "resolved" "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" + "version" "0.8.5" + +"@emotion/unitless@^0.7.4": + "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + "version" "0.7.5" + "@eslint/eslintrc@^0.3.0": "integrity" "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==" "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz" @@ -2667,6 +2688,21 @@ "resolved" "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz" "version" "0.3.7" +"babel-plugin-styled-components@>= 1.12.0": + "integrity" "sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==" + "resolved" "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + "babel-plugin-syntax-jsx" "^6.18.0" + "lodash" "^4.17.11" + +"babel-plugin-syntax-jsx@^6.18.0": + "integrity" "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + "version" "6.18.0" + "babel-plugin-syntax-object-rest-spread@^6.8.0": "integrity" "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" "resolved" "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" @@ -3158,6 +3194,11 @@ "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" "version" "6.2.0" +"camelize@^1.0.0": + "integrity" "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + "resolved" "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz" + "version" "1.0.0" + "caniuse-api@^3.0.0": "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" @@ -3732,6 +3773,11 @@ dependencies: "postcss" "^7.0.5" +"css-color-keywords@^1.0.0": + "integrity" "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + "resolved" "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" + "version" "1.0.0" + "css-color-names@^0.0.4", "css-color-names@0.0.4": "integrity" "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" @@ -3804,6 +3850,15 @@ "domutils" "^2.8.0" "nth-check" "^2.0.1" +"css-to-react-native@^3.0.0": + "integrity" "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==" + "resolved" "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "camelize" "^1.0.0" + "css-color-keywords" "^1.0.0" + "postcss-value-parser" "^4.0.2" + "css-tree@^1.1.2": "integrity" "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==" "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz" @@ -5617,6 +5672,13 @@ "minimalistic-assert" "^1.0.0" "minimalistic-crypto-utils" "^1.0.1" +"hoist-non-react-statics@^3.0.0": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + "hoopy@^0.1.4": "integrity" "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" "resolved" "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" @@ -8935,9 +8997,9 @@ "version" "3.3.1" "postcss-value-parser@^4.0.2": - "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" - "version" "4.1.0" + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" "postcss-value-parser@^4.1.0": "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" @@ -8994,11 +9056,6 @@ "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" "version" "1.0.4" -"prettier@^2.5.1": - "integrity" "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz" - "version" "2.5.1" - "pretty-bytes@^5.3.0": "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" @@ -9057,7 +9114,7 @@ "kleur" "^3.0.3" "sisteransi" "^1.0.5" -"prop-types@^15.7.2": +"prop-types@^15.5.4", "prop-types@^15.6.2", "prop-types@^15.7.2": "integrity" "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==" "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" "version" "15.7.2" @@ -9589,11 +9646,6 @@ "regenerator-runtime" "^0.13.7" "whatwg-fetch" "^3.4.1" -"react-circular-progressbar@^2.0.4": - "integrity" "sha512-OfX0ThSxRYEVGaQSt0DlXfyl5w4DbXHsXetyeivmoQrh9xA9bzVPHNf8aAhOIiwiaxX2WYWpLDB3gcpsDJ9oww==" - "resolved" "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.4.tgz" - "version" "2.0.4" - "react-dev-utils@^11.0.3": "integrity" "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==" "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" @@ -9624,7 +9676,7 @@ "strip-ansi" "6.0.0" "text-table" "0.2.0" -"react-dom@*", "react-dom@^17.0.2", "react-dom@>= 16.9.0", "react-dom@>=16.0.0", "react-dom@>=16.8", "react-dom@>=16.9.0": +"react-dom@*", "react-dom@^15.0.0 || ^16.0.0", "react-dom@^17.0.2", "react-dom@>= 16.8.0", "react-dom@>= 16.9.0", "react-dom@>=16.0.0", "react-dom@>=16.8", "react-dom@>=16.9.0", "react-dom@15 - 17": "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" "version" "17.0.2" @@ -9633,26 +9685,56 @@ "object-assign" "^4.1.1" "scheduler" "^0.20.2" +"react-elastic-carousel@^0.11.5": + "integrity" "sha512-//k1IWUiUNXXNE8LHw4bLdP+8YCXLQHbeSOPiZo/+sTkUBp/YB/hjGKWH4RqSJ59AjF8PoxB+SUbqhdPTcwAuw==" + "resolved" "https://registry.npmjs.org/react-elastic-carousel/-/react-elastic-carousel-0.11.5.tgz" + "version" "0.11.5" + dependencies: + "classnames" "^2.2.6" + "react-only-when" "^1.0.2" + "react-swipeable" "^5.5.1" + "resize-observer-polyfill" "1.5.0" + "react-error-overlay@^6.0.9": "integrity" "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz" "version" "6.0.9" +"react-icons@^4.3.1": + "integrity" "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==" + "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz" + "version" "4.3.1" + "react-is@^16.12.0": "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" "version" "16.13.1" +"react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + "react-is@^16.8.1": "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" "version" "16.13.1" -"react-is@^17.0.1": +"react-is@^17.0.1", "react-is@>= 16.8.0": "integrity" "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz" "version" "17.0.1" +"react-multi-carousel@^2.6.5": + "integrity" "sha512-i5iuAm5XRT/h7uBL9/pGWeRsQXzqvjBrPVP1sobKgDKEvfZuKFpYp/alaQhTRM56Jtkb8jZpSqLn52Ku6jJbDg==" + "resolved" "https://registry.npmjs.org/react-multi-carousel/-/react-multi-carousel-2.6.5.tgz" + "version" "2.6.5" + +"react-only-when@^1.0.2": + "integrity" "sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q==" + "resolved" "https://registry.npmjs.org/react-only-when/-/react-only-when-1.0.2.tgz" + "version" "1.0.2" + "react-refresh@^0.8.3", "react-refresh@>=0.8.3 <0.10.0": "integrity" "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz" @@ -9739,7 +9821,14 @@ optionalDependencies: "fsevents" "^2.1.3" -"react@*", "react@^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "react@^17.0.2", "react@>= 16", "react@>= 16.9.0", "react@>=16.0.0", "react@>=16.8", "react@>=16.9.0", "react@17.0.2": +"react-swipeable@^5.5.1": + "integrity" "sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw==" + "resolved" "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz" + "version" "5.5.1" + dependencies: + "prop-types" "^15.6.2" + +"react@*", "react@^15.0.0 || ^16.0.0", "react@^16.0.0-0", "react@^17.0.2", "react@>= 16", "react@>= 16.8.0", "react@>= 16.9.0", "react@>=16.0.0", "react@>=16.8", "react@>=16.9.0", "react@15 - 17", "react@17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -10014,6 +10103,11 @@ "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" "version" "1.5.1" +"resize-observer-polyfill@1.5.0": + "integrity" "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" + "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz" + "version" "1.5.0" + "resolve-cwd@^2.0.0": "integrity" "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=" "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" @@ -11013,6 +11107,22 @@ "loader-utils" "^2.0.0" "schema-utils" "^2.7.0" +"styled-components@^5.1.0", "styled-components@>= 2": + "integrity" "sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==" + "resolved" "https://registry.npmjs.org/styled-components/-/styled-components-5.3.3.tgz" + "version" "5.3.3" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + "babel-plugin-styled-components" ">= 1.12.0" + "css-to-react-native" "^3.0.0" + "hoist-non-react-statics" "^3.0.0" + "shallowequal" "^1.1.0" + "supports-color" "^5.5.0" + "stylehacks@^4.0.0": "integrity" "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==" "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" @@ -11029,6 +11139,13 @@ dependencies: "has-flag" "^3.0.0" +"supports-color@^5.5.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + "supports-color@^6.1.0": "integrity" "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" @@ -12222,4 +12339,4 @@ "yocto-queue@^0.1.0": "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" \ No newline at end of file + "version" "0.1.0"