diff --git a/.gitignore b/.gitignore
index 4d29575de..30767643e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,5 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+ontime.code-workspace
+TODO.md
diff --git a/package.json b/package.json
index 838b7b5c2..4add7a800 100644
--- a/package.json
+++ b/package.json
@@ -6,8 +6,11 @@
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
+ "date-fns": "^2.19.0",
"react": "^17.0.1",
+ "react-bulma-components": "^3.4.0",
"react-dom": "^17.0.1",
+ "react-router": "^5.2.0",
"react-scripts": "4.0.3",
"web-vitals": "^1.0.1"
},
diff --git a/src/App.css b/src/App.css
index 74b5e0534..16f4b4393 100644
--- a/src/App.css
+++ b/src/App.css
@@ -1,38 +1,9 @@
+* {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
.App {
- text-align: center;
-}
-
-.App-logo {
- height: 40vmin;
- pointer-events: none;
-}
-
-@media (prefers-reduced-motion: no-preference) {
- .App-logo {
- animation: App-logo-spin infinite 20s linear;
- }
-}
-
-.App-header {
- background-color: #282c34;
- min-height: 100vh;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- font-size: calc(10px + 2vmin);
- color: white;
-}
-
-.App-link {
- color: #61dafb;
-}
-
-@keyframes App-logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
+ background-image: linear-gradient(rgb(20, 20, 20) 1.7%, rgb(48, 48, 48) 97%);
+ height: 100vh;
}
diff --git a/src/App.js b/src/App.js
index 378457572..e1946349d 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,23 +1,10 @@
-import logo from './logo.svg';
import './App.css';
+import DefaultViewer from './features/viewers/DefaultViewer';
function App() {
return (
-
-
+
+
);
}
diff --git a/src/app/sampleData.js b/src/app/sampleData.js
new file mode 100644
index 000000000..427fc2ddc
--- /dev/null
+++ b/src/app/sampleData.js
@@ -0,0 +1,16 @@
+const dummy = new Date();
+
+export const sampleData = {
+ id: '1',
+ title: 'Is the internet a fad?',
+ subtitle: 'Carlos Valente',
+ timeStart: '10:00',
+ timeEnd: '11:30',
+ clockStarted: dummy,
+ timerDuration: 10,
+ message: {
+ text: 'Hurry Up!',
+ color: '#F00',
+ active: false,
+ },
+};
diff --git a/src/app/userConfig.js b/src/app/userConfig.js
new file mode 100644
index 000000000..ed0daa965
--- /dev/null
+++ b/src/app/userConfig.js
@@ -0,0 +1,7 @@
+export const userConfig = {
+ timerColorOnPause: '#555',
+ timerColorOnRunning: '#FFF',
+ timerColorOnMessage: '#CCC',
+ timerColorOnTimeOver: '#F00',
+ overTimeText: '',
+}
\ No newline at end of file
diff --git a/src/common/components/countdown/Countdown.jsx b/src/common/components/countdown/Countdown.jsx
new file mode 100644
index 000000000..728210fad
--- /dev/null
+++ b/src/common/components/countdown/Countdown.jsx
@@ -0,0 +1,5 @@
+import styles from './Countdown.module.css'
+
+export default function Countdown({ time }) {
+ return
{time}
;
+}
diff --git a/src/common/components/countdown/Countdown.module.css b/src/common/components/countdown/Countdown.module.css
new file mode 100644
index 000000000..135e195d7
--- /dev/null
+++ b/src/common/components/countdown/Countdown.module.css
@@ -0,0 +1,9 @@
+@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;800&display=swap');
+
+.countdownClock {
+ font-family: 'Open Sans', sans-serif;
+ font-size: 25vw;
+ text-align: center;
+ letter-spacing: 0.125em;
+ line-height: 0.9;
+}
\ No newline at end of file
diff --git a/src/common/components/myProgressBar/MyProgressBar.jsx b/src/common/components/myProgressBar/MyProgressBar.jsx
new file mode 100644
index 000000000..65857ee01
--- /dev/null
+++ b/src/common/components/myProgressBar/MyProgressBar.jsx
@@ -0,0 +1,18 @@
+import styles from './MyProgressBar.module.css';
+
+const clamp = (num, a, b) =>
+ Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));
+
+export default function MyProgressBar({ normalisedComplete }) {
+ const percentComplete = clamp(100 - normalisedComplete * 100, 0, 100);
+ const completeWidth = `${percentComplete}%`;
+
+ return (
+
+ );
+}
diff --git a/src/common/components/myProgressBar/MyProgressBar.module.css b/src/common/components/myProgressBar/MyProgressBar.module.css
new file mode 100644
index 000000000..db4cd7479
--- /dev/null
+++ b/src/common/components/myProgressBar/MyProgressBar.module.css
@@ -0,0 +1,20 @@
+.progress {
+ padding: 6px;
+ background: rgba(0, 0, 0, 0.25);
+ border-radius: 6px;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
+}
+
+.progressBar {
+ height: 18px;
+ background: linear-gradient(
+ 90deg,
+ rgba(255, 0, 0, 1) 0%,
+ rgba(255, 149, 0, 1) 20%,
+ rgba(255, 244, 0, 0.8287037037037037) 50%,
+ rgba(0, 255, 156, 0.7083333333333333) 100%
+ );
+ border-radius: 4px;
+ transition: 0.4s linear;
+ transition-property: width, background-color;
+}
diff --git a/src/common/components/smallTimer/SmallTimer.jsx b/src/common/components/smallTimer/SmallTimer.jsx
new file mode 100644
index 000000000..4ba7a710c
--- /dev/null
+++ b/src/common/components/smallTimer/SmallTimer.jsx
@@ -0,0 +1,10 @@
+import styles from './SmallTimer.module.css';
+
+export default function SmallTimer({label, time}) {
+ return (
+
+ );
+}
diff --git a/src/common/components/smallTimer/SmallTimer.module.css b/src/common/components/smallTimer/SmallTimer.module.css
new file mode 100644
index 000000000..37e5abadb
--- /dev/null
+++ b/src/common/components/smallTimer/SmallTimer.module.css
@@ -0,0 +1,25 @@
+@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;800&display=swap');
+
+.smallTimer {
+ display: flex;
+ flex-direction: column;
+}
+
+.label,
+.timer {
+ font-size: 1vw;
+ text-align: center;
+}
+
+.label {
+ font-size: 1.5vw;
+ color: #888;
+ margin-bottom: 0;
+}
+
+.timer {
+ font-family: 'Open Sans', sans-serif;
+
+ font-size: 4vw;
+ letter-spacing: 0.125em;
+}
diff --git a/src/features/viewers/DefaultViewer.jsx b/src/features/viewers/DefaultViewer.jsx
new file mode 100644
index 000000000..867891f56
--- /dev/null
+++ b/src/features/viewers/DefaultViewer.jsx
@@ -0,0 +1,36 @@
+import 'bulma/css/bulma.css';
+import { addMinutes, format } from 'date-fns';
+import { useEffect, useState } from 'react';
+import { Container, Progress } from 'react-bulma-components/dist';
+import { sampleData } from '../../app/sampleData';
+import Countdown from '../../common/components/countdown/Countdown';
+import MyProgressBar from '../../common/components/myProgressBar/MyProgressBar';
+import SmallTimer from '../../common/components/smallTimer/SmallTimer';
+import './viewers.css';
+
+export default function DefaultViewer() {
+ const [data, setData] = useState(sampleData);
+ const [timer, setTimer] = useState(sampleData.timerDuration);
+ const [elapsed, setElapsed] = useState(0);
+
+ const timeNow = new Date();
+
+ return (
+
+ {data.title}
+ {data.subtitle}
+
+ {!data.message.active && }
+
+ {data.message.text}
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/features/viewers/viewers.css b/src/features/viewers/viewers.css
new file mode 100644
index 000000000..b2f5c1bb2
--- /dev/null
+++ b/src/features/viewers/viewers.css
@@ -0,0 +1,41 @@
+@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;800&display=swap');
+
+.presenter {
+ font-size: 24px;
+ height: 100%;
+ color: #ffffff;
+ display: flex;
+ flex-direction: column;
+ border: red 1px solid;
+}
+
+.presentationTitle {
+ font-size: 5vw;
+ text-align: left;
+}
+
+.presentationSub {
+ font-size: 3vw;
+ text-align: left;
+}
+
+.userMessage {
+ font-size: 10em;
+ text-align: center;
+}
+
+.hidden {
+ display: none;
+}
+
+.extra {
+ width: 100%;
+ position: absolute;
+ bottom: 3vh;
+ left: 0;
+
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-around;
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index abe4bad85..649e2aae3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1091,6 +1091,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
+ integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
version "7.12.18"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b"
@@ -1098,13 +1105,6 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2":
- version "7.13.10"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
- integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
- dependencies:
- regenerator-runtime "^0.13.4"
-
"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
@@ -2941,6 +2941,11 @@ builtin-status-codes@^3.0.0:
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+bulma@0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.8.2.tgz#5d928f16ed4a84549c2873f95c92c38c69c631a7"
+ integrity sha512-vMM/ijYSxX+Sm+nD7Lmc1UgWDy2JcL2nTKqwgEqXuOMU+IGALbXd5MLt/BcjBAPLIx36TtzhzBcSnOP974gcqA==
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -3206,6 +3211,11 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
+classnames@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
+ integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+
clean-css@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
@@ -3845,6 +3855,11 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
+date-fns@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1"
+ integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==
+
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -5386,6 +5401,18 @@ hex-color-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+history@^4.9.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
+ integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ loose-envify "^1.2.0"
+ resolve-pathname "^3.0.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+ value-equal "^1.0.1"
+
hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -5395,6 +5422,13 @@ hmac-drbg@^1.0.1:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
+hoist-non-react-statics@^3.1.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
hoopy@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
@@ -6065,6 +6099,11 @@ is-wsl@^2.1.1, is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -6911,7 +6950,7 @@ loglevel@^1.6.8:
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
-loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -7117,6 +7156,14 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+mini-create-react-context@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
+ integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==
+ dependencies:
+ "@babel/runtime" "^7.12.1"
+ tiny-warning "^1.0.3"
+
mini-css-extract-plugin@0.11.3:
version "0.11.3"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6"
@@ -7876,6 +7923,13 @@ path-to-regexp@0.1.7:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+path-to-regexp@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
+ integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
+ dependencies:
+ isarray "0.0.1"
+
path-type@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
@@ -8731,7 +8785,7 @@ prompts@2.4.0, prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.7.2:
+prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -8907,6 +8961,14 @@ react-app-polyfill@^2.0.0:
regenerator-runtime "^0.13.7"
whatwg-fetch "^3.4.1"
+react-bulma-components@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/react-bulma-components/-/react-bulma-components-3.4.0.tgz#6a6e4ddbb2564aa8fb59d2b805137238b94d428c"
+ integrity sha512-d8FqFHt6zauD+xKuNwhNaTj4BbPQugREGUrZCAyUpt3431ayCprFaV7Ni3OXo2U158SmJKcBd+ND8JoDJZX8AA==
+ dependencies:
+ bulma "0.8.2"
+ classnames "2.2.6"
+
react-dev-utils@^11.0.3:
version "11.0.4"
resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a"
@@ -8951,7 +9013,7 @@ react-error-overlay@^6.0.9:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
-react-is@^16.8.1:
+react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -8966,6 +9028,22 @@ react-refresh@^0.8.3:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
+react-router@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293"
+ integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ history "^4.9.0"
+ hoist-non-react-statics "^3.1.0"
+ loose-envify "^1.3.1"
+ mini-create-react-context "^0.4.0"
+ path-to-regexp "^1.7.0"
+ prop-types "^15.6.2"
+ react-is "^16.6.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+
react-scripts@4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345"
@@ -9330,6 +9408,11 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+resolve-pathname@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
+ integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
+
resolve-url-loader@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08"
@@ -10425,6 +10508,16 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+tiny-invariant@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
+ integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==
+
+tiny-warning@^1.0.0, tiny-warning@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
tmpl@1.0.x:
version "1.0.4"
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
@@ -10842,6 +10935,11 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
+value-equal@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
+ integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
+
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"