diff --git a/package-lock.json b/package-lock.json index da23dd3..9abae53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1739,9 +1739,9 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" }, "@types/node": { - "version": "16.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.1.tgz", - "integrity": "sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" }, "@types/parse-json": { "version": "4.0.0", @@ -1759,9 +1759,9 @@ "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" }, "@types/react": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.24.tgz", - "integrity": "sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg==", + "version": "17.0.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.27.tgz", + "integrity": "sha512-zgiJwtsggVGtr53MndV7jfiUESTqrbxOcBvwfe6KS/9bzaVPCTDieTWnFNecVNx6EAaapg5xsLLWFfHHR437AA==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2349,15 +2349,15 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array-union": { @@ -2379,13 +2379,13 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" } }, "arrify": { @@ -2481,24 +2481,17 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.8.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.7.tgz", - "integrity": "sha512-7Hg99B1eTH5+LgmUBUSmov1Z3bsggQJS7v3IMGo6wcScnbRuvtMc871J9J+4bSbIqa9LSX/zypFXJ8sXHpMJeQ==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "requires": { "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001109", - "nanocolors": "^0.2.8", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "nanocolors": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.11.tgz", - "integrity": "sha512-83ttyvfJj66dKMadWfBkEUOEDFfRc8FpzTJvh1MySR/pzWFmFikTQZGOV6kHZRz7yR/heiQ1y/MHBBN5P/e7WQ==" - } } }, "aws-sign2": { @@ -3270,15 +3263,15 @@ } }, "browserslist": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", - "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", + "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", "requires": { - "caniuse-lite": "^1.0.30001259", - "electron-to-chromium": "^1.3.846", + "caniuse-lite": "^1.0.30001264", + "electron-to-chromium": "^1.3.857", "escalade": "^3.1.1", - "nanocolors": "^0.1.5", - "node-releases": "^1.1.76" + "node-releases": "^1.1.77", + "picocolors": "^0.2.1" } }, "bser": { @@ -3461,9 +3454,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001261", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz", - "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==" + "version": "1.0.30001264", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001264.tgz", + "integrity": "sha512-Ftfqqfcs/ePiUmyaySsQ4PUsdcYyXG2rfoBVsk3iY1ahHaJEw65vfb7Suzqm+cEkwwPIv/XWkg27iCpRavH4zA==" }, "capture-exit": { "version": "2.0.0", @@ -4732,9 +4725,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.852", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.852.tgz", - "integrity": "sha512-vNbdzbbx3d7TStoC0oIVYz6X/tIezHXnreI+4a8I7EqAQ9hpHulz3ar8xChUNcG77A+TtPSKz9B9Xwpt9e1B5w==" + "version": "1.3.859", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.859.tgz", + "integrity": "sha512-gXRXKNWedfdiKIzwr0Mg/VGCvxXzy+4SuK9hp1BDvfbCwx0O5Ot+2f4CoqQkqEJ3Zj/eAV/GoAFgBVFgkBLXuQ==" }, "elliptic": { "version": "6.5.4", @@ -4823,9 +4816,9 @@ } }, "es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -4838,7 +4831,9 @@ "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -6937,9 +6932,9 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" }, "is-glob": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.2.tgz", - "integrity": "sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -7028,6 +7023,11 @@ "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -7054,6 +7054,14 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8232,16 +8240,16 @@ "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" }, "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "requires": { - "mime-db": "1.49.0" + "mime-db": "1.50.0" } }, "mimic-fn": { @@ -8429,11 +8437,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, - "nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -8585,9 +8588,9 @@ } }, "node-releases": { - "version": "1.1.76", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", - "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==" + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" }, "normalize-package-data": { "version": "2.5.0", @@ -8741,34 +8744,33 @@ } }, "object.entries": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", - "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "object.fromentries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "object.pick": { @@ -8780,13 +8782,13 @@ } }, "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "obuf": { @@ -9128,6 +9130,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -9214,19 +9221,12 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "nanocolors": "^0.2.2", + "picocolors": "^0.2.1", "source-map": "^0.6.1" - }, - "dependencies": { - "nanocolors": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.11.tgz", - "integrity": "sha512-83ttyvfJj66dKMadWfBkEUOEDFfRc8FpzTJvh1MySR/pzWFmFikTQZGOV6kHZRz7yR/heiQ1y/MHBBN5P/e7WQ==" - } } }, "postcss-attribute-case-insensitive": { @@ -11510,9 +11510,9 @@ } }, "signal-exit": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz", - "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, "simple-swizzle": { "version": "0.2.2", @@ -11992,13 +11992,13 @@ } }, "string.prototype.matchall": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", - "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", "has-symbols": "^1.0.2", "internal-slot": "^1.0.3", diff --git a/src/App.js b/src/App.js index 74b4fcf..d5581cd 100644 --- a/src/App.js +++ b/src/App.js @@ -4,6 +4,7 @@ import styled from 'styled-components'; import ProdutoCar from './components/ProdutoCar'; import Up from './components/Up' import Carrinho from './components/Carrinho' +import ItemCarrinho from './components/ItemCarrinho'; const ProdutoApp = styled.div` display: grid; @@ -11,67 +12,70 @@ const ProdutoApp = styled.div` padding: 16px; gap: 8px; `; -const AddCartButton = styled.button` + + const AddCartButton = styled.button` align-self: center; margin-top: 4px; `; + + const produto = [ { id: 1, - name: "Trono de Vidro: Reino de Cinzas", + name: "Trono de Vidro: Reino de Cinzas", author: "Autor: Sarah J. Maas", - value: Number(46.89), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51-ucM+lQuL._SX335_BO1,204,203,200_.jpg", + value: Number(46.89), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51-ucM+lQuL._SX335_BO1,204,203,200_.jpg", }, { id: 2, - name: "A Menina que Roubava Livros", + name: "A Menina que Roubava Livros", author: "Autor: Markus Zusak", - value: Number(38.99), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/514GbfM-F4L._SX347_BO1,204,203,200_.jpg", + value: Number(38.99), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/514GbfM-F4L._SX347_BO1,204,203,200_.jpg", }, { id: 3, - name: "A garota do lago", + name: "A garota do lago", author: "Autor: Charlie Donlea", - value: Number(8.48), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/516VOgxwg2L._SX339_BO1,204,203,200_.jpg", + value: Number(8.48), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/516VOgxwg2L._SX339_BO1,204,203,200_.jpg", }, { id: 4, - name: "A rainha vermelha", + name: "A rainha vermelha", author: "Autor: Victoria Aveyard", - value: Number(23.99), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41rK-7HUAML._SX346_BO1,204,203,200_.jpg", + value: Number(23.99), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41rK-7HUAML._SX346_BO1,204,203,200_.jpg", }, { id: 5, - name: "Trono destruído", + name: "Trono destruído", author: "Autor: Victoria Aveyard", - value: Number(26.98), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41d3EwKB63L._SX339_BO1,204,203,200_.jpg", + value: Number(26.98), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41d3EwKB63L._SX339_BO1,204,203,200_.jpg", }, { id: 6, - name: "As Crônicas de Nárnia", + name: "As Crônicas de Nárnia", author: "Autor: C. S. Lewis", - value: Number(29.99), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51+2QAB7I+L._SX329_BO1,204,203,200_.jpg", + value: Number(29.99), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51+2QAB7I+L._SX329_BO1,204,203,200_.jpg", }, { id: 7, - name: "Trono de Vidro: Herdeira do fogo", + name: "Trono de Vidro: Herdeira do fogo", author: "Autor: Sarah J. Maas", - value: Number(27.98), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51nj67GhHkL._SX335_BO1,204,203,200_.jpg", + value: Number(27.98), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51nj67GhHkL._SX335_BO1,204,203,200_.jpg", }, { id: 8, - name: "Trono de vidro: Rainha das sombras", + name: "Trono de vidro: Rainha das sombras", author: "Autor: Sarah J. Maas", - value: Number(42.19), - imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41MSwpp8z3L._SX335_BO1,204,203,200_.jpg", + value: Number(42.19), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41MSwpp8z3L._SX335_BO1,204,203,200_.jpg", }, ] @@ -83,51 +87,89 @@ export class App extends React.Component { state = { listaDeCompras: [], order: 1, - produto: produto - } - - updateOrder = (ev) => { - this.setState({order: Number(ev.target.value)}) + produto: produto, + produtosNoCarrinho: [ + { + id: 7, + name: "Trono de Vidro: Herdeira do fogo", + author: "Autor: Sarah J. Maas", + value: Number(27.98), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/51nj67GhHkL._SX335_BO1,204,203,200_.jpg", + quantity: 2 + }, + { + id: 8, + name: "Trono de vidro: Rainha das sombras", + author: "Autor: Sarah J. Maas", + value: Number(42.19), + imageUrl: "https://images-na.ssl-images-amazon.com/images/I/41MSwpp8z3L._SX335_BO1,204,203,200_.jpg", + quantity: 3 + } + + ] } - addNoCarrinho = (produto) => { - const lista = this.state.listaDeCompras - this.setState({...this.state, listaDeCompras: {...lista, produto}}) + updateOrder = (ev) => { + this.setState({ order: Number(ev.target.value) }) } + ordenaDecrescente = (array) => { - return array.sort((a,b)=>{ - return b.value - a.value + return array.sort((a, b) => { + return b.value - a.value }) } ordenaCrescente = (array) => { - return array.sort((a,b)=>{ - return a.value - b.value + return array.sort((a, b) => { + return a.value - b.value }) + } + + addNoCarrinho = (produto) => { + + const lista = this.state.listaDeCompras + this.setState({...this.state, listaDeCompras: {...lista, produto}}) + } + + onRemoveProductFromCart = (productId) => { + const newProductsInCart = this.state.produtosNoCarrinho.map((produto) => { + if (produto.id === productId) { + return { + ...produto, + quantity: produto.quantity - 1 } +} + return produto + + }).filter((produto) => produto.quantity > 0) + + this.setState({produtosNoCarrinho: newProductsInCart}) + } render() { const ordenaArray = () => { - if(this.state.order === 1) { + if (this.state.order === 1) { return this.ordenaDecrescente(produto) } else { return this.ordenaCrescente(produto) } } - + return ( -
- - - {ordenaArray().map((item) => - this.addNoCarrinho(item)}>Adcionar ao carrinho} /> - )} - -
- +
+ + + {ordenaArray().map((item) => + this.addNoCarrinho(item)}>Adcionar ao carrinho} /> + )} + +
+
) } diff --git a/src/components/ItemCarrinho.js b/src/components/ItemCarrinho.js new file mode 100644 index 0000000..c2438bc --- /dev/null +++ b/src/components/ItemCarrinho.js @@ -0,0 +1,34 @@ +import React from "react"; +import styled from "styled-components"; +import Carrinho from "./Carrinho"; +import App from "../App"; + +const ItemContainer = styled.div ` + display: grid; + grid-auto-flow: column; + padding-top: 10px; + gap: 6px;` + +export class ItemCarrinho extends React.Component { + render () { + return
+ +

ITEM:

+ {this.props.listaCompras.name} +

QUANTIDADE:

+ {this.props.listaCompras.order} + +
+
+ } +} + +export default ItemCarrinho + + + + + + + + diff --git a/src/components/ProdutoCar.js b/src/components/ProdutoCar.js index 83318eb..9cff38c 100644 --- a/src/components/ProdutoCar.js +++ b/src/components/ProdutoCar.js @@ -1,5 +1,7 @@ import React from "react"; import styled from "styled-components"; +import App from "../App"; +import Carrinho from "./Carrinho"; const CarProduto = styled.div` border: 1px solid black; @@ -19,18 +21,29 @@ const CarConteiner = styled.div` } `; + export class ProdutoCar extends React.Component{ + + addNoCarrinho = (produto) => { + + + const lista = this.state.listaDeCompras + this.setState({...this.state, listaDeCompras: {...lista, produto}}) + } + render() { const produto = this.props.produto - return - - -

{produto?.name}

-

{produto?.author}

-

R$ {produto?.value}

- {this.props.addNoCarrinho} + return + + +

{produto.name}

+

{produto.author}

+

R$ {produto.value}

+ + +
-
+ } } diff --git a/src/components/carrinho.js b/src/components/carrinho.js index 09e493a..b2ff35a 100644 --- a/src/components/carrinho.js +++ b/src/components/carrinho.js @@ -1,13 +1,48 @@ import React from "react"; +import styled from 'styled-components'; +import ItemCarrinho from "./ItemCarrinho"; +import ProdutoCar from "./ProdutoCar"; -class Carrinho extends React.Component{ - render() { - return( -
-

Sou o carrinho

-
- ) +const ContainerCarrinho = styled.div` + border: 1px solid black; + padding: 20px; +`; + +const ListaCarrinho = styled.div` + display: grid; + gap: 4px; +`; + + + + +export class Carrinho extends React.Component{ + + valorTotal = () => { + let valorTotal = 0 + + for (let product of this.props.produtosNoCarrinho) + valorTotal += product.value * product.quantity + + return valorTotal } -} -export default Carrinho \ No newline at end of file + + render() { + return +

CARRINHO

+ + {this.props.produtosNoCarrinho.map((product) =>{ + return + + })} + +

Valor total:{this.valorTotal()}

+
+ } + +} + +export default Carrinho; \ No newline at end of file