From e4492a95c90fba38acb40b4212e3d62a3e8ff8b3 Mon Sep 17 00:00:00 2001 From: Samiksha Garg Date: Tue, 30 Aug 2022 20:07:58 +0530 Subject: [PATCH] merged main --- funwithphysics/package-lock.json | 75 +- funwithphysics/package.json | 1 + .../Components/Matrices/Topic/Calculator.js | 927 +++++++++++++++++- .../src/Components/Matrices/matrix.js | 5 + .../PeriodicTable/periodicTable.css | 9 +- .../Components/PeriodicTable/properties.js | 2 +- funwithphysics/yarn.lock | 101 +- 7 files changed, 1040 insertions(+), 80 deletions(-) diff --git a/funwithphysics/package-lock.json b/funwithphysics/package-lock.json index e24f27088..8f6aa6dc2 100644 --- a/funwithphysics/package-lock.json +++ b/funwithphysics/package-lock.json @@ -20,6 +20,7 @@ "firebase": "^9.5.0", "fractional": "^1.0.0", "function-plot": "^1.22.9-0", + "interweave": "^13.0.0", "react": "^17.0.2", "react-bootstrap": "^1.6.4", "react-dom": "^17.0.2", @@ -10907,6 +10908,21 @@ "mr-parser": "0.2.1" } }, + "node_modules/interweave": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/interweave/-/interweave-13.0.0.tgz", + "integrity": "sha512-Mckwj+ix/VtrZu1bRBIIohwrsXj12ZTvJCoYUMZlJmgtvIaQCj0i77eSZ63ckbA1TsPrz2VOvLW9/kTgm5d+mw==", + "dependencies": { + "escape-html": "^1.0.3" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/milesjohnson" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -26346,12 +26362,14 @@ "@firebase/auth-interop-types": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", - "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==" + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==", + "requires": {} }, "@firebase/auth-types": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.11.0.tgz", - "integrity": "sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==" + "integrity": "sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==", + "requires": {} }, "@firebase/component": { "version": "0.5.10", @@ -26427,7 +26445,8 @@ "@firebase/firestore-types": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.0.tgz", - "integrity": "sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==" + "integrity": "sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==", + "requires": {} }, "@firebase/functions": { "version": "0.7.8", @@ -26616,7 +26635,8 @@ "@firebase/storage-types": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.6.0.tgz", - "integrity": "sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==" + "integrity": "sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==", + "requires": {} }, "@firebase/util": { "version": "1.4.3", @@ -26841,7 +26861,8 @@ "@restart/context": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", - "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==" + "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", + "requires": {} }, "@restart/hooks": { "version": "0.3.27", @@ -27569,7 +27590,8 @@ "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} }, "acorn-to-esprima": { "version": "1.0.7", @@ -27595,12 +27617,14 @@ "ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} }, "align-text": { "version": "0.1.4", @@ -28008,7 +28032,8 @@ "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "requires": {} }, "babel-eslint": { "version": "9.0.0", @@ -28156,7 +28181,8 @@ "babel-plugin-named-asset-import": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", - "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==" + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "requires": {} }, "babel-plugin-polyfill-corejs2": { "version": "0.3.1", @@ -28807,7 +28833,8 @@ "bootstrap": { "version": "5.2.0", "resolved": "https://repo.huaweicloud.com/repository/npm/bootstrap/-/bootstrap-5.2.0.tgz", - "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==" + "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==", + "requires": {} }, "brace-expansion": { "version": "1.1.11", @@ -33501,6 +33528,14 @@ } } }, + "interweave": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/interweave/-/interweave-13.0.0.tgz", + "integrity": "sha512-Mckwj+ix/VtrZu1bRBIIohwrsXj12ZTvJCoYUMZlJmgtvIaQCj0i77eSZ63ckbA1TsPrz2VOvLW9/kTgm5d+mw==", + "requires": { + "escape-html": "^1.0.3" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -35093,7 +35128,8 @@ "jest-pnp-resolver": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.0.2.tgz", - "integrity": "sha512-H2DvUlwdMedNGv4FOliPDnxani6ATWy70xe2eckGJgkLoMaWzRPqpSlc5ShqX0Ltk5OhRQvPQY2LLZPOpgcc7g==" + "integrity": "sha512-H2DvUlwdMedNGv4FOliPDnxani6ATWy70xe2eckGJgkLoMaWzRPqpSlc5ShqX0Ltk5OhRQvPQY2LLZPOpgcc7g==", + "requires": {} }, "jest-regex-util": { "version": "23.3.0", @@ -40655,7 +40691,8 @@ "react-dom": { "version": "0.14.10", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.10.tgz", - "integrity": "sha512-kDs8SWFb8Sry4NAplhpJbZEeAnTPir/m+s9s+lkdqA2a89BzmWGnEgGG/CfmhULjv1ogc4oHrjMfAvFNruT3jQ==" + "integrity": "sha512-kDs8SWFb8Sry4NAplhpJbZEeAnTPir/m+s9s+lkdqA2a89BzmWGnEgGG/CfmhULjv1ogc4oHrjMfAvFNruT3jQ==", + "requires": {} }, "repeating": { "version": "1.1.3", @@ -40750,7 +40787,8 @@ "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==" + "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", + "requires": {} }, "react-is": { "version": "16.13.1", @@ -40809,7 +40847,8 @@ "react-progressive-image": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/react-progressive-image/-/react-progressive-image-0.6.0.tgz", - "integrity": "sha512-/yc8N3lHskPQkubm+QH5RIQHA89Sigv7p9UkvbHzKVE2OBb6njhmquk7GW/f2Y//mzk5DesFHN/hV5RWhd6IXA==" + "integrity": "sha512-/yc8N3lHskPQkubm+QH5RIQHA89Sigv7p9UkvbHzKVE2OBb6njhmquk7GW/f2Y//mzk5DesFHN/hV5RWhd6IXA==", + "requires": {} }, "react-router": { "version": "6.2.1", @@ -40926,7 +40965,8 @@ "react-side-effect": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz", - "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==" + "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==", + "requires": {} }, "react-slide-routes": { "version": "2.0.0", @@ -44458,7 +44498,8 @@ "ws": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "requires": {} }, "xregexp": { "version": "4.0.0", diff --git a/funwithphysics/package.json b/funwithphysics/package.json index 9637a15be..7d8771478 100644 --- a/funwithphysics/package.json +++ b/funwithphysics/package.json @@ -16,6 +16,7 @@ "firebase": "^9.5.0", "fractional": "^1.0.0", "function-plot": "^1.22.9-0", + "interweave": "^13.0.0", "react": "^17.0.2", "react-bootstrap": "^1.6.4", "react-dom": "^17.0.2", diff --git a/funwithphysics/src/Components/Matrices/Topic/Calculator.js b/funwithphysics/src/Components/Matrices/Topic/Calculator.js index 69e408e35..b1ced5c4e 100644 --- a/funwithphysics/src/Components/Matrices/Topic/Calculator.js +++ b/funwithphysics/src/Components/Matrices/Topic/Calculator.js @@ -6,6 +6,7 @@ import { useParams } from "react-router"; import "./Calculator.css"; import { useEffect } from "react"; import Solution from "../../Solution/Solution"; +import { Markup } from "interweave"; function Calculator() { let { topic } = useParams(); @@ -494,6 +495,170 @@ function Calculator() { , ], }, + { + topic: "Matrix Multiplication", + details: + "Matrix multiplication is a type of binary operation, which takes two matrices and produces a single matrix. Product of two matrices is the dot product of the two matrices.", + formula: ( + <> + If A is an m × n matrix and B is an n × p matrix, then matrix product + C = AB is defined to be the m × p matrix, +
+ such that, cij = ai1b1j + a + i2b2j + ... + ainbnj + + ), + process: [ + "1) Set 2 matrices such that number of columns of 1st matrix is equal to number of rows of second matrix", +
, +
, + "2) Calculate each element of the resulting matrix, using the formula specified above", + ], + example1: [ + "Multiply given two matrices : ", +
, +
, +
+

A =

+ + + + + + + + + + + + + +
136
245
+

B =

+ + + + + + + + + + + + + + + +
34
55
66
+
, +
, +
, + <> + c11 = 1 x 3 + 3 x 5 + 6 x 6 = 54 + , +
, +
, +
+

C =

+ + + + + + + + + + + +
540
00
+
, +
, +
, + <> + c12 = 1 x 4 + 3 x 5 + 6 x 6 = 55 + , +
, +
, +
+

C =

+ + + + + + + + + + + +
5455
00
+
, + ], + example2: [ + <> + c21 = 2 x 3 + 4 x 5 + 5 x 6 = 56 + , +
, +
, +
+

C =

+ + + + + + + + + + + +
5455
560
+
, +
, +
, + <> + c22 = 2 x 4 + 4 x 5 + 5 x 6 = 58 + , +
, +
, +
+

C =

+ + + + + + + + + + + +
5455
5658
+
, +
, +
, +
+

A x B = C =

+ + + + + + + + + + + +
5455
5658
+
, + ], + }, ]; const page = Topics.filter((data) => data.topic === topic); @@ -1676,15 +1841,759 @@ function Calculator() { ); }; - //adding the calculators togather - function calC(key) { - let currentCall; - switch (key) { - case "Determinants": - currentCall = determinantCalculator(); - break; - case "Inverse of a Matrix": - currentCall = inverseCalculator(); + const matrixMultiplicationCalculator = () => { + const [r1, setr1] = useState(null); + const [c1, setc1] = useState(null); + const [r2, setr2] = useState(null); + const [c2, setc2] = useState(null); + const [showError, setShowError] = useState(false); + const [mat1, setMat1] = useState([[]]); + const [fracMat1, setFracMat1] = useState([[[]]]); + const [fracMat2, setFracMat2] = useState([[[]]]); + const [showModal1, setShowModal1] = useState(false); + const [mat2, setMat2] = useState([[]]); + const [showModal2, setShowModal2] = useState(false); + const [firstMatSet, setFirstMat] = useState(false); + const [secMatSet, setSecMat] = useState(false); + const [answer, setAnswer] = useState(null); + const [result, setResult] = useState(null); + const [firstTime, setFirstTime] = useState(true); + + // scrolls to apt postion whenever our result gets updates + useEffect(() => { + if (firstTime) { + setFirstTime(false); + return; + } + console.log(ref.current); + var element = ref.current; + var header = document.getElementById("targetElement"); + console.log(header); + var elementPosition = element.getBoundingClientRect().top; + var offsetPosition = elementPosition + window.pageYOffset; + window.scrollTo({ + top: offsetPosition, + }); + }, [answer]); + + // function to find highest common factor + const hcf = (x, y) => { + if (x % y == 0) { + return y; + } + + return hcf(y, x % y); + }; + + //resets everything to original state + const reset = () => { + setr1(null); + setr2(null); + setc1(null); + setc2(null); + setMat1([[]]); + setMat2([[]]); + setFirstMat(false); + setSecMat(false); + setFracMat1([[[]]]); + setFracMat2([[[]]]); + setAnswer(null); + setResult(null); + }; + + //function to create cutomised table from the given matrix + const createTable = (matrix, r, c) => { + return ( + + + {matrix.map((row, i) => ( + + {row.map((val, j) => ( + + ))} + + ))} + +
+ {val[1] == 1 ? ( + val[0] + ) : ( + <> + {val[0]}{val[1]} + + )} +
+ ); + }; + + //function to check if all values of matrix 1 is set and displays it as result + const displayMatrix1 = () => { + let dim1 = parseInt(r1); + let dim2 = parseInt(c1); + + let copy = Array(dim1) + .fill(0) + .map((row) => + new Array(dim2).fill(0).map((r) => new Array(2).fill(null)) + ); + const handleFractionChange = (row, column, num, denom) => { + copy[row][column][0] = num; + copy[row][column][1] = denom; + }; + + let isComplete = true; + + for (var i = 0; i < dim1; i++) { + for (var j = 0; j < dim2; j++) { + if (mat1[i][j] === null) { + isComplete = false; + break; + } + + var n = mat1[i][j].split("."); + var denominator = n.length == 1 ? 1 : Math.pow(10, n[1].length); + var numerator = + n.length == 1 ? parseInt(n[0]) : parseInt(n[0] + n[1]); + if (numerator == 0) { + denominator = 1; + numerator = 0; + } else { + if (numerator < 0) { + var HCF = hcf(denominator, numerator * -1); + denominator /= HCF; + numerator /= HCF; + } else { + var HCF = hcf(denominator, numerator); + denominator /= HCF; + numerator /= HCF; + } + } + + handleFractionChange(i, j, numerator, denominator); + } + } + + if (!isComplete) { + setShowError(true); + } else { + setFracMat1(copy); + setFirstMat(true); + setShowModal1(false); + } + }; + + //function to check if all values of matrix 2 is set and displays it as result + const displayMatrix2 = () => { + let dim1 = parseInt(r2); + let dim2 = parseInt(c2); + + let copy = Array(dim1) + .fill(0) + .map((row) => + new Array(dim2).fill(0).map((r) => new Array(2).fill(null)) + ); + const handleFractionChange = (row, column, num, denom) => { + copy[row][column][0] = num; + copy[row][column][1] = denom; + }; + + let isComplete = true; + + for (var i = 0; i < dim1; i++) { + for (var j = 0; j < dim2; j++) { + if (mat2[i][j] === null) { + isComplete = false; + break; + } + + var n = mat2[i][j].split("."); + var denominator = n.length == 1 ? 1 : Math.pow(10, n[1].length); + var numerator = + n.length == 1 ? parseInt(n[0]) : parseInt(n[0] + n[1]); + if (numerator == 0) { + denominator = 1; + numerator = 0; + } else { + if (numerator < 0) { + var HCF = hcf(denominator, numerator * -1); + denominator /= HCF; + numerator /= HCF; + } else { + var HCF = hcf(denominator, numerator); + denominator /= HCF; + numerator /= HCF; + } + } + + handleFractionChange(i, j, numerator, denominator); + } + } + + if (!isComplete) { + setShowError(true); + } else { + setFracMat2(copy); + setSecMat(true); + setShowModal2(false); + } + }; + + //initialises matrix 1 with specified dimensions + const setMatrix1 = () => { + if (r1 == null || r1 == 0 || c1 == null || c1 == 0) { + setShowError(true); + return; + } + + let dim1 = parseInt(r1); + let dim2 = parseInt(c1); + // console.log(dim1, dim2); + let board = Array(dim1) + .fill(0) + .map((row) => new Array(dim2).fill(null)); + setMat1(board); + // let fracBoard = Array(dim1) + // .fill(0) + // .map((row) => + // new Array(dim2).fill(0).map((r) => new Array(2).fill(null)) + // ); + // setFracMat1(fracBoard); + + setShowModal1(true); + }; + + //initialises matrix 2 with specified dimensions + const setMatrix2 = () => { + if (r2 == null || r2 == 0 || c2 == null || c2 == 0) { + setShowError(true); + return; + } + + let dim1 = parseInt(r2); + let dim2 = parseInt(c2); + // console.log(dim1, dim2); + let board = Array(dim1) + .fill(0) + .map((row) => new Array(dim2).fill(null)); + setMat2(board); + setShowModal2(true); + }; + + //creates modal for setting matrix 1 + const makeTable1 = () => { + const handleChange = (row, column, event) => { + let copy = [...mat1]; + copy[row][column] = event.target.value; + setMat1(copy); + }; + + return ( + <> + +
+ + + {mat1.map((field, i) => ( + + {mat1[0].map((col, j) => ( + + ))} + + ))} + +
+
+ { + handleChange(i, j, e); + }} + type="number" + placeholder={"Enter value"} + value={mat1[i][j] === null ? "" : mat1[i][j]} + /> + +
+
+
+ +
+
+ +     + +
+
+
+ + ); + }; + + //creates modal for setting matrix 1 + const makeTable2 = () => { + const handleChange = (row, column, event) => { + let copy = [...mat2]; + copy[row][column] = event.target.value; + setMat2(copy); + }; + + return ( + <> + +
+ + + {mat2.map((field, i) => ( + + {mat2[0].map((col, j) => ( + + ))} + + ))} + +
+
+ { + handleChange(i, j, e); + }} + type="number" + placeholder={"Enter value"} + value={mat2[i][j] === null ? "" : mat2[i][j]} + /> + +
+
+
+ +
+
+ +     + +
+
+
+ + ); + }; + + //main function responsible for carrying out matrix multiplication + const calculateResult = () => { + if (!firstMatSet || !secMatSet) { + setShowError(true); + return; + } + + let row1 = fracMat1.length; + let col1 = fracMat1[0].length; + + let row2 = fracMat2.length; + let col2 = fracMat2[0].length; + + let ans = []; + let res = Array(row1) + .fill(0) + .map((row) => new Array(col2).fill(0).map((r) => new Array(2).fill(0))); + + for (let i = 0; i < row1; i++) { + for (let j = 0; j < col2; j++) { + res[i][j][0] = 0; + res[i][j][1] = 1; + } + } + + if (col1 != row2) { + setResult(null); + ans.push( +
+ Columns of first matrix is not equal to rows of second matrix, hence + matrices can't be multiplied +
+ ); + setAnswer(ans); + return; + } + + //function carries out addition of two fractions + const addition = (num1, den1, num2, den2) => { + var HCF = hcf(den1, den2); + var lcm = (den1 * den2) / HCF; + + num1 *= lcm / den1; + num2 *= lcm / den2; + + let newNum = num1 + num2; + let newDen = lcm; + + if (newNum == 0) { + newDen = 1; + } + + return [newNum, newDen]; + }; + + ans.push( +
+ We will have matrix of dimensions {row1} x {col2} +
+ ); + + //mai for loop responisble for multiplication + for (let i = 0; i < row1; i++) { + for (let j = 0; j < col2; j++) { + let num = 0; + let den = 1; + let str = + "c" + (i + 1).toString() + (j + 1).toString() + " = "; + + for (let a = 0; a < col1; a++) { + if (a != 0) { + str += " + "; + } + + if (fracMat1[i][a][1] == "1") { + str += fracMat1[i][a][0]; + } else { + str += + "" + + fracMat1[i][a][0] + + "" + + fracMat1[i][a][1] + + ""; + } + + str += " x "; + + if (fracMat2[a][j][1] == "1") { + str += fracMat2[a][j][0]; + } else { + str += + "" + + fracMat2[a][j][0] + + "" + + fracMat2[a][j][1] + + ""; + } + let temp = addition( + num, + den, + fracMat1[i][a][0] * fracMat2[a][j][0], + fracMat1[i][a][1] * fracMat2[a][j][1] + ); + num = temp[0]; + den = temp[1]; + console.log(num, den); + } + + if (num == 0) { + num = 0; + den = 1; + } else if (num < 0) { + let HCF = hcf(den, num * -1); + den /= HCF; + num /= HCF; + } else { + let HCF = hcf(den, num); + den /= HCF; + num /= HCF; + } + + str += " = "; + + if (den == 1) { + str += num; + } else { + str += "" + num + "" + den + ""; + } + + res[i][j][0] = num; + res[i][j][1] = den; + + ans.push(); + ans.push(
); + ans.push(createTable(res, i, j)); + ans.push(
); + } + } + + //storing final result + const displayFinal = () => { + return ( +
+

Multiplication :

+ {createTable(res)} +
+ ); + }; + setResult(displayFinal); + setAnswer(ans); + return; + }; + + //main UI component + return ( +
+ + + Please Enter all values to get Proper answer + + + + + + { + setShowModal1(false); + }} + backdrop="static" + > + + + Set Matrix + + + {showModal1 && makeTable1()} + + { + setShowModal1(false); + }} + backdrop="static" + > + + + Set Matrix + + + {showModal2 && makeTable2()} + +
+ + + + {" "} + Enter dimensions of two matrices, and then set the matrices to + calculate their multiplication. + +
+
+
+ + Enter number of rows for the first matrix + { + if (e.target.value == "" || e.target.value == "0") { + setr1(null); + } else { + var isNumber = true; + for (var ch in e.target.value) { + if (e.target.value[ch] < "0" || e.target.value[ch] > "9") { + isNumber = false; + break; + } + } + if (isNumber) { + setr1(e.target.value); + } + } + }} + placeholder={"Enter dimension"} + min="0" + value={r1 === null ? "" : r1} + /> + + + + Enter number of columns for the first matrix + + { + if (e.target.value == "" || e.target.value == "0") { + setc1(null); + } else { + var isNumber = true; + for (var ch in e.target.value) { + if (e.target.value[ch] < "0" || e.target.value[ch] > "9") { + isNumber = false; + break; + } + } + if (isNumber) { + setc1(e.target.value); + } + } + }} + placeholder={"Enter dimension"} + min="0" + value={c1 === null ? "" : c1} + /> + +
+ +
+
+ {firstMatSet &&
{createTable(fracMat1, -1, -1)}
} +
+ + Enter number of rows for the second matrix + { + if (e.target.value == "" || e.target.value == "0") { + setr2(null); + } else { + var isNumber = true; + for (var ch in e.target.value) { + if (e.target.value[ch] < "0" || e.target.value[ch] > "9") { + isNumber = false; + break; + } + } + if (isNumber) { + setr2(e.target.value); + } + } + }} + placeholder={"Enter dimension"} + min="0" + value={r2 === null ? "" : r2} + /> + + + + Enter number of columns for the second matrix + + { + if (e.target.value == "" || e.target.value == "0") { + setc2(null); + } else { + var isNumber = true; + for (var ch in e.target.value) { + if (e.target.value[ch] < "0" || e.target.value[ch] > "9") { + isNumber = false; + break; + } + } + if (isNumber) { + setc2(e.target.value); + } + } + }} + placeholder={"Enter dimension"} + min="0" + value={c2 === null ? "" : c2} + /> + +
+
+ +
+
+ {secMatSet &&
{createTable(fracMat2, -1, -1)}
} +
+
+ +     + +
+
+ {answer != null ? ( + <> +
+
+

Solution

+ {result && ( + <> +

{result}

+
+
{" "} + + )} +
+
{answer}
+ + ) : ( + <> + )} +
+
+ ); + }; + + //adding the calculators togather + function calC(key) { + let currentCall; + switch (key) { + case "Determinants": + currentCall = determinantCalculator(); + break; + case "Inverse of a Matrix": + currentCall = inverseCalculator(); + break; + case "Matrix Multiplication": + currentCall = matrixMultiplicationCalculator(); break; default: break; diff --git a/funwithphysics/src/Components/Matrices/matrix.js b/funwithphysics/src/Components/Matrices/matrix.js index e9cfcae5f..ebc785192 100644 --- a/funwithphysics/src/Components/Matrices/matrix.js +++ b/funwithphysics/src/Components/Matrices/matrix.js @@ -17,6 +17,11 @@ export default function Matrices() { details: "The inverse of a matrix is another matrix which on multiplication with the given matrix gives the multiplicative identity. . The matrix whose determinant is non-zero and for which the inverse matrix can be calculated is called an invertible matrix.", }, + { + topic: "Matrix Multiplication", + details: + "Matrix multiplication is a type of binary operation, which takes two matrices and produces a single matrix. Product of two matrices is the dot product of the two matrices", + }, ]; return ( diff --git a/funwithphysics/src/Components/PeriodicTable/periodicTable.css b/funwithphysics/src/Components/PeriodicTable/periodicTable.css index 3c01446e8..c791bcf89 100644 --- a/funwithphysics/src/Components/PeriodicTable/periodicTable.css +++ b/funwithphysics/src/Components/PeriodicTable/periodicTable.css @@ -179,15 +179,16 @@ max-width: 90vw; } -table, -th, -td { + +.properties-table, +.properties-table th, +.properties-table td { border: 1px solid; text-align: center; } -table { +.properties-table { margin: auto; margin-top: 3vh; width: 90vw; diff --git a/funwithphysics/src/Components/PeriodicTable/properties.js b/funwithphysics/src/Components/PeriodicTable/properties.js index 925c9cddb..4029a6e24 100644 --- a/funwithphysics/src/Components/PeriodicTable/properties.js +++ b/funwithphysics/src/Components/PeriodicTable/properties.js @@ -27,7 +27,7 @@ function Properties() {
{element.summary}
- +
{element.appearance && ( diff --git a/funwithphysics/yarn.lock b/funwithphysics/yarn.lock index 6a650189f..dd6866524 100644 --- a/funwithphysics/yarn.lock +++ b/funwithphysics/yarn.lock @@ -28,7 +28,7 @@ "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz" "version" "7.17.0" -"@babel/core@^7.1.6", "@babel/core@^7.4.5": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.4.5": "integrity" "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==" "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz" "version" "7.17.5" @@ -1337,7 +1337,7 @@ "@firebase/util" "1.4.3" "tslib" "^2.1.0" -"@firebase/app-compat@0.1.18": +"@firebase/app-compat@0.1.18", "@firebase/app-compat@0.x": "integrity" "sha512-YXmMLQro2g2xlNnzB6zVxYoFx9sJS/JDEQy6vsj3FpMUuARaImipL6W8KuGfH+tJ3M+q38qRaFROk5gK6PoCrQ==" "resolved" "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.18.tgz" "version" "0.1.18" @@ -1348,12 +1348,12 @@ "@firebase/util" "1.4.3" "tslib" "^2.1.0" -"@firebase/app-types@0.7.0": +"@firebase/app-types@0.7.0", "@firebase/app-types@0.x": "integrity" "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==" "resolved" "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz" "version" "0.7.0" -"@firebase/app@0.7.17": +"@firebase/app@0.7.17", "@firebase/app@0.x": "integrity" "sha512-OnZab790eMwRxkUs7o/kgniAzSBxecDTGEk1PVhiG0HQhKrIf+R7lgqOZHDb/2GJsX12jby1p/Z5+WJCBxVbJQ==" "resolved" "https://registry.npmjs.org/@firebase/app/-/app-0.7.17.tgz" "version" "0.7.17" @@ -1632,7 +1632,7 @@ "node-fetch" "2.6.7" "tslib" "^2.1.0" -"@firebase/util@1.4.3": +"@firebase/util@1.4.3", "@firebase/util@1.x": "integrity" "sha512-gQJl6r0a+MElLQEyU8Dx0kkC2coPj67f/zKZrGR7z7WpLgVanhaCUqEsptwpwoxi9RMFIaebleG+C9xxoARq+Q==" "resolved" "https://registry.npmjs.org/@firebase/util/-/util-1.4.3.tgz" "version" "1.4.3" @@ -1649,7 +1649,7 @@ "resolved" "https://repo.huaweicloud.com/repository/npm/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.2.tgz" "version" "6.1.2" -"@fortawesome/fontawesome-svg-core@^6.1.2": +"@fortawesome/fontawesome-svg-core@^6.1.2", "@fortawesome/fontawesome-svg-core@~1 || ~6": "integrity" "sha512-853G/Htp0BOdXnPoeCPTjFrVwyrJHpe8MhjB/DYE9XjwhnNDfuBCd3aKc2YUYbEfHEcBws4UAA0kA9dymZKGjA==" "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.2.tgz" "version" "6.1.2" @@ -1749,7 +1749,7 @@ "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" "version" "1.1.3" -"@popperjs/core@^2.8.6": +"@popperjs/core@^2.11.5", "@popperjs/core@^2.8.6": "integrity" "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" "resolved" "https://repo.huaweicloud.com/repository/npm/@popperjs/core/-/core-2.11.5.tgz" "version" "2.11.5" @@ -2061,7 +2061,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16.14.8", "@types/react@>=16.9.11": +"@types/react@*", "@types/react@>=16", "@types/react@>=16.14.8", "@types/react@>=16.9.11": "integrity" "sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==" "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.37.tgz" "version" "17.0.37" @@ -2332,12 +2332,12 @@ "resolved" "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz" "version" "5.7.4" -"acorn@^6.0.1": +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^6.0.7": "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" "version" "6.4.2" -"acorn@^6.0.7": +"acorn@^6.0.1": "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" "version" "6.4.2" @@ -2364,7 +2364,7 @@ "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" "version" "3.5.2" -"ajv@^6.1.0", "ajv@^6.10.2", "ajv@^6.12.3", "ajv@^6.5.3": +"ajv@^6.1.0", "ajv@^6.10.2", "ajv@^6.12.3", "ajv@^6.5.3", "ajv@^6.9.1", "ajv@>=5.0.0": "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" "version" "6.12.6" @@ -2805,6 +2805,11 @@ "trim-right" "^1.0.0" "try-resolve" "^1.0.0" +"babel-core@^6.0.0 || ^7.0.0-0", "babel-core@7.0.0-bridge.0": + "integrity" "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + "version" "7.0.0-bridge.0" + "babel-core@^6.0.0": "integrity" "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==" "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" @@ -2855,11 +2860,6 @@ "slash" "^1.0.0" "source-map" "^0.5.7" -"babel-core@7.0.0-bridge.0": - "integrity" "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" - "version" "7.0.0-bridge.0" - "babel-eslint@^4.0.5": "integrity" "sha512-Q1TWdm7vAka50oCk45JCgWMAat1tKiVus4hIYoKHZ/K6uHBhDga2gxfYrypmXu4F30T178HVe7iZV8Ct+12Epg==" "resolved" "https://registry.npmjs.org/babel-eslint/-/babel-eslint-4.1.8.tgz" @@ -2870,7 +2870,7 @@ "lodash.assign" "^3.2.0" "lodash.pick" "^3.1.0" -"babel-eslint@9.0.0": +"babel-eslint@9.0.0", "babel-eslint@9.x": "integrity" "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==" "resolved" "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz" "version" "9.0.0" @@ -5301,7 +5301,7 @@ "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" "version" "3.1.1" -"escape-html@~1.0.3": +"escape-html@^1.0.3", "escape-html@~1.0.3": "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" "version" "1.0.3" @@ -5362,14 +5362,14 @@ "debug" "^3.2.7" "find-up" "^2.1.0" -"eslint-plugin-flowtype@2.50.1": +"eslint-plugin-flowtype@2.50.1", "eslint-plugin-flowtype@2.x": "integrity" "sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ==" "resolved" "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz" "version" "2.50.1" dependencies: "lodash" "^4.17.10" -"eslint-plugin-import@2.14.0": +"eslint-plugin-import@2.14.0", "eslint-plugin-import@2.x": "integrity" "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==" "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz" "version" "2.14.0" @@ -5385,7 +5385,7 @@ "read-pkg-up" "^2.0.0" "resolve" "^1.6.0" -"eslint-plugin-jsx-a11y@6.1.2": +"eslint-plugin-jsx-a11y@6.1.2", "eslint-plugin-jsx-a11y@6.x": "integrity" "sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw==" "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz" "version" "6.1.2" @@ -5399,7 +5399,7 @@ "has" "^1.0.3" "jsx-ast-utils" "^2.0.1" -"eslint-plugin-react@7.12.4": +"eslint-plugin-react@7.12.4", "eslint-plugin-react@7.x": "integrity" "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==" "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz" "version" "7.12.4" @@ -5440,7 +5440,7 @@ "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" "version" "1.3.0" -"eslint@5.12.0": +"eslint@^3 || ^4 || ^5", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0", "eslint@>=1.6.0 <6.0.0", "eslint@>=2.0.0", "eslint@2.x - 5.x", "eslint@5.12.0", "eslint@5.x": "integrity" "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==" "resolved" "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz" "version" "5.12.0" @@ -5998,7 +5998,7 @@ "version" "9.6.7" dependencies: "@firebase/analytics" "0.7.5" - "@firebase,/analytics-compat" "0.1.6" + "@firebase/analytics-compat" "0.1.6" "@firebase/app" "0.7.17" "@firebase/app-check" "0.5.3" "@firebase/app-check-compat" "0.2.3" @@ -6997,6 +6997,13 @@ dependencies: "nextafter" "^1.0.0" +"interweave@^13.0.0": + "integrity" "sha512-Mckwj+ix/VtrZu1bRBIIohwrsXj12ZTvJCoYUMZlJmgtvIaQCj0i77eSZ63ckbA1TsPrz2VOvLW9/kTgm5d+mw==" + "resolved" "https://registry.npmjs.org/interweave/-/interweave-13.0.0.tgz" + "version" "13.0.0" + dependencies: + "escape-html" "^1.0.3" + "invariant@^2.2.2", "invariant@^2.2.4": "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" @@ -7754,7 +7761,7 @@ "jest-regex-util" "^23.3.0" "jest-snapshot" "^23.6.0" -"jest-resolve@^23.6.0", "jest-resolve@23.6.0": +"jest-resolve@*", "jest-resolve@^23.6.0", "jest-resolve@23.6.0": "integrity" "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==" "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz" "version" "23.6.0" @@ -10982,12 +10989,7 @@ "strip-ansi" "5.0.0" "text-table" "0.2.0" -"react-dom@^0.14.1": - "integrity" "sha512-kDs8SWFb8Sry4NAplhpJbZEeAnTPir/m+s9s+lkdqA2a89BzmWGnEgGG/CfmhULjv1ogc4oHrjMfAvFNruT3jQ==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-0.14.10.tgz" - "version" "0.14.10" - -"react-dom@^17.0.2": +"react-dom@*", "react-dom@^15.0.0", "react-dom@^15.0.0-0 || ^16.0.0-0", "react-dom@^16.6.0 || ^17.0.0", "react-dom@^17.0.2", "react-dom@>= 16.8.0", "react-dom@>=16.3.0", "react-dom@>=16.6.0", "react-dom@>=16.8", "react-dom@>=16.8.0": "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" "version" "17.0.2" @@ -10996,6 +10998,11 @@ "object-assign" "^4.1.1" "scheduler" "^0.20.2" +"react-dom@^0.14.1": + "integrity" "sha512-kDs8SWFb8Sry4NAplhpJbZEeAnTPir/m+s9s+lkdqA2a89BzmWGnEgGG/CfmhULjv1ogc4oHrjMfAvFNruT3jQ==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-0.14.10.tgz" + "version" "0.14.10" + "react-error-overlay@^5.1.4": "integrity" "sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q==" "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.6.tgz" @@ -11053,7 +11060,7 @@ "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz" "version" "4.3.1" -"react-is@^16.13.1", "react-is@^16.3.2", "react-is@^16.7.0": +"react-is@^16.13.1", "react-is@^16.3.2", "react-is@^16.7.0", "react-is@>= 16.8.0": "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" "version" "16.13.1" @@ -11113,7 +11120,7 @@ "resolved" "https://registry.npmjs.org/react-progressive-image/-/react-progressive-image-0.6.0.tgz" "version" "0.6.0" -"react-router-dom@^6.2.1": +"react-router-dom@^6.2.1", "react-router-dom@>=4", "react-router-dom@>=6.0.0": "integrity" "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==" "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz" "version" "6.2.1" @@ -11121,7 +11128,6 @@ "history" "^5.2.0" "react-router" "6.2.1" - "react-router-hash-link@^2.4.3": "integrity" "sha512-NU7GWc265m92xh/aYD79Vr1W+zAIXDWp3L2YZOYP4rCqPnJ6LI6vh3+rKgkidtYijozHclaEQTAHaAaMWPVI4A==" "resolved" "https://registry.npmjs.org/react-router-hash-link/-/react-router-hash-link-2.4.3.tgz" @@ -11129,10 +11135,7 @@ dependencies: "prop-types" "^15.7.2" -"react-router@^6.2.1", "react-router@6.2.1": - "react-router@^6.2.1", "react-router@>=6.0.0", "react-router@6.2.1": - "integrity" "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==" "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz" "version" "6.2.1" @@ -11235,7 +11238,15 @@ "loose-envify" "^1.4.0" "prop-types" "^15.6.2" -"react@^0.14.1": +"react@*", "react@^15.0.0-0 || ^16.0.0-0", "react@^16.3.0 || ^17.0.0", "react@^16.6.0 || ^17.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>= 16.8.0", "react@>=0.14.0", "react@>=15", "react@>=15.0.0", "react@>=16", "react@>=16.3", "react@>=16.3.0", "react@>=16.3.2", "react@>=16.6.0", "react@>=16.8", "react@>=16.8.0", "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" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"react@^0.14.1", "react@^0.14.10": "integrity" "sha512-yxMw5aorZG4qsLVBfjae4wGFvd5708DhcxaXLJ3IOTgr1TCs8k9+ZheGgLGr5OfwWMhSahNbGvvoEDzrxVWouA==" "resolved" "https://registry.npmjs.org/react/-/react-0.14.10.tgz" "version" "0.14.10" @@ -11252,14 +11263,6 @@ "object-assign" "^4.1.1" "prop-types" "^15.6.2" -"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" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "read-pkg-up@^1.0.1": "integrity" "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" @@ -11584,7 +11587,7 @@ "stealthy-require" "^1.1.1" "tough-cookie" "^2.3.3" -"request@^2.87.0": +"request@^2.34", "request@^2.87.0": "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" "version" "2.88.2" @@ -12617,7 +12620,7 @@ dependencies: "inline-style-parser" "0.1.1" -"styled-components@^5.3.0": +"styled-components@^5.3.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" @@ -13508,7 +13511,7 @@ "source-list-map" "^2.0.0" "source-map" "~0.6.1" -"webpack@4.28.3": +"webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.0.0", "webpack@^4.0.0", "webpack@^4.4.0", "webpack@>=2", "webpack@>=2.0.0 <5.0.0", "webpack@2 || 3 || 4", "webpack@4.28.3": "integrity" "sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg==" "resolved" "https://registry.npmjs.org/webpack/-/webpack-4.28.3.tgz" "version" "4.28.3"