diff --git a/frontend/src/packages/editor/components/CodeBlock.tsx b/frontend/src/packages/editor/components/CodeBlock.tsx
index 77333ca4..d3014fab 100644
--- a/frontend/src/packages/editor/components/CodeBlock.tsx
+++ b/frontend/src/packages/editor/components/CodeBlock.tsx
@@ -26,7 +26,6 @@ import 'prismjs/components/prism-typescript';
import 'prismjs/components/prism-tsx';
import 'prismjs/components/prism-markdown';
import 'prismjs/components/prism-python';
-import 'prismjs/components/prism-php';
import 'prismjs/components/prism-sql';
import 'prismjs/components/prism-java';
import 'prismjs/components/prism-c';
@@ -87,7 +86,6 @@ const LanguageSelect = (props: JSX.IntrinsicElements['select']) => {
-
diff --git a/next/package-lock.json b/next/package-lock.json
index 04752933..9ed7858b 100644
--- a/next/package-lock.json
+++ b/next/package-lock.json
@@ -11,12 +11,15 @@
"@emotion/react": "11.10.4",
"@emotion/styled": "11.10.4",
"@mui/material": "5.10.6",
+ "@types/prismjs": "^1.26.0",
"@types/styled-components": "5.1.25",
"framer-motion": "7.3.6",
"next": "12.3.1",
+ "prismjs": "^1.29.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-is": "18.2.0",
+ "redux-persist": "^6.0.0",
"sharp": "0.31.0",
"styled-components": "5.3.5"
},
@@ -1204,6 +1207,11 @@
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
+ "node_modules/@types/prismjs": {
+ "version": "1.26.0",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz",
+ "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ=="
+ },
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
@@ -3863,6 +3871,14 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
@@ -3994,6 +4010,23 @@
"node": ">= 6"
}
},
+ "node_modules/redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "node_modules/redux-persist": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz",
+ "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==",
+ "peerDependencies": {
+ "redux": ">4.0.0"
+ }
+ },
"node_modules/regenerator-runtime": {
"version": "0.13.9",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
@@ -5542,6 +5575,11 @@
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
+ "@types/prismjs": {
+ "version": "1.26.0",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz",
+ "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ=="
+ },
"@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
@@ -7488,6 +7526,11 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true
},
+ "prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
+ },
"prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
@@ -7587,6 +7630,21 @@
"util-deprecate": "^1.0.1"
}
},
+ "redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "peer": true,
+ "requires": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "redux-persist": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz",
+ "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==",
+ "requires": {}
+ },
"regenerator-runtime": {
"version": "0.13.9",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
diff --git a/next/package.json b/next/package.json
index 376e7a92..ca3f8d42 100644
--- a/next/package.json
+++ b/next/package.json
@@ -13,12 +13,15 @@
"@emotion/react": "11.10.4",
"@emotion/styled": "11.10.4",
"@mui/material": "5.10.6",
+ "@types/prismjs": "^1.26.0",
"@types/styled-components": "5.1.25",
"framer-motion": "7.3.6",
"next": "12.3.1",
+ "prismjs": "^1.29.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-is": "18.2.0",
+ "redux-persist": "^6.0.0",
"sharp": "0.31.0",
"styled-components": "5.3.5"
},
diff --git a/next/src/components/blog/Blog-styled.tsx b/next/src/components/blog/Blog-styled.tsx
index 68f85fce..546c680e 100644
--- a/next/src/components/blog/Blog-styled.tsx
+++ b/next/src/components/blog/Blog-styled.tsx
@@ -50,6 +50,27 @@ const ParagraphContainer = styled.div`
}
`;
+const CodeContainer = styled.div`
+ margin: 0em;
+ padding-left: 0.5em;
+ font-family: monospace;
+ background: #f5f2f0;
+`
+
+const CodeLineWrapper = styled.pre`
+ margin: 0px !important;
+ padding: 1.5px !important;
+ overflow: hide !important;
+ `
+
+ const CodeLine = styled.code`
+ margin: 0px !important;
+ padding: 0px !important;
+ font-size: 0.85rem !important;
+ white-space: pre-wrap !important;
+ word-break: break-word !important;
+ `
+
const BlogContainer = styled.div`
font-size: 1.25rem;
margin: 0px 60px;
@@ -77,4 +98,7 @@ export {
BlogContainer,
BlogHeading,
ParagraphContainer,
+ CodeContainer,
+ CodeLine,
+ CodeLineWrapper
};
diff --git a/next/src/components/blog/Blog.tsx b/next/src/components/blog/Blog.tsx
index 629c4a85..3b267227 100644
--- a/next/src/components/blog/Blog.tsx
+++ b/next/src/components/blog/Blog.tsx
@@ -6,13 +6,63 @@ import {
ImagePlaceholder,
AlignedText,
BlogContainer,
+ CodeContainer,
+ CodeLine,
+ CodeLineWrapper,
} from "./Blog-styled";
import type { Element, Block } from "./types";
+import Prism from 'prismjs';
+import 'prismjs/themes/prism.css';
+import { useEffect } from "react";
+
+// Supported Languages
+//
+// For all languages supported by Prism, visit https://prismjs.com/
+import 'prismjs/components/prism-javascript';
+import 'prismjs/components/prism-jsx';
+import 'prismjs/components/prism-typescript';
+import 'prismjs/components/prism-tsx';
+import 'prismjs/components/prism-markdown';
+import 'prismjs/components/prism-python';
+import 'prismjs/components/prism-sql';
+import 'prismjs/components/prism-java';
+import 'prismjs/components/prism-c';
+import 'prismjs/components/prism-cpp';
+import 'prismjs/components/prism-csharp';
+import 'prismjs/components/prism-prolog';
+import 'prismjs/components/prism-bash';
+import 'prismjs/components/prism-latex';
+import 'prismjs/components/prism-rust';
+import 'prismjs/components/prism-go'
+import 'prismjs/components/prism-haskell';
+import 'prismjs/components/prism-perl';
+
const Block = ({ element }: { element: Element }) => {
+ useEffect(() => {
+ Prism.highlightAll();
+ }, []);
+
if (element.type === "image") {
return {element.url};
}
+
+ if (element.type === "code") {
+ const language = "language-" + (element.language ?? "python");
+
+ return (
+
+ {element.children.map(({ text, ...textStyle }, idx) => (
+
+
+ {text}
+
+
+ ))}
+
+ )
+ }
+
return (
{element.children.map(({ text, link, ...textStyle }, idx) => (
diff --git a/next/src/components/blog/types.ts b/next/src/components/blog/types.ts
index 6038b276..69868152 100644
--- a/next/src/components/blog/types.ts
+++ b/next/src/components/blog/types.ts
@@ -6,7 +6,7 @@ export interface Document {
export type Block = Element[];
-export type Element = Paragraph | Image;
+export type Element = Paragraph | Image | Code;
interface Paragraph {
type: "paragraph";
@@ -18,11 +18,22 @@ interface Image {
url: string;
}
+interface Code {
+ type: "code";
+ language: String;
+ children: CodeLine[]
+}
+
interface Text extends TextStyle {
text: string;
link?: string;
}
+interface CodeLine extends TextStyle {
+ text: string;
+ language: string;
+}
+
export interface TextStyle {
bold?: boolean;
italic?: boolean;
diff --git a/next/src/components/footer/Footer.tsx b/next/src/components/footer/Footer.tsx
index 531372ea..4a93fec8 100644
--- a/next/src/components/footer/Footer.tsx
+++ b/next/src/components/footer/Footer.tsx
@@ -29,6 +29,7 @@ const FooterComponent = styled.footer`
background-color: #A09FE3;
padding: 2rem;
display: flex;
+ margin-top: 1.5em;
flex-direction: column;
@media ${device.tablet} {
diff --git a/next/src/pages/blog/[bid].tsx b/next/src/pages/blog/[bid].tsx
index 4b52d12e..812be688 100644
--- a/next/src/pages/blog/[bid].tsx
+++ b/next/src/pages/blog/[bid].tsx
@@ -49,6 +49,7 @@ export const getServerSideProps: GetServerSideProps = async ({ params }) => {
method: "GET",
}
).then((res) => res.text());
+
return { props: { data: JSON.parse(data).Contents } };
};
diff --git a/next/yarn.lock b/next/yarn.lock
index c71c28f8..b1c680f3 100644
--- a/next/yarn.lock
+++ b/next/yarn.lock
@@ -22,7 +22,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz"
integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==
-"@babel/core@7.19.1":
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@7.19.1":
version "7.19.1"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz"
integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==
@@ -182,7 +182,7 @@
core-js-pure "^3.25.1"
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.19.0"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz"
integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
@@ -281,7 +281,7 @@
resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz"
integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
-"@emotion/react@11.10.4":
+"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@11.10.4":
version "11.10.4"
resolved "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz"
integrity sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==
@@ -311,7 +311,7 @@
resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz"
integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==
-"@emotion/styled@11.10.4":
+"@emotion/styled@^11.3.0", "@emotion/styled@11.10.4":
version "11.10.4"
resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz"
integrity sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==
@@ -644,6 +644,11 @@
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+"@types/prismjs@^1.26.0":
+ version "1.26.0"
+ resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz"
+ integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==
+
"@types/prop-types@*", "@types/prop-types@^15.7.5":
version "15.7.5"
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
@@ -663,7 +668,7 @@
dependencies:
"@types/react" "*"
-"@types/react@*", "@types/react@17.0.44":
+"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@17.0.44":
version "17.0.44"
resolved "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz"
integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==
@@ -735,7 +740,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn@^8.8.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.8.0:
version "8.8.0"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz"
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
@@ -892,7 +897,7 @@ braces@^3.0.2:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.21.3:
+browserslist@^4.21.3, "browserslist@>= 4.21.0":
version "4.21.4"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz"
integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
@@ -1267,7 +1272,7 @@ eslint-module-utils@^2.7.3:
dependencies:
debug "^3.2.7"
-eslint-plugin-import@^2.25.2:
+eslint-plugin-import@*, eslint-plugin-import@^2.25.2:
version "2.26.0"
resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz"
integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==
@@ -1355,7 +1360,7 @@ eslint-visitor-keys@^3.3.0:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
-eslint@8.11.0:
+eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.23.0 || ^8.0.0", eslint@>=5, eslint@8.11.0:
version "8.11.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz"
integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==
@@ -2029,7 +2034,7 @@ natural-compare@^1.4.0:
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-next@12.3.1:
+next@>=10.2.0, next@12.3.1:
version "12.3.1"
resolved "https://registry.npmjs.org/next/-/next-12.3.1.tgz"
integrity sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==
@@ -2245,6 +2250,11 @@ prelude-ls@^1.2.1:
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+prismjs@^1.29.0:
+ version "1.29.0"
+ resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz"
+ integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
+
prop-types@^15.6.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
@@ -2282,7 +2292,7 @@ rc@^1.2.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-react-dom@18.2.0:
+"react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0-0", react-dom@^18.0.0, "react-dom@>= 16.8.0", react-dom@>=16.6.0, react-dom@18.2.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@@ -2300,7 +2310,11 @@ react-is@^16.7.0:
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+<<<<<<< HEAD
+react-is@^18.2.0, "react-is@>= 16.8.0", react-is@18.2.0:
+=======
react-is@^18.2.0, react-is@18.2.0:
+>>>>>>> main
version "18.2.0"
resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
@@ -2315,7 +2329,7 @@ react-transition-group@^4.4.5:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react@18.2.0:
+"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0-0", react@^18.0.0, react@^18.2.0, "react@>= 16.8.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.6.0, react@>=16.8.0, react@18.2.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@@ -2331,6 +2345,18 @@ readable-stream@^3.1.1, readable-stream@^3.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+redux-persist@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz"
+ integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==
+
+redux@>4.0.0:
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz"
+ integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+
regenerator-runtime@^0.13.4:
version "0.13.9"
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
@@ -2582,7 +2608,7 @@ style-value-types@5.1.2:
hey-listen "^1.0.8"
tslib "2.4.0"
-styled-components@5.3.5:
+"styled-components@>= 2", styled-components@5.3.5:
version "5.3.5"
resolved "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz"
integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==
@@ -2711,7 +2737,7 @@ type-fest@^0.20.2:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-typescript@4.8.3:
+"typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3.3.1, typescript@4.8.3:
version "4.8.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz"
integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==