From a7b4e539df78412fb2b859f99bb018c613654e48 Mon Sep 17 00:00:00 2001 From: William Tran Date: Thu, 11 Mar 2021 07:20:20 -0500 Subject: [PATCH 01/24] Adds python file to setup database --- .gitignore | 3 ++- backend/setup_db.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 backend/setup_db.py diff --git a/.gitignore b/.gitignore index f5e96db..9069f18 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -venv \ No newline at end of file +venv +links.db \ No newline at end of file diff --git a/backend/setup_db.py b/backend/setup_db.py new file mode 100644 index 0000000..b7ff457 --- /dev/null +++ b/backend/setup_db.py @@ -0,0 +1,35 @@ +import sqlite3 +import os + +DB_PATH = os.path.join(os.path.dirname(__file__), 'links.db') + +con = sqlite3.connect(DB_PATH) + +# array of links to store +links = [ + ('http://csclub.uwaterloo.ca/','CS Club Website',3,0), + ('https://www.instagram.com/uwcsclub/','Instagram',4,1), + ('https://www.facebook.com/uw.computerscienceclub','Facebook',5,2), + ('http://twitch.tv/uwcsclub','Twitch',6,3), + ('http://bit.ly/uwcsclub-yt','YouTube',7,4), +] + +# SQLite setup +cur = con.cursor() + +# test if table already exists +cur.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='links'") +if cur.fetchone(): + raise Exception('Links table already exists.') +else: + cur.execute('''CREATE TABLE links ( + url text NOT NULL, + name text NOT NULL, + clicks int NOT NULL, + position int NOT NULL UNIQUE, + UNIQUE(url, name) + )''') + cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) + con.commit() + +con.close() \ No newline at end of file -- 2.30.2 From d12bd73eb21007b23ccaf8c35b76a2a6bc9e1a75 Mon Sep 17 00:00:00 2001 From: Adi Thakral Date: Mon, 15 Mar 2021 00:21:25 -0400 Subject: [PATCH 02/24] Add default vscode settings --- .vscode/extensions.json | 7 +++++++ .vscode/settings.json | 19 +++++++++++++++++++ backend/requirements.txt | Bin 204 -> 338 bytes 3 files changed, 26 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..0567381 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "ms-python.python", + "humao.rest-client" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e2e1b58 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "typescript.tsdk": "frontend/node_modules/typescript/lib", + "eslint.format.enable": true, + "eslint.codeActionsOnSave.mode": "all", + "[typescript]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "[typescriptreact]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "python.linting.pylintEnabled": true, + "python.linting.enabled": true, +} \ No newline at end of file diff --git a/backend/requirements.txt b/backend/requirements.txt index 131a0a98eebe1192605f97fb137b56b2b3c37c40..8eb46bcdad6215e3d7d6bb3f14f3170d613fc79b 100644 GIT binary patch literal 338 zcmYk1v2Md45QcZ&#V5dZGO>23)G0&f3#Jw^0R&iy{q#9(qIUd0j{E+@TvD*3QW6Fb zOgpP*rOqHgvQLMZg4l!2Ar++tI0I+4@t1Istr@husop~1HvkjhZ>JR%a{4r_X%rfmgNbr|wHRVUbNQKEwx3d=< CaAsHl literal 204 zcmYk0Jqv>{6h+Tm@UMubgHzWIf|EmM@uOIaiftBueA}CcQVAiCcP{7V`>A=-Q!{YU z$%sjH9T6w4Vim8Ah5euPyhR%EkvlC56JDEO*^`M`a`{IdN;;#?JRx&7UWhE}@XVB& XJK2tw)KWL=7+CdsHSUSTY~i;*-##6v -- 2.30.2 From 4e8efcf56f6dfc1ea4cfcaa3856e3042b6b239c1 Mon Sep 17 00:00:00 2001 From: Adi Thakral Date: Mon, 15 Mar 2021 00:30:16 -0400 Subject: [PATCH 03/24] Add a setup script --- README.md | 23 ++++++++++++++ assets/client-server-interaction.drawio | 1 + assets/client-server-interaction.svg | 3 ++ common.sh | 30 ++++++++++++++++++ dev.sh | 33 +++---------------- setup.sh | 42 +++++++++++++++++++++++++ 6 files changed, 104 insertions(+), 28 deletions(-) create mode 100644 README.md create mode 100644 assets/client-server-interaction.drawio create mode 100644 assets/client-server-interaction.svg create mode 100755 common.sh create mode 100755 setup.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..dfe748d --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +## Architecture + +![client-server interaction graph](./assets/client-server-interaction.svg) + +## Dependencies + +1. Node.js +1. npm +1. Python 3.6+ + +## Setup + +For setting up the frontend, `setup.sh` will run `npm install` in the `frontend` folder. + +For setting up the backend, `setup.sh` will initialize a new virtual environment and setup a dummy sqlite file for testing purposes. + +## Dev + +Run `setup.sh` and then run `dev.sh` + +## Production + +TODO \ No newline at end of file diff --git a/assets/client-server-interaction.drawio b/assets/client-server-interaction.drawio new file mode 100644 index 0000000..75995a7 --- /dev/null +++ b/assets/client-server-interaction.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/assets/client-server-interaction.svg b/assets/client-server-interaction.svg new file mode 100644 index 0000000..b308b42 --- /dev/null +++ b/assets/client-server-interaction.svg @@ -0,0 +1,3 @@ + + +
Links editor page
Links editor page
caffeine
caffeine
Response /srv/www-csc-links/index.html
Response /srv/www-csc-links/index.html
GET /
GET /
Links page
Links page
GET /links.json
GET /links.json
Response /srv/www-csc-links/links.json (does not include click count)
Response /srv/www-csc-links/links.json (does not include click co...
Consider / to be https://csclub.uwaterloo.ca/links
Consider / to be https://csclub.uwaterloo.ca/...
ONLY when a link is clicked:
POST /api/click with { "url": <url>, "name": <name> } as payload
ONLY when a link is clicked:...
200 OK
200 OK
Backend
(python)
Backend...
GET /editor/links (authenticated)
GET /editor/links (authenticated)
Response /srv/www-csc-links/editor/index.html
Response /srv/www-csc-links/editor/index.html
Dynamically generated links with click count
Dynamically generated links with click count
GET /editor (authenticated)
GET /editor (authenticated)
sqlite
sqlite
POST /editor/links (authenticated) with updated JSON recvd from /editor/links
POST /editor/links (authenticated) with updated JSON recvd from /editor...
200 OK
200 OK
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/common.sh b/common.sh new file mode 100755 index 0000000..11c8e58 --- /dev/null +++ b/common.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +PURPLE='\033[0;35m' +CYAN='\033[0;36m' +NC='\033[0m' + +function prefix_stdout_stderr() { + exec > >(trap "" INT TERM; sed "s/^/`printf "$1"`/") + exec 2> >(trap "" INT TERM; sed "s/^/`printf "$1"`/" >&2) +} + +function run_frontend_backend() { + $1 & + pid_frontend=$! + + $2 & + pid_backend=$! + + trap_ctrlc() { + echo "" + kill $pid_frontend + echo "frontend exit code: $?" + kill $pid_backend + echo "backend exit code: $?" + } + + trap trap_ctrlc INT + + wait +} \ No newline at end of file diff --git a/dev.sh b/dev.sh index 6dfb557..06b2b59 100755 --- a/dev.sh +++ b/dev.sh @@ -1,15 +1,10 @@ #!/usr/bin/env bash -PURPLE='\033[0;35m' -CYAN='\033[0;36m' -NC='\033[0m' +set -e -function prefix_stdout_stderr() { - exec > >(trap "" INT TERM; sed "s/^/`printf "$1"`/") - exec 2> >(trap "" INT TERM; sed "s/^/`printf "$1"`/" >&2) -} +source ./common.sh -function start_frontend() { +function dev_frontend() { prefix_stdout_stderr "${PURPLE}frontend: ${NC}" cd ./frontend @@ -17,31 +12,13 @@ function start_frontend() { npm run dev } -function start_backend() { +function dev_backend() { prefix_stdout_stderr "${CYAN}backend: ${NC}" cd ./backend source venv/bin/activate - echo $(which python) - python main.py } -start_frontend & -pid_frontend=$! - -start_backend & -pid_backend=$! - -trap_ctrlc() { - echo "" - kill $pid_frontend - echo "frontend exit code: $?" - kill $pid_backend - echo "backend exit code: $?" -} - -trap trap_ctrlc INT - -wait +run_frontend_backend "dev_frontend" "dev_backend" diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..94424eb --- /dev/null +++ b/setup.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +set -e + +source ./common.sh + +function setup_frontend() { + prefix_stdout_stderr "${PURPLE}frontend: ${NC}" + + cd ./frontend + + echo "Installing dependencies..." + npm i + + echo "Done!" +} + +function setup_backend() { + prefix_stdout_stderr "${CYAN}backend: ${NC}" + + cd ./backend + + echo "Deleting old virtual environment..." + rm -rf ./venv + + echo "Deleting sqlite database..." + rm ./links.db + + echo "Creating new virtual environment..." + python3 -m venv venv + source venv/bin/activate + + echo "Installing dependencies..." + pip install -r requirements.txt + + echo "Creating a dummy sqlite database at 'backend/links.db'..." + python setup_db.py + + echo "Done!" +} + +run_frontend_backend "setup_frontend" "setup_backend" -- 2.30.2 From 6a3c29da66389dba328d4d53616f416427cba18e Mon Sep 17 00:00:00 2001 From: Aditya Thakral Date: Mon, 15 Mar 2021 00:41:06 -0400 Subject: [PATCH 04/24] Fix error in setup script --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 94424eb..efa25cb 100755 --- a/setup.sh +++ b/setup.sh @@ -24,7 +24,7 @@ function setup_backend() { rm -rf ./venv echo "Deleting sqlite database..." - rm ./links.db + rm ./links.db || echo "Nothing to delete ¯\_(ツ)_/¯" echo "Creating new virtual environment..." python3 -m venv venv -- 2.30.2 From 3025ffce5cf6bac6f667ec3e4271bd719b728282 Mon Sep 17 00:00:00 2001 From: William Tran Date: Mon, 15 Mar 2021 17:33:18 -0400 Subject: [PATCH 05/24] Add a function to generate JSON from the DB --- backend/main.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/main.py b/backend/main.py index 0f45f9d..49e23da 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,9 +1,30 @@ from flask import Flask app = Flask(__name__) +import json +import sqlite3 +import os +DB_PATH = os.path.join(os.path.dirname(__file__), 'links.db') + @app.route('/') def hello_world(): return 'Hello, World!' + +def regen_JSON(): + """Gets links from DB and outputs them in JSON""" + con = sqlite3.connect(DB_PATH) + con.row_factory = sqlite3.Row + cur = con.cursor() + cur.execute('SELECT url, name FROM links ORDER BY position') + + links_list = [] + for row in cur.fetchall(): + d = dict(zip(row.keys(), row)) + links_list.append(d) + links_json = json.dumps(links_list, indent=4) + + con.close() + return links_json if __name__ == "__main__": app.run(debug=True) \ No newline at end of file -- 2.30.2 From 08fc9eb3ab9574e3a89f650bf003a4db1bd77629 Mon Sep 17 00:00:00 2001 From: Adi Thakral Date: Wed, 17 Mar 2021 02:33:12 -0400 Subject: [PATCH 06/24] Add frontend and backend integration example --- .vscode/settings.json | 12 +++++++ assets/client-server-interaction.drawio | 2 +- assets/client-server-interaction.svg | 2 +- backend/main.py | 2 +- frontend/next.config.js | 29 +++++++++++++++ frontend/pages/hello-world.json | 3 ++ frontend/pages/hello-world.tsx | 48 +++++++++++++++++++++++++ frontend/utils/api.ts | 4 +++ 8 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 frontend/next.config.js create mode 100644 frontend/pages/hello-world.json create mode 100644 frontend/pages/hello-world.tsx create mode 100644 frontend/utils/api.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index e2e1b58..bea748a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,18 @@ "typescript.tsdk": "frontend/node_modules/typescript/lib", "eslint.format.enable": true, "eslint.codeActionsOnSave.mode": "all", + "[javascript]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "[javascriptreact]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, "[typescript]": { "editor.formatOnSave": false, "editor.codeActionsOnSave": { diff --git a/assets/client-server-interaction.drawio b/assets/client-server-interaction.drawio index 75995a7..cb756fc 100644 --- a/assets/client-server-interaction.drawio +++ b/assets/client-server-interaction.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/assets/client-server-interaction.svg b/assets/client-server-interaction.svg index b308b42..0784156 100644 --- a/assets/client-server-interaction.svg +++ b/assets/client-server-interaction.svg @@ -1,3 +1,3 @@ -
Links editor page
Links editor page
caffeine
caffeine
Response /srv/www-csc-links/index.html
Response /srv/www-csc-links/index.html
GET /
GET /
Links page
Links page
GET /links.json
GET /links.json
Response /srv/www-csc-links/links.json (does not include click count)
Response /srv/www-csc-links/links.json (does not include click co...
Consider / to be https://csclub.uwaterloo.ca/links
Consider / to be https://csclub.uwaterloo.ca/...
ONLY when a link is clicked:
POST /api/click with { "url": <url>, "name": <name> } as payload
ONLY when a link is clicked:...
200 OK
200 OK
Backend
(python)
Backend...
GET /editor/links (authenticated)
GET /editor/links (authenticated)
Response /srv/www-csc-links/editor/index.html
Response /srv/www-csc-links/editor/index.html
Dynamically generated links with click count
Dynamically generated links with click count
GET /editor (authenticated)
GET /editor (authenticated)
sqlite
sqlite
POST /editor/links (authenticated) with updated JSON recvd from /editor/links
POST /editor/links (authenticated) with updated JSON recvd from /editor...
200 OK
200 OK
Viewer does not support full SVG 1.1
\ No newline at end of file +
Links editor page
Links editor page
caffeine
caffeine
Response /srv/www-csc-links/index.html
Response /srv/www-csc-links/index.html
GET /
GET /
Links page
Links page
GET /links.json
GET /links.json
Response /srv/www-csc-links/links.json (does not include click count)
Response /srv/www-csc-links/links.json (does not include click co...
Consider / to be https://csclub.uwaterloo.ca/links
Consider / to be https://csclub.uwaterloo.ca/...
ONLY when a link is clicked:
POST /api/click with { "url": <url>, "name": <name> } as payload
ONLY when a link is clicked:...
200 OK
200 OK
Backend
(python)
Backend...
GET /api/editor/links (authenticated)
GET /api/editor/links (authenticat...
Response /srv/www-csc-links/editor/index.html
Response /srv/www-csc-links/editor/index.html
Dynamically generated links with click count
Dynamically generated links with click count
GET /editor (authenticated)
GET /editor (authenticated)
sqlite
sqlite
POST /api/editor/links (authenticated) with updated JSON recvd from /api/editor/links
POST /api/editor/links (authenticated) with updated JSON recvd from /ap...
200 OK
200 OK
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/backend/main.py b/backend/main.py index 49e23da..3ceebe7 100644 --- a/backend/main.py +++ b/backend/main.py @@ -8,7 +8,7 @@ DB_PATH = os.path.join(os.path.dirname(__file__), 'links.db') @app.route('/') def hello_world(): - return 'Hello, World!' + return 'Hello from backend!' def regen_JSON(): """Gets links from DB and outputs them in JSON""" diff --git a/frontend/next.config.js b/frontend/next.config.js new file mode 100644 index 0000000..b5619f4 --- /dev/null +++ b/frontend/next.config.js @@ -0,0 +1,29 @@ +// @ts-check + +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line no-undef +const { PHASE_DEVELOPMENT_SERVER } = require("next/constants"); + +const devConfig = { + async rewrites() { + return [ + { + source: "/api", + destination: "http://localhost:5000", + }, + { + source: "/api/:slug", + destination: "http://localhost:5000/:slug", + }, + ]; + }, +}; + +const prodConfig = { + basePath: "/links", +}; + +// eslint-disable-next-line no-undef +module.exports = (phase) => + phase === PHASE_DEVELOPMENT_SERVER ? devConfig : prodConfig; diff --git a/frontend/pages/hello-world.json b/frontend/pages/hello-world.json new file mode 100644 index 0000000..c4040a6 --- /dev/null +++ b/frontend/pages/hello-world.json @@ -0,0 +1,3 @@ +{ + "greeting": "Hello from JSON" +} \ No newline at end of file diff --git a/frontend/pages/hello-world.tsx b/frontend/pages/hello-world.tsx new file mode 100644 index 0000000..a21debe --- /dev/null +++ b/frontend/pages/hello-world.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import { GetStaticProps } from "next"; +import GreetingJSON from "./hello-world.json"; +import { fetchExample } from "utils/api"; + +interface Props { + greeting: string; +} + +export const getStaticProps: GetStaticProps = async () => { + return { + props: { greeting: GreetingJSON.greeting }, // will be passed to the page component as props + // Next.js will attempt to re-generate the page: + // - When a request comes in + // - At most once every second + revalidate: 1, + }; +}; + +function HelloWorld({ greeting }: Props): JSX.Element { + const [greetings, setGreetings] = React.useState([greeting]); + + const getMoreGreetings = async () => { + const greetingFromBackend = await fetchExample(); + setGreetings([ + ...greetings, + `"${greetingFromBackend}" --- ${new Date().toISOString()}`, + ]); + }; + + return ( +
+ +
    + {greetings.map((greeting) => ( +
  1. {greeting}
  2. + ))} +
+
+ ); +} + +export default HelloWorld; diff --git a/frontend/utils/api.ts b/frontend/utils/api.ts new file mode 100644 index 0000000..771e2ac --- /dev/null +++ b/frontend/utils/api.ts @@ -0,0 +1,4 @@ +export async function fetchExample(): Promise { + const response = await fetch("/api"); + return await response.text(); +} -- 2.30.2 From ab544fc759f5d3af72645ae275c7c05af743706c Mon Sep 17 00:00:00 2001 From: Bonnie Peng Date: Mon, 22 Mar 2021 15:35:13 -0400 Subject: [PATCH 07/24] Add the Link component --- frontend/components/Link/index.tsx | 7 - frontend/components/Links/index.tsx | 43 ++++ frontend/components/index.ts | 2 +- frontend/package-lock.json | 315 ++++++++++++++++++++++++++-- frontend/package.json | 2 +- frontend/pages/_app.tsx | 12 +- frontend/pages/index.tsx | 77 +------ frontend/public/csc_logo.png | Bin 0 -> 97816 bytes frontend/tailwind.config.js | 20 +- 9 files changed, 377 insertions(+), 101 deletions(-) delete mode 100644 frontend/components/Link/index.tsx create mode 100644 frontend/components/Links/index.tsx create mode 100644 frontend/public/csc_logo.png diff --git a/frontend/components/Link/index.tsx b/frontend/components/Link/index.tsx deleted file mode 100644 index 230046d..0000000 --- a/frontend/components/Link/index.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; - -const Link: React.FC = () => { - return
; -}; - -export default Link; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx new file mode 100644 index 0000000..9750d69 --- /dev/null +++ b/frontend/components/Links/index.tsx @@ -0,0 +1,43 @@ +import React from "react"; + +const styles = { + fontFamily: "Karla", +}; + +interface Link { + name: string; + url: string; +} +interface LinkProps { + links: Link[]; +} + +const Links: React.FC = ({ links }) => { + return ( +
+ CSC Logo +

@uwcsclub

+
    + {links.map(({ name, url }) => ( +
  • + + {name} + +
  • + ))} +
+
+ ); +}; + +export default Links; diff --git a/frontend/components/index.ts b/frontend/components/index.ts index 3e28826..a6f1ea8 100644 --- a/frontend/components/index.ts +++ b/frontend/components/index.ts @@ -1,3 +1,3 @@ -export { default as Link } from "./Link"; +export { default as Links } from "./Links"; export { default as EditLink } from "./EditLink"; export { default as Preview } from "./Preview"; diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 989270e..fbaeb7e 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -677,6 +677,182 @@ "unist-util-find-all-after": "^3.0.2" } }, + "@tailwindcss/postcss7-compat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.0.3.tgz", + "integrity": "sha512-R43aiSzwlybDMhDld8vkSIKPSLXxbbmotZ+I2GIrX+IzFNy9JAByC7Ncf9A81Dg0JLBWHY5m769lBbBnJCF8cw==", + "dev": true, + "requires": { + "@fullhuman/postcss-purgecss": "^3.1.3", + "autoprefixer": "^9", + "bytes": "^3.0.0", + "chalk": "^4.1.0", + "color": "^3.1.3", + "detective": "^5.2.0", + "didyoumean": "^1.2.1", + "fs-extra": "^9.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.20", + "modern-normalize": "^1.0.0", + "node-emoji": "^1.8.1", + "object-hash": "^2.1.1", + "postcss": "^7", + "postcss-functions": "^3", + "postcss-js": "^2", + "postcss-nested": "^4", + "postcss-selector-parser": "^6.0.4", + "postcss-value-parser": "^4.1.0", + "pretty-hrtime": "^1.0.3", + "reduce-css-calc": "^2.1.8", + "resolve": "^1.19.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@types/json-schema": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", @@ -1579,7 +1755,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3197,8 +3372,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "2.1.0", @@ -4266,8 +4440,7 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.6", @@ -4326,12 +4499,12 @@ } }, "postcss": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz", - "integrity": "sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.7.tgz", + "integrity": "sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw==", "dev": true, "requires": { - "colorette": "^1.2.1", + "colorette": "^1.2.2", "nanoid": "^3.1.20", "source-map": "^0.6.1" }, @@ -4391,13 +4564,41 @@ } }, "postcss-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", - "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", + "integrity": "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==", "dev": true, "requires": { "camelcase-css": "^2.0.1", - "postcss": "^8.1.6" + "postcss": "^7.0.18" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-less": { @@ -4444,12 +4645,41 @@ "dev": true }, "postcss-nested": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.4.tgz", - "integrity": "sha512-/dimXVqdUAVS2ZiIX0uvyk9UCI825y6LW4TnjG51JTKF89CcorHPAjTUGPF70k2wlQYts5OzfnhYMgfGfHCClQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz", + "integrity": "sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.4" + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-resolve-nested-selector": { @@ -4728,6 +4958,25 @@ "glob": "^7.0.0", "postcss": "^8.2.1", "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "postcss": { + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.7.tgz", + "integrity": "sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.20", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "querystring": { @@ -5143,7 +5392,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -5151,8 +5399,7 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shell-quote": { "version": "1.7.2", @@ -5904,6 +6151,25 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "postcss-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", + "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1", + "postcss": "^8.1.6" + } + }, + "postcss-nested": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.4.tgz", + "integrity": "sha512-/dimXVqdUAVS2ZiIX0uvyk9UCI825y6LW4TnjG51JTKF89CcorHPAjTUGPF70k2wlQYts5OzfnhYMgfGfHCClQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6254,6 +6520,14 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "requires": { + "lodash": "^4.17.15" + } + }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -6268,7 +6542,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } diff --git a/frontend/package.json b/frontend/package.json index 38cbfea..49298d6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -32,7 +32,7 @@ "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "husky": "^5.1.3", - "postcss": "^8.2.6", + "postcss": "^8.2.7", "prettier": "^2.2.1", "stylelint": "^13.11.0", "stylelint-config-standard": "^20.0.0", diff --git a/frontend/pages/_app.tsx b/frontend/pages/_app.tsx index 9f42e95..6229aa8 100644 --- a/frontend/pages/_app.tsx +++ b/frontend/pages/_app.tsx @@ -1,9 +1,19 @@ import type { AppProps } from "next/app"; import React from "react"; import "styles/globals.css"; +import Head from "next/head"; const MyApp: React.FC = ({ Component, pageProps }) => ( - + <> + + @uwcsclub | LinkList + + + + ); export default MyApp; diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 545b3fb..22b6188 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,84 +1,23 @@ import React from "react"; -import Head from "next/head"; import { GetStaticProps } from "next"; import styles from "styles/Home.module.css"; +import { Links } from "components"; + +// TODO: change +const API = "https://api.thedogapi.com/v1/breeds?limit=10&page=0"; export const getStaticProps: GetStaticProps = async () => { - // TODO: Fetch links here + // fetch data here + const data = await fetch(API).then((res) => res.json()); return { - props: { links: [] }, // will be passed to the page component as props - // Next.js will attempt to re-generate the page: - // - When a request comes in - // - At most once every second + props: { links: data }, // will be passed to the page component as props revalidate: 1, }; }; const Home: React.FC = ({ links }: any) => { - console.log({ links }); - - // TODO: Remove starter code - return ( - - ); + return ; }; export default Home; diff --git a/frontend/public/csc_logo.png b/frontend/public/csc_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a751f0b8b42a70408b027a3d0b0bf00ecadb2c58 GIT binary patch literal 97816 zcmYg&Wk8he^YyYWjnb{;64Ic6(jqC{CEZAfbc0BDm$Y;*-AH%0Al=;!{~LY$z3&IV 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 EB*2{=H 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 literal 0 HcmV?d00001 diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 42b14c1..3db430c 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -12,7 +12,25 @@ module.exports = { }, darkMode: false, // or 'media' or 'class' theme: { - extend: {}, + extend: { + colors: { + gray: { + 450: "#3d3b3c", + }, + }, + fontSize: { + s: ".82rem", + }, + }, + minWidth: { + "9/10": "90%", + }, + maxWidth: { + "6/10": "60%", + }, + container: { + center: true, + }, }, variants: { extend: {}, -- 2.30.2 From fe4e61dd0cacbd7eb8895bd85994a2737d7bc325 Mon Sep 17 00:00:00 2001 From: Jared He Date: Sun, 28 Mar 2021 15:22:16 -0400 Subject: [PATCH 08/24] Clicks and views --- .gitignore | 4 +- frontend/components/Analytics/assets.tsx | 43 ++++++++ frontend/components/Analytics/index.tsx | 50 ++++++++++ frontend/components/Links/index.tsx | 32 ++++-- frontend/pages/_app.tsx | 4 - frontend/pages/editor/index.tsx | 67 +------------ frontend/pages/editor/login.tsx | 68 +------------ frontend/pages/index.tsx | 1 - frontend/styles/Home.module.css | 122 ----------------------- frontend/styles/globals.css | 1 + frontend/tailwind.config.js | 15 +++ 11 files changed, 140 insertions(+), 267 deletions(-) create mode 100644 frontend/components/Analytics/assets.tsx create mode 100644 frontend/components/Analytics/index.tsx delete mode 100644 frontend/styles/Home.module.css diff --git a/.gitignore b/.gitignore index 9069f18..2af45df 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ venv -links.db \ No newline at end of file +links.db +/.vs +/.vscode \ No newline at end of file diff --git a/frontend/components/Analytics/assets.tsx b/frontend/components/Analytics/assets.tsx new file mode 100644 index 0000000..ca3246b --- /dev/null +++ b/frontend/components/Analytics/assets.tsx @@ -0,0 +1,43 @@ +import React from "react"; + +const Question = ( + + + +); + +const Chevron = ( + + + + +); + +export { Question, Chevron }; diff --git a/frontend/components/Analytics/index.tsx b/frontend/components/Analytics/index.tsx new file mode 100644 index 0000000..80f0e12 --- /dev/null +++ b/frontend/components/Analytics/index.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { useState, useEffect } from "react"; +import { Question, Chevron } from "./assets"; + +const Analytics: React.FC = () => { + const [viewCount, setViewCount] = useState(0); + const [clickCount, setClickCount] = useState(0); + + useEffect(() => { + fetch("https://dog.ceo/api/breeds/list/all") // TODO: Change to '/api/editor/links' + .then((results) => results.json()) + .then((data) => { + console.log("Success:", data); + // TODO: Assign the correct values here: + // setViewCount(data.views); + // setClickCount(data.clicks); + }) + .catch((error) => { + console.error("Error:", error); + }); + }, []); + + return ( +
+
+ Lifetime Analytics: +
+
+
+

Views:

+

{viewCount || "-"}

+
+
+
+
+
+

Clicks:

+

{clickCount || "-"}

+
+
+
{Question}
+
+
+ {Chevron} +
+
+ ); +}; + +export default Analytics; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index 9750d69..6e36b1d 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -1,8 +1,5 @@ import React from "react"; - -const styles = { - fontFamily: "Karla", -}; +import { useEffect } from "react"; interface Link { name: string; @@ -13,11 +10,29 @@ interface LinkProps { } const Links: React.FC = ({ links }) => { + const postData = (url = ""): void => { + fetch(url, { + method: "POST", + }) + .then((response) => response.json()) + .then((data) => { + console.log("Success:", data); + }) + .catch((error) => { + console.error("Error:", error); + }); + }; + + useEffect((): void => { + postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/view' + }, []); + + const handleClick = (): void => { + postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/click' + }; + return ( -
+
CSC Logo

@uwcsclub

    @@ -30,6 +45,7 @@ const Links: React.FC = ({ links }) => { href={url} target="_blank" rel="noreferrer" + onClick={handleClick} > {name} diff --git a/frontend/pages/_app.tsx b/frontend/pages/_app.tsx index 6229aa8..945cce8 100644 --- a/frontend/pages/_app.tsx +++ b/frontend/pages/_app.tsx @@ -7,10 +7,6 @@ const MyApp: React.FC = ({ Component, pageProps }) => ( <> @uwcsclub | LinkList - diff --git a/frontend/pages/editor/index.tsx b/frontend/pages/editor/index.tsx index 7158f3c..fa00333 100644 --- a/frontend/pages/editor/index.tsx +++ b/frontend/pages/editor/index.tsx @@ -1,7 +1,6 @@ -import Head from "next/head"; import React from "react"; import { GetStaticProps } from "next"; -import styles from "styles/Home.module.css"; +import Analytics from "components/Analytics/index"; export const getStaticProps: GetStaticProps = async () => { // TODO: Fetch links here @@ -19,68 +18,8 @@ const Editor: React.FC = ({ data }: any) => { console.log({ data }); return ( - // TODO: Remove starter code -
    - - Create Next App - - - -
    -
    -
    -

    - Welcome to Next.js! -

    -
    -
    - -

    - Get started by editing{" "} - pages/index.js -

    - - -
    - - +
    +
    ); }; diff --git a/frontend/pages/editor/login.tsx b/frontend/pages/editor/login.tsx index 923b3bd..a5c920e 100644 --- a/frontend/pages/editor/login.tsx +++ b/frontend/pages/editor/login.tsx @@ -1,73 +1,7 @@ -import Head from "next/head"; import React from "react"; -import styles from "styles/Home.module.css"; const Login: React.FC = () => { - return ( - // TODO: Remove starter code - - ); + return
    ; }; export default Login; diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 22b6188..040d8ee 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,6 +1,5 @@ import React from "react"; import { GetStaticProps } from "next"; -import styles from "styles/Home.module.css"; import { Links } from "components"; // TODO: change diff --git a/frontend/styles/Home.module.css b/frontend/styles/Home.module.css deleted file mode 100644 index 42e7e60..0000000 --- a/frontend/styles/Home.module.css +++ /dev/null @@ -1,122 +0,0 @@ -.container { - min-height: 100vh; - padding: 0 0.5rem; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.main { - padding: 5rem 0; - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.footer { - width: 100%; - height: 100px; - border-top: 1px solid #eaeaea; - display: flex; - justify-content: center; - align-items: center; -} - -.footer img { - margin-left: 0.5rem; -} - -.footer a { - display: flex; - justify-content: center; - align-items: center; -} - -.title a { - color: #0070f3; - text-decoration: none; -} - -.title a:hover, -.title a:focus, -.title a:active { - text-decoration: underline; -} - -.title { - margin: 0; - line-height: 1.15; - font-size: 4rem; -} - -.title, -.description { - text-align: center; -} - -.description { - line-height: 1.5; - font-size: 1.5rem; -} - -.code { - background: #fafafa; - border-radius: 5px; - padding: 0.75rem; - font-size: 1.1rem; - font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, - Bitstream Vera Sans Mono, Courier New, monospace; -} - -.grid { - display: flex; - align-items: center; - justify-content: center; - flex-wrap: wrap; - max-width: 800px; - margin-top: 3rem; -} - -.card { - margin: 1rem; - flex-basis: 45%; - padding: 1.5rem; - text-align: left; - color: inherit; - text-decoration: none; - border: 1px solid #eaeaea; - border-radius: 10px; - transition: color 0.15s ease, border-color 0.15s ease; -} - -.card:hover, -.card:focus, -.card:active { - color: #0070f3; - border-color: #0070f3; -} - -.card h3 { - margin: 0 0 1rem 0; - font-size: 1.5rem; -} - -.card p { - margin: 0; - font-size: 1.25rem; - line-height: 1.5; -} - -.logo { - height: 1em; -} - -@media (max-width: 600px) { - .grid { - width: 100%; - flex-direction: column; - } -} diff --git a/frontend/styles/globals.css b/frontend/styles/globals.css index 1f40aad..2af3ba4 100644 --- a/frontend/styles/globals.css +++ b/frontend/styles/globals.css @@ -1,4 +1,5 @@ /* ./your-css-folder/styles.css */ +@import url('https://fonts.googleapis.com/css2?family=Karla:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 3db430c..4c723e6 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -14,13 +14,28 @@ module.exports = { theme: { extend: { colors: { + analytics: { + border: "#d7dce1", + "view-icon": "#39e09b", + "click-icon": "#8a86e5", + }, gray: { 450: "#3d3b3c", }, }, + fontFamily: { + karla: ["Karla", "Verdana", "sans-serif"], + }, fontSize: { s: ".82rem", }, + screens: { + "lt-lg": "992px", + }, + flex: { + analytics: "1 0 0", + chevron: "0 0 16px", + }, }, minWidth: { "9/10": "90%", -- 2.30.2 From b00093bd2fff890a65bb15fbca6d953a3253bde7 Mon Sep 17 00:00:00 2001 From: Catherine Wan Date: Sun, 28 Mar 2021 18:23:05 -0400 Subject: [PATCH 09/24] Revert "first draft for get_links()" This reverts commit cea734efd78bb2a3b83dfdb31a328bae8df0298f. --- backend/main.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/main.py b/backend/main.py index 3ceebe7..3755558 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,4 +1,4 @@ -from flask import Flask +from flask import Flask, request app = Flask(__name__) import json @@ -26,5 +26,19 @@ def regen_JSON(): con.close() return links_json +@app.route('/clicks', methods=['POST']) +def update_clicks(): + if ('url' not in request.json or 'name' not in request.json): + return 'url and/or name not found', 500 + else: + url_id = request.json['url'] + url_name = request.json['name'] + con = sqlite3.connect(DB_PATH) + cur = con.cursor() + cur.execute("UPDATE links SET clicks=clicks + 1 WHERE url=? AND name=?", [url_id, url_name]) + con.commit() + con.close() + return 'ok' + if __name__ == "__main__": app.run(debug=True) \ No newline at end of file -- 2.30.2 From 9efdb8fdbfc1ac1a8b00963c232ec8c6d012bbeb Mon Sep 17 00:00:00 2001 From: Yueran Zhang Date: Mon, 29 Mar 2021 15:48:22 -0400 Subject: [PATCH 10/24] Add an endpoint to update links in DB --- .gitignore | 3 +- backend/data.json | 22 ++++++++++++++ backend/main.py | 62 +++++++++++++++++++++++++++++++++++----- backend/requirements.txt | 1 + 4 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 backend/data.json diff --git a/.gitignore b/.gitignore index 2af45df..0b07ba6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ venv links.db +password.txt /.vs -/.vscode \ No newline at end of file +/.vscode diff --git a/backend/data.json b/backend/data.json new file mode 100644 index 0000000..9943cb4 --- /dev/null +++ b/backend/data.json @@ -0,0 +1,22 @@ +[ + { + "url": "http://csclub.uwaterloo.ca/", + "name": "CS Club Website" + }, + { + "url": "https://www.instagram.com/uwcsclub/", + "name": "Instagram" + }, + { + "url": "https://www.facebook.com/uw.computerscienceclub", + "name": "Facebook" + }, + { + "url": "http://twitch.tv/uwcsclub", + "name": "Twitch" + }, + { + "url": "http://bit.ly/uwcsclub-yt", + "name": "YouTube" + } +] diff --git a/backend/main.py b/backend/main.py index 3755558..e69b06d 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,15 +1,22 @@ from flask import Flask, request -app = Flask(__name__) - +from flask_httpauth import HTTPBasicAuth +from werkzeug.security import generate_password_hash, check_password_hash import json import sqlite3 import os DB_PATH = os.path.join(os.path.dirname(__file__), 'links.db') -@app.route('/') -def hello_world(): - return 'Hello from backend!' - +app = Flask(__name__) +auth = HTTPBasicAuth() + +f = open("password.txt","r") +pwd = f.readline().rstrip("\n") +f.close() + +users = { + "admin": generate_password_hash(pwd), +} + def regen_JSON(): """Gets links from DB and outputs them in JSON""" con = sqlite3.connect(DB_PATH) @@ -26,6 +33,47 @@ def regen_JSON(): con.close() return links_json +@auth.verify_password +def verify_password(username, password): + if username in users and \ + check_password_hash(users.get(username), password): + return username + +@app.route('/editor/links', methods = ['POST']) +@auth.login_required +def update_links(): + con = sqlite3.connect(DB_PATH) + cur = con.cursor() + try: + cur.execute("begin") + cur.execute('DELETE FROM links') + + links = [] + data = request.json['links'] + items = 'url', 'name', 'clicks', 'position' + for i in range(len(data)): + if not(all(e in data[i] for e in items)): + return "Bad request, some items missing from link object", 400 + + url = data[i]['url'] + name = data[i]['name'] + clicks = data[i]['clicks'] + position = data[i]['position'] # TODO + + newlink = (url, name, clicks, position) + links.append(newlink) + + cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) + con.commit() + data = regen_JSON() + outfile = open('data.json', 'w') + print(data, file=outfile) + f.close() + + except: + cur.execute("rollback") + return "done updating links" + @app.route('/clicks', methods=['POST']) def update_clicks(): if ('url' not in request.json or 'name' not in request.json): @@ -41,4 +89,4 @@ def update_clicks(): return 'ok' if __name__ == "__main__": - app.run(debug=True) \ No newline at end of file + app.run(debug=True) diff --git a/backend/requirements.txt b/backend/requirements.txt index 8eb46bc..bc89faa 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -17,3 +17,4 @@ types-typing-extensions==3.7.2 types-Werkzeug==0.1.1 Werkzeug==1.0.1 wrapt==1.12.1 +Flask-HTTPAuth==4.2.0 \ No newline at end of file -- 2.30.2 From 7389e555fe55503fd1dd3873bdb70f084c4bd2c4 Mon Sep 17 00:00:00 2001 From: Catherine Wan Date: Mon, 29 Mar 2021 18:56:59 -0400 Subject: [PATCH 11/24] Add endpoint to list all attributes (for editor to consume) --- backend/data.json | 22 ---------------------- backend/main.py | 26 +++++++++++++++++++------- backend/requirements.txt | 2 +- 3 files changed, 20 insertions(+), 30 deletions(-) delete mode 100644 backend/data.json diff --git a/backend/data.json b/backend/data.json deleted file mode 100644 index 9943cb4..0000000 --- a/backend/data.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "url": "http://csclub.uwaterloo.ca/", - "name": "CS Club Website" - }, - { - "url": "https://www.instagram.com/uwcsclub/", - "name": "Instagram" - }, - { - "url": "https://www.facebook.com/uw.computerscienceclub", - "name": "Facebook" - }, - { - "url": "http://twitch.tv/uwcsclub", - "name": "Twitch" - }, - { - "url": "http://bit.ly/uwcsclub-yt", - "name": "YouTube" - } -] diff --git a/backend/main.py b/backend/main.py index e69b06d..372f23d 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,4 +1,4 @@ -from flask import Flask, request +from flask import Flask, request, jsonify from flask_httpauth import HTTPBasicAuth from werkzeug.security import generate_password_hash, check_password_hash import json @@ -9,12 +9,8 @@ DB_PATH = os.path.join(os.path.dirname(__file__), 'links.db') app = Flask(__name__) auth = HTTPBasicAuth() -f = open("password.txt","r") -pwd = f.readline().rstrip("\n") -f.close() - users = { - "admin": generate_password_hash(pwd), + "admin": generate_password_hash("test"), } def regen_JSON(): @@ -68,12 +64,28 @@ def update_links(): data = regen_JSON() outfile = open('data.json', 'w') print(data, file=outfile) - f.close() + outfile.close() except: cur.execute("rollback") return "done updating links" +@app.route('/editor/links', methods = ['GET']) +@auth.login_required +def get_links(): + # endpoint lists all URLs and clicks, returns json object for editor. + con = sqlite3.connect(DB_PATH) + cur = con.cursor() + cur.execute('SELECT position, name, url, clicks FROM links ORDER BY position') + + links_list = [] + for row in cur.fetchall(): + d = dict(zip(["position", "name", "url", "clicks"], [row[0], row[1], row[2], row[3]])) + links_list.append(d) + + con.close() + return jsonify(links_list) + @app.route('/clicks', methods=['POST']) def update_clicks(): if ('url' not in request.json or 'name' not in request.json): diff --git a/backend/requirements.txt b/backend/requirements.txt index bc89faa..db479c9 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -17,4 +17,4 @@ types-typing-extensions==3.7.2 types-Werkzeug==0.1.1 Werkzeug==1.0.1 wrapt==1.12.1 -Flask-HTTPAuth==4.2.0 \ No newline at end of file +Flask-HTTPAuth==4.2.0 -- 2.30.2 From 006f12c6182938df6b7a264e6196005e6e382e34 Mon Sep 17 00:00:00 2001 From: Amy Wang Date: Wed, 31 Mar 2021 00:28:08 -0400 Subject: [PATCH 12/24] Login page for links editor --- frontend/components/Login/authcontext.tsx | 40 ++++++++++++++ frontend/components/Login/loginbox.tsx | 51 +++++++++++++++++ frontend/components/Login/loginhead.tsx | 22 ++++++++ frontend/components/editor.tsx | 12 ++++ frontend/pages/editor.tsx | 52 ++++++++++++++++++ frontend/pages/editor/index.tsx | 27 --------- frontend/pages/editor/login.tsx | 7 --- frontend/public/fonts/Karla-Bold.ttf | Bin 0 -> 38364 bytes frontend/public/fonts/Karla-Regular.ttf | Bin 0 -> 38304 bytes frontend/public/fonts/Karla-SemiBold.ttf | Bin 0 -> 38348 bytes .../public/fonts/Karla-VariableFont_wght.ttf | Bin 0 -> 78356 bytes frontend/public/images/csc-logo-fb-trans.png | Bin 0 -> 104918 bytes frontend/styles/globals.css | 7 +++ frontend/tailwind.config.js | 2 + 14 files changed, 186 insertions(+), 34 deletions(-) create mode 100644 frontend/components/Login/authcontext.tsx create mode 100644 frontend/components/Login/loginbox.tsx create mode 100644 frontend/components/Login/loginhead.tsx create mode 100644 frontend/components/editor.tsx create mode 100644 frontend/pages/editor.tsx delete mode 100644 frontend/pages/editor/index.tsx delete mode 100644 frontend/pages/editor/login.tsx create mode 100644 frontend/public/fonts/Karla-Bold.ttf create mode 100644 frontend/public/fonts/Karla-Regular.ttf create mode 100644 frontend/public/fonts/Karla-SemiBold.ttf create mode 100644 frontend/public/fonts/Karla-VariableFont_wght.ttf create mode 100644 frontend/public/images/csc-logo-fb-trans.png diff --git a/frontend/components/Login/authcontext.tsx b/frontend/components/Login/authcontext.tsx new file mode 100644 index 0000000..55ce0e7 --- /dev/null +++ b/frontend/components/Login/authcontext.tsx @@ -0,0 +1,40 @@ +import React, { useState, useContext, createContext } from "react"; + +export interface AuthContextState { + loggedIn: boolean; + loginFailed: boolean; + login: (pass?: string) => void; +} + +const DEFAULT_STATE: AuthContextState = { + loggedIn: false, + loginFailed: false, + login: () => console.error("No parent AuthContext found!"), +}; + +const AuthContext: React.Context = createContext( + DEFAULT_STATE +); + +const password = "bubbles"; + +export const AuthProvider: React.FC = (props) => { + const [loggedIn, setLoggedIn] = useState(false); + const [loginFailed, setLoginFailed] = useState(false); + + function login(pass?: string): void { + if (pass === password) { + setLoggedIn(true); + setLoginFailed(false); + } else { + setLoggedIn(false); + setLoginFailed(true); + } + } + + return ( + + ); +}; + +export const useAuth = () => useContext(AuthContext); diff --git a/frontend/components/Login/loginbox.tsx b/frontend/components/Login/loginbox.tsx new file mode 100644 index 0000000..fcaba99 --- /dev/null +++ b/frontend/components/Login/loginbox.tsx @@ -0,0 +1,51 @@ +import React, { useState } from "react"; +import { useAuth } from "components/Login/authcontext"; + +const LoginBox: React.FC = () => { + const [password, setPassword] = useState(""); + const [focused, setFocused] = useState(false); + const { login, loginFailed } = useAuth(); + + const passwordLabelClassName = `absolute inset-y-0 left-0 px-4 font-sans text-gray-600 ${ + focused || password + ? "transform scale-75 -translate-y-5 -translate-x-2" + : "" + } transition-transform pointer-events-none`; + + function handleSubmit(e: React.SyntheticEvent): void { + e.preventDefault(); + login(password); + setPassword(""); + } + + return ( +
    + {loginFailed ? ( +
    Invalid credentials.
    + ) : null} +
    +
    + + setFocused(true)} + onBlur={() => setFocused(false)} + onChange={(event) => setPassword(event.target.value)} + className="bg-transparent p-4 border border-gray-300 leading-snug focus:outline-none focus:border-gray-500 rounded" + /> +
    + +
    +
    + ); +}; + +export default LoginBox; diff --git a/frontend/components/Login/loginhead.tsx b/frontend/components/Login/loginhead.tsx new file mode 100644 index 0000000..950e223 --- /dev/null +++ b/frontend/components/Login/loginhead.tsx @@ -0,0 +1,22 @@ +import Image from "next/image"; + +const LoginHead: React.FC = () => { + return ( +
    +
    + CSC Logo +

    linklist

    +
    +

    + Log in to continue to your Linklist admin +

    +
    + ); +}; + +export default LoginHead; diff --git a/frontend/components/editor.tsx b/frontend/components/editor.tsx new file mode 100644 index 0000000..14b655e --- /dev/null +++ b/frontend/components/editor.tsx @@ -0,0 +1,12 @@ +import React from "react"; +import Analytics from "components/Analytics/index"; + +const Editor: React.FC = () => { + return ( +
    + +
    + ); +}; + +export default Editor; diff --git a/frontend/pages/editor.tsx b/frontend/pages/editor.tsx new file mode 100644 index 0000000..c96c1b2 --- /dev/null +++ b/frontend/pages/editor.tsx @@ -0,0 +1,52 @@ +import Head from "next/head"; +import { GetStaticProps } from "next"; +import React from "react"; +import { AuthProvider, useAuth } from "components/Login/authcontext"; +import LoginHead from "components/Login/loginhead"; +import LoginBox from "components/Login/loginbox"; +import Editor from "components/editor"; + +export const getStaticProps: GetStaticProps = async () => { + // TODO: Fetch links here + + return { + props: { data: null }, // will be passed to the page component as props + // Next.js will attempt to re-generate the page: + // - When a request comes in + // - At most once every second + revalidate: 1, + }; +}; + +const LoginScreen: React.FC = () => { + return ( +
    +
    +
    + + Login + + +
    + +
    +
    +
    +
    + ); +}; + +const LoginChecker: React.FC = () => { + const { loggedIn } = useAuth(); + return loggedIn ? : ; +}; + +const Login: React.FC = () => { + return ( + + + + ); +}; + +export default Login; diff --git a/frontend/pages/editor/index.tsx b/frontend/pages/editor/index.tsx deleted file mode 100644 index fa00333..0000000 --- a/frontend/pages/editor/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from "react"; -import { GetStaticProps } from "next"; -import Analytics from "components/Analytics/index"; - -export const getStaticProps: GetStaticProps = async () => { - // TODO: Fetch links here - - return { - props: { data: null }, // will be passed to the page component as props - // Next.js will attempt to re-generate the page: - // - When a request comes in - // - At most once every second - revalidate: 1, - }; -}; - -const Editor: React.FC = ({ data }: any) => { - console.log({ data }); - - return ( -
    - -
    - ); -}; - -export default Editor; diff --git a/frontend/pages/editor/login.tsx b/frontend/pages/editor/login.tsx deleted file mode 100644 index a5c920e..0000000 --- a/frontend/pages/editor/login.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; - -const Login: React.FC = () => { - return
    ; -}; - -export default Login; diff --git a/frontend/public/fonts/Karla-Bold.ttf b/frontend/public/fonts/Karla-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c58a74619a9e96d6ee275dda4567793443c17231 GIT binary patch literal 38364 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%0DABu)hUD=}DsjRO@Mf}&Os1FYIw@mETg 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 literal 0 HcmV?d00001 diff --git a/frontend/public/fonts/Karla-Regular.ttf b/frontend/public/fonts/Karla-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a08cc9b60caf5d3792c611c8d8b5ae556f0ab41f GIT binary patch literal 38304 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

    %! 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 &28rTl-J`U@2VwWHH0+lik{*t~Yg&3X zxH7#ay&>n#9ApRM((L7?8`G`ev+2X>qv;d)-o5mhbPJ(VgF7(saSIIxg+s&gU}i8M zzA&5;;-v`Jg+Bmyh1ql9Bkx5RkiWYZxrO?a2& z%$A&cB&Sw#>Lq8Tt-OpMrIY>A(Sq?o~^h9gNY->(2 zeUj6KGlXidsFkyEexSBqm0X8}O;@!0E-OXy8KL?>@<8%c;vBQqPrfdECwUTD{UQ0G z>6|<(ypa3~9lTT`m7D5lrAT!V_5#aNH>hun6pl;XO3bP1CwB;IQuJ+l4!t+qb5^MT zY);XK;cNwWSgocSgz8tRJ)#d;ze*hu9v8kTJY{_>by}$YmTDG#(P}<*$uR8;Q`REs ze8cRRRewttYvh&)hot)ue_)oj5j`qB795|R3{Femg_ZO)#_zFylCBlj8%Coz8vE&o zH0rkrAHBi?ylj0VYX@Es9dS;ie}UXzn@vc+D?F2aA6izz@(kaJF#Vaz@}*%I4@0of zdRJH^lr4%ZNft-ThTJ5a5>6-njBqZvP*$Z*xGr1;XI;1njO@%7S({xURszm5;B(<# z@PLho@KvE~QTV#(_skZB9}3S3KM{Uqc8P<&h6!P=u!~u$oF2knhRlyEWB&?{GdlL7 z(XkiBzf*kk|2sb>TJv7NMRbn{E!3Si+BFO9-NKH!xusfb7@K39*c@?o8}0KuTSIXg zg_Fght%><$z}my#CC+H!MqzpUQ}}7&b;1RSL2xRB_lZ*xZ-$dE94uTdtWETXUuEce zTYT4FoTrp_x9FdUZW28zs3d-#uuS+j!o`U-k^>^a=tg0aup+({PQGxkaJ8^DV9n-N z8M^+WcMF@u8D^Tha?{g|uw0-`PDT86a8>+Q;9$|U304jMG2w1uZSn>j$-~+(vC^< zW76ta#8KK~%GZ8n=zMxOCHhrzhhoOsFtHA4m?Z(%b?a6G)`QH~^C;DKVT?zl^_-dR#Gx%#XX>o5GtsL_s zIg*gCT=JDRU!jv#tCiBBG8j&(@rqe#?M%-_#bnbK3fN-Se=dIh2a3aQkM(|HKe$nd}s6Gp#dSGUc6;iDhNM=#% zBcxp$*q+6!lJi3A&BlpuG)}9PD8cWeoYxY2gS3xG&(+d%wIr-ot1Xtc?@8Mh<#^gnwcQM#6JKp>l!3JRP_LHn`G0ba z677RT`zf@vE9L6PHHcKZxDVyd^9kRYXRV3H%wvDY!z<=Fo_1~q*Ie@9ECg7B-!t?I z8JD4zINkwmY`3D2HGFsUU!Z=nz;uj#Wi1|KwnJJ{5DPB5HMwACb}?+{#ddIf_!dSS z(+s|ycCs9a>AKmt^}e8IT$Vz+Wu^4PKe@;m!o@tq)*bkIJ$$?#zFiNWu7@wz z!$0cb8}+C~&vxxx!rIntQxDoFJQO=gF442G!8l%XjCH^Jo}_gM0sOrCdH4)ISc2ODW_pIY}|Fu`)LQRf=sTcJM-c0f;8Z}y)u3NtXVbn-n2P$7T0+*Y-`nTm(5=4?OeL7ZmHK;Z~SM`$NGhp(zG_r0b|lw7K?oj z<0gdBsIXq-*fTTiBuojDLOT~^J+H_ckO?4r=gty=uFLK44UM{6oHsb9bggkiPb?0xik)J8Y<2ZwRa#!fO!rLS$k zJN`rDm@cnzI^ZKTGaYUB`1kBi#?UN~FTbmQ59fq} zrLyxKmqX~Qw7Xd^^BQF923?F3w-%y48THu^-;LzV$R9ZecSVe1VjSiq0w*4?JU!PQ z1M3=6$1|wU$Edqv>S+UYGNmnsjh_a-IeJQ4&fZZ{9i%mWLYwxamLH~_bKG~^>aCPo zV&|7jGkr8RABl5)+xTX2O`hyNITn-q6!h4D29Kf50fpMQLIdm%PX}_a)5G5--;Lz> zIJqBe%dwXv4Su^TzN(F;jih@Xpu z%Qh&oKp!)@EyrufWh^;N$BL|R`=rs=opOroMPw~L!bVVXtimA9(oACPQ$orWS9@8T z6?2(Q)i^ppng`3OA^ccDIn(_?azX|{{#Bq Bc8dT2 literal 0 HcmV?d00001 diff --git a/frontend/public/fonts/Karla-VariableFont_wght.ttf b/frontend/public/fonts/Karla-VariableFont_wght.ttf new file mode 100644 index 0000000000000000000000000000000000000000..172b500c49c80a05e6123d4d2bca21893e4a162f GIT binary patch literal 78356 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

    L)KC|R=X>q32 z5-QRPQh@yITC$WrMR(An$Qrpq9wC>=qvR{HoBW&XB|jk2@;!MBM>FliU_DMpkweso zJV`CcK{^ck$vwzX>Pe2!@#JahN1mm@->H zjPNX+I*>}9pyuQinomyCJn}M~L(b4C|)? z%^{6AbIXfdCcolzo&@qOq=A50AAtR^H*ua!F8P=qCLhwr$p!i(`IJ6GqDVAdgtIA{ zXams^nS6(tI*xYG4Ri#~7JQMG(8uT_)D<&$GhI(j>1@-Hq6e4q%;Lm7`ey<86$kXsBBTX7`-+v9Fk8RYKdZ=SjDrGK z<9W3HSwm7me+6zt96$l(*_1lbz53@7BtST;JfjX1pGh(b_lKy!Z>d6KbYr)Tp!Ml~5ZySgM&P4IXp2J`~ zWq^~*aGwE=tOwr~;W-sgwczP8%mh|Cf;8e@0a!h_-T}LYEAYDkwJwA-os9p@L*1-I zBRF{yzN#fP99oN~d8n1momy~w1HPCHo-njEen`7%C^Zi?FdXWE;UwVbjr&y0{uKN# z4o`QmoJj62f9H+E@7`phUWRui$AIr$StQI|U zfbGe8SHx++W;UZ?CGHB%wEy)z8wI7ESUsH_km1YfZh(|yZLu*@N>t-sg5O%;RR(Mv zKr=1Jsvgg56j<4G$jBtzQ!q-btOMkzG6D{O53Ruq?|x6CDWDO%6#lqZy9R8EAf<~? z9~-q|KGF`rSm6c-z*xHxh}yE}25^f5@VlFL7NR$dH|qdjh&I_sRpZXMZ63HK1vMo7 zFTct{-wj+J15KceAnQMq;0>G-%F|3v%SzC)hD4(6YEbmf7Y0ZIzA3^xM!z(aVtk-A z_#pBIqnnDMRq@$=A`3AYx=CCU*p;>Rip0lC0ko%+Q7;=T$K^xdZGmfJU z)REwXBYK@24Cn(Kk84uhFus4O}Y!# zVF=kzv3{hXbQ<(i7_ze0K`VVpr&B^|p=+NwmMAjkUOEz_tE{ZFRs&r^bmcVJ^@SM7kZdJ zMK;nS^e8OSr(u&m3#;^bdK~ANoq!c^5_Z8$cS7_+{%uA)pGQCwfvRHlijDJrS2)oLPY=hbS<<{L+q);1KCl$2>3 z)X^nHc!OJgZBYZS!Z+B@G`g~>a$#kyHodxNVTC$|mobhR{7Ms}R4B%1=V@Y;O8K`_ ze0+@K?i2$?Q(}T+r1;{ZdQE~JiG-o$eFM}5u7d19$QuH;lj{8OgtJ9Qk(uREFAD~X>P+qamlprYsxTrIR6bbOrzl$)P zeOL9f_0`W-5LV5uuhh;{XYuNWXO&demo(OtSC=&#WtCQz)t4=-T&T{PS6|drHhj*V zm+Cnjq|V`=8RrZVM_t6n#)!j9YHNx$Mf&!Nl=emx)z#J4HkU1EEUKQ=P(Gq)VM%4B zQZas-@}CWr)umM~x`xNNXNJu#SXoV7!{UWy4PqIXs!XB5FhlR9n8x~A4f}((jmj&V%6J3H z6RTgtVGZTO*`2plu~2Cu$Y0--zY#X&)a$=vPs(@fX%HV!FZi>q<5rIw)7rZxO09kbAzL_ghp`7%r;!msaqVmYl8m2sguKeL{ZsE0~|u~XeCD8_ zGK0J$qK7X8OH@Nfpp4YO#7x5wwDDj3WL)7hCDOQ|qP|R_l>U(;r9l5b#=Zq0s%qzbOCmrTuTMt($O zL`0Gzq9P&!j);gjAc*6LI3P0r-`+DI_h#SspTlhS`?2;~Yp=cb+Go%y=K0S~S;_`R z47XtvPjOK3=DH+H_o#<;k9xYhXCd&wh+w-l|1nu>tcbYA%GK5|uC|VW&34@r#$~gv zo2#v}aJBVM5@qWFRX}^ag}J@WN-N)fLMm^+3QDCcz=ru~_vFmi-M>J~?2QVfni=|@ zC+exB-x(ILL|g?$R5Owm3*_o8j()rh>z| zeF*Nqv9fcJJpX{356O&!ELRQpIvxo$54G^$!b9(g-bTzFJRIc3yYL&JiQw>7suuVk zU?1qhE&8sx_Jxk+uS>F-{sy#s)!vq2WezC+%zr?F?hib{NFZ7O<^ zhBS+|lt79n=oNv^1m*Hb9uf#9Fq~k&4`mp>+=&hOZ~wXG&$WNPeR9pob*EOJdb40< z!Ro^0g-K`LIJ4~RYiF09TXKGJ@k_;vE-bjPuq2^mLFt^*xtHQD&Av3J?1i$pvKKGU zEPuW{wj!qDxr*m2r&Ug`jJY!HN{nu@Zi;TIE?W2O)k#;Qu1>x>rD|eTWYwgqsH(|T zQ?E_D7I|$_wRiRS>hS6b)e+Sbt0!F_eSQ4(@aq$5#?^$?jKA^Bjj=bz)sC(WtsQf7 z)XmVk5p^MTBkM-p3cfY`)`(jn`XGI9eNcUH!_eDF2qKswp~1Nl6Y ze1uc8U&(tpMn!IH~9^V%{%^axGpG!9far?}X+d&ZY zvxxm0FTJ@OyDb6jQELby%Ca#_L zgk^UG{~EuRPv^5F{UmXc*CneYZ{u!;kMNFgR=9+k>2DsvIu?6Vs>!E&LOJ$?1F)AH zgvT8_%pnK|3x1-}Yyj`5m>8z0AoTV$O1v{WGD&AZ@AkWwLB zL&|B%8N^-385@n;;yIMY36~L?F?Svv!wAFXs0) zU+{R33_v~Uuq)q%R35#hCk}oDqd{nl*&r-O4TpKktDMZ2DCOh-bt_PkF!Y0<64kH zT{_xykBpx6U=oSUlQ8+5RkbfcYc-67Y|H#+ePs8D_rjfgA74uONL{uI_&F ztDqh6;TNN~X*|W$!|;y-p2ecXTKMr^0Kj$xYN==NzRriE?*q&kzwG`<|12Ou z$j)Sfb=S@u%k#j}*Ws$oaU>ZdqJAgyF5Vt<6^oM!5A#}_WOy>y%e;s)z^0PMXjslZ z=H-a-HsdsoXjyz;Gwyg{)aQZK{V+xzn6enP^*8U~I?$hV_yf^n9=X0mF9_Mh+;5os z1zdadD-W6g2j;4o>&RRub2_&c{i3+!#bN+&XqWn!uS2Wg&0+>H*B?-Powfrvg!u_c zL*0-$kZ#ZFw#S&MpVo~#iKyGNN8R=qA&u|DTyK`DHJ?Tv+5#H`Tn@F@gNu2g-Yw(+ z>U|eyP-^BnGS><23Dmn7t_O?pWUd!;dox$V+&;|pX08vg<^Ul2HuNHW&4;1+@?~y6 z^Dflm2VBnrL}^%;$0B5yG11*pTO#dMf%w;kG4?P~0=131|PQj!(4U^`A zm^3$$NpsVfG&hGya|@U>x0Fe9tC%z=GHGr*ljFW(a@@a|1eeBSx38Jhc7VxiFptDC z_$`ys{>@~x@0g5sl*wi3Od|UqCW~b-S?nh!i)ArcESpJTzcMKdr%CKAiAr91O!7Lx zBrlvGVeF@v%vH!_u5(PLKdh zgs3yr+rYf+)!?3vuQ`6?xKFx6x)*s4IHLd3bm?)pC!B)eo^^uEt~jq~R+yxhrPm=s z_O*$EyUPZBuzAZS#b%pLw#_y8>uoS*WiN+VrH}Nsv<3b^X(!y}%6GA7C}d9XXDA^V z%KF+WZCzwTWEhJqToz4;?OV3s8Mb-0hv0VFqBd2SDna#{Y?dqmd6uhk;l3qHfxFEP z+)K90ZVKEq3MJVQ3K>}@9jPpr_EUD6_DXh=$( zg{tBRt09}k{K;H4Yl>^sZ=+zd=FZ%{HbXF9Bbk2&n@7uR#?$`Tyu#e&)V0i)b(Sr8 zjnN)>Y%4k!baV=&{ zOa~WQ#rZE31idU)>=I&wcVdkEvIHsy#Zas5N)P-I06u5nv8_e9Hn z{|=-2EzI4)Tnh)dL~+By2kif3eiq{(IM{;&^r1Y#0k{o!ibEK4;in(ReHPbY5#trB zn7hRRy>&>V*yV79xr`TCIElqo^Nfc$F?Wc1EcnSZ^*p$%C|6OZFgHW}CF3(Ey7-K` zf^i#rwTZ?!_JcdZF%s@9N)e6;%w@dD@h#?0r@Y89m$|2zdy%n6O61>+bhqySrPJIX~DGbP4$u##=mNJ9-5NAn= zrzzY+Nsi*O1LfDSIZ>QNssuNwb5v6t`oaf`BKdL$cj|*p6L1{)E+X}92kaj>9ehXZ z+mVXjCJ{2^QPhWpmbMQ5FVvHF^o|gVwwdso=5b;d4lJkz+?Ac@AMqk7g#* zJllnO+g&nR>mZ@tp_dH5&C3tM%&BNO{zIYO<~)z3hMtC;dF=OokN!K0mZ{OorQk{7RwT?y_tPe7=It?y!Rzy*3Lv zn{5s<#Q6w1d8<9F0r&`+Tox&dgm0Kku8fo6WS?Iq=t#ExHTe1q)pDa9G&4Mp+gNFK z*WvROs!5LBW%yRWr?jIGeuegppCq#-O1gFso`r*DwhDV0K+d_!EG?3UW8aB!!#7em zi@5F5BAfSw6BeJ;T{w=^K7vkl(e4fSv=pYQx6rpCv~Qdb?Ym7T!T~I-Mav8AXb<}f z2jnyC=xnYNG89KSTB9%G7ORZ#O_E+95!f?J_@mMbe1E#rM#~p$?17map}HkHUzd@C z;^ic{2P{I~q&{GtQiwr&R1l$I;Iiaxgk>xYu4LzekVH_TCW__I7qXOp(D@T++Pjvp z^nx-CVF~{ap^n#3+ zT!e2ta_^T=j0~20NSm?4gHNcJ-jq=M2al0nVP(I;$@3UXEf`0HgwD%Ogh#WuO|r{e zZ}geBj%AZjGfkY^L#^v5efBm5_{Uw{N5FDBF8Y=W$wC^( z`LW!T{*#hv*d4u_!BZV0eg{VyCBf`)fmS$yLDD=tE~^t4zKQxe-@@GPMQK-7x`slK zzld;OOBj&ogRq3Vgq;0sR=`(7=Z8;6p8hP)CHUwp5E7S6Yd^~B_z2;VmN4oV$m9J$ z{87a9!52Q(18`OTDC>bcV#l)FoKUaW1Wkd2=fFGPrnzBXZJB2*(JaqysR>Y~5cOc; z?Q##HU&Yd2rK8|ZBiDFK zSb9OR0$~aND*Ck;@$jLq^Qfg0|7z!3idaP~eDhg3$_YYPx%t5Ow{bqq__R$kD>tok zDp4xz;di&>0soDIMH-tAn==X}p!@*s5$y7@HkcpCuSn4fm)jYJUaC^i9qm`pK2$--~S+^o4M zjG;4Pv2?w$%!C~c^L{d0=}-~_Uq5N1bOh3%jI^Xki=?wy-uGA-Keo)$v1nP+L4_j- ztz)IkR(68r^kyk5r5EJUmR4B!T}m}r3ZDoAM^M@4;TTPb%!>~NZg8_MeV6yfJtcrbjHI;OJlnC^a9uy}-g5LOu4!x5CD2&dqm z!E(A|C#V!C-p;m$Cqq|3>+-UMk-v|y3vIef7Z4XgL48QIv^JmS!TN^Yp%fvh)^G;w zFfJiw9^%&Gi#(Duu;ienHnKc;qb%;GgdrtBI4e`j`orgoQBIM8JM;bN$fZuyhZ2^y zLTNe4GK6TDBNlq_r8&X9P`W$kQks*G2b8ZOPQsN?EEN8Pe>F`(_y8oAk?>VOvwe!y z_fJa-YEuf7N5g!!q>*^C@FYtZyupISD-b3mjK$is_GTgcp*4H} zcRo&`yc_x*&dPtxQY76}uo+=O_OMuc)(bjc+gaGHbG@~dPZ1_0oW^o1F&~z?v@HA! zw3bnsWo85c`rf4E*6+ zQL-NI=G=k2I0v+(kgk$T5SAj;rT?S9K{*1}fmm_L-|7D>CxVufMtc<9g6}ST(@+Zh zf;)o$x9~q3-#_s^kMB))=Yb zadc*IriR-eEbPw0o(R7{!~9H?r}8NwYgqbFAqyc|%QS=u`3$avTPn%tEOWCSVHM^n z5S(Bh^u#H+Rgg~pgf;$cj`r-XP-iXw402-Ba4{z75o>HT!k9G{n+7gvX)6|C$mlHg z8{rIUq*8~JhDkBjHA}8O2orJuF2)Vovc%dWOvu+XmQ+aNtg(RzbCw$LW<*dk8o%o014#cF6QKNH->2k{(Xk`*^pa^9LNhUF4j*`>mF*4W7`R?S=h0I?r% zV@S{QSSPkFLX$lGxoJLRD2$MNAYIY(S&A(bgXzhu99n!El&1Ewb}SWccdGRNNSFOr zy8TNpz40cAd->&MD@X!0{~)g{h6xXO{f(tdU>8k|p~&0JO{OLxWJ}VjSC*4)D-a-` zu3ox)G1;?v&7#$0-|96hR+9s7()c6j52Z6YO4@7c+QOBv9^139D|2Pcl`>b!Tu0_Q zGgrY}Idg58>w6+HZ4-$eJ2z?%Tt{x=*3M_3nFpi;wzvXpqi1nS zoNP~p{cbPd_H$fc%*s|+#s=q;lylQxs|`b6&trR$MuIFR?z5iAI=;8Z5-{z$Jl#GtyaAs zz@k_B#GV@d*e*+C@LJ0{0S?XjI1l|C%4V9qS)M_Z2PO4paROX$e%RprZ`{~|sT5DZ zO}NppqNb&&4SH7!)+@|Aupi2KxhiXRvWVxd=bU4d{*^ZH;H^C|dMH>#^v^7WCkA^yYYXYv=*E6INTa zKyOdZM7vwj;$F1=OLvR?Sj|I_&&gUdZJh_+KWVdfcMA4Fz_Xbw%!4jM5VpXZ-hdJq z{ep%OOD!5Kbn_%f6!EcA@B>gUXqQoLFWg(8G)pO#((824>Wfx7UBPX{jRsIBnGU+l zU^MAtrM6a38l^K8xP=?=mD1NR@Qg_Cj~LL^Y%5Kz1U|LBpG-((~A z0oa%KLrotczX~;U@gNHassnY?7TwTFBwCmaE|Sdsh}wLtyy59LF)aMT!YyusM_}aO z3PWM5n@~drDpc^WdEs@qoP)C_+1JgxY*m`p)*52kl$c~-}Rw!?x=ylhKR7; zRXWm#BQKxF#1lfo@mR|~gFKAu=WYDs-4h#5ypzA-&$s@3yI}R{m9P&>JhSXfQc)ta z5PPNgr3(u$&bu`D((JOh%QG*}s+dtZ?aDM}_ciHSB(?Fn4(qO(aW|f!_FVPD>H`}B zZx3tqZyI#h*Pu1@z1OG3z16kNp+nIrm<7I_e$0S zUZou)UmqhoGsu@2+0SJAFJ#9r%o|``>@`cGWmdu$G6BE8>?h6YJ?EGT()@NrwJ7ea-uV(E2=-DX;znZ!~ z{9yQ3yEpIr;;S90$;mr*ELbpi&-9pY_s!ow`A}r?+^^Eo_Ai*Tb;b*DU)VZh#*DA< zIcyDl_0{w5=Wpr`MB?+|hXtG8-o0n{jDKx8`N=>3nX-S*oUI4H`gAKkv+;TM*{!dk zl7lmzJ$UfoH($Z~(X;p}M}*!{r>T)e9E9`YL(#)jYfl1FyxHOpZ^WCHRQeb7A=~SM$qT=Z%{DJn1M)gdPX$vCcUtL%$YMMF_9!D&LyyRn=@zG zGV*oQvd@=cJm3ra{#=aAZ_PdR$BB=_cZ7$>MSxYT!G|Oykbfp5EL=$NM^?_ohb&!6 zzI=VxYh)6B_cy0w8(uMKp*Hr69VBQ2L>AOFzP|gK0fQ#ieh)^agBC z>7J`E?m$J81OjP_W-7d9ap!+2mQP6(VUeOk5NtzA)1a#r! z@kQ^zUs*Z_&cJ#BNshM6VU1>Gx@wkDE^(b)r=x^;Z8s^9c#jSz;WS9|P4Uf*b{ac}CQggB2DlO<+hoRBCS6Doz<(rMCdQk^VJ z_JhnIpDBM&ULe;iG>R#Tt%?JRvo?V?$u_^+T(xOc&Qq?(`>OJkjW~@Cv0Y&Mz3oj^ zoazfZd%Hlp<#wOo6!(F>#y-k^KHfp~jr}zTdxvm`xejkQq&i%5c&Lt3Ur;}AoZ@)O zvBv2`XU_R!7r`abWxdO0mz^&AU5>f@?sCpW=W^S{Z(*n&*1nwaT^8wXK(;ms_uXy(-+kb^8(Te!Adx&8^Apk-Lq%n|puv5ci4h z&$};hU*^8U{eRpqdkpi4_gLx4d#XLPp3itr^<3t;!SjZv!E3bFWV{FJWv^9UqSp?u zS}$X7uD80kckh7S&-9+!`^DZ%dav%ixA&pmnY~Z+zM$!=3Dm69Y|(tCIiNYFDbv(y z?rF?@?ECcYGpNt#J_&u6^?9eyhke?-72a;%$=(&-x4c_?cpoPptxurOc%SJ$bA6Wj ztn3|={SpeVSfZp3Y-(THgI3y zzXOj4o(`-FB0-abW(Fk%{Uhk3pf7_51+NSKAo%Ctlfk9IHNkg>tA>vlK7M%Y@Xf=& z8GdZ|@576RR}R;Ya2Vk^V&I68BO*r}7;!AbJ7ig$@V} z37r_aG<03)<}nUqyv95?=D?UA#{4#>XiVi8{WDvhNqgq#Gbf)Zd*<#lkH^j*yL9a3 zaU;h~8W%I}`*GLDHIM5EQ--;RtqZFNyE%T=_*cfC9A7s6W_UpOn(&k1B@_BhcymJP zgij{?Yr^*vew}b;Lgj?|2@fM=5v~#aBIZSGkN7g;NW}4oQxhc<9VWgo@so*Zd7#Q< z9y>KRP$AV3e*K=r#m7sPB6ITbARazWDH4^Jk4q||EB-iFpCYUJ{X9AUdsT|0{@foG zsg|;IM<+$uWO7|hO(x;u{}JCG`KdJFSgMjV>F>*Avij1W_wC#FJ2@mejPh`nl6HON zsbj~EUAiq9nyQS~w+{?*Z)s^6Ha8MGq?7DPNe(BOqT-X{iiboM9J4xtq|rwbKe+9i zR5l_FS{dX6ZLLaWyn5=$kt3(B8dc;cQGW3^F!SFo>Ql(AR2v1mDnPFb@cQ0sC%^{q zD8IJ1KAh~Dh&|aac(#(^B7`4SC*8GD9h0QJnWTxyBq)_v`2mD~z`xHr>h3(9o#dFv zX^}?|kS9&#a=Y?SP7L`BhiTZ{8mi9n1+c5uMlI!6*Ah!hGzYW|EJrf;*-n}xc>*rB zmj7Lz!{1u-93vS|^7x@1st)*?Ci^!E6L%^%)_EWUy=iWFl9H8lDh|wT!~%7f9F%!#6S5EJaHj z&=P4)8Bkk!DL*q)sgxNj3x7&aPj7y}E0s!HVrYD5GPP8d7iDB*{9b&iNt8A>H`J3~ z#N@!b_FjH|e!gxB1>f4-+}zU9iFdg0ZH5QNrlzL4YK6U4{YAmg zFEALhvK>u_sLHakvVJW!7&=_g2RDU4Os2;UTDRW*{{A5mhT787(g)gzq@<*I;Xy&( zQj>M2>8|BfjCf$#g|kIPxw&Vq>J5UElas`tzlLB@(fJGKPXC#opMUDSTAiC)OD>6i zf*>(9G?e8XKYsk=4U>9EXlUp#cR^?~V9dscrgk%J+ptN9dueH6;sm^^BUQC*N|4s1 z)9Fmwpvc!*lwD%t%L^B;T)$z%hBsfWu4Zw3D48wFOr}SU0ReFnapQRheLUBOscQ~z z-@bi+iOJ;97o+R#tX5&Ksa9(@Sukx1MnQL(eGLzJ1)%@XaHFK?LivC`X2Xrsw42uq z(g6d?%P-fEo1za;xugC59rU(c)m!U9``=&LezzDIi}m_OlaT7Hb$)Cx7#=%o$1O;F zDK_IzUK_R|0Q}Z)epT=-7d&2{ucfGv03H2Fv8M# z>7t;Z!45s4JqP_v9w4(*tJMy+GKrv2xVb4?o9Zs)<>eLEH9u6k0e=)y!Obl{-vVuO zyXm13y*0E6g8MM^c8J<^<0N{USJu#Ak_g0LGHps8&{9`jU0rj#rTwA7P+EG&)qnKD zjT<+bi^75(%a!u?n z2tsG;{kx13fonW#jIPm zZh~6vEbD?g)mo24-yKyd75}iMv9hG5s=Tb^Pjpz6oI6L(iODW%*`wChR#R)xh>(zw z;C@cT*J$)jwb$$Q?am$ppGz1wd1hR~+tx`HB}_h+Ad_Qi1+ z7HKruR?5PD6F0bF@7~0@0!V{GYs!m?iprYIK4_t@y5`11uoD~JR9SHW4BOn91hwUom;K74c9eNbjSBdg_wRLqjs>oGQs#Iby9pZSUvc35x zQcG_FdGL`wGTv*_>pMD3cl9-8^iy|_Q#Lg<-)(Mc#AGxwUshIGvqY=aN}82rS;ms{ zX9^2J^{M0iNg2R@bbHv$#Kgqe{`~J4S$1{USZ7RMQ-?Zc#zOFr1!2_+j3QuwqVon? zzR{_04vvnF4t7@Ql~|>2DFRVAC`y#~850sRHi}FUrHze`ojq*Ckj6%p-zcQc8RO^F zh);{H#@jzA2<^Z*OnD?()gp+>(-_f^(-%p@WolkqR+c-R=hR@pp4_ z>Y(I*zr9`LKsz$O)9joqxIPO=S!P;;}CdtVUsP^L@d_W8qs6% zC@+J-D=Lz*b#n_=feni6?CZl45){|9B3qNfPXxlKYZQ7|Ij;RsD{Qb3#YN5HfxESHr z!4tgDssha>3{zasZfvY8O;`@jJT*Y0@fRAc5T??|K=cHxD>t`5eYil;a_kT(5R+}d zPzsGk4`M9e#94vHt*#Cy$N1F-j|n7=WG0i<$fs75B#ow+XksnvE!}Z;NeH|;_dGF) zge?WH5Vd9W^dxN|+8hKTP`Bucit6gB%gZWDOUuj4)#`%WU-K+8+&$^J;PBRY?(N~h z-D$ASvyIVMe$DEaccH;1S77T6kEw}?At4bnUWl1H7i_({dNoCa_w6=Xu)vBO5fnKH zWW!Ni$WT~ZZ0f+V^fUFy3uwYR~~6bqxkZZ*Txx{e>K`!m}U{jUY(5_Is2z z?%ZqVq(V;4h30l!kh)gduFpwz_t#3nsij)~VN-xBQ-*1c=zi|)pqHqm$(Bcc2|9#T zjBxD^}5!g-IZ~Dokr`?%5knZAwTWg0Z3I zTyAb@X-P@h#WR?MGi7RZF@SYebP)uFth4jhDRlcxL%Vt~hh>m(LKAw@aYDt*CLlanPt0o|9F^jT~k6*ALZXQMSWpUNji&$hbSt`mQzT6jt z5J==q0gZ^1 zx3}-SU2~-X-TdQXbtAFI=keWgBmOl&e$6>ifWg>8oa$_UK!vA9qv-8A6oVP8Zf`h) zQm5)VJ3Bc+DQ|5AGPE>SSCpkXYn(eV2OUba0*h*GEk87D+A6DTqTV<^VhE|lN9r5v ziGKkTE#fb14*!9d0g1LIQ-`2((_#pNG@?!UK@95OHL78W){#1`8BJGhQ{z2n{|>C| zgCl0dS?6geMi_+=x>D*dEc_)s>$k$$$rF>E32=`oHAuf zu(K?+n;j%UuKgHN?M|{ulC&sk)g)}SQpu-?V??!4Ot#f(NsAo9fX3HfoM_%)UP&K* z-_;gt58}~-1?a)xPP4t2N9m<|D)%5L(uOz%_<^!)TW{CY`uizbuTjCj^cq&vyEu0e z9R)!~T3V_RTXNH2R=WzE=xPGAc_*j7l&c7Jm4GBa#N@1>HzpY z*6DJ5pr3s}1%8s9IN3-&B3GK@b`m$Q98U;%SS%y}cG4 zK2ro^Dkh1z`nfhkga@idj~nJ6F?y)U6c9kBiOyiX9ziNqDB541h&8{51VUFt%6Hsd z^YdL5*dCm3=v2G9+S}X7I@^gtfklHe7(^AY=`xV*0;tC zPW3AR!u9g<+S*$!f*nd=x!|-~kxCCQbcwkO2mAT)4^sG+2MX(KxuEqvXx&D2)Yv?{ zG*=6eP---0XB&;1i9VbhmT3I;#$&I>=R&08G@1z%Rq=nbMW*kE@^n3SRAp6G$&Qs* zk@QSiZFz=_{3?Q(XJnX685u^S$c2Zq`gZa$Q7zb_^0D+SSqJd$;+9Z|=wCw37f#-{ zG=N1Gi}nP%*rFkk6UEKl`)qpJW9KTkrkA#Vw*Q}|@^o@UOqR793^@ivyGTMd@#UuS zaB_f)S4ChC`x{==r$+q;lEcYStW_$l7CepDYE>fn%)FFN}{F z=;6`3pH^;cZZcpzUs}ck?xfaew0g)ww{0(MMs5UgC^0j=XSP%eY8LHFn~Q;4a0 zZ}nv%XSi{Ajwrzk=p({$3K%hq_WN_q=lEw?b92-xPtj@{nhHq zb2*urnLi)P%)-CS?9=7Bx;Ah_qYkS`)on1&#wv0~Om=|KT5+vTe^cLhs}3V>!z=NR zA1~9lVbi1mT~xK&YBZ^m>gt#!)3CD8J^dcA>NL2YSwp+Yb}k9?lPZe_ldSC>ZC$?= zQ31gBK~ZEGnt`|(8yONjDroS?(SCz`97HQR+rJQ`!e*)fL>1-QP*7mu@sSwEa~OwD z)4fh~RWLPOJXJEl=TTF2J`_F2FE;T527pGdk;`HqtWcbxt{ltk%@%?=(x^KO4RnWD z(%9Hagj7d=Zvp)U{M#{&G+|rHCs7LH@>NLrGEgtf0XLLs&!2gKv>d*H>Zno!1c<_rk0Kr zr7uL(6IYuax%m15kkNBDMpytR**G`avKv=M`#%EY9{EQDR&s!9`WSx?SqjOHp!7q& zlx>Xmx2?$T+V4EUH|T@#k*P~_@thaRG(}FwMXoxY&Okg#<>FtF#1$m!!pRN`zENus zoZ`u(RFedeSY4T0lY3E8rYUwsv6zV{7KZOUlv-3STDSu}yjY64@HDhZFc&tm4#V01 z$4OAt&Awffph%u1`buP^pl_77@xr?C|0 z-w+kNL?FrzQd+u6skLvz)m%;X2ysbqL}!8AU*zYqZuvRRl4Bs?GzxIS;(SY2 zbq@eJeE9IsMWwn%k}j$hIg}jFmY0>4H+5p+m!&GS+Tl~9`T(R7di*6Olj**NJ}BQ{T(o6#PR^0khH7A+ntUw^Wo3#qoye=p$~F^^ zNSqkcN{*6tJ|Mz^YFsty|6Szc;tWtkl4y~yj*HuDnQ5wvgk_o_q1YkGtyG`Ei@VE^ zKb4QEUIrur$9b}1gkr3Y>MyHn2OK|+4RT>eKJCM4QCe2^{`-`FMMbIAk&&ATb|-~= zL}Xviz%n%X3ySi0|hDNz8o)+=#o?dRy|(3Xd@5>6^C;pNSqjM zhWt*o*W*wp-oZi~bxl~C6{Ja5n0fT*(ab_!bBdx_cM21A3hH7YamQVK^=062#SOjT zF+}uYJr7it=!g1#=Mn{TuP*&*-=%zuJM+zbPfwAZe z0u(F++tG4^0vs<@qSHmcY;Ds1AT{rFFTvPJH^IT;pTN0qHRnJPOW1HDQCQF|xzXgRM4jqo>mp5U{2hwx~ z4HN+yMLKwD9)O=dsL`d8E-_mAX6$fRSJ#PnD>!|=m2HT{yCJAFw?~x3#YMki9h2&f zXoSL`r8T*QMO)kMh5q}ZZJSCy{ir~Wl!1No`@v@TvaBH=-xA-u*xMGZCROX&hgAm5Jjp*ZUYvHLQ=*< zkxu6gT}(|D3UcG($|C@w9b}JnO{X%AGisE!AI&o0Oi<+f{8EW(0vPg6PK&ach|0>c zwr@QtBYX?_R3uKRFmejV8c%>dY;72T+L%RnQB_NdN>}j77ss-`+r4{t7I{xp;~=7+ z+oMZGjm_=6%+vpw*i=4ovRexG?CL3y(2FoDJMnUh687vwhYgsZdFFX`;?JcvvlIP& zZ9DE4rGFT1o@c?40JJq0Jy)gIUdhin1C7aVNA@H~&_&R^hX0(k7&KJt;mo&C-EWmi z)^}}%}F z0;DONltI-#Nv-e-3K$e0V^BB-OzqNM_@VwF)bE&M!ttHy;X_l-VH_A7`hm8fs4Q)4 z&>K5Ug=JS8?ze5iFy#21F16apSsjIG{Q+2MdG=!IqqcDNgP05OP1>Vh@Xzg)wq9JPvEIGC|VwXn3oW&vv{!_6uwjb*37rVZTO|J*g)2JjtT>ZnTBoPJDf6a}X`GU2k=@{qBsL2lcL_hpqR$GF_6}!>1 zVzO4JyL7hjo065i8mLAd=865~P_L|WEgAo@|NG)(r6j(%}z(z@kQe(l%=UTtd9!~h<% z#`<|Xv^VKnLzb}B#fmG7(R&fS531Ii6l!%==85v^dqA7^+MYS_(0Fm>`h$yLx>YU3yDv?{HYAp~6snUo*yL(hIzmx2-eJ3`eH!wjpHZdRo2PyWk0NlvfgcTc$3TnKfmPBL8wIF*g z7-cRU9-eKmM-C^VsK5fO>Khak_Ydo8W;z=ip_QO9ZDvR(-cjb}ggjmIx1Ie5L{1QJ9B#lYb z5nXJ!c|A;t8IIGP_zQrZPt8Mxy*fMlV$CCnp4A#?)5;2x78Jp%_>IG%PG8509Jg$W=o@gYzY#KmEs9TgJ;(Q0(a09)&LUqLUaopWH>jW$Y& z`s(vP!aB19l06gwzhwV-?8mHhkmlhZPnR{cx3@Qxoz4Q*=E0U=D5kizvHB7w@~WY; zQ%S`sef7!glO^bPmA>hIC&=|e9o2_O40RVkuW?}xz+Jl$5wAwz6_r1d!^skxfziuj z(0}@Tgr4jLHtz)r8~{VJ5cKDYm2pD>xuJ0@CxXfudUOB4L~o~h2eYex#B9vuR4phA zGfRTP*MgFj>*iyeQN#Vcq!v22c`3vWKxos3yhI6|&5$$3PHoXS?*XDvP>@cKiG%?I z%F6sVarqe{w|X^}40b3aWMss}S=aSXQ7RLq##i5$qFZ*3t}+OUm;L~_pg^w!qTbQ9 zn5Z2Ff4BN_9<(k{B>i5j(=|Ru+M~wm(i2q0Qj;S;4)sRP1(GYu07+BJ!^bJl$Wf2Omnb2X-U&Z-CNqJ4fts5A^m9qT&;yU9ad%)Z7VN>Pl{L;&nHI2X$ z`v|WVpvJB0awCoqX9N2gT%DkB4*{?6i}rAQgagvYz7ew~lVq&9^!c398%a^U934Fv zgkw?;j+pzdRdd5F45K@YPb|6=ynp;9fIXF>7w_odEKgAw^u@(@ynW1bPvvBg{#d@O@`x2?K>SU@A;`5-qoNh_BxV;+S1qs)1 zucf}?YSR@Mm=x98YJ=m}S&2uzGTP6!9vI!Bod#9gbh3et|FNxy$24n>{%fM3i>a+P zV0u*=|IyE3;4>qJ`ngL@>(T>*4?IQ&?Gr#?o@!N%} zs;bjjCr@q#1Mv|>@%{Ze-O;0^gsR1E7k;xyM$#!HB)pag{9;N?$(rbR z;Dv$m-8O08u&@`pU^g&vtRJZ?)hCAZ@1u3)P323Llvj7{gZ!`$0$An#&n{oL#0nd_ z&!fK!830fcGcR+*(Q&7~EI(W2@VNPUAvV-G$FqI}NtHJPJDSV$u;~1b^N7LOCr_R_ zQ(Stbp;ZcGaZ{<9G4&PoEf3mT42{(#*@DniegbRLiSkC!3DDfkceGSvL6QW;tp`Jp z>T6_v5zFZB4AEx`C}$^TiIIpb)))BEZ)PMGL(8I*oQzWql+vtQw|3d0_-6xMTY)wg z^?EI)enzlIFO`RONMr(X2qx3unE(`9pd|0a4(h`A7>sl^Mhcn#VXF6?igL&Too(04 z{{VAMzkrp`#!j7itWs$(Fe$$eHn=|>*HdAj1cxv#7^Fmh?3Y3U7V=A8Uacsp&B&-t z1Vk0mFa7sb28z1|RE|uT`*#d<^-&}`d)dPw!{0U zxXH2(N|8oy^oTSGP(uRazEm%W_XQ)95{t>^WUh(v^v#x1G?m(QC-c2=CIgLD0S;jP zlIDT)V5FVHajrGZ+7qhI;*7hwI^4U2#-9tZ)Jjv)7nbUB9;saUD_v<%TJ*r76KXw+ zGo+`~+W8Cj81II_`U8V(Hj=J%fp^QWbCkAsa~)?@TNN7=?w?fxs3(hjd6#o{L3Kwc89RJ9AxIf<0< zCAX9s*<;AcE!PS&KL7aRkN2g6JKk?-Xs9UsF)c0aP(~%zmh1IRhYub0IM-Lq_j;+0>pQG++GTt8G!{RptcqEcPUrlbljM{O7^+%%5<)mWRX9-!i}b>Z6I~jh06% zZuw*%G;m+;-uvZ&@33;^o;~;Fp-h15yMteC!%F`#2{%s@$4{FU5$x?M+@>79LjOq7 zs~@!{8Wu7<2>-Oboa_W@`zJW*8(=fgs!%z4U`o6^JiU9_DijS3?Mj*Jpy9)Z59#f| zHKa-w#|*Sj;rh;>MZO`Y@V;no+kg+GD`pwDJ*>Eh}5L7+@jWf9{Kqv`@& zsr^1X~_gChb7Z0gyN_~ zZNvmvI_xA?ilur|s=eWkWYTl46@mfkO%T~aQLdrZQ23@!gg~~N8xFeATGX9D(r{6J zO07Oczt+A)p{50>Nh?#BT40-CZ%a#bv|bN+POqQ|7JBH19@F<$tJNO(*)P{d zBWbB?rmuOCi}vMp%|$26%TE?I)|DGt4XNttVm+xX_ty}Q5Whw!1&yM8Y=~dty4cut zN&X?RT34+V4)&;(>4_B`hcltmm#AxN)v&HmP|e34^zVQusSXXTw)Ej0DM_{k@q9K_v&6t|9+=K5;rZ>#H@JFwU3Xubxi z^BPot$-~Rapo1Z8#@lq)d*imTjo=*NmXT^v9vN?ywY1!W-5S+CT)I+o`yO^#6*WyM zlBSx9f>f?4$bxQr$TndEwrv}x;@1BjsADq#Z2DxtzeiXPCBgbhNXWtr&?k%c^H8Mp zQh4|UM?gm$5$tD!eUFXbMCgJi0%_CGuednU(Lo$EL&LDM4I8R)ARTdW!5SsD-bzhy zoQDTerqSJR{4}I`tX@4MY+#CHVAzb+R(Mh>0#!pIP8Uf_D(K*VNIWdiqiO$PZ3<%o z$m^-(6%uPXgQc2Q+?Masw5pHf9?23mmkP1?)mMtwsrc>;$IocRo1n~2?v_xgtj&K$ zc8Qz9Nf{=s)XFQpP#>i@o-f@VZcY%g^3sliT;fIfsH&<_qg-7_rE(ougKu$EnYa;) z^(&#fHD zC^$ks`deY)Z}fj!8aXUVaDT#1)KL8j_PoF4<^A++T3S<6aem=hU3G2!!*_RSo9d6euQ&V82Cfbx>RlyU>oS|-Otz8 zcR;Fik=iAAG3>mz!{lkzI~&7E3is}Y2po-^CcA8smM&PdYI)*I3xJF_M30PWTO6Fu zj9UP)XLhW{1ij*k{9m9H$mr46t`+3*FI*>fRaA-={<@Fws6Z@tZU)!-*ECfHN^|wQe_8i?{vJ)h_f&$*$DS9GWWNwBl*0k27hil&)IVvJrq^9N_2u{r7veZQGNc zPTlXnzjp0nOYwPMW$Cr*i#7ShO#r+K$D+;<@9gbcuhUBsxPqV*6=g;lZZfpl7*nT{ zgLq0Hh}6TSYQru+;$dDf*KN_OzckH_oH%#<`bGW#=MSP1hpCl=SFf(Eb(t`MN;9IQ z>Bx~gq9RW7;4)geqj?Hcu~Vpn{mOr>_FdyIW~mGRCiU=c?mi3wj{$aGe}!G`ZtgtZ zvq#Im`Xse$ZFav*_kG2)dhWrx(wr}&Pn>R6*Y54fx~+%d7i59qu-bZxEZ}gu4G zwOZ%VYkoMz=rYdZLXyB%g;Aqke;spRwap`Y#R<^${?kHJPg<#`tqkjGh0TScg~d|s-v4AO$|}oX zppbcw(9NLLT#c{Rz6Smyjhh~aT@8+putE9@l>avjYGxSJuN#AUVpl1fow?n!L+Q{m z;;XPZ!-%8M;_pwR#I`e(y6u-ejk;SXA#$F}dcx77E4v3e1a)gbiB>3jqD4O+SRr&O zi%;a{R#rmxK7#{?oXkfsr4UJ3sscqp-uOtQO^a|m&TQ658@(;D2ff|VZM)WUHqALy z2gK1Cd5R9Goy|2g8ULSiJs-WK@{&3fC)7-Am!|HqOY51cXQ_cbQfC7$ zZvZZ?SL@qh$=PjickI`5SFY$yDNYufyWh@VRVc1ry>jLI?{V_q4;N!@*LR!W)i>d) zOlj%mYgP-qYnMw)VL&Q!)QEKIFgp`qLT&M=7;KS{{sq1DYtyF>cVzZ>U82!e`72Wm zhN)AhPoIEw^A@vk)51S2lcWPg}zS!t54s!V>Qt12U;6i|woOrEhw z%ROYvtviiM!{agAUQSMVd8Jmf%u?88mRb!nOPOV+J8Z158d;1p+evx1 zd8RTIo9KlfnkMh}IZ2wZjN;t?UP9WmPtQ5e@_T;!@B82) z(-c5GxLiq5_4fny59vR@zbf8p-L`G}n&fyQ{WvOh&hjmrmp}FxcHvi@RMPTimcuX3 zzQq5wG}dtV@R~JC=1|MDWi%}ziAghf4g7)LCrIQ!UYUYo_Jw}D1_z7Rux)8kQ4SKU zoZKi`bRq_?5{~N=Zd3EV0)PT2GV@b$XjS$8RVBP?W>v%Y<(VVcdDQd7at-XfA7d>^ z6n)`WVd${U^7XZAS5F)}|JCKoH#Z#(HNmtiv36g2_uY37zVnyA z{`Id14xMcvmEI%cHV6`XZalZIudlzitGl~fH!v-kJ$rWM98F$MPEJ0<|IzF@6;A^V zf9|J0s-#XLF8&ht2Rk0#MSL~?5%KKPPdxF@{_f?_-|@)bVbFbAPSVOB zRwL(yyxzx|t)B&6pHPRgetth<06AGns+5!zYtyMEOvvrS-ggnMBw3#-QBh%Ebc1k z6?HUN44*Rsho_~kuEoRf%PeaiR2RVMAZ$S`We_l0O9 zs1=w8XdgvqETlQNwk5G`muA{Rv+p6ZFAC0nA)Zx;{wYPAh`5yGWEoG)v%74gX1m=! z>ESX;i5sP?E>vAc8qE=?sN&HyPY}r{Egp08`Sa)cCXLQGnJOz?85b85ImIZAlEhSH z6g6fXDNvh%<%o!++d2~9B1A`i1W(I}L4gN(e>=X4PCHki*9$m09f1t`7Mzu&j*gld z^1eg7l}c@@t*FT6sjNf|)px*Mnc26|*t5Fez9nl7Z!ab25cPg;urx3N%jIjAEqp%1 zSz`f({+?5$evlEUAAjg^wcYNgsoA(@Hm;G`L{f1?B%G+UYYbL^gOQ1S6emJJd7Y3W zK2C&`ktJ9RBV!{5gV85V&(6w>Wn{x#-;{aM$0G@5-03kxV4ee%io-A%YLcPi8A=go z`2(K!M?8;fGCMqb$~+FUX{fsm3SC?GkZE*c(&chZPK=uLechd%o!xzU)5tg|!Dcaa zw(1m7HdF5v$f66aCYM6d)1#xPX05i&Giezf(y=$u4FN{NL*deX!|<4uy`6Pz*wEkI zX|*~h&89)P=tu1ypKMbz_`Z-9=tVflPbW}*U- z21R0~rfA6ulz^{TQk1JnL%MB(I=5vU6yCkO7&jL9s;ZVRDZ>3?q*7@Nd%xvXNl7uWvvU`qKz>d_q#aVk8Z$e8^N)Yb z|M7TuCu#JQ*z$OnB_*ClreI{m&XcHe5QWWANqF{=r=PCL zme>fG)Mc9_yXNW3wq?qe*k#lzQGfEPMXkur4i`3fi_zXbsn-hFo=wSz5ZqKuC}`M7Z~ut(Gg@0;q`>Nj5x-2EBc{XcQ{MF&rwJ$>>Nq5wxedgtx8 z-#$d$A%@c-ZHaJd+Q;WiPub08v&+kifKqxVm`()BZ4dnmgekP#Um=HJ74)J%!J~bY zeZ5;d=MEvC%Bgp?S>q7`j(u7nj#sPIQC!y;g2;Cc0>#SH2QU*v8q{j;Y~;hkSFa+N z4@c6SjFwWgw=0-h&7F-&qXEF_oj_Sdg`ljc!R&0%48>MkronnnqZKh=2th4{d?ef= zrWK$$#?}j;zW3gz7wVe2nl7GxBWB#ta_*Buhd#O5Vi-Sl>S{;FSClM@a1$ugfqZQO4>JazQjq_5;YHnTqBfkzXAN?RT z<4kxYyd`)O}Ae1Evabgio=}*#79bxlk(cO+wRy18^421Wo&5#(as0y1 zJ&VwvwdfDVMoPSnA|EnYFgs41Uh65chA9?LJuN|S1j~?B&O=QIO zFp9De`ppXeOes-2Otg1~Z_#T1a<+F5zxV84w5S0>2i`+Q3rcPA`VyaCqMq>gWJYH5 zAg`T4nf)Ya@Mq{>v6~a0vv8qaZ+6&dViHQ70>PIEbY5)GM@4mYQF(d5uT(nP&z^`9 zbDX2d)3ONmrt)se?Uj?<-r-PguQtYC!Whc!y@cG}SjklV!Tcw(Hlg55V490t6ZNG`5l;LN51M2U=TO2d&-+F&~-uRs(XZ3})Ln404m9 zt83H+7?v2H-KgstGMLPhJZ4#n8$sj2t}&iURkC*N+LDwwn2nMQK4mkROq`Ut%b{zm z-?(C4Muq?l5h=y%)~zc{s#>>s^XA3W5-qaNcoG3NiFHh;6C~ZWapT7Mi9EB>?&Qjo z3Ltk2(p4!iIyFUARasG95C*N(R8$ogXwv0D>zT~C-}dPv+V_&6_WgVO{uRtnZCPv< zvg``xm1HYl$bNX>~$mw17YTE!7DZXQ~rw%UV7}y7t?zzw*I#r&GBI=@mxZDK3+@R z5u|{9(MKtkB9OghQ%yN`f#E!;_@aqYEnUBUeUhhg4G(QqsmwQ*9}Mek4&k?yA3Qx% ze!x=iO*9q5(iG+ZGzHRek9lc7O^v|!Lug7rHbyY2rp5{387Dg1K~w$VG$o9b%cohI z8k+D%iUll94Gj$$!)VIQRVWmc!_?C?WHgz9=NO==ZZj_-VLoVTfuE+*gEW;LpsAwt zbRkPq^I4ku-g?l~UEwrkBQ%w`2sBkfXvzVXO=A9n1q%w(6H>6kEKSJ>O>yEhl~u)s znv9qrO^HA|@JUh}K88b$G8_kPOl1c4Eb+5R2xU?4mHY0mE%!xhe+{hEztPpT<#dns z*M4ac+Sx9DcAb>n*{npJYLsNn$JbPKYZVP!|!uT6<=D}RosH!k;p>!;21nO z(_Wqo?vhKFF4ZHm;#RCZf@s#JRfk1!6$(UfsUYfF2z-x4IE!028@?9--_;M{fn1>N z_%?&acU#1>wOVypNVmNm;an;RxfX)w3qwE)=Xz7!B&r*+BIxZRUI*z6zQkC}SPYlc zR&p~tGCNRN3901^R92Eonx9}6=1p_OD7=zMA~_tPC@wB?a%>Qx>r+<;%pQp%E-`Xi ztm!!Q_v4tLwh>Q4p3g+tNF|NWHOb<5dIVftnJt_$lJqQqLVCu>8yiMqG8Pa>&z+0ZB2#PQl~LjFyVWmLApG(h@sm$Jxgk5E z?r&TTmEZ^XjEN;YM{IMs8s7%W*E@aD%YGV2#8o_%?dW>{_4E9@g%>Xi7A8#Fo%S`T zsF=w;*o=`9O>eHz%p%=P8oxeyS)FJ%b`zwVBMruBwff4Ht8IWKo*-`|J^=0W8xe0L zdcDNm-0Wr|@>mQxry_56IaMoo;>6Y1ycK{}`7`@^Ip%>p{)rR2cR#vbuTM@U?{5Xc zk@`V!^hHH_NllF;u%pNr9>y55EDlmIhKOfx*GT2U2)E$^_~Pkaw>Z1B)M(V3qM{(| z@Mf}jJRvorBIaW{7uiIJFo|!R-)k=cQJ3&d7t;jC-{gU^GQArWd;@C2d zm>0?=Bk%9qmzP(R*Wa(#lQ)BMI*T`X(PmhM0T`cNUi1t~Y}7B-vN%37Ltu9u+3kd5 zXn}J~{e#g0!I&g-&b0ZX-B;jmMYMZ2d|$mmuhR-#xdK)< z1_lzZwJckfwQ$+8Wvf@Otg5P7ltJ;dDNd&#IX8DH*kW-qE-WfS&?zfdlb@fTk{mnZ zlMYE$ACaoOpj0KjU5(zRx}()|fS_b@$AEGr&fTwXD-O9I?@W|pnASQg#cX|j@8o=8yi_Kx)TVwT(Clj%eSnU|gA36rUxon%Pum@^{va6%~`apw6yxhSx(8#T^5|>!a}5MX65E$mQ%xK zIoM|oTv1xe%y6ujX(}U3Hw@CvYeBlX9Hg7|SP7CLmg%&gIX~Re+1IbP!vf$qM}Wn6 zq2qde-R0vS9{%9)(eoGU2dFdJ41!IU)YA$5r+d_U3x;lF9Nb)qj7k>w%V)FisV-eo z9Os>Kxn*9$$%sfH$bOkV?OwdYS*zr*|x(p4Vm&47*DeRjXI8UNMJz zGsdoOxCt2oR|DfA-gWqE!)uCp4ObetA_{SPV-HSD&}Zu@(d2{Qf6!&2cYaS)P!1cZ z=x|Y>wmw9Y$Zyx8zBl0I&c%ImF%yc6D_43O8+)%@Nlo>t)vB1r7N?34LV;;%iHUJ) zBb+fYElW!9(*&b9x_fu&wr!=mcb_@KJ8`0}W80?aI!3sDeaWUx9Ualyi0F=vO}}{s zKLvB$ZrA(zEA?EF?}pwx?tk=tmxbC{b#w1$)|!h-XUf8GTvU~oN)61-OskYKXkjC8 zhLGQN8!JJIi{Z5%!sz$itY@hFZFQlxa9NtzNi2x3zZbM1{tdH6d?g8o55K$r_19nj z)0=O>9rlkaP0e+6^_RPQhh2M;Jd@+2qoWqvB!pqtbtIHv8+-L#*H0ZrpsF^<=bd)h zC(L7`h|`feaX$a*RjhZb(PDG^I6S^UD3Zp+gXS~jT4B`mI6Nw&RwN|8h1dJkG1!pg zbspC6$v`^tt4WXEd+*MNx9?tFniGWpq)?GEXU?276?DXuDgYR=@i`%Q0B3&HJ+Rl` zswF8;8Xr#}l*SQ|={a*1$V&Fu?Tb>-R@* z-_G2ai0@yaWXyCXuB?>^CME>b<;xxq99`|&Nd1AMEtZ4t>4C$vw^m|HPPXAV84)0W zkZ41p;_wsdxAZ18@hrW=EdugVfZlny9~;?enbS$_1O?a0KNeZT7dK~b47(Y&>O;8 z{C4||wV7mWEPoJGMfWg~Iy=O}e(t^6^net&hzU7_ld7tx~^(W5f& z6sZiSr@S=R>yYw&H1r|Vw9!Hy?c+)8(_DJYC*kuYzA;@L_GFzdcJ@4YS?0}-NN3HO6+LY=G{a@nY_Lv8 z<7X+Szx5(h#*H9FZvUSNx~ldJUF#@<5PiET!pz=g}G6StWK|wD^E^MOI1b)rcM3G zDHt)dT|rU%^}fMTni|%oeyb!@TU60J+SPUL%&F7Y&32w=AA9_<%}Yz> z_^51c>K#hH8Hqsy4KR1q(J}Yp#O8wfB9_?!)0L>nja-xej8+P zS(vF6js{L>&QDQhfIC2bqygePu=8)A)vG{YB{j5he$Ex%hRotgibiH}^v!a|N?j%Q zR8hNv_ays<<&~m(o2_0{P{4#LpoEs~D%Ez&{{7%9x7Ixcd8M>1Dhd_z`bHiP4no2! z_3s_Dv>ZJ^c%^iGfB*VzMMc}3PI&XyYFSiAoT)~uHxX=*Pij%Y|Bbwo*pa9%;c+3g zXs+0j7|m_=M98_r>dQLrmWVMOtG8$2uLuqiN7VMma^J4VKein^cIfm+ADupgDE1Gv z++l)WC3JTJ2-dAopb%*N8mgUMgp;J!L$dxSN&{a&2;findJv9*xmu~FrbgrQNmoDr z{Ay`iTVU0dcnaaX5j<(bMHc-2s#YLuZ}1^EZ!dpx@cyS}pzU{Q1ruu?;G(Q4FuK6{ zP#gyxon}WC(xjS*CUsxz4!Z#fW{lNkwjLku{)2Z^mT7yi%< zK_sQ{Hf1X^2k7e?=!u&t)#4=VG@=0^b%F2>yBP>{hFQK5IKn0C2+v#+3#9|HX zhIw+nbJzez9H~r)CsdQD5II+@P)9l7Y;#0qt?)~l&`O%fO3u^-d>`X_0^=(5@RKx} z=B5Ek6i;evk~4DV0udhnX3Ke=VS+8+J;9L^aP0)18HT2r`4@0R3Pp~K2M^Y4T|`-$ z;1N3e<+1laJn_NX&?i6daSC&)VM(t@_VgTsbMu-r70z}w@m~H*;2|t6Zo}xd239R0 zp}%iz8Uh{5hE*dVDH6_r6DN+# zfUl8VwUsN=qwFxd>``-8`d4j6+ZUr-#J@O9wEduek?f}QG-z^kTbot{FiD={atnB% zxW8YcIdOu=%Q$r^gB&FVl^a8#IU)ir=2SkhDF83VcOHG=1!VcLb2YP=8)V$r@qy?)e1 z{1~B+np~q9w3aSV06L=WxVy)ZDpI^zm+4i|x2rBH;nHQ!Qx*wlIHs@bKZm z>2lO6tnA;I024)wbAVRY)ST4UkaIuTJ+K4!`~mux|DC+Sh==EXCr|Kq@d69|USLY| ztsY?ctsY=M7kLh&dJdynQlM%aq-X&=rvjSt5rBj#A0>y4E2qZ5(#I%{ka$%&ln<#` zPEWAS&+gd*W8zJ<>3fkt)T_6_h5&l4Z5kYP+BV!`v)RqPO;;f)t~T|W?Iox7+ zntI#5WR~o&+g3t(?QpQ#y%a|ZKq@JR>PBi}HwBtsrKUVqv{^kACla@d47R1CEuCR& zh@H*}uWEi7Tn@0oU0X{tl&B$ISE|{=)s(Kg zwTAdpEpoBobbVDz)%)is3iCtqp=+sk%6-40>!7u5*1m{H%}2;FdYCGw@72EOrw_u} zO7NGlPJtMqF4SFI*3F%J{kl|&B9?w_jLS9B(=$HabLN8&fT&L`wpbQ3e7W6(^D`=e z-GP_*vC5A=+OlPEu)3OBtQAS6Srrv2DHT8AE{pnIYU=N9=+_K}dW)qcJ370T z$0ASiH>o#$p!=Yf$Kp=1)T==6pdtDhKD!-6^_F^(QKWOX3+g`U|FZv+^IFk%^>$01 zrBbq%dIb6v=dNe&!Z+&QwcjKK$X-jwxDg_mm{_^;u1kmpakLQt0q60QX=zFx!R=2< zs_;GQdzOCr$qGP)?yIHT@TAq$IGxR>PdA50%!sd&gM(DH)KP}>6blU%7;yxiL%a{1 zgFtrm-B0`vhX`&ey*em!2!A2hQ-1-yyIU(63^;f#+ zLzOP!eds$yb18c93$)AMzddObrWJXc+2D5^fA$-VkRbb?&+3OeXV9G}q4cScY`XZMq>O4*;~y9>b@mJ~I&5D1VmV;&06o9Ogf?V`?hB7zZL3rz7eL;6Iy9n!fqFqz9&! zm#3yKTC^x%9S4b(T2WCkSK&p@fPaUCBEL)=#CDO0QBeJcR7lA-sq5cMi43) zA;=i&?SUgN_>UKOB*>hLAki@rVp_FI8|wkLEXq`2qDo6km(I&n&~S13XKF^fONAfs zY|s}NPH(9mLi49ZL7ETIX(CSC!T!2}jOBf|?iJcY{8l~@4F-C1hISO&HZaphGGE`s ze3eBi^RblK(V7gnh$7sBJ-u1!JZJm4bLZUkog_WgUTelDvvP>^bxWTt*gYNm=RNkGi6( zQ6MFKX!YX7i?d`AlDi&%{BhsLrAQS?^jV!W5ZiyO()T0s5*=v#)BBKWy%J`@ zefOs%I z8kd?J?S)y^*4EU}e7)}K)vH}b`yP?q*ab7Ii_$?P@#rbL2^O|hn=C>W5^WvrYUv(= zWoNN_c&)7iz%*Rv2$qP2#%$sy% z<|~3T{|IKDSlsy&z62x}CGfnX*Unu`Rz zK?2(U8+_Pp7#VAA8^=lYm&4qHuoqb|46C)Zxv_~|u}-4{&I$*6ssLFsVr^r|U|m~j zS_F3pZ5`{zl40MEJIIm^juTHYGSXU^)Z7#fmQ0~8f9xTb7fW_G{;jRqRMrs^cv4w#ZTNqfe8QX=6ZV_wS zg}YFh0gI1=(Q&YDd-2at@g%bP2!1m=DJcajnHB5v4m3AsrU|_UBtA7yW@Ho>&cCbU zI#nDWZ!|J@h)Fs7^5yebwU665JU|!ySvQCoYzE+Yh@#8&CSs3ppu_Ga)ie_!thZ*nwzUw zfz#a@k>1@%{Xw9}%|#`2iZ(LqbWIIZJj?*<>|Ul`rd_Ub>Sg~f2$wKP?KI5SOKVZx zbBm-9v_sFK9czK6dP|$Lok%9xT3UE(8=q~n&9rU6sCHmfnRjyX;E5B=KRI?VD*V_% zXu02V>Y#Mn4W|yWS+UGFoj4d3e&Qf>yUpn$ z=kjWj2x$1)4FGyZQkPr?4&sUVdC=K|yn4 zufr=-Blu1mMWSXqoN+wo_>k_dB?Su4NCRAh$GxYq+m+G1k8t>yLb<_>qp*hK|8LD89X?PF`%& z4H|pfI*`7^BsvDKf%AR(;XxqC9RB#iHF6w_&4~(0w*%*eX~lD^H#|^1e=)S%(if0& zANj-el_mM5>u@;53WlRB*-;$;-F+2G^!ovHhW*s*l4l++fyW_HE{2k&4D2=1qt)n9 z5>5B^4t93ph(!JSb@kR`#|8#^&UKwWaY9d>)2e(O9X{Y|SnT-l>8BkXkUlt{F$QOE zF_AP~QL$*v8kb9)UrxQvdFcLl77T+wfBw>ED^c-U3);x1ex?<3tE;(OWooJtA1VNs z^{TkKIyJSuT_)@7OilH3%GH7XWPmQDT&EXQ;T+L5Hi*R3#HhX<3Qm)8f~W{M8pnc@ z35X%nsWaI*$WMv{1sSpHhsNwqpFqg5AiZTTL17+n$#@_F#oWqm513899L}(1_iYbnh;okT-NC~dSa}jY zyArN*8r*bpxVxc26zQ{!43XJwHjdvoyWO3-VMqAvqAuaa*&TF8^T`&=uDt)j@nI@? zPVri3i#7SPitoAS9?WjKe|9UYDmC%pvpauw{LQmFvwOHC&X3*W#?>>rM^I0$U3zxnvO(aKl(|y4l+3>c=CR8}nBliXCn@L+RD(E`~=}U273WM7IR`9{!1TDu@Sb~uyoY25Ria0=i4rx~k6J?6$vG+Ab}A13 zfjG*9+nAVdJ{6}n(R2d*=7foguYd!&BA#l70pCpJfXn1CcYX>^Nnm!QCU$mAy05?f zT4!?Y5xGoV5a(Ukobg<)*Jgry!({Vvo0| literal 0 HcmV?d00001 diff --git a/frontend/public/images/csc-logo-fb-trans.png b/frontend/public/images/csc-logo-fb-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..dc16bad1bc5767e900027cf0a5c5ef9ded7f8245 GIT binary patch literal 104918 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

    Rz6`|X3oxS=)E`znjWym3Q| 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%0DxLjhDPXYO$aOHwJ02X1H@hDH7Mx9|FR=FRz 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 Date: Thu, 1 Apr 2021 18:26:56 -0400 Subject: [PATCH 13/24] Edit Links component --- frontend/components/EditLink/index.tsx | 7 - frontend/components/Editor/Link.tsx | 92 ++++ frontend/components/Editor/index.tsx | 100 +++++ frontend/components/Editor/useDragDrop.ts | 13 + frontend/components/Links/index.tsx | 14 +- frontend/components/editor.tsx | 12 - frontend/components/index.ts | 2 +- frontend/next.config.js | 2 +- frontend/package-lock.json | 504 +++++++++------------- frontend/package.json | 7 +- frontend/pages/editor.tsx | 77 ++-- frontend/pages/index.tsx | 13 +- frontend/styles/globals.css | 9 +- 13 files changed, 503 insertions(+), 349 deletions(-) delete mode 100644 frontend/components/EditLink/index.tsx create mode 100644 frontend/components/Editor/Link.tsx create mode 100644 frontend/components/Editor/index.tsx create mode 100644 frontend/components/Editor/useDragDrop.ts delete mode 100644 frontend/components/editor.tsx diff --git a/frontend/components/EditLink/index.tsx b/frontend/components/EditLink/index.tsx deleted file mode 100644 index 5bc7b76..0000000 --- a/frontend/components/EditLink/index.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; - -const EditLink: React.FC = () => { - return
    ; -}; - -export default EditLink; diff --git a/frontend/components/Editor/Link.tsx b/frontend/components/Editor/Link.tsx new file mode 100644 index 0000000..0fc0ba1 --- /dev/null +++ b/frontend/components/Editor/Link.tsx @@ -0,0 +1,92 @@ +import React, { useRef, useState } from "react"; +import { Draggable } from "react-beautiful-dnd"; + +export type EditableLink = { + title: string; + url: string; + active: boolean; + clicks: number; +}; + +interface LinkProps { + index: number; + link: EditableLink; + onChange: (newLink: EditableLink) => void; + onDelete: () => void; +} + +const DeleteIcon = () => ( + + + +); + +const DragIcon = () => ( + + + +); + +const Link: React.FC = ({ index, link, onChange, onDelete }) => { + return ( + + {(provided) => ( +
    +
    +
    + +
    +
    +
    + onChange({ ...link, title: e.target.value })} + /> + + + onChange({ ...link, active: e.target.checked }) + } + checked={link.active} + className="float-right" + /> +
    + +
    + onChange({ ...link, url: e.target.value })} + /> + + +
    +
    +
    +
    + )} +
    + ); +}; + +export default Link; diff --git a/frontend/components/Editor/index.tsx b/frontend/components/Editor/index.tsx new file mode 100644 index 0000000..48f47bc --- /dev/null +++ b/frontend/components/Editor/index.tsx @@ -0,0 +1,100 @@ +import React, { useState } from "react"; +import { DragDropContext, Droppable, DropResult } from "react-beautiful-dnd"; +import Link, { EditableLink } from "components/Editor/Link"; + +import { useDragDrop } from "./useDragDrop"; +import equal from "fast-deep-equal"; + +interface EditorProps { + links: EditableLink[]; + setLinks: React.Dispatch>; +} + +const Editor: React.FC = ({ links, setLinks }) => { + const [formState, setFormState] = useState(links); + const { displayDragDrop } = useDragDrop(); + + const handleOnDragEnd = (result: DropResult) => { + if (!result?.destination) return; + + const items = Array.from(formState); + const [reorderedItem] = items.splice(result.source.index, 1); + items.splice(result.destination.index, 0, reorderedItem); + + setFormState(items); + }; + + /*note that we need to make the new links name render with nothing*/ + const handleOnClickAdd = () => + setFormState([ + ...formState, + { + title: "", + url: "", + clicks: 0, + active: true, + }, + ]); + + // useEffect(() => { + // setFormState(links); + // }, [links]); + + const onSubmit = () => { + // const res = await updateLinks(formState); + // setLinks(res.data); + }; + + const didEdit = !equal(formState, links); + + console.log({ formState, didEdit }); + + return ( +
    + {/* add link button */} + + {displayDragDrop && ( + + + {(provided) => ( +
    + {formState.map((link, index) => ( + + setFormState([ + ...formState.slice(0, index), + newLink, + ...formState.slice(index + 1), + ]) + } + onDelete={() => + setFormState([ + ...formState.slice(0, index), + ...formState.slice(index + 1), + ]) + } + /> + ))} + {provided.placeholder} +
    + )} +
    +
    + )} +
    + ); +}; + +export default Editor; diff --git a/frontend/components/Editor/useDragDrop.ts b/frontend/components/Editor/useDragDrop.ts new file mode 100644 index 0000000..55f40b2 --- /dev/null +++ b/frontend/components/Editor/useDragDrop.ts @@ -0,0 +1,13 @@ +import { useEffect, useState } from "react"; + +type TUseDragDrop = () => { displayDragDrop: boolean }; + +export const useDragDrop: TUseDragDrop = () => { + const [isBrowser, setIsBrowser] = useState(false); + + useEffect(() => { + setIsBrowser(process.browser); + }, []); + + return { displayDragDrop: isBrowser }; +}; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index 6e36b1d..67c7c4d 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -2,7 +2,7 @@ import React from "react"; import { useEffect } from "react"; interface Link { - name: string; + title: string; url: string; } interface LinkProps { @@ -23,9 +23,9 @@ const Links: React.FC = ({ links }) => { }); }; - useEffect((): void => { - postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/view' - }, []); + // useEffect((): void => { + // postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/view' + // }, []); const handleClick = (): void => { postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/click' @@ -36,8 +36,8 @@ const Links: React.FC = ({ links }) => { CSC Logo

    @uwcsclub

      - {links.map(({ name, url }) => ( -
    • + {links.map(({ title, url }, i) => ( +
    • - {name} + {title}
    • ))} diff --git a/frontend/components/editor.tsx b/frontend/components/editor.tsx deleted file mode 100644 index 14b655e..0000000 --- a/frontend/components/editor.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import Analytics from "components/Analytics/index"; - -const Editor: React.FC = () => { - return ( -
      - -
      - ); -}; - -export default Editor; diff --git a/frontend/components/index.ts b/frontend/components/index.ts index a6f1ea8..0914f5a 100644 --- a/frontend/components/index.ts +++ b/frontend/components/index.ts @@ -1,3 +1,3 @@ export { default as Links } from "./Links"; -export { default as EditLink } from "./EditLink"; +export { default as Editor } from "./Editor"; export { default as Preview } from "./Preview"; diff --git a/frontend/next.config.js b/frontend/next.config.js index b5619f4..6f31c75 100644 --- a/frontend/next.config.js +++ b/frontend/next.config.js @@ -10,7 +10,7 @@ const devConfig = { return [ { source: "/api", - destination: "http://localhost:5000", + destination: "http://localhost:5000/editor/links", }, { source: "/api/:slug", diff --git a/frontend/package-lock.json b/frontend/package-lock.json index fbaeb7e..ffb0778 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -83,7 +83,6 @@ "version": "7.13.9", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, "requires": { "@babel/types": "^7.13.0", "jsesc": "^2.5.1", @@ -94,7 +93,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -104,8 +102,27 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@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==", + "requires": { + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } } } }, @@ -125,7 +142,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.12.13", "@babel/template": "^7.12.13", @@ -136,7 +152,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -149,7 +164,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, "requires": { "@babel/types": "^7.12.13" }, @@ -158,7 +172,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -193,7 +206,6 @@ "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==", - "dev": true, "requires": { "@babel/types": "^7.12.13" }, @@ -202,7 +214,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -314,7 +325,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, "requires": { "@babel/types": "^7.12.13" }, @@ -323,7 +333,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -380,8 +389,7 @@ "@babel/parser": { "version": "7.13.9", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.9.tgz", - "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==", - "dev": true + "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==" }, "@babel/runtime": { "version": "7.12.5", @@ -395,7 +403,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@babel/parser": "^7.12.13", @@ -406,7 +413,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, "requires": { "@babel/highlight": "^7.12.13" } @@ -415,7 +421,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -428,7 +433,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.0", @@ -445,7 +449,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, "requires": { "@babel/highlight": "^7.12.13" } @@ -454,7 +457,6 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -464,8 +466,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" } } }, @@ -479,6 +480,29 @@ "to-fast-properties": "^2.0.0" } }, + "@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==", + "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==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@eslint/eslintrc": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", @@ -677,180 +701,14 @@ "unist-util-find-all-after": "^3.0.2" } }, - "@tailwindcss/postcss7-compat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.0.3.tgz", - "integrity": "sha512-R43aiSzwlybDMhDld8vkSIKPSLXxbbmotZ+I2GIrX+IzFNy9JAByC7Ncf9A81Dg0JLBWHY5m769lBbBnJCF8cw==", + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", "dev": true, "requires": { - "@fullhuman/postcss-purgecss": "^3.1.3", - "autoprefixer": "^9", - "bytes": "^3.0.0", - "chalk": "^4.1.0", - "color": "^3.1.3", - "detective": "^5.2.0", - "didyoumean": "^1.2.1", - "fs-extra": "^9.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.20", - "modern-normalize": "^1.0.0", - "node-emoji": "^1.8.1", - "object-hash": "^2.1.1", - "postcss": "^7", - "postcss-functions": "^3", - "postcss-js": "^2", - "postcss-nested": "^4", - "postcss-selector-parser": "^6.0.4", - "postcss-value-parser": "^4.1.0", - "pretty-hrtime": "^1.0.3", - "reduce-css-calc": "^2.1.8", - "resolve": "^1.19.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, "@types/json-schema": { @@ -914,6 +772,15 @@ "csstype": "^3.0.2" } }, + "@types/react-beautiful-dnd": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz", + "integrity": "sha512-by80tJ8aTTDXT256Gl+RfLRtFjYbUWOnZuEigJgNsJrSEGxvFe5eY6k3g4VIvf0M/6+xoLgfYWoWonlOo6Wqdg==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/react-dom": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.1.tgz", @@ -923,6 +790,17 @@ "@types/react": "*" } }, + "@types/styled-components": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.8.tgz", + "integrity": "sha512-or4lQ12MhR4wTZ34rxRwI+Fw9vPqhd9WeEqFfF6yssDe1uS7L8p9YYMbmtDgHRbBKLR4aJIK8KHA0h9wSYifkg==", + "dev": true, + "requires": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -1292,6 +1170,17 @@ "postcss-value-parser": "^4.1.0" } }, + "babel-plugin-styled-components": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz", + "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.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", @@ -1505,6 +1394,11 @@ "quick-lru": "^4.0.1" } }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-lite": { "version": "1.0.30001194", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", @@ -1755,6 +1649,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1779,6 +1674,29 @@ "randomfill": "^1.0.3" } }, + "css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "requires": { + "tiny-invariant": "^1.0.6" + } + }, + "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=" + }, + "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==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", @@ -1879,7 +1797,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -2673,8 +2590,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -3066,6 +2982,14 @@ "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==", + "requires": { + "react-is": "^16.7.0" + } + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -3372,7 +3296,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "2.1.0", @@ -3419,8 +3344,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -3696,6 +3620,11 @@ "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true }, + "memoize-one": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", + "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" + }, "meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", @@ -3946,8 +3875,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { "version": "3.1.20", @@ -4440,7 +4368,8 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, "path-parse": { "version": "1.0.6", @@ -4563,44 +4492,6 @@ "htmlparser2": "^3.10.0" } }, - "postcss-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", - "integrity": "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1", - "postcss": "^7.0.18" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "postcss-less": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", @@ -4644,44 +4535,6 @@ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, - "postcss-nested": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz", - "integrity": "sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==", - "dev": true, - "requires": { - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", @@ -4821,8 +4674,7 @@ "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "prebuild-install": { "version": "6.0.1", @@ -5001,6 +4853,11 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, + "raf-schd": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", + "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -5050,6 +4907,20 @@ "object-assign": "^4.1.1" } }, + "react-beautiful-dnd": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz", + "integrity": "sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg==", + "requires": { + "@babel/runtime": "^7.8.4", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.1.1", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + } + }, "react-dom": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", @@ -5065,6 +4936,18 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-redux": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", + "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==", + "requires": { + "@babel/runtime": "^7.12.1", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.13.1" + } + }, "react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -5199,6 +5082,15 @@ } } }, + "redux": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", + "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "requires": { + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" + } + }, "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -5359,6 +5251,11 @@ "safe-buffer": "^5.0.1" } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "sharp": { "version": "0.26.3", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.26.3.tgz", @@ -5392,6 +5289,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -5399,7 +5297,8 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "shell-quote": { "version": "1.7.2", @@ -5739,6 +5638,23 @@ "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", "dev": true }, + "styled-components": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.1.tgz", + "integrity": "sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==", + "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", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, "styled-jsx": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.3.2.tgz", @@ -6034,6 +5950,11 @@ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "table": { "version": "6.0.7", "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", @@ -6220,6 +6141,11 @@ "setimmediate": "^1.0.4" } }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -6435,6 +6361,11 @@ } } }, + "use-memo-one": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", + "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==" + }, "use-subscription": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", @@ -6520,14 +6451,6 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "requires": { - "lodash": "^4.17.15" - } - }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -6542,6 +6465,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "requires": { "isexe": "^2.0.0" } diff --git a/frontend/package.json b/frontend/package.json index 49298d6..8bb1070 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,14 +14,19 @@ "check:fix": "npm run format && npm run lint" }, "dependencies": { + "fast-deep-equal": "^3.1.3", "next": "10.0.7", "react": "17.0.1", - "react-dom": "17.0.1" + "react-beautiful-dnd": "^13.0.0", + "react-dom": "17.0.1", + "styled-components": "^5.2.1" }, "devDependencies": { "@types/node": "^14.14.31", "@types/react": "^17.0.2", + "@types/react-beautiful-dnd": "^13.0.0", "@types/react-dom": "^17.0.1", + "@types/styled-components": "^5.1.8", "@typescript-eslint/eslint-plugin": "^4.16.1", "@typescript-eslint/parser": "^4.16.1", "autoprefixer": "^10.2.4", diff --git a/frontend/pages/editor.tsx b/frontend/pages/editor.tsx index c96c1b2..9954c47 100644 --- a/frontend/pages/editor.tsx +++ b/frontend/pages/editor.tsx @@ -1,52 +1,79 @@ import Head from "next/head"; import { GetStaticProps } from "next"; -import React from "react"; +import React, { useState } from "react"; import { AuthProvider, useAuth } from "components/Login/authcontext"; import LoginHead from "components/Login/loginhead"; import LoginBox from "components/Login/loginbox"; -import Editor from "components/editor"; +import Analytics from "components/Analytics"; +import Editor from "components/Editor"; +import { EditableLink } from "components/Editor/Link"; export const getStaticProps: GetStaticProps = async () => { // TODO: Fetch links here return { - props: { data: null }, // will be passed to the page component as props + props: { + data: [ + { + title: "dummlink1", + url: "www.helloworld.com", + clicks: 0, + active: true, + }, + { + title: "dummlink2", + url: "www.hiworld.com", + clicks: 0, + active: true, + }, + ], + }, // will be passed to the page component as props // Next.js will attempt to re-generate the page: - // - When a request comes in + // - When a request comes intype EditableLink = { // - At most once every second revalidate: 1, }; }; -const LoginScreen: React.FC = () => { - return ( -
      -
      -
      - - Login - - -
      - -
      +const LoginScreen: React.FC = () => ( +
      +
      +
      + + Login + + +
      +
      - ); -}; +
      +); + +interface EditorPageProps { + data: any; +} -const LoginChecker: React.FC = () => { +const EditorPage: React.FC = ({ data }) => { const { loggedIn } = useAuth(); - return loggedIn ? : ; + const [links, setLinks] = useState(data ?? []); + + console.log({ links }); + return loggedIn ? ( + <> + + + + ) : ( + + ); }; -const Login: React.FC = () => { +export default function EditorPageWrapper({ data }: any): JSX.Element { return ( - + ); -}; - -export default Login; +} diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 040d8ee..9c5e180 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -10,13 +10,20 @@ export const getStaticProps: GetStaticProps = async () => { const data = await fetch(API).then((res) => res.json()); return { - props: { links: data }, // will be passed to the page component as props + props: { data }, // will be passed to the page component as props revalidate: 1, }; }; -const Home: React.FC = ({ links }: any) => { - return ; +const Home: React.FC = ({ data }: any) => { + return ( + ({ + title: dog.name, + url: "https://www.google.com/", + }))} + /> + ); }; export default Home; diff --git a/frontend/styles/globals.css b/frontend/styles/globals.css index 6f8f1cb..7335818 100644 --- a/frontend/styles/globals.css +++ b/frontend/styles/globals.css @@ -1,5 +1,5 @@ /* ./your-css-folder/styles.css */ -@import url('https://fonts.googleapis.com/css2?family=Karla:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap'); +@import url("https://fonts.googleapis.com/css2?family=Karla:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"); @tailwind base; @tailwind components; @tailwind utilities; @@ -7,6 +7,11 @@ @font-face { font-family: "Karla"; src: local("Karla"), - url("/fonts/Karla-VariableFont_wght.ttf") format("truetype"); + url("/fonts/Karla-VariableFont_wght.ttf") format("truetype"); font-style: normal; } + +input, +button { + outline: none; +} -- 2.30.2 From ffc1ed9d211badb8a67d67b1f52313f3f29161a2 Mon Sep 17 00:00:00 2001 From: Adi Thakral Date: Fri, 2 Apr 2021 16:14:50 -0400 Subject: [PATCH 14/24] Hookup public page --- .gitignore | 1 + backend/main.py | 3 +- frontend/components/Editor/Link.tsx | 8 +-- frontend/components/Editor/index.tsx | 10 +++- frontend/components/Links/index.tsx | 13 ++-- frontend/components/Login/authcontext.tsx | 73 ++++++++++++++++------- frontend/components/Login/loginbox.tsx | 16 +++-- frontend/components/index.ts | 3 - frontend/next.config.js | 6 +- frontend/package.json | 4 +- frontend/pages/editor.tsx | 59 +++++++----------- frontend/pages/index.tsx | 30 +++++----- 12 files changed, 123 insertions(+), 103 deletions(-) delete mode 100644 frontend/components/index.ts diff --git a/.gitignore b/.gitignore index 0b07ba6..2a6db5c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ links.db password.txt /.vs /.vscode +/links.json diff --git a/backend/main.py b/backend/main.py index 372f23d..a967899 100644 --- a/backend/main.py +++ b/backend/main.py @@ -7,7 +7,7 @@ import os DB_PATH = os.path.join(os.path.dirname(__file__), 'links.db') app = Flask(__name__) -auth = HTTPBasicAuth() +auth = HTTPBasicAuth('CustomBasic') users = { "admin": generate_password_hash("test"), @@ -62,6 +62,7 @@ def update_links(): cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) con.commit() data = regen_JSON() + # TODO: Trigger a rebuild of the frontend outfile = open('data.json', 'w') print(data, file=outfile) outfile.close() diff --git a/frontend/components/Editor/Link.tsx b/frontend/components/Editor/Link.tsx index 0fc0ba1..6e83404 100644 --- a/frontend/components/Editor/Link.tsx +++ b/frontend/components/Editor/Link.tsx @@ -1,8 +1,8 @@ -import React, { useRef, useState } from "react"; +import React from "react"; import { Draggable } from "react-beautiful-dnd"; export type EditableLink = { - title: string; + name: string; url: string; active: boolean; clicks: number; @@ -55,8 +55,8 @@ const Link: React.FC = ({ index, link, onChange, onDelete }) => { onChange({ ...link, title: e.target.value })} + value={link.name} + onChange={(e) => onChange({ ...link, name: e.target.value })} /> >; } -const Editor: React.FC = ({ links, setLinks }) => { +const Editor: React.FC = ({ links }) => { const [formState, setFormState] = useState(links); const { displayDragDrop } = useDragDrop(); + useEffect(() => { + setFormState(links); + }, [links]); + const handleOnDragEnd = (result: DropResult) => { if (!result?.destination) return; @@ -29,7 +33,7 @@ const Editor: React.FC = ({ links, setLinks }) => { setFormState([ ...formState, { - title: "", + name: "", url: "", clicks: 0, active: true, diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index 67c7c4d..ce4baa1 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -1,15 +1,14 @@ import React from "react"; -import { useEffect } from "react"; -interface Link { - title: string; +export interface Link { + name: string; url: string; } interface LinkProps { links: Link[]; } -const Links: React.FC = ({ links }) => { +export const Links: React.FC = ({ links }) => { const postData = (url = ""): void => { fetch(url, { method: "POST", @@ -36,7 +35,7 @@ const Links: React.FC = ({ links }) => { CSC Logo

      @uwcsclub

        - {links.map(({ title, url }, i) => ( + {links.map(({ name, url }, i) => (
      • - {title} + {name}
      • ))} @@ -55,5 +54,3 @@ const Links: React.FC = ({ links }) => {
      ); }; - -export default Links; diff --git a/frontend/components/Login/authcontext.tsx b/frontend/components/Login/authcontext.tsx index 55ce0e7..ae094d7 100644 --- a/frontend/components/Login/authcontext.tsx +++ b/frontend/components/Login/authcontext.tsx @@ -1,40 +1,71 @@ import React, { useState, useContext, createContext } from "react"; -export interface AuthContextState { - loggedIn: boolean; - loginFailed: boolean; - login: (pass?: string) => void; +interface LoggedInState { + loggedIn: true; + headers: HeadersInit; + logout(): void; } -const DEFAULT_STATE: AuthContextState = { - loggedIn: false, - loginFailed: false, - login: () => console.error("No parent AuthContext found!"), -}; +interface LoggedOutState { + loggedIn: false; + login(password: string): Promise; +} -const AuthContext: React.Context = createContext( - DEFAULT_STATE -); +export type AuthState = LoggedInState | LoggedOutState; -const password = "bubbles"; +const AuthContext = createContext({ + loggedIn: false, + login: () => { + throw new Error("No parent AuthContext found!"); + }, +} as AuthState); export const AuthProvider: React.FC = (props) => { const [loggedIn, setLoggedIn] = useState(false); - const [loginFailed, setLoginFailed] = useState(false); + const [headers, setHeaders] = useState(); + + function logout() { + setLoggedIn(false); + setHeaders(undefined); + } - function login(pass?: string): void { - if (pass === password) { + async function login(password: string): Promise { + const username = process.env.NEXT_PUBLIC_EDITOR_USERNAME; + + if (!username) { + throw new Error( + "Missing NEXT_PUBLIC_EDITOR_USERNAME environment variable" + ); + } + + const newHeaders = { + Authorization: `CustomBasic ${btoa(`${username}:${password}`)}`, + }; + + const res = await fetch("/api/editor/links", { headers: newHeaders }); + + if (res.status === 200) { setLoggedIn(true); - setLoginFailed(false); + setHeaders(newHeaders); + return true; } else { - setLoggedIn(false); - setLoginFailed(true); + logout(); + return false; } } return ( - + ); }; -export const useAuth = () => useContext(AuthContext); +export function useAuth(): AuthState { + return useContext(AuthContext); +} diff --git a/frontend/components/Login/loginbox.tsx b/frontend/components/Login/loginbox.tsx index fcaba99..8681e0c 100644 --- a/frontend/components/Login/loginbox.tsx +++ b/frontend/components/Login/loginbox.tsx @@ -4,7 +4,8 @@ import { useAuth } from "components/Login/authcontext"; const LoginBox: React.FC = () => { const [password, setPassword] = useState(""); const [focused, setFocused] = useState(false); - const { login, loginFailed } = useAuth(); + const [loginFailed, setLoginFailed] = useState(false); + const auth = useAuth(); const passwordLabelClassName = `absolute inset-y-0 left-0 px-4 font-sans text-gray-600 ${ focused || password @@ -12,10 +13,17 @@ const LoginBox: React.FC = () => { : "" } transition-transform pointer-events-none`; - function handleSubmit(e: React.SyntheticEvent): void { + async function handleSubmit(e: React.SyntheticEvent) { e.preventDefault(); - login(password); - setPassword(""); + + if (!auth.loggedIn) { + const loginSuccessful = await auth.login(password); + + if (!loginSuccessful) { + setLoginFailed(true); + setPassword(""); + } + } } return ( diff --git a/frontend/components/index.ts b/frontend/components/index.ts deleted file mode 100644 index 0914f5a..0000000 --- a/frontend/components/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as Links } from "./Links"; -export { default as Editor } from "./Editor"; -export { default as Preview } from "./Preview"; diff --git a/frontend/next.config.js b/frontend/next.config.js index 6f31c75..cfd6b99 100644 --- a/frontend/next.config.js +++ b/frontend/next.config.js @@ -10,11 +10,11 @@ const devConfig = { return [ { source: "/api", - destination: "http://localhost:5000/editor/links", + destination: "http://localhost:5000", }, { - source: "/api/:slug", - destination: "http://localhost:5000/:slug", + source: "/api/:path*", + destination: "http://localhost:5000/:path*", }, ]; }, diff --git a/frontend/package.json b/frontend/package.json index 8bb1070..adb188d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,12 +6,14 @@ "dev": "next dev", "build": "next build", "start": "next start", + "type-check": "tsc", "format": "prettier --write './**/*'", "format:check": "prettier --check './**/*'", "lint": "eslint \"{pages,components}/**/*.{js,ts,tsx,jsx}\" --quiet --fix", "lint:check": "eslint \"{pages,components}/**/*.{js,ts,tsx,jsx}\" --quiet", "check": "npm run format:check && npm run lint:check", - "check:fix": "npm run format && npm run lint" + "check:fix": "npm run format && npm run lint", + "clean-cache": "rm -rf ./.next" }, "dependencies": { "fast-deep-equal": "^3.1.3", diff --git a/frontend/pages/editor.tsx b/frontend/pages/editor.tsx index 9954c47..fffdb50 100644 --- a/frontend/pages/editor.tsx +++ b/frontend/pages/editor.tsx @@ -1,6 +1,5 @@ import Head from "next/head"; -import { GetStaticProps } from "next"; -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { AuthProvider, useAuth } from "components/Login/authcontext"; import LoginHead from "components/Login/loginhead"; import LoginBox from "components/Login/loginbox"; @@ -8,33 +7,6 @@ import Analytics from "components/Analytics"; import Editor from "components/Editor"; import { EditableLink } from "components/Editor/Link"; -export const getStaticProps: GetStaticProps = async () => { - // TODO: Fetch links here - - return { - props: { - data: [ - { - title: "dummlink1", - url: "www.helloworld.com", - clicks: 0, - active: true, - }, - { - title: "dummlink2", - url: "www.hiworld.com", - clicks: 0, - active: true, - }, - ], - }, // will be passed to the page component as props - // Next.js will attempt to re-generate the page: - // - When a request comes intype EditableLink = { - // - At most once every second - revalidate: 1, - }; -}; - const LoginScreen: React.FC = () => (
      @@ -51,16 +23,25 @@ const LoginScreen: React.FC = () => (
      ); -interface EditorPageProps { - data: any; -} +const EditorPage: React.FC = () => { + const auth = useAuth(); + const [links, setLinks] = useState([]); + + useEffect(() => { + async function fetchLinks() { + if (!auth.loggedIn) { + return; + } + + const res = await fetch("/api/editor/links", { headers: auth.headers }); + + setLinks(await res.json()); + } -const EditorPage: React.FC = ({ data }) => { - const { loggedIn } = useAuth(); - const [links, setLinks] = useState(data ?? []); + fetchLinks(); + }, [auth]); - console.log({ links }); - return loggedIn ? ( + return auth.loggedIn ? ( <> @@ -70,10 +51,10 @@ const EditorPage: React.FC = ({ data }) => { ); }; -export default function EditorPageWrapper({ data }: any): JSX.Element { +export default function EditorPageWrapper(): JSX.Element { return ( - + ); } diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 9c5e180..6ea2095 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,29 +1,27 @@ import React from "react"; import { GetStaticProps } from "next"; -import { Links } from "components"; +import { Link, Links } from "components/Links"; +import { readFileSync } from "fs"; -// TODO: change -const API = "https://api.thedogapi.com/v1/breeds?limit=10&page=0"; +export const getStaticProps: GetStaticProps = async () => { + if (!process.env.LINKS_FILE) { + throw new Error("Set the LINKS_FILE environment variable"); + } -export const getStaticProps: GetStaticProps = async () => { - // fetch data here - const data = await fetch(API).then((res) => res.json()); + const links = JSON.parse(readFileSync(process.env.LINKS_FILE).toString()); return { - props: { data }, // will be passed to the page component as props + props: { links }, revalidate: 1, }; }; -const Home: React.FC = ({ data }: any) => { - return ( - ({ - title: dog.name, - url: "https://www.google.com/", - }))} - /> - ); +interface Props { + links: Link[]; +} + +const Home: React.FC = ({ links }) => { + return ; }; export default Home; -- 2.30.2 From 66dda06a1d131ac497af08fb4e5a7c6d62308e32 Mon Sep 17 00:00:00 2001 From: Neil Parikh Date: Sat, 3 Apr 2021 01:56:12 +0000 Subject: [PATCH 15/24] changes --- backend/main.py | 57 +++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/backend/main.py b/backend/main.py index a967899..6551080 100644 --- a/backend/main.py +++ b/backend/main.py @@ -13,20 +13,24 @@ users = { "admin": generate_password_hash("test"), } -def regen_JSON(): - """Gets links from DB and outputs them in JSON""" +def get_data_from_query(query): con = sqlite3.connect(DB_PATH) con.row_factory = sqlite3.Row cur = con.cursor() - cur.execute('SELECT url, name FROM links ORDER BY position') + cur.execute(query) links_list = [] for row in cur.fetchall(): - d = dict(zip(row.keys(), row)) - links_list.append(d) - links_json = json.dumps(links_list, indent=4) + d = dict(zip(row.keys(), row)) + links_list.append(d) con.close() + return links_list + +def regen_JSON(): + """Gets links from DB and outputs them in JSON""" + links_list = get_data_from_query('SELECT url, name FROM links ORDER BY position') + links_json = json.dumps(links_list, indent=4) return links_json @auth.verify_password @@ -35,7 +39,12 @@ def verify_password(username, password): check_password_hash(users.get(username), password): return username -@app.route('/editor/links', methods = ['POST']) +@app.route('/links', methods = ['GET']) +def get_links(): + links_list = get_data_from_query('SELECT name, url FROM links ORDER BY position') + return jsonify(links_list) + +@app.route('/editor/links', methods = ['POST']) @auth.login_required def update_links(): con = sqlite3.connect(DB_PATH) @@ -43,48 +52,44 @@ def update_links(): try: cur.execute("begin") cur.execute('DELETE FROM links') - + links = [] data = request.json['links'] - items = 'url', 'name', 'clicks', 'position' + items = 'url', 'name', 'clicks' for i in range(len(data)): - if not(all(e in data[i] for e in items)): + if not(all(e in data[i] for e in items)): return "Bad request, some items missing from link object", 400 url = data[i]['url'] name = data[i]['name'] clicks = data[i]['clicks'] - position = data[i]['position'] # TODO + position = i newlink = (url, name, clicks, position) links.append(newlink) cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) con.commit() + con.close() data = regen_JSON() # TODO: Trigger a rebuild of the frontend outfile = open('data.json', 'w') print(data, file=outfile) outfile.close() - except: + except Exception as e: cur.execute("rollback") - return "done updating links" - -@app.route('/editor/links', methods = ['GET']) -@auth.login_required -def get_links(): - # endpoint lists all URLs and clicks, returns json object for editor. - con = sqlite3.connect(DB_PATH) - cur = con.cursor() - cur.execute('SELECT position, name, url, clicks FROM links ORDER BY position') + con.close() + raise e - links_list = [] - for row in cur.fetchall(): - d = dict(zip(["position", "name", "url", "clicks"], [row[0], row[1], row[2], row[3]])) - links_list.append(d) + links_list = get_data_from_query('SELECT name, url, clicks FROM links ORDER BY position') + return jsonify(links_list) - con.close() +@app.route('/editor/links', methods = ['GET']) +@auth.login_required +def get_editor_links(): + """endpoint lists all URLs and clicks, returns json object for editor.""" + links_list = get_data_from_query('SELECT name, url, clicks FROM links ORDER BY position') return jsonify(links_list) @app.route('/clicks', methods=['POST']) -- 2.30.2 From c17dff17926af95303afd8f921010aef1599710a Mon Sep 17 00:00:00 2001 From: Yueran Zhang Date: Fri, 2 Apr 2021 23:18:05 -0400 Subject: [PATCH 16/24] Add an active column --- .gitignore | 1 + backend/main.py | 15 ++++++++------- backend/setup_db.py | 13 +++++++------ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 2a6db5c..f57bc15 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ links.db password.txt /.vs /.vscode +data.json /links.json diff --git a/backend/main.py b/backend/main.py index 6551080..9a6d74b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -29,7 +29,7 @@ def get_data_from_query(query): def regen_JSON(): """Gets links from DB and outputs them in JSON""" - links_list = get_data_from_query('SELECT url, name FROM links ORDER BY position') + links_list = get_data_from_query('SELECT url, name FROM links WHERE active=1 ORDER BY position') links_json = json.dumps(links_list, indent=4) return links_json @@ -41,7 +41,7 @@ def verify_password(username, password): @app.route('/links', methods = ['GET']) def get_links(): - links_list = get_data_from_query('SELECT name, url FROM links ORDER BY position') + links_list = get_data_from_query('SELECT url, name FROM links WHERE active=1 ORDER BY position') return jsonify(links_list) @app.route('/editor/links', methods = ['POST']) @@ -55,7 +55,7 @@ def update_links(): links = [] data = request.json['links'] - items = 'url', 'name', 'clicks' + items = 'url', 'name', 'clicks', 'active' for i in range(len(data)): if not(all(e in data[i] for e in items)): return "Bad request, some items missing from link object", 400 @@ -63,12 +63,13 @@ def update_links(): url = data[i]['url'] name = data[i]['name'] clicks = data[i]['clicks'] + active = data[i]['active'] position = i - newlink = (url, name, clicks, position) + newlink = (url, name, clicks, position, active) links.append(newlink) - cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) + cur.executemany('INSERT INTO links VALUES (?,?,?,?,?)', links) con.commit() con.close() data = regen_JSON() @@ -82,14 +83,14 @@ def update_links(): con.close() raise e - links_list = get_data_from_query('SELECT name, url, clicks FROM links ORDER BY position') + links_list = get_data_from_query('SELECT name, url, clicks, active FROM links ORDER BY position') return jsonify(links_list) @app.route('/editor/links', methods = ['GET']) @auth.login_required def get_editor_links(): """endpoint lists all URLs and clicks, returns json object for editor.""" - links_list = get_data_from_query('SELECT name, url, clicks FROM links ORDER BY position') + links_list = get_data_from_query('SELECT name, url, clicks, active FROM links ORDER BY position') return jsonify(links_list) @app.route('/clicks', methods=['POST']) diff --git a/backend/setup_db.py b/backend/setup_db.py index b7ff457..dda91c4 100644 --- a/backend/setup_db.py +++ b/backend/setup_db.py @@ -7,11 +7,11 @@ con = sqlite3.connect(DB_PATH) # array of links to store links = [ - ('http://csclub.uwaterloo.ca/','CS Club Website',3,0), - ('https://www.instagram.com/uwcsclub/','Instagram',4,1), - ('https://www.facebook.com/uw.computerscienceclub','Facebook',5,2), - ('http://twitch.tv/uwcsclub','Twitch',6,3), - ('http://bit.ly/uwcsclub-yt','YouTube',7,4), + ('http://csclub.uwaterloo.ca/','CS Club Website',3,0,1), + ('https://www.instagram.com/uwcsclub/','Instagram',4,1,1), + ('https://www.facebook.com/uw.computerscienceclub','Facebook',5,2,1), + ('http://twitch.tv/uwcsclub','Twitch',6,3,1), + ('http://bit.ly/uwcsclub-yt','YouTube',7,4,1), ] # SQLite setup @@ -27,9 +27,10 @@ else: name text NOT NULL, clicks int NOT NULL, position int NOT NULL UNIQUE, + active int NOT NULL, UNIQUE(url, name) )''') - cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) + cur.executemany('INSERT INTO links VALUES (?,?,?,?,?)', links) con.commit() con.close() \ No newline at end of file -- 2.30.2 From 413a00259c3c2d1ce917bb390790b5e5214b7b4a Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 3 Apr 2021 21:01:00 -0400 Subject: [PATCH 17/24] Hookup update links endpoint --- .gitignore | 1 - frontend/components/Analytics/index.tsx | 31 ++------ frontend/components/Editor/Link.tsx | 2 +- frontend/components/Editor/index.tsx | 47 +++++++++--- frontend/components/Links/index.tsx | 17 +++-- frontend/components/Login/AuthContext.tsx | 56 ++++++++++++++ frontend/components/Login/authcontext.tsx | 71 ------------------ frontend/components/Login/index.tsx | 91 +++++++++++++++++++++++ frontend/components/Login/loginbox.tsx | 59 --------------- frontend/components/Login/loginhead.tsx | 22 ------ frontend/pages/editor.tsx | 42 +++-------- frontend/pages/index.tsx | 10 +-- frontend/tailwind.config.js | 10 +-- 13 files changed, 217 insertions(+), 242 deletions(-) create mode 100644 frontend/components/Login/AuthContext.tsx delete mode 100644 frontend/components/Login/authcontext.tsx create mode 100644 frontend/components/Login/index.tsx delete mode 100644 frontend/components/Login/loginbox.tsx delete mode 100644 frontend/components/Login/loginhead.tsx diff --git a/.gitignore b/.gitignore index f57bc15..358aebf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ password.txt /.vs /.vscode data.json -/links.json diff --git a/frontend/components/Analytics/index.tsx b/frontend/components/Analytics/index.tsx index 80f0e12..580f477 100644 --- a/frontend/components/Analytics/index.tsx +++ b/frontend/components/Analytics/index.tsx @@ -1,41 +1,20 @@ import React from "react"; -import { useState, useEffect } from "react"; import { Question, Chevron } from "./assets"; -const Analytics: React.FC = () => { - const [viewCount, setViewCount] = useState(0); - const [clickCount, setClickCount] = useState(0); - - useEffect(() => { - fetch("https://dog.ceo/api/breeds/list/all") // TODO: Change to '/api/editor/links' - .then((results) => results.json()) - .then((data) => { - console.log("Success:", data); - // TODO: Assign the correct values here: - // setViewCount(data.views); - // setClickCount(data.clicks); - }) - .catch((error) => { - console.error("Error:", error); - }); - }, []); +interface AnalyticsProps { + clicks: number; +} +const Analytics: React.FC = ({ clicks }) => { return (
      Lifetime Analytics: -
      -
      -
      -

      Views:

      -

      {viewCount || "-"}

      -
      -

      Clicks:

      -

      {clickCount || "-"}

      +

      {clicks || "-"}

      {Question}
      diff --git a/frontend/components/Editor/Link.tsx b/frontend/components/Editor/Link.tsx index 6e83404..536d8ed 100644 --- a/frontend/components/Editor/Link.tsx +++ b/frontend/components/Editor/Link.tsx @@ -64,7 +64,7 @@ const Link: React.FC = ({ index, link, onChange, onDelete }) => { onChange={(e) => onChange({ ...link, active: e.target.checked }) } - checked={link.active} + defaultChecked={link.active} className="float-right" />
      diff --git a/frontend/components/Editor/index.tsx b/frontend/components/Editor/index.tsx index e452fe0..5c2048f 100644 --- a/frontend/components/Editor/index.tsx +++ b/frontend/components/Editor/index.tsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import { DragDropContext, Droppable, DropResult } from "react-beautiful-dnd"; import Link, { EditableLink } from "components/Editor/Link"; +import { useAuth } from "components/Login/AuthContext"; import { useDragDrop } from "./useDragDrop"; import equal from "fast-deep-equal"; @@ -10,9 +11,10 @@ interface EditorProps { setLinks: React.Dispatch>; } -const Editor: React.FC = ({ links }) => { +const Editor: React.FC = ({ links, setLinks }) => { const [formState, setFormState] = useState(links); const { displayDragDrop } = useDragDrop(); + const { headers } = useAuth(); useEffect(() => { setFormState(links); @@ -40,18 +42,27 @@ const Editor: React.FC = ({ links }) => { }, ]); - // useEffect(() => { - // setFormState(links); - // }, [links]); + useEffect(() => { + setFormState(links); + }, [links]); - const onSubmit = () => { + const onSubmit = async () => { // const res = await updateLinks(formState); - // setLinks(res.data); + const res = await fetch("/api/editor/links", { + method: "POST", + headers: { + "Content-Type": "application/json", + ...headers, + }, + body: JSON.stringify({ links: formState }), + }); + const updatedLinks = await res.json(); + setLinks(updatedLinks); }; - const didEdit = !equal(formState, links); - - console.log({ formState, didEdit }); + const onCancel = () => { + setFormState(links); + }; return (
      @@ -97,6 +108,24 @@ const Editor: React.FC = ({ links }) => { )} +
      +
      + +
      + +
      ); }; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index ce4baa1..9cc369a 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -22,13 +22,14 @@ export const Links: React.FC = ({ links }) => { }); }; - // useEffect((): void => { - // postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/view' - // }, []); - - const handleClick = (): void => { - postData("https://dog.ceo/api/breeds/list/all"); // TODO: Change to '/api/click' - }; + const handleClick = (name: string, url: string) => + fetch("/api/clicks", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ name, url }), + }); return (
      @@ -44,7 +45,7 @@ export const Links: React.FC = ({ links }) => { href={url} target="_blank" rel="noreferrer" - onClick={handleClick} + onClick={() => handleClick(name, url)} > {name} diff --git a/frontend/components/Login/AuthContext.tsx b/frontend/components/Login/AuthContext.tsx new file mode 100644 index 0000000..d85541b --- /dev/null +++ b/frontend/components/Login/AuthContext.tsx @@ -0,0 +1,56 @@ +import React, { useState, useContext, createContext } from "react"; + +interface AuthState { + loggedIn: boolean; + login: (password: string) => Promise; + logout: () => void; + headers?: HeadersInit; +} + +const AuthContext = createContext({ + loggedIn: false, + login: () => Promise.resolve(false), + logout: () => console.error("No parent AuthContext found!"), +}); + +export const AuthProvider: React.FC = ({ children }) => { + const [headers, setHeaders] = useState(); + + const logout = () => setHeaders(undefined); + + const login = async (password: string): Promise => { + const username = process.env.NEXT_PUBLIC_EDITOR_USERNAME; + + if (!username) { + throw new Error( + "Missing NEXT_PUBLIC_EDITOR_USERNAME environment variable" + ); + } + + const newHeaders = { + Authorization: `CustomBasic ${btoa(`${username}:${password}`)}`, + }; + + const res = await fetch("/api/editor/links", { headers: newHeaders }); + + if (res.status === 200) { + setHeaders(newHeaders); + return true; + } else { + logout(); + return false; + } + }; + + return ( + + {children} + + ); +}; + +export function useAuth(): AuthState { + return useContext(AuthContext); +} diff --git a/frontend/components/Login/authcontext.tsx b/frontend/components/Login/authcontext.tsx deleted file mode 100644 index ae094d7..0000000 --- a/frontend/components/Login/authcontext.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React, { useState, useContext, createContext } from "react"; - -interface LoggedInState { - loggedIn: true; - headers: HeadersInit; - logout(): void; -} - -interface LoggedOutState { - loggedIn: false; - login(password: string): Promise; -} - -export type AuthState = LoggedInState | LoggedOutState; - -const AuthContext = createContext({ - loggedIn: false, - login: () => { - throw new Error("No parent AuthContext found!"); - }, -} as AuthState); - -export const AuthProvider: React.FC = (props) => { - const [loggedIn, setLoggedIn] = useState(false); - const [headers, setHeaders] = useState(); - - function logout() { - setLoggedIn(false); - setHeaders(undefined); - } - - async function login(password: string): Promise { - const username = process.env.NEXT_PUBLIC_EDITOR_USERNAME; - - if (!username) { - throw new Error( - "Missing NEXT_PUBLIC_EDITOR_USERNAME environment variable" - ); - } - - const newHeaders = { - Authorization: `CustomBasic ${btoa(`${username}:${password}`)}`, - }; - - const res = await fetch("/api/editor/links", { headers: newHeaders }); - - if (res.status === 200) { - setLoggedIn(true); - setHeaders(newHeaders); - return true; - } else { - logout(); - return false; - } - } - - return ( - - ); -}; - -export function useAuth(): AuthState { - return useContext(AuthContext); -} diff --git a/frontend/components/Login/index.tsx b/frontend/components/Login/index.tsx new file mode 100644 index 0000000..53137fa --- /dev/null +++ b/frontend/components/Login/index.tsx @@ -0,0 +1,91 @@ +import React, { useState } from "react"; +import { useAuth } from "components/Login/AuthContext"; +import Image from "next/image"; +import Head from "next/head"; + +const LoginBox: React.FC = () => { + const [password, setPassword] = useState(""); + const [focused, setFocused] = useState(false); + const [loginFailed, setLoginFailed] = useState(false); + const { loggedIn, login } = useAuth(); + + const passwordLabelClassName = `absolute inset-y-0 left-0 px-4 font-sans text-gray-600 ${ + focused || password + ? "transform scale-75 -translate-y-5 -translate-x-2" + : "" + } transition-transform pointer-events-none`; + + const handleSubmit = async (e: React.SyntheticEvent) => { + e.preventDefault(); + + if (!loggedIn) { + const loginSuccessful = await login(password); + + if (!loginSuccessful) { + setLoginFailed(true); + setPassword(""); + } + } + }; + + return ( +
      +
      +
      + + Login + +
      +
      + CSC Logo +

      + linklist +

      +
      +

      + Log in to continue to your Linklist admin +

      +
      +
      +
      + {loginFailed ? ( +
      Invalid credentials.
      + ) : null} +
      +
      + + setFocused(true)} + onBlur={() => { + setFocused(false); + setLoginFailed(false); + }} + onChange={(event) => setPassword(event.target.value)} + className="bg-transparent p-4 border border-gray-300 leading-snug focus:outline-none focus:border-gray-500 rounded" + /> +
      + +
      +
      +
      +
      +
      +
      + ); +}; + +export default LoginBox; diff --git a/frontend/components/Login/loginbox.tsx b/frontend/components/Login/loginbox.tsx deleted file mode 100644 index 8681e0c..0000000 --- a/frontend/components/Login/loginbox.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React, { useState } from "react"; -import { useAuth } from "components/Login/authcontext"; - -const LoginBox: React.FC = () => { - const [password, setPassword] = useState(""); - const [focused, setFocused] = useState(false); - const [loginFailed, setLoginFailed] = useState(false); - const auth = useAuth(); - - const passwordLabelClassName = `absolute inset-y-0 left-0 px-4 font-sans text-gray-600 ${ - focused || password - ? "transform scale-75 -translate-y-5 -translate-x-2" - : "" - } transition-transform pointer-events-none`; - - async function handleSubmit(e: React.SyntheticEvent) { - e.preventDefault(); - - if (!auth.loggedIn) { - const loginSuccessful = await auth.login(password); - - if (!loginSuccessful) { - setLoginFailed(true); - setPassword(""); - } - } - } - - return ( -
      - {loginFailed ? ( -
      Invalid credentials.
      - ) : null} -
      -
      - - setFocused(true)} - onBlur={() => setFocused(false)} - onChange={(event) => setPassword(event.target.value)} - className="bg-transparent p-4 border border-gray-300 leading-snug focus:outline-none focus:border-gray-500 rounded" - /> -
      - -
      -
      - ); -}; - -export default LoginBox; diff --git a/frontend/components/Login/loginhead.tsx b/frontend/components/Login/loginhead.tsx deleted file mode 100644 index 950e223..0000000 --- a/frontend/components/Login/loginhead.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import Image from "next/image"; - -const LoginHead: React.FC = () => { - return ( -
      -
      - CSC Logo -

      linklist

      -
      -

      - Log in to continue to your Linklist admin -

      -
      - ); -}; - -export default LoginHead; diff --git a/frontend/pages/editor.tsx b/frontend/pages/editor.tsx index fffdb50..478106a 100644 --- a/frontend/pages/editor.tsx +++ b/frontend/pages/editor.tsx @@ -1,53 +1,33 @@ -import Head from "next/head"; import React, { useEffect, useState } from "react"; -import { AuthProvider, useAuth } from "components/Login/authcontext"; -import LoginHead from "components/Login/loginhead"; -import LoginBox from "components/Login/loginbox"; +import { AuthProvider, useAuth } from "components/Login/AuthContext"; +import Login from "components/Login"; import Analytics from "components/Analytics"; import Editor from "components/Editor"; import { EditableLink } from "components/Editor/Link"; -const LoginScreen: React.FC = () => ( -
      -
      -
      - - Login - - -
      - -
      -
      -
      -
      -); - const EditorPage: React.FC = () => { - const auth = useAuth(); + const { loggedIn, headers } = useAuth(); const [links, setLinks] = useState([]); useEffect(() => { async function fetchLinks() { - if (!auth.loggedIn) { - return; - } - - const res = await fetch("/api/editor/links", { headers: auth.headers }); + if (!loggedIn) return; - setLinks(await res.json()); + const res = await fetch("/api/editor/links", { headers }); + const links = await res.json(); + setLinks(links); } fetchLinks(); - }, [auth]); + }, [loggedIn, headers]); - return auth.loggedIn ? ( + return loggedIn ? ( <> - + acc + curr.clicks, 0)} /> ) : ( - + ); }; diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 6ea2095..a88b6d8 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,18 +1,14 @@ import React from "react"; import { GetStaticProps } from "next"; import { Link, Links } from "components/Links"; -import { readFileSync } from "fs"; export const getStaticProps: GetStaticProps = async () => { - if (!process.env.LINKS_FILE) { - throw new Error("Set the LINKS_FILE environment variable"); - } - - const links = JSON.parse(readFileSync(process.env.LINKS_FILE).toString()); + const res = await fetch(`${process.env.DEV_URL}/links`); + const links = await res.json(); return { props: { links }, - revalidate: 1, + revalidate: 60, }; }; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 0f2ab6e..a3988d2 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -39,18 +39,14 @@ module.exports = { chevron: "0 0 16px", }, }, - minWidth: { - "9/10": "90%", - }, - maxWidth: { - "6/10": "60%", - }, container: { center: true, }, }, variants: { - extend: {}, + extend: { + opacity: ["disabled"], + }, }, plugins: [], }; -- 2.30.2 From ba210c7c4e842de5909081d7d31e7758e1bf27b2 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sun, 4 Apr 2021 11:35:14 -0400 Subject: [PATCH 18/24] Hookup preview component --- frontend/components/Analytics/assets.tsx | 43 - frontend/components/Analytics/index.tsx | 29 +- frontend/components/Editor/index.tsx | 124 +-- frontend/components/Links/index.tsx | 24 +- frontend/components/Preview/index.tsx | 20 +- frontend/components/Preview/styles.module.css | 14 + frontend/package-lock.json | 801 ++++++++++-------- frontend/tailwind.config.js | 10 +- frontend/utils/types.ts | 4 + 9 files changed, 571 insertions(+), 498 deletions(-) delete mode 100644 frontend/components/Analytics/assets.tsx create mode 100644 frontend/components/Preview/styles.module.css create mode 100644 frontend/utils/types.ts diff --git a/frontend/components/Analytics/assets.tsx b/frontend/components/Analytics/assets.tsx deleted file mode 100644 index ca3246b..0000000 --- a/frontend/components/Analytics/assets.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from "react"; - -const Question = ( - - - -); - -const Chevron = ( - - - - -); - -export { Question, Chevron }; diff --git a/frontend/components/Analytics/index.tsx b/frontend/components/Analytics/index.tsx index 580f477..3642dc8 100644 --- a/frontend/components/Analytics/index.tsx +++ b/frontend/components/Analytics/index.tsx @@ -1,6 +1,30 @@ import React from "react"; -import { Question, Chevron } from "./assets"; +const Chevron = () => ( + + + + +); interface AnalyticsProps { clicks: number; } @@ -17,10 +41,9 @@ const Analytics: React.FC = ({ clicks }) => {

      {clicks || "-"}

      -
      {Question}
      - {Chevron} +
      ); diff --git a/frontend/components/Editor/index.tsx b/frontend/components/Editor/index.tsx index 5c2048f..99c535c 100644 --- a/frontend/components/Editor/index.tsx +++ b/frontend/components/Editor/index.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import { DragDropContext, Droppable, DropResult } from "react-beautiful-dnd"; import Link, { EditableLink } from "components/Editor/Link"; import { useAuth } from "components/Login/AuthContext"; +import Preview from "components/Preview"; import { useDragDrop } from "./useDragDrop"; import equal from "fast-deep-equal"; @@ -12,9 +13,9 @@ interface EditorProps { } const Editor: React.FC = ({ links, setLinks }) => { - const [formState, setFormState] = useState(links); const { displayDragDrop } = useDragDrop(); const { headers } = useAuth(); + const [formState, setFormState] = useState(links); useEffect(() => { setFormState(links); @@ -42,10 +43,6 @@ const Editor: React.FC = ({ links, setLinks }) => { }, ]); - useEffect(() => { - setFormState(links); - }, [links]); - const onSubmit = async () => { // const res = await updateLinks(formState); const res = await fetch("/api/editor/links", { @@ -65,67 +62,70 @@ const Editor: React.FC = ({ links, setLinks }) => { }; return ( -
      - {/* add link button */} - - {displayDragDrop && ( - - - {(provided) => ( -
      - {formState.map((link, index) => ( - - setFormState([ - ...formState.slice(0, index), - newLink, - ...formState.slice(index + 1), - ]) - } - onDelete={() => - setFormState([ - ...formState.slice(0, index), - ...formState.slice(index + 1), - ]) - } - /> - ))} - {provided.placeholder} -
      - )} -
      -
      - )} -
      -
      - -
      +
      +
      + {/* add link button */} + {displayDragDrop && ( + + + {(provided) => ( +
      + {formState.map((link, index) => ( + + setFormState([ + ...formState.slice(0, index), + newLink, + ...formState.slice(index + 1), + ]) + } + onDelete={() => + setFormState([ + ...formState.slice(0, index), + ...formState.slice(index + 1), + ]) + } + /> + ))} + {provided.placeholder} +
      + )} +
      +
      + )} +
      +
      + +
      + +
      +
      ); }; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index 9cc369a..a280330 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -1,27 +1,15 @@ -import React from "react"; +import React, { ComponentPropsWithoutRef } from "react"; +import { Link } from "utils/types"; export interface Link { name: string; url: string; } -interface LinkProps { +interface LinkProps extends ComponentPropsWithoutRef<"div"> { links: Link[]; } -export const Links: React.FC = ({ links }) => { - const postData = (url = ""): void => { - fetch(url, { - method: "POST", - }) - .then((response) => response.json()) - .then((data) => { - console.log("Success:", data); - }) - .catch((error) => { - console.error("Error:", error); - }); - }; - +export const Links: React.FC = ({ links, className }) => { const handleClick = (name: string, url: string) => fetch("/api/clicks", { method: "POST", @@ -32,7 +20,9 @@ export const Links: React.FC = ({ links }) => { }); return ( -
      +
      CSC Logo

      @uwcsclub

        diff --git a/frontend/components/Preview/index.tsx b/frontend/components/Preview/index.tsx index fc0cfa3..dfaa5f7 100644 --- a/frontend/components/Preview/index.tsx +++ b/frontend/components/Preview/index.tsx @@ -1,7 +1,23 @@ +import { Links } from "components/Links"; import React from "react"; +import styles from "./styles.module.css"; -const Preview: React.FC = () => { - return
        ; +import { Link } from "utils/types"; + +interface PreviewProps { + links: Link[]; +} + +const Preview: React.FC = ({ links }) => { + return ( +
        +
        + +
        +
        + ); }; export default Preview; diff --git a/frontend/components/Preview/styles.module.css b/frontend/components/Preview/styles.module.css new file mode 100644 index 0000000..ec4845f --- /dev/null +++ b/frontend/components/Preview/styles.module.css @@ -0,0 +1,14 @@ +.parent { + width: 300px; + height: 600px; + overflow: hidden; +} + +.child { + width: 100%; + height: 100%; + overflow-y: scroll; + padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */ + padding-left: 5px; + box-sizing: content-box; /* So the width will be 100% + 17px */ +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ffb0778..39f2a38 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,31 +13,30 @@ } }, "@babel/compat-data": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", - "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", "dev": true }, "@babel/core": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.8.tgz", - "integrity": "sha512-oYapIySGw1zGhEFRd6lzWNLWFX2s5dA/jm+Pw/+59ZdXtjyIuwlXbrId22Md0rgZVop+aVoqow2riXhBLNyuQg==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", + "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.0", - "@babel/parser": "^7.13.4", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.13", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, @@ -52,9 +51,9 @@ } }, "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -90,9 +89,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -115,9 +114,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -127,12 +126,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", - "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", + "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", + "@babel/compat-data": "^7.13.12", "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "^6.3.0" @@ -149,9 +148,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -169,9 +168,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -181,18 +180,18 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", - "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.13.12" }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -203,17 +202,17 @@ } }, "@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.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.13.12" }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -223,26 +222,25 @@ } }, "@babel/helper-module-transforms": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", - "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", + "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-validator-identifier": "^7.12.11", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "lodash": "^4.17.19" + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -262,9 +260,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -275,21 +273,21 @@ } }, "@babel/helper-replace-supers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", - "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.13.12" }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -300,18 +298,18 @@ } }, "@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.13.12" }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -330,9 +328,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -353,9 +351,9 @@ "dev": true }, "@babel/helpers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", - "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "dev": true, "requires": { "@babel/template": "^7.12.13", @@ -364,9 +362,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -377,9 +375,9 @@ } }, "@babel/highlight": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", - "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -387,9 +385,9 @@ } }, "@babel/parser": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.9.tgz", - "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==" + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", + "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==" }, "@babel/runtime": { "version": "7.12.5", @@ -418,9 +416,9 @@ } }, "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -430,19 +428,18 @@ } }, "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", + "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", + "@babel/generator": "^7.13.9", "@babel/helper-function-name": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/parser": "^7.13.13", + "@babel/types": "^7.13.13", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" }, "dependencies": { "@babel/code-frame": { @@ -454,19 +451,14 @@ } }, "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" } } }, @@ -520,6 +512,15 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -531,6 +532,12 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -553,9 +560,9 @@ } }, "@hapi/boom": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.1.tgz", - "integrity": "sha512-VNR8eDbBrOxBgbkddRYIe7+8DZ+vSbV6qlmaN2x7eWjsUjy2VmQgChkOKcVZIeupEZYj+I0dqNg430OhwzagjA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.2.tgz", + "integrity": "sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==", "requires": { "@hapi/hoek": "9.x.x" } @@ -705,7 +712,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, "requires": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" @@ -739,9 +745,9 @@ "dev": true }, "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "version": "14.14.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", "dev": true }, "@types/normalize-package-data": { @@ -759,16 +765,15 @@ "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", - "dev": true + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, "@types/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", - "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", - "dev": true, + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz", + "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==", "requires": { "@types/prop-types": "*", + "@types/scheduler": "*", "csstype": "^3.0.2" } }, @@ -782,18 +787,34 @@ } }, "@types/react-dom": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.1.tgz", - "integrity": "sha512-yIVyopxQb8IDZ7SOHeTovurFq+fXiPICa+GV3gp0Xedsl+MwQlMLKmvrnEjFbQxjliH5YVAEWFh975eVNmKj7Q==", + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.3.tgz", + "integrity": "sha512-4NnJbCeWE+8YBzupn/YrJxZ8VnjcJq5iR1laqQ1vkpQgBiA7bwk0Rp24fxsdNinzJY2U+HHS4dJJDPdoMjdJ7w==", "dev": true, "requires": { "@types/react": "*" } }, + "@types/react-redux": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.16.tgz", + "integrity": "sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==", + "requires": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "@types/scheduler": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", + "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" + }, "@types/styled-components": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.8.tgz", - "integrity": "sha512-or4lQ12MhR4wTZ34rxRwI+Fw9vPqhd9WeEqFfF6yssDe1uS7L8p9YYMbmtDgHRbBKLR4aJIK8KHA0h9wSYifkg==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.9.tgz", + "integrity": "sha512-kbEG6YlwK8rucITpKEr6pA4Ho9KSQHUUOzZ9lY3va1mtcjvS3D0wDciFyHEiNHKLL/npZCKDQJqm0x44sPO9oA==", "dev": true, "requires": { "@types/hoist-non-react-statics": "*", @@ -808,13 +829,13 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.16.1.tgz", - "integrity": "sha512-SK777klBdlkUZpZLC1mPvyOWk9yAFCWmug13eAjVQ4/Q1LATE/NbcQL1xDHkptQkZOLnPmLUA1Y54m8dqYwnoQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.20.0.tgz", + "integrity": "sha512-sw+3HO5aehYqn5w177z2D82ZQlqHCwcKSMboueo7oE4KU9QiC0SAgfS/D4z9xXvpTc8Bt41Raa9fBR8T2tIhoQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.16.1", - "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/experimental-utils": "4.20.0", + "@typescript-eslint/scope-manager": "4.20.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -824,9 +845,9 @@ }, "dependencies": { "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -835,55 +856,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", - "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.20.0.tgz", + "integrity": "sha512-sQNlf6rjLq2yB5lELl3gOE7OuoA/6IVXJUJ+Vs7emrQMva14CkOwyQwD7CW+TkmOJ4Q/YGmoDLmbfFrpGmbKng==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.16.1", - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/typescript-estree": "4.16.1", + "@typescript-eslint/scope-manager": "4.20.0", + "@typescript-eslint/types": "4.20.0", + "@typescript-eslint/typescript-estree": "4.20.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.16.1.tgz", - "integrity": "sha512-/c0LEZcDL5y8RyI1zLcmZMvJrsR6SM1uetskFkoh3dvqDKVXPsXI+wFB/CbVw7WkEyyTKobC1mUNp/5y6gRvXg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.20.0.tgz", + "integrity": "sha512-m6vDtgL9EABdjMtKVw5rr6DdeMCH3OA1vFb0dAyuZSa3e5yw1YRzlwFnm9knma9Lz6b2GPvoNSa8vOXrqsaglA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.16.1", - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/typescript-estree": "4.16.1", + "@typescript-eslint/scope-manager": "4.20.0", + "@typescript-eslint/types": "4.20.0", + "@typescript-eslint/typescript-estree": "4.20.0", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", - "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.20.0.tgz", + "integrity": "sha512-/zm6WR6iclD5HhGpcwl/GOYDTzrTHmvf8LLLkwKqqPKG6+KZt/CfSgPCiybshmck66M2L5fWSF/MKNuCwtKQSQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/visitor-keys": "4.16.1" + "@typescript-eslint/types": "4.20.0", + "@typescript-eslint/visitor-keys": "4.20.0" } }, "@typescript-eslint/types": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", - "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.20.0.tgz", + "integrity": "sha512-cYY+1PIjei1nk49JAPnH1VEnu7OYdWRdJhYI5wiKOUMhLTG1qsx5cQxCUTuwWCmQoyriadz3Ni8HZmGSofeC+w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", - "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.20.0.tgz", + "integrity": "sha512-Knpp0reOd4ZsyoEJdW8i/sK3mtZ47Ls7ZHvD8WVABNx5Xnn7KhenMTRGegoyMTx6TiXlOVgMz9r0pDgXTEEIHA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/visitor-keys": "4.16.1", + "@typescript-eslint/types": "4.20.0", + "@typescript-eslint/visitor-keys": "4.20.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -892,9 +913,9 @@ }, "dependencies": { "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -903,12 +924,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", - "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.20.0.tgz", + "integrity": "sha512-NXKRM3oOVQL8yNFDNCZuieRIwZ5UtjNLYtmMx2PacEAGmbaEYtGgVHUHVyZvU/0rYZcizdrWjDo+WBtRPSgq+A==", "dev": true, "requires": { - "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/types": "4.20.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -1157,17 +1178,32 @@ "dev": true }, "autoprefixer": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", - "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.5.tgz", + "integrity": "sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA==", "dev": true, "requires": { - "browserslist": "^4.16.1", - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", + "browserslist": "^4.16.3", + "caniuse-lite": "^1.0.30001196", + "colorette": "^1.2.2", "fraction.js": "^4.0.13", "normalize-range": "^0.1.2", "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + } } }, "babel-plugin-styled-components": { @@ -1400,9 +1436,9 @@ "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-lite": { - "version": "1.0.30001194", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", - "integrity": "sha512-iDUOH+oFeBYk5XawYsPtsx/8fFpndAPUQJC7gBTfxHM8xw5nOZv7ceAD4frS1MKCLUac7QL5wdAJiFQlDRjXlA==" + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==" }, "chalk": { "version": "2.4.2", @@ -1505,9 +1541,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1785,8 +1821,7 @@ "csstype": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==", - "dev": true + "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" }, "data-uri-to-buffer": { "version": "3.0.1", @@ -1950,9 +1985,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, "entities": { @@ -1994,9 +2029,9 @@ } }, "electron-to-chromium": { - "version": "1.3.679", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.679.tgz", - "integrity": "sha512-PNF7JSPAEa/aV2nQLvflRcnIMy31EOuCY87Jbdz0KsUf8O/eFNGpuwgQn2DmyJkKzfQb0zrieanRGWvf/4H+BA==" + "version": "1.3.707", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", + "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==" }, "elliptic": { "version": "6.5.4", @@ -2072,9 +2107,9 @@ } }, "es-abstract": { - "version": "1.18.0-next.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.3.tgz", - "integrity": "sha512-VMzHx/Bczjg59E6jZOQjHeN3DEoptdhejpARgflAViidlqSpjdq9zA6lKwlhRRs/lOw1gHJv2xkkSFRgvEwbQg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -2117,9 +2152,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", - "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz", + "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", @@ -2139,7 +2174,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -2147,7 +2182,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -2195,6 +2230,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "globals": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2208,9 +2252,9 @@ "dev": true }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -2230,6 +2274,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "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==", + "dev": true } } }, @@ -2409,22 +2459,23 @@ } }, "eslint-plugin-react": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", - "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz", + "integrity": "sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "array.prototype.flatmap": "^1.2.3", + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", "doctrine": "^2.1.0", "has": "^1.0.3", "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "object.entries": "^1.1.2", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", + "minimatch": "^3.0.4", + "object.entries": "^1.1.3", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.3", "prop-types": "^15.7.2", - "resolve": "^1.18.1", - "string.prototype.matchall": "^4.0.2" + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.4" }, "dependencies": { "doctrine": { @@ -2435,6 +2486,16 @@ "requires": { "esutils": "^2.0.2" } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } } } }, @@ -2816,9 +2877,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { "is-glob": "^4.0.1" } @@ -2860,26 +2921,14 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -3034,9 +3083,9 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "husky": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.3.tgz", - "integrity": "sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-5.2.0.tgz", + "integrity": "sha512-AM8T/auHXRBxlrfPVLKP6jt49GCM2Zz47m8G3FOMsLmTv8Dj/fKVWE0Rh2d4Qrvmy131xEsdQnb3OXRib67PGg==", "dev": true }, "iconv-lite": { @@ -3288,6 +3337,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3464,6 +3519,18 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -3475,13 +3542,20 @@ "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "dev": true }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^4.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "dependencies": { "ansi-styles": { @@ -3566,9 +3640,9 @@ } }, "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.0.tgz", + "integrity": "sha512-NAq0fCmZYGz9UFEQyndp7sisrow4GroyGeKluyKC/chuITZsPyOyC1UJZPJlVFImhXdROIP5xqouRLThT3BbpQ==", "dev": true }, "mathml-tag-names": { @@ -3646,23 +3720,23 @@ }, "dependencies": { "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, "normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", "dev": true, "requires": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" } }, @@ -3742,9 +3816,9 @@ } }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -3878,9 +3952,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", + "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==" }, "napi-build-utils": { "version": "1.0.2", @@ -3965,9 +4039,9 @@ } }, "node-abi": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.20.0.tgz", - "integrity": "sha512-6ldtfVR5l3RS8D0aT+lj/uM2Vv/PGEkeWzt2tl8DFBsGY/IuVnAIHl+dG6C14NlWClVv7Rn2+ZDvox+35Hx2Kg==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.21.0.tgz", + "integrity": "sha512-smhrivuPqEM3H5LmnY3KU6HfYv0u4QklgAxfFyRNujKUzbUcYZ+Jc2EhukB9SRcD2VpqhxM7n/MIcp1Ua1/JMg==", "optional": true, "requires": { "semver": "^5.4.1" @@ -4428,13 +4502,13 @@ } }, "postcss": { - "version": "8.2.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.7.tgz", - "integrity": "sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw==", + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.9.tgz", + "integrity": "sha512-b+TmuIL4jGtCHtoLi+G/PisuIl9avxs8IZMSmlABRwNz5RLUUACrC+ws81dcomz1nRezm5YPdXiMEzBEKgYn+Q==", "dev": true, "requires": { "colorette": "^1.2.2", - "nanoid": "^3.1.20", + "nanoid": "^3.1.22", "source-map": "^0.6.1" }, "dependencies": { @@ -4492,6 +4566,16 @@ "htmlparser2": "^3.10.0" } }, + "postcss-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", + "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1", + "postcss": "^8.1.6" + } + }, "postcss-less": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", @@ -4535,6 +4619,15 @@ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, + "postcss-nested": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz", + "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", @@ -4677,9 +4770,9 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "prebuild-install": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.0.1.tgz", - "integrity": "sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.0.tgz", + "integrity": "sha512-ht3ts5ewK1V0RqqelVVBcZh94WEtk/WCWlIzeuztMLdNe+5/65jPGr3sgQKY6tJhX3ib7glckPYazjkW/K0D/g==", "optional": true, "requires": { "detect-libc": "^1.0.3", @@ -4810,25 +4903,6 @@ "glob": "^7.0.0", "postcss": "^8.2.1", "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "postcss": { - "version": "8.2.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.7.tgz", - "integrity": "sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw==", - "dev": true, - "requires": { - "colorette": "^1.2.2", - "nanoid": "^3.1.20", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "querystring": { @@ -4842,9 +4916,9 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "quick-lru": { @@ -4908,15 +4982,15 @@ } }, "react-beautiful-dnd": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz", - "integrity": "sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz", + "integrity": "sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA==", "requires": { - "@babel/runtime": "^7.8.4", + "@babel/runtime": "^7.9.2", "css-box-model": "^1.2.0", "memoize-one": "^5.1.1", "raf-schd": "^4.0.2", - "react-redux": "^7.1.1", + "react-redux": "^7.2.0", "redux": "^4.0.4", "use-memo-one": "^1.1.1" } @@ -4937,11 +5011,12 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-redux": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", - "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.3.tgz", + "integrity": "sha512-ZhAmQ1lrK+Pyi0ZXNMUZuYxYAZd59wFuVDGUt536kSGdD0ya9Q7BfsE95E3TsFLE3kOSFp5m6G5qbatE+Ic1+w==", "requires": { "@babel/runtime": "^7.12.1", + "@types/react-redux": "^7.1.16", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", @@ -5213,9 +5288,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "scheduler": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", - "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -5275,9 +5350,9 @@ }, "dependencies": { "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "optional": true, "requires": { "lru-cache": "^6.0.0" @@ -5639,16 +5714,16 @@ "dev": true }, "styled-components": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.1.tgz", - "integrity": "sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.3.tgz", + "integrity": "sha512-BlR+KrLW3NL1yhvEB+9Nu9Dt51CuOnHoxd+Hj+rYPdtyR8X11uIW9rvhpy3Dk4dXXBsiW1u5U78f00Lf/afGoA==", "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", + "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", @@ -5678,9 +5753,9 @@ } }, "stylelint": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.11.0.tgz", - "integrity": "sha512-DhrKSWDWGZkCiQMtU+VroXM6LWJVC8hSK24nrUngTSQvXGK75yZUq4yNpynqrxD3a/fzKMED09V+XxO4z4lTbw==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.12.0.tgz", + "integrity": "sha512-P8O1xDy41B7O7iXaSlW+UuFbE5+ZWQDb61ndGDxKIt36fMH50DtlQTbwLpFLf8DikceTAb3r6nPrRv30wBlzXw==", "dev": true, "requires": { "@stylelint/postcss-css-in-js": "^0.37.2", @@ -5693,7 +5768,7 @@ "execall": "^2.0.0", "fast-glob": "^3.2.5", "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "get-stdin": "^8.0.0", "global-modules": "^2.0.0", "globby": "^11.0.2", @@ -5703,7 +5778,7 @@ "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "known-css-properties": "^0.21.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "log-symbols": "^4.0.0", "mathml-tag-names": "^2.1.3", "meow": "^9.0.0", @@ -5723,7 +5798,7 @@ "resolve-from": "^5.0.0", "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^4.2.0", + "string-width": "^4.2.2", "strip-ansi": "^6.0.0", "style-search": "^0.1.0", "sugarss": "^2.0.0", @@ -5956,21 +6031,26 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", + "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", "dev": true, "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.0" }, "dependencies": { "ajv": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", - "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.5.tgz", + "integrity": "sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6005,9 +6085,9 @@ } }, "tailwindcss": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.0.3.tgz", - "integrity": "sha512-s8NEqdLBiVbbdL0a5XwTb8jKmIonOuI4RMENEcKLR61jw6SdKvBss7NWZzwCaD+ZIjlgmesv8tmrjXEp7C0eAQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.0.4.tgz", + "integrity": "sha512-WhgR0oiBxGOZ9jY0yVfaJCHnckR7U74Fs/BMsYxGdwGJQ5Hd/HlaKD26bEJFZOvYScJo0QcUj2ImldzedsG7Bw==", "dev": true, "requires": { "@fullhuman/postcss-purgecss": "^3.1.3", @@ -6018,18 +6098,18 @@ "didyoumean": "^1.2.1", "fs-extra": "^9.1.0", "html-tags": "^3.1.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "modern-normalize": "^1.0.0", "node-emoji": "^1.8.1", "object-hash": "^2.1.1", "postcss-functions": "^3", "postcss-js": "^3.0.3", - "postcss-nested": "^5.0.1", + "postcss-nested": "^5.0.5", "postcss-selector-parser": "^6.0.4", "postcss-value-parser": "^4.1.0", "pretty-hrtime": "^1.0.3", "reduce-css-calc": "^2.1.8", - "resolve": "^1.19.0" + "resolve": "^1.20.0" }, "dependencies": { "ansi-styles": { @@ -6072,25 +6152,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "postcss-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", - "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1", - "postcss": "^8.1.6" - } - }, - "postcss-nested": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.4.tgz", - "integrity": "sha512-/dimXVqdUAVS2ZiIX0uvyk9UCI825y6LW4TnjG51JTKF89CcorHPAjTUGPF70k2wlQYts5OzfnhYMgfGfHCClQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6213,9 +6274,9 @@ "dev": true }, "tsutils": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", - "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -6259,21 +6320,21 @@ } }, "typescript": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", - "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true }, "unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "requires": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" } }, "unified": { @@ -6306,9 +6367,9 @@ } }, "unist-util-is": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", - "integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true }, "unist-util-stringify-position": { @@ -6395,9 +6456,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -6532,15 +6593,15 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true }, "yocto-queue": { diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index a3988d2..01b3442 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -13,6 +13,9 @@ module.exports = { }, darkMode: false, // or 'media' or 'class' theme: { + fontFamily: { + body: ["Karla", "sans-serif"], + }, extend: { colors: { analytics: { @@ -38,6 +41,12 @@ module.exports = { analytics: "1 0 0", chevron: "0 0 16px", }, + borderRadius: { + preview: "3.2rem", + }, + borderWidth: { + preview: "0.75rem", + }, }, container: { center: true, @@ -48,5 +57,4 @@ module.exports = { opacity: ["disabled"], }, }, - plugins: [], }; diff --git a/frontend/utils/types.ts b/frontend/utils/types.ts new file mode 100644 index 0000000..d2f7594 --- /dev/null +++ b/frontend/utils/types.ts @@ -0,0 +1,4 @@ +export interface Link { + name: string; + url: string; +} -- 2.30.2 From 7b07f8a9dcae7b8dc60b7c45d68ae93985d62832 Mon Sep 17 00:00:00 2001 From: Adi Thakral Date: Mon, 5 Apr 2021 11:00:14 -0400 Subject: [PATCH 19/24] Final polish + cleaning --- frontend/components/Editor/Link.module.css | 4 ++ frontend/components/Editor/Link.tsx | 3 ++ frontend/components/Editor/index.tsx | 37 ++++++++--------- frontend/components/Links/index.tsx | 29 +++++++------ frontend/components/Preview/index.tsx | 8 ++-- frontend/pages/hello-world.json | 3 -- frontend/pages/hello-world.tsx | 48 ---------------------- frontend/pages/index.tsx | 2 +- frontend/utils/api.ts | 4 -- frontend/utils/types.ts | 4 -- 10 files changed, 46 insertions(+), 96 deletions(-) create mode 100644 frontend/components/Editor/Link.module.css delete mode 100644 frontend/pages/hello-world.json delete mode 100644 frontend/pages/hello-world.tsx delete mode 100644 frontend/utils/api.ts delete mode 100644 frontend/utils/types.ts diff --git a/frontend/components/Editor/Link.module.css b/frontend/components/Editor/Link.module.css new file mode 100644 index 0000000..30d8682 --- /dev/null +++ b/frontend/components/Editor/Link.module.css @@ -0,0 +1,4 @@ +.input { + width: 100%; + padding-right: 16px; +} \ No newline at end of file diff --git a/frontend/components/Editor/Link.tsx b/frontend/components/Editor/Link.tsx index 536d8ed..994a11f 100644 --- a/frontend/components/Editor/Link.tsx +++ b/frontend/components/Editor/Link.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Draggable } from "react-beautiful-dnd"; +import styles from "./Link.module.css"; export type EditableLink = { name: string; @@ -56,6 +57,7 @@ const Link: React.FC = ({ index, link, onChange, onDelete }) => { type="text" placeholder="Edit Title" value={link.name} + className={styles.input} onChange={(e) => onChange({ ...link, name: e.target.value })} /> @@ -74,6 +76,7 @@ const Link: React.FC = ({ index, link, onChange, onDelete }) => { type="url" placeholder="https://url" value={link.url} + className={styles.input} onChange={(e) => onChange({ ...link, url: e.target.value })} /> diff --git a/frontend/components/Editor/index.tsx b/frontend/components/Editor/index.tsx index 99c535c..7c36f7d 100644 --- a/frontend/components/Editor/index.tsx +++ b/frontend/components/Editor/index.tsx @@ -15,26 +15,26 @@ interface EditorProps { const Editor: React.FC = ({ links, setLinks }) => { const { displayDragDrop } = useDragDrop(); const { headers } = useAuth(); - const [formState, setFormState] = useState(links); + const [editableLinks, setEditableLinks] = useState(links); useEffect(() => { - setFormState(links); + setEditableLinks(links); }, [links]); const handleOnDragEnd = (result: DropResult) => { if (!result?.destination) return; - const items = Array.from(formState); + const items = Array.from(editableLinks); const [reorderedItem] = items.splice(result.source.index, 1); items.splice(result.destination.index, 0, reorderedItem); - setFormState(items); + setEditableLinks(items); }; /*note that we need to make the new links name render with nothing*/ const handleOnClickAdd = () => - setFormState([ - ...formState, + setEditableLinks([ + ...editableLinks, { name: "", url: "", @@ -44,21 +44,20 @@ const Editor: React.FC = ({ links, setLinks }) => { ]); const onSubmit = async () => { - // const res = await updateLinks(formState); const res = await fetch("/api/editor/links", { method: "POST", headers: { "Content-Type": "application/json", ...headers, }, - body: JSON.stringify({ links: formState }), + body: JSON.stringify({ links: editableLinks }), }); const updatedLinks = await res.json(); setLinks(updatedLinks); }; const onCancel = () => { - setFormState(links); + setEditableLinks(links); }; return ( @@ -80,22 +79,22 @@ const Editor: React.FC = ({ links, setLinks }) => { {...provided.droppableProps} ref={provided.innerRef} > - {formState.map((link, index) => ( + {editableLinks.map((link, index) => ( - setFormState([ - ...formState.slice(0, index), + setEditableLinks([ + ...editableLinks.slice(0, index), newLink, - ...formState.slice(index + 1), + ...editableLinks.slice(index + 1), ]) } onDelete={() => - setFormState([ - ...formState.slice(0, index), - ...formState.slice(index + 1), + setEditableLinks([ + ...editableLinks.slice(0, index), + ...editableLinks.slice(index + 1), ]) } /> @@ -111,7 +110,7 @@ const Editor: React.FC = ({ links, setLinks }) => { @@ -119,13 +118,13 @@ const Editor: React.FC = ({ links, setLinks }) => {
      - + link.active)} />
      ); }; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index a280330..c3619b1 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -1,27 +1,30 @@ -import React, { ComponentPropsWithoutRef } from "react"; -import { Link } from "utils/types"; +import React from "react"; export interface Link { name: string; url: string; } -interface LinkProps extends ComponentPropsWithoutRef<"div"> { +interface Props { links: Link[]; + logClicks?: boolean; } -export const Links: React.FC = ({ links, className }) => { - const handleClick = (name: string, url: string) => - fetch("/api/clicks", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ name, url }), - }); +export const Links: React.FC = ({ links, logClicks = false }) => { + const handleClick = (name: string, url: string) => { + if (logClicks) { + fetch("/api/clicks", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ name, url }), + }); + } + }; return (
      CSC Logo

      @uwcsclub

      diff --git a/frontend/components/Preview/index.tsx b/frontend/components/Preview/index.tsx index dfaa5f7..bf02a35 100644 --- a/frontend/components/Preview/index.tsx +++ b/frontend/components/Preview/index.tsx @@ -1,9 +1,7 @@ -import { Links } from "components/Links"; +import { Link, Links } from "components/Links"; import React from "react"; import styles from "./styles.module.css"; -import { Link } from "utils/types"; - interface PreviewProps { links: Link[]; } @@ -14,7 +12,9 @@ const Preview: React.FC = ({ links }) => {
      - +
      + +
      ); diff --git a/frontend/pages/hello-world.json b/frontend/pages/hello-world.json deleted file mode 100644 index c4040a6..0000000 --- a/frontend/pages/hello-world.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "greeting": "Hello from JSON" -} \ No newline at end of file diff --git a/frontend/pages/hello-world.tsx b/frontend/pages/hello-world.tsx deleted file mode 100644 index a21debe..0000000 --- a/frontend/pages/hello-world.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from "react"; -import { GetStaticProps } from "next"; -import GreetingJSON from "./hello-world.json"; -import { fetchExample } from "utils/api"; - -interface Props { - greeting: string; -} - -export const getStaticProps: GetStaticProps = async () => { - return { - props: { greeting: GreetingJSON.greeting }, // will be passed to the page component as props - // Next.js will attempt to re-generate the page: - // - When a request comes in - // - At most once every second - revalidate: 1, - }; -}; - -function HelloWorld({ greeting }: Props): JSX.Element { - const [greetings, setGreetings] = React.useState([greeting]); - - const getMoreGreetings = async () => { - const greetingFromBackend = await fetchExample(); - setGreetings([ - ...greetings, - `"${greetingFromBackend}" --- ${new Date().toISOString()}`, - ]); - }; - - return ( -
      - -
        - {greetings.map((greeting) => ( -
      1. {greeting}
      2. - ))} -
      -
      - ); -} - -export default HelloWorld; diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index a88b6d8..2f157d1 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -17,7 +17,7 @@ interface Props { } const Home: React.FC = ({ links }) => { - return ; + return ; }; export default Home; diff --git a/frontend/utils/api.ts b/frontend/utils/api.ts deleted file mode 100644 index 771e2ac..0000000 --- a/frontend/utils/api.ts +++ /dev/null @@ -1,4 +0,0 @@ -export async function fetchExample(): Promise { - const response = await fetch("/api"); - return await response.text(); -} diff --git a/frontend/utils/types.ts b/frontend/utils/types.ts deleted file mode 100644 index d2f7594..0000000 --- a/frontend/utils/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Link { - name: string; - url: string; -} -- 2.30.2 From 2fabf06e9459baa7715b4195b206a750f538689a Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Wed, 7 Apr 2021 18:05:07 -0400 Subject: [PATCH 20/24] More styling changes --- frontend/components/Analytics/index.tsx | 36 +---- frontend/components/Editor/Link.tsx | 2 +- frontend/components/Editor/index.tsx | 123 +++++++++--------- frontend/components/Links/index.tsx | 12 +- frontend/components/Preview/styles.module.css | 5 +- frontend/pages/editor.tsx | 4 +- frontend/styles/globals.css | 9 ++ frontend/tailwind.config.js | 7 +- 8 files changed, 92 insertions(+), 106 deletions(-) diff --git a/frontend/components/Analytics/index.tsx b/frontend/components/Analytics/index.tsx index 3642dc8..8f05b6b 100644 --- a/frontend/components/Analytics/index.tsx +++ b/frontend/components/Analytics/index.tsx @@ -1,50 +1,22 @@ import React from "react"; -const Chevron = () => ( - - - - -); interface AnalyticsProps { clicks: number; } const Analytics: React.FC = ({ clicks }) => { return ( -
      -
      +
      +
      Lifetime Analytics: -
      +
      -
      +

      Clicks:

      {clicks || "-"}

      -
      - -
      ); }; diff --git a/frontend/components/Editor/Link.tsx b/frontend/components/Editor/Link.tsx index 994a11f..d39b681 100644 --- a/frontend/components/Editor/Link.tsx +++ b/frontend/components/Editor/Link.tsx @@ -44,7 +44,7 @@ const Link: React.FC = ({ index, link, onChange, onDelete }) => { {(provided) => (
      -
      +
      = ({ links, setLinks }) => { }; return ( -
      -
      - {/* add link button */} - - {displayDragDrop && ( - - - {(provided) => ( -
      - {editableLinks.map((link, index) => ( - - setEditableLinks([ - ...editableLinks.slice(0, index), - newLink, - ...editableLinks.slice(index + 1), - ]) - } - onDelete={() => - setEditableLinks([ - ...editableLinks.slice(0, index), - ...editableLinks.slice(index + 1), - ]) - } - /> - ))} - {provided.placeholder} -
      - )} -
      -
      - )} -
      -
      +
      +
      +
      -
      - +
      + {displayDragDrop && ( + + + {(provided) => ( +
      + {editableLinks.map((link, index) => ( + + setEditableLinks([ + ...editableLinks.slice(0, index), + newLink, + ...editableLinks.slice(index + 1), + ]) + } + onDelete={() => + setEditableLinks([ + ...editableLinks.slice(0, index), + ...editableLinks.slice(index + 1), + ]) + } + /> + ))} + {provided.placeholder} +
      + )} +
      +
      + )} +
      +
      + +
      + +
      - link.active)} /> +
      +
      + link.active)} /> +
      ); }; diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index c3619b1..b9f3f9f 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -23,18 +23,16 @@ export const Links: React.FC = ({ links, logClicks = false }) => { }; return ( -
      +
      CSC Logo

      @uwcsclub

      +
      + {`Clicks: ${link.clicks}`} +
      diff --git a/frontend/components/Editor/index.tsx b/frontend/components/Editor/index.tsx index c730222..5180c1b 100644 --- a/frontend/components/Editor/index.tsx +++ b/frontend/components/Editor/index.tsx @@ -16,6 +16,7 @@ const Editor: React.FC = ({ links, setLinks }) => { const { displayDragDrop } = useDragDrop(); const { headers } = useAuth(); const [editableLinks, setEditableLinks] = useState(links); + const [isSaving, setIsSaving] = useState(false); useEffect(() => { setEditableLinks(links); @@ -44,7 +45,9 @@ const Editor: React.FC = ({ links, setLinks }) => { ]); const onSubmit = async () => { - const res = await fetch("/api/editor/links", { + setIsSaving(true); + + const res = await fetch("api/editor/links", { method: "POST", headers: { "Content-Type": "application/json", @@ -52,8 +55,11 @@ const Editor: React.FC = ({ links, setLinks }) => { }, body: JSON.stringify({ links: editableLinks }), }); + const updatedLinks = await res.json(); setLinks(updatedLinks); + + setIsSaving(false); }; const onCancel = () => { @@ -111,7 +117,7 @@ const Editor: React.FC = ({ links, setLinks }) => { @@ -119,7 +125,7 @@ const Editor: React.FC = ({ links, setLinks }) => { diff --git a/frontend/components/Links/index.tsx b/frontend/components/Links/index.tsx index b9f3f9f..2db81a7 100644 --- a/frontend/components/Links/index.tsx +++ b/frontend/components/Links/index.tsx @@ -6,25 +6,12 @@ export interface Link { } interface Props { links: Link[]; - logClicks?: boolean; } -export const Links: React.FC = ({ links, logClicks = false }) => { - const handleClick = (name: string, url: string) => { - if (logClicks) { - fetch("/api/clicks", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ name, url }), - }); - } - }; - +export const Links: React.FC = ({ links }) => { return (
      - CSC Logo + CSC Logo

      @uwcsclub

        {links.map(({ name, url }, i) => ( @@ -36,7 +23,6 @@ export const Links: React.FC = ({ links, logClicks = false }) => { href={url} target="_blank" rel="noreferrer" - onClick={() => handleClick(name, url)} > {name} diff --git a/frontend/components/Login/AuthContext.tsx b/frontend/components/Login/AuthContext.tsx index d85541b..f7dca10 100644 --- a/frontend/components/Login/AuthContext.tsx +++ b/frontend/components/Login/AuthContext.tsx @@ -19,19 +19,13 @@ export const AuthProvider: React.FC = ({ children }) => { const logout = () => setHeaders(undefined); const login = async (password: string): Promise => { - const username = process.env.NEXT_PUBLIC_EDITOR_USERNAME; - - if (!username) { - throw new Error( - "Missing NEXT_PUBLIC_EDITOR_USERNAME environment variable" - ); - } + const username = "admin"; const newHeaders = { Authorization: `CustomBasic ${btoa(`${username}:${password}`)}`, }; - const res = await fetch("/api/editor/links", { headers: newHeaders }); + const res = await fetch("api/editor/links", { headers: newHeaders }); if (res.status === 200) { setHeaders(newHeaders); diff --git a/frontend/components/Login/index.tsx b/frontend/components/Login/index.tsx index 53137fa..b70cebc 100644 --- a/frontend/components/Login/index.tsx +++ b/frontend/components/Login/index.tsx @@ -1,6 +1,5 @@ import React, { useState } from "react"; import { useAuth } from "components/Login/AuthContext"; -import Image from "next/image"; import Head from "next/head"; const LoginBox: React.FC = () => { @@ -37,8 +36,8 @@ const LoginBox: React.FC = () => {
        - CSC Logo { async function fetchLinks() { if (!loggedIn) return; - const res = await fetch("/api/editor/links", { headers }); + const res = await fetch("api/editor/links", { headers }); const links = await res.json(); setLinks(links); } diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx deleted file mode 100644 index 2f157d1..0000000 --- a/frontend/pages/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -import { GetStaticProps } from "next"; -import { Link, Links } from "components/Links"; - -export const getStaticProps: GetStaticProps = async () => { - const res = await fetch(`${process.env.DEV_URL}/links`); - const links = await res.json(); - - return { - props: { links }, - revalidate: 60, - }; -}; - -interface Props { - links: Link[]; -} - -const Home: React.FC = ({ links }) => { - return ; -}; - -export default Home; diff --git a/frontend/public/.htaccess b/frontend/public/.htaccess new file mode 100644 index 0000000..f2b8153 --- /dev/null +++ b/frontend/public/.htaccess @@ -0,0 +1,5 @@ +RewriteEngine On + +RewriteCond %{SCRIPT_FILENAME} !-d +RewriteCond %{SCRIPT_FILENAME} !-f +RewriteRule "^api/(.*)$" "http://corn-syrup:5730/$1" [P] diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico deleted file mode 100644 index 4965832f2c9b0605eaa189b7c7fb11124d24e48a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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%0DABu)hUD=}DsjRO@Mf}&Os1FYIw@mETg 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 diff --git a/frontend/public/fonts/Karla-Regular.ttf b/frontend/public/fonts/Karla-Regular.ttf deleted file mode 100644 index a08cc9b60caf5d3792c611c8d8b5ae556f0ab41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38304 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

        %! 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 &28rTl-J`U@2VwWHH0+lik{*t~Yg&3X zxH7#ay&>n#9ApRM((L7?8`G`ev+2X>qv;d)-o5mhbPJ(VgF7(saSIIxg+s&gU}i8M zzA&5;;-v`Jg+Bmyh1ql9Bkx5RkiWYZxrO?a2& z%$A&cB&Sw#>Lq8Tt-OpMrIY>A(Sq?o~^h9gNY->(2 zeUj6KGlXidsFkyEexSBqm0X8}O;@!0E-OXy8KL?>@<8%c;vBQqPrfdECwUTD{UQ0G z>6|<(ypa3~9lTT`m7D5lrAT!V_5#aNH>hun6pl;XO3bP1CwB;IQuJ+l4!t+qb5^MT zY);XK;cNwWSgocSgz8tRJ)#d;ze*hu9v8kTJY{_>by}$YmTDG#(P}<*$uR8;Q`REs ze8cRRRewttYvh&)hot)ue_)oj5j`qB795|R3{Femg_ZO)#_zFylCBlj8%Coz8vE&o zH0rkrAHBi?ylj0VYX@Es9dS;ie}UXzn@vc+D?F2aA6izz@(kaJF#Vaz@}*%I4@0of zdRJH^lr4%ZNft-ThTJ5a5>6-njBqZvP*$Z*xGr1;XI;1njO@%7S({xURszm5;B(<# z@PLho@KvE~QTV#(_skZB9}3S3KM{Uqc8P<&h6!P=u!~u$oF2knhRlyEWB&?{GdlL7 z(XkiBzf*kk|2sb>TJv7NMRbn{E!3Si+BFO9-NKH!xusfb7@K39*c@?o8}0KuTSIXg zg_Fght%><$z}my#CC+H!MqzpUQ}}7&b;1RSL2xRB_lZ*xZ-$dE94uTdtWETXUuEce zTYT4FoTrp_x9FdUZW28zs3d-#uuS+j!o`U-k^>^a=tg0aup+({PQGxkaJ8^DV9n-N z8M^+WcMF@u8D^Tha?{g|uw0-`PDT86a8>+Q;9$|U304jMG2w1uZSn>j$-~+(vC^< zW76ta#8KK~%GZ8n=zMxOCHhrzhhoOsFtHA4m?Z(%b?a6G)`QH~^C;DKVT?zl^_-dR#Gx%#XX>o5GtsL_s zIg*gCT=JDRU!jv#tCiBBG8j&(@rqe#?M%-_#bnbK3fN-Se=dIh2a3aQkM(|HKe$nd}s6Gp#dSGUc6;iDhNM=#% zBcxp$*q+6!lJi3A&BlpuG)}9PD8cWeoYxY2gS3xG&(+d%wIr-ot1Xtc?@8Mh<#^gnwcQM#6JKp>l!3JRP_LHn`G0ba z677RT`zf@vE9L6PHHcKZxDVyd^9kRYXRV3H%wvDY!z<=Fo_1~q*Ie@9ECg7B-!t?I z8JD4zINkwmY`3D2HGFsUU!Z=nz;uj#Wi1|KwnJJ{5DPB5HMwACb}?+{#ddIf_!dSS z(+s|ycCs9a>AKmt^}e8IT$Vz+Wu^4PKe@;m!o@tq)*bkIJ$$?#zFiNWu7@wz z!$0cb8}+C~&vxxx!rIntQxDoFJQO=gF442G!8l%XjCH^Jo}_gM0sOrCdH4)ISc2ODW_pIY}|Fu`)LQRf=sTcJM-c0f;8Z}y)u3NtXVbn-n2P$7T0+*Y-`nTm(5=4?OeL7ZmHK;Z~SM`$NGhp(zG_r0b|lw7K?oj z<0gdBsIXq-*fTTiBuojDLOT~^J+H_ckO?4r=gty=uFLK44UM{6oHsb9bggkiPb?0xik)J8Y<2ZwRa#!fO!rLS$k zJN`rDm@cnzI^ZKTGaYUB`1kBi#?UN~FTbmQ59fq} zrLyxKmqX~Qw7Xd^^BQF923?F3w-%y48THu^-;LzV$R9ZecSVe1VjSiq0w*4?JU!PQ z1M3=6$1|wU$Edqv>S+UYGNmnsjh_a-IeJQ4&fZZ{9i%mWLYwxamLH~_bKG~^>aCPo zV&|7jGkr8RABl5)+xTX2O`hyNITn-q6!h4D29Kf50fpMQLIdm%PX}_a)5G5--;Lz> zIJqBe%dwXv4Su^TzN(F;jih@Xpu z%Qh&oKp!)@EyrufWh^;N$BL|R`=rs=opOroMPw~L!bVVXtimA9(oACPQ$orWS9@8T z6?2(Q)i^ppng`3OA^ccDIn(_?azX|{{#Bq Bc8dT2 diff --git a/frontend/public/fonts/Karla-VariableFont_wght.ttf b/frontend/public/fonts/Karla-VariableFont_wght.ttf deleted file mode 100644 index 172b500c49c80a05e6123d4d2bca21893e4a162f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78356 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

        L)KC|R=X>q32 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 diff --git a/frontend/public/images/csc-logo-fb-trans.png b/frontend/public/images/csc-logo-trans.png similarity index 100% rename from frontend/public/images/csc-logo-fb-trans.png rename to frontend/public/images/csc-logo-trans.png diff --git a/frontend/public/csc_logo.png b/frontend/public/images/csc-logo.png similarity index 100% rename from frontend/public/csc_logo.png rename to frontend/public/images/csc-logo.png diff --git a/frontend/public/index.in.css b/frontend/public/index.in.css new file mode 100644 index 0000000..8941564 --- /dev/null +++ b/frontend/public/index.in.css @@ -0,0 +1,17 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +input, +button { + outline: none; +} + +/* NextJS reset styles https://gist.github.com/dmurawsky/d45f068097d181c733a53687edce1919 */ +html, +body, +body > div:first-child, +div#__next, +div#__next > div { + height: 100%; +} diff --git a/frontend/public/tailwind.config.js b/frontend/public/tailwind.config.js new file mode 100644 index 0000000..67ebbce --- /dev/null +++ b/frontend/public/tailwind.config.js @@ -0,0 +1,58 @@ +// eslint-disable-next-line no-undef +module.exports = { + purge: { + content: [ + "../../backend/templates/template.html", + ], + // These options are passed through directly to PurgeCSS + options: { + keyframes: true, + fontFace: true, + }, + }, + darkMode: false, // or 'media' or 'class' + theme: { + fontFamily: { + body: ["Karla", "sans-serif"], + }, + extend: { + colors: { + analytics: { + "view-icon": "#39e09b", + "click-icon": "#8a86e5", + }, + gray: { + 450: "#3d3b3c", + }, + }, + fontFamily: { + sans: ["Karla", "Helvetica", "Ubuntu", "sans-serif"], + karla: ["Karla", "Verdana", "sans-serif"], + }, + fontSize: { + s: ".82rem", + }, + screens: { + "lt-lg": "992px", + }, + flex: { + analytics: "1 0 0", + chevron: "0 0 16px", + }, + borderRadius: { + preview: "3.2rem", + }, + borderWidth: { + preview: "0.75rem", + }, + minHeight: { + link: "48px", + }, + }, + }, + variants: { + extend: { + opacity: ["disabled"], + }, + }, +}; diff --git a/frontend/public/vercel.svg b/frontend/public/vercel.svg deleted file mode 100644 index fbf0e25..0000000 --- a/frontend/public/vercel.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/frontend/styles/globals.css b/frontend/styles/globals.css index 7fceea6..c7902ae 100644 --- a/frontend/styles/globals.css +++ b/frontend/styles/globals.css @@ -4,13 +4,6 @@ @tailwind components; @tailwind utilities; -@font-face { - font-family: "Karla"; - src: local("Karla"), - url("/fonts/Karla-VariableFont_wght.ttf") format("truetype"); - font-style: normal; -} - input, button { outline: none; -- 2.30.2 From 8033863a334d3a0348b5532b3fd16c9e76376120 Mon Sep 17 00:00:00 2001 From: Dora Su Date: Mon, 7 Jun 2021 22:04:37 +0000 Subject: [PATCH 22/24] Use the new CSC logo --- backend/requirements.txt | 1 - frontend/public/images/csc-logo-trans.png | Bin 104918 -> 193345 bytes frontend/public/images/csc-logo.png | Bin 97816 -> 48110 bytes 3 files changed, 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 41bad33..c5f8a10 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -8,7 +8,6 @@ Jinja2==2.11.3 lazy-object-proxy==1.5.2 MarkupSafe==1.1.1 mccabe==0.6.1 -pkg-resources==0.0.0 pylint==2.7.2 python-dotenv==0.17.1 toml==0.10.2 diff --git a/frontend/public/images/csc-logo-trans.png b/frontend/public/images/csc-logo-trans.png index dc16bad1bc5767e900027cf0a5c5ef9ded7f8245..d59e405649c61559663b6595c85a57d1f75ada4a 100644 GIT binary patch literal 193345 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%0DscQSblO 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