diff --git a/app/controllers/homies_controller.rb b/app/controllers/homies_controller.rb
index 51f1b35..57a1386 100644
--- a/app/controllers/homies_controller.rb
+++ b/app/controllers/homies_controller.rb
@@ -13,7 +13,8 @@ class HomiesController < ApplicationController
end
def cash
- json_response(Homie.cash(params[:importance]))
+ importance = params[:importance].to_i
+ json_response(Homie.cash(importance))
end
private
diff --git a/client/package.json b/client/package.json
index 48da596..3386786 100644
--- a/client/package.json
+++ b/client/package.json
@@ -4,8 +4,10 @@
"private": true,
"proxy": "http://localhost:3001",
"dependencies": {
+ "axios": "^0.19.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
+ "react-materialize": "^3.3.1",
"react-scripts": "3.0.1"
},
"scripts": {
diff --git a/client/public/index.html b/client/public/index.html
index dd1ccfd..b209ea0 100644
--- a/client/public/index.html
+++ b/client/public/index.html
@@ -19,7 +19,15 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
-
React App
+
+
+
+
+
+
+
+
+ Gangsta Keeping Score
diff --git a/client/src/App.css b/client/src/App.css
index b41d297..dbc9bb3 100644
--- a/client/src/App.css
+++ b/client/src/App.css
@@ -31,3 +31,17 @@
transform: rotate(360deg);
}
}
+
+#root, .main-tab {
+ height: 100%;
+ width: 100%;
+}
+
+.noscrolling {
+ overflow: hidden;
+}
+
+.autoscroling {
+ overflow: auto;
+}
+
diff --git a/client/src/App.js b/client/src/App.js
index ce9cbd2..758bd0c 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -1,25 +1,41 @@
import React from 'react';
-import logo from './logo.svg';
import './App.css';
+import { Tabs, Tab, Navbar } from 'react-materialize';
+import MakeMoneyMove from './cash/MakeMoneyMove';
+import Cash from './cash/Cash';
+import { BrowserRouter as Router, Route, Link } from "react-router-dom";
+import RoutableNavItem from './common/RoutableNavItem';
+import {
+ CRIB,
+ MAKE_MONEY_MOVE
+} from './RouteNames';
function App() {
+
return (
-
+
+
+ GKS} alignLinks="right">
+
+
+ Crib
+
+
+
+ Homies
+
+
+
+ Make Money Move
+
+
+
+
+
+
+
+
+
);
}
diff --git a/client/src/RouteNames.js b/client/src/RouteNames.js
new file mode 100644
index 0000000..0c997a0
--- /dev/null
+++ b/client/src/RouteNames.js
@@ -0,0 +1,2 @@
+export const CRIB = '/';
+export const MAKE_MONEY_MOVE = '/make-money-move';
diff --git a/client/src/cash/Cash.css b/client/src/cash/Cash.css
new file mode 100644
index 0000000..d31cd9f
--- /dev/null
+++ b/client/src/cash/Cash.css
@@ -0,0 +1,7 @@
+.cash-cell-left {
+ text-align: left;
+}
+
+.cash-cell-right {
+ text-align: right;
+}
diff --git a/client/src/cash/Cash.js b/client/src/cash/Cash.js
new file mode 100644
index 0000000..9502c82
--- /dev/null
+++ b/client/src/cash/Cash.js
@@ -0,0 +1,87 @@
+import React, { useState, useEffect } from 'react';
+import { Button, Table } from 'react-materialize';
+import './Cash.css';
+import axios from 'axios';
+import { Link } from 'react-router-dom';
+import { MAKE_MONEY_MOVE } from '../RouteNames';
+import { withRouter } from 'react-router-dom';
+
+const Cash = (props) => {
+ const [homiesCash, setHomiesCash] = useState([]);
+ //const [importance, setImportance] = useState(10);
+
+ useEffect( () => {
+ const getCashForHomies = async () => {
+ try {
+ const cash = await axios.get(`/homies/cash`);
+ setHomiesCash(cash.data);
+ } catch (e) {
+ console.log("Error fetching", e);
+ }
+ };
+ getCashForHomies();
+ }, []);
+
+
+ const formatMoney = (amount) => {
+ const formatted = Number.parseFloat(amount).toFixed(2);
+ return `${formatted} KM`;
+ }
+
+ const cashTableBody = homiesCash.map( (homieLine) => {
+ return (
+
+ |
+ { homieLine.homie.name }
+ |
+
+ { formatMoney(homieLine.amount) }
+ |
+
+ [ settle ]
+ |
+
+ );
+ });
+
+ return (
+
+
+
+
+
+ |
+ Homie
+ |
+
+ Cash
+ |
+
+ Actions
+ |
+
+
+
+ { cashTableBody }
+
+
+
+
+ );
+}
+
+
+export default withRouter(Cash);
diff --git a/client/src/cash/MakeMoneyMove.js b/client/src/cash/MakeMoneyMove.js
new file mode 100644
index 0000000..e8fc55d
--- /dev/null
+++ b/client/src/cash/MakeMoneyMove.js
@@ -0,0 +1,70 @@
+import React, { useState, useEffect } from 'react';
+import { Modal, Select, TextInput, Collection, CollectionItem } from 'react-materialize';
+import './Cash.css';
+import axios from 'axios';
+
+const MakeMoneyMove = (props) => {
+
+ const [selectedFrom, setSelectedFrom] = useState(null);
+
+return (
+
+
+
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+ Alvin
+
+
+
+
+);
+
+}
+
+export default MakeMoneyMove;
diff --git a/client/src/common/RoutableNavItem.js b/client/src/common/RoutableNavItem.js
new file mode 100644
index 0000000..b869c54
--- /dev/null
+++ b/client/src/common/RoutableNavItem.js
@@ -0,0 +1,19 @@
+import React from 'react';
+import { Navbar, NavItem } from 'react-materialize';
+import { withRouter } from 'react-router-dom';
+
+const RoutableNavItem = (props) => {
+ return (
+ {
+ props.history.push(props.href);
+ }
+ }>
+ { props.children }
+
+ );
+}
+
+export default withRouter(RoutableNavItem);
+
+
diff --git a/client/src/index.css b/client/src/index.css
index 4a1df4d..1e4e3e9 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -7,7 +7,15 @@ body {
-moz-osx-font-smoothing: grayscale;
}
+html, body {
+ margin: 0;
+ height: 100%;
+ width: 100%;
+
+}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
+
+
diff --git a/client/yarn.lock b/client/yarn.lock
index d9a1d3f..9e7f0d2 100644
--- a/client/yarn.lock
+++ b/client/yarn.lock
@@ -1813,6 +1813,14 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+axios@^0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8"
+ integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==
+ dependencies:
+ follow-redirects "1.5.10"
+ is-buffer "^2.0.2"
+
axobject-query@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9"
@@ -2421,6 +2429,11 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
+classnames@^2.2.5:
+ 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.x:
version "4.2.1"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
@@ -3040,6 +3053,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.
dependencies:
ms "2.0.0"
+debug@=3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
debug@^3.2.5, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -3998,6 +4018,13 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
+follow-redirects@1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+ integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+ dependencies:
+ debug "=3.1.0"
+
follow-redirects@^1.0.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
@@ -4818,7 +4845,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-is-buffer@^2.0.0:
+is-buffer@^2.0.0, is-buffer@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
@@ -7846,7 +7873,7 @@ react-dev-utils@^9.0.1:
strip-ansi "5.2.0"
text-table "0.2.0"
-react-dom@^16.8.6:
+react-dom@^16.8.5, react-dom@^16.8.6:
version "16.8.6"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f"
integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==
@@ -7866,6 +7893,15 @@ react-is@^16.8.1, react-is@^16.8.4:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
+react-materialize@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/react-materialize/-/react-materialize-3.3.1.tgz#aa928d6002a54db651eb359c94c9de3e5fa74c92"
+ integrity sha512-w2mbBYujUuNsrmxB98GgaZEFmmuSwyQojgECjy6qADU9QSRjJNwcYFb/MjJAAC1hQ3DtVfLZ/SfBOZfC8LlqRg==
+ dependencies:
+ classnames "^2.2.5"
+ react "^16.8.5"
+ react-dom "^16.8.5"
+
react-scripts@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac"
@@ -7926,7 +7962,7 @@ react-scripts@3.0.1:
optionalDependencies:
fsevents "2.0.6"
-react@^16.8.6:
+react@^16.8.5, react@^16.8.6:
version "16.8.6"
resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe"
integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e49a089
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "react-router-dom": "^5.0.1"
+ }
+}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..f43ac5f
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,140 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
+ integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
+ dependencies:
+ regenerator-runtime "^0.13.2"
+
+gud@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
+ integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
+
+history@^4.9.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca"
+ integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ loose-envify "^1.2.0"
+ resolve-pathname "^2.2.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+ value-equal "^0.4.0"
+
+hoist-non-react-statics@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
+ integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==
+ dependencies:
+ react-is "^16.7.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=
+
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+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==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+mini-create-react-context@^0.3.0:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189"
+ integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==
+ dependencies:
+ "@babel/runtime" "^7.4.0"
+ gud "^1.0.0"
+ tiny-warning "^1.0.2"
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+path-to-regexp@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
+ integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=
+ dependencies:
+ isarray "0.0.1"
+
+prop-types@^15.6.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
+ integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
+
+react-router-dom@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be"
+ integrity sha512-zaVHSy7NN0G91/Bz9GD4owex5+eop+KvgbxXsP/O+iW1/Ln+BrJ8QiIR5a6xNPtrdTvLkxqlDClx13QO1uB8CA==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ history "^4.9.0"
+ loose-envify "^1.3.1"
+ prop-types "^15.6.2"
+ react-router "5.0.1"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+
+react-router@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.1.tgz#04ee77df1d1ab6cb8939f9f01ad5702dbadb8b0f"
+ integrity sha512-EM7suCPNKb1NxcTZ2LEOWFtQBQRQXecLxVpdsP4DW4PbbqYWeRiLyV/Tt1SdCrvT2jcyXAXmVTmzvSzrPR63Bg==
+ 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.3.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"
+
+regenerator-runtime@^0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
+ integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
+
+resolve-pathname@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879"
+ integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==
+
+tiny-invariant@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.4.tgz#346b5415fd93cb696b0c4e8a96697ff590f92463"
+ integrity sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g==
+
+tiny-warning@^1.0.0, tiny-warning@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28"
+ integrity sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q==
+
+value-equal@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7"
+ integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==