@samitouri / QOS-React / commits / ba99444515

Use @reach MenuButton for owner stack menu

Brian Vaughn committed Apr 8, 2019 at 18:34 UTC ba994445154e9546645c0701b1666c4f0406cdcc
5 files changed +204 -63
package.json
+1
@@ -45,6 +45,7 @@
45 "@babel/preset-env": "^7.1.6",
46 "@babel/preset-flow": "^7.0.0",
47 "@babel/preset-react": "^7.0.0",
48 + "@reach/menu-button": "^0.1.9",
49 "adm-zip": "^0.4.7",
50 "babel-core": "^7.0.0-bridge",
51 "babel-eslint": "^9.0.0",
src/devtools/views/Components/OwnersStack.css
+34 -9
@@ -18,6 +18,7 @@
18 cursor: pointer;
19 text-align: left;
20 }
21 +.Component[data-selected],
22 .Component:hover {
23 background-color: var(--color-hover-background);
24 }
@@ -39,10 +40,6 @@
40 flex: 1 0 auto;
41 }
42
42 -.Toggle {
43 - margin-right: 0.5rem;
44 -}
45 -
43 .VRule {
44 flex: 0 0 auto;
45 height: 20px;
@@ -51,18 +48,46 @@
48 margin: 0 0.5rem;
49 }
50
54 -.Modal {
55 - position: absolute;
56 - top: calc(100% + 0.25rem);
57 - left: 2.5rem;
58 - z-index: 1;
51 +.MenuButton {
52 + border-radius: 0.25rem;
53 + display: inline-flex;
54 + align-items: center;
55 + padding: 0.25rem;
56 + cursor: pointer;
57 + flex: 0 0 auto;
58 + border: none;
59 + background: var(--color-button-background);
60 + color: var(--color-button);
61 + margin-right: 0.5rem;
62 +}
63 +.MenuButton:hover {
64 + background: var(--color-button-background-hover);
65 + color: var(--color-button-hover);
66 +}
67 +.MenuButton[aria-expanded='true'],
68 +.MenuButton[aria-expanded='true']:active {
69 + background: var(--color-button-background-focus);
70 + color: var(--color-button-focus);
71 + outline: none;
72 +}
73 +.MenuButton:focus-within {
74 + box-shadow: 0 0 0 2px var(--color-button-background-focus) inset;
75 + outline: none;
76 +}
77 +
78 +.Modal[data-reach-menu-list] {
79 display: inline-flex;
80 flex-direction: column;
81 background-color: var(--color-background);
82 + color: var(--color-text-color);
83 padding: 0.5rem;
84 padding-right: 0;
85 border: 1px solid var(--color-border);
86 border-radius: 0.25rem;
87 max-height: 10rem;
88 overflow: auto;
89 +
90 + /* Reach UI tries to set its own :( */
91 + font-family: var(--font-family-monospace);
92 + font-size: var(--font-size-monospace-normal);
93 }
src/devtools/views/Components/OwnersStack.js
+21 -48
@@ -1,18 +1,17 @@
1 // @flow
2 import React, {
3 - Fragment,
3 useCallback,
4 useContext,
5 useLayoutEffect,
6 useRef,
7 useState,
8 } from 'react';
9 +import { Menu, MenuList, MenuButton, MenuItem } from '@reach/menu-button';
10 import Button from '../Button';
11 import ButtonIcon from '../ButtonIcon';
12 -import Toggle from '../Toggle';
12 import { TreeContext } from './TreeContext';
13 import { StoreContext } from '../context';
15 -import { useIsOverflowing, useModalDismissSignal } from '../hooks';
14 +import { useIsOverflowing } from '../hooks';
15
16 import type { Element } from './types';
17
@@ -92,53 +91,27 @@ function ElementsDropdown({
91 const store = useContext(StoreContext);
92 const { selectOwner } = useContext(TreeContext);
93
95 - const [isDropdownVisible, setIsDropdownVisible] = useState(false);
96 -
97 - const handleDropdownButtonClick = useCallback(() => {
98 - setIsDropdownVisible(!isDropdownVisible);
99 - }, [isDropdownVisible, setIsDropdownVisible]);
100 -
101 - const handleElementClick = useCallback(
102 - (id: number) => {
103 - selectOwner(id);
104 - setIsDropdownVisible(false);
105 - },
106 - [selectOwner, setIsDropdownVisible]
107 - );
108 -
109 - const modalRef = useRef<HTMLDivElement | null>(null);
110 - const dismissModal = useCallback(() => setIsDropdownVisible(false));
111 -
112 - useModalDismissSignal(modalRef, dismissModal);
113 -
94 return (
115 - <Fragment>
116 - <Toggle
117 - className={styles.Toggle}
118 - isChecked={isDropdownVisible}
119 - onChange={handleDropdownButtonClick}
120 - title="Open elements dropdown"
121 - >
95 + <Menu>
96 + <MenuButton className={styles.MenuButton} title="Open elements dropdown">
97 <ButtonIcon type="more" />
123 - </Toggle>
124 - {isDropdownVisible && (
125 - <div className={styles.Modal} ref={modalRef}>
126 - {ownerStack.map((id, index) => (
127 - <button
128 - key={id}
129 - className={
130 - ownerStackIndex === index
131 - ? styles.SelectedComponent
132 - : styles.Component
133 - }
134 - onClick={() => handleElementClick(id)}
135 - >
136 - {((store.getElementByID(id): any): Element).displayName}
137 - </button>
138 - ))}
139 - </div>
140 - )}
141 - </Fragment>
98 + </MenuButton>
99 + <MenuList className={styles.Modal}>
100 + {ownerStack.map((id, index) => (
101 + <MenuItem
102 + key={id}
103 + className={
104 + ownerStackIndex === index
105 + ? styles.SelectedComponent
106 + : styles.Component
107 + }
108 + onSelect={() => selectOwner(id)}
109 + >
110 + {((store.getElementByID(id): any): Element).displayName}
111 + </MenuItem>
112 + ))}
113 + </MenuList>
114 + </Menu>
115 );
116 }
117
src/devtools/views/DevTools.js
+1
@@ -14,6 +14,7 @@ import ReactLogo from './ReactLogo';
14
15 import styles from './DevTools.css';
16
17 +import '@reach/menu-button/styles.css';
18 import './root.css';
19
20 import type { Bridge } from '../../types';
yarn.lock
+147 -6
@@ -745,6 +745,67 @@
745 resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
746 integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==
747
748 +"@reach/component-component@^0.1.3":
749 + version "0.1.3"
750 + resolved "https://registry.yarnpkg.com/@reach/component-component/-/component-component-0.1.3.tgz#5d156319572dc38995b246f81878bc2577c517e5"
751 + integrity sha512-a1USH7L3bEfDdPN4iNZGvMEFuBfkdG+QNybeyDv8RloVFgZYRoM+KGXyy2KOfEnTUM8QWDRSROwaL3+ts5Angg==
752 +
753 +"@reach/menu-button@^0.1.9":
754 + version "0.1.9"
755 + resolved "https://registry.yarnpkg.com/@reach/menu-button/-/menu-button-0.1.9.tgz#d5957f69efa51d29beb4239403eabf49f9a4bb3e"
756 + integrity sha512-894lhzcCpaGJKvmCuUX8AJ7xg0Ov/xRKKR5RRVJUroHYuWNuvgZSluO657Y2fNaMKgG0LPqLrtOGUq2CN0golg==
757 + dependencies:
758 + "@reach/component-component" "^0.1.3"
759 + "@reach/portal" "^0.1.3"
760 + "@reach/rect" "^0.2.0"
761 + "@reach/router" "^1.1.0"
762 + "@reach/utils" "^0.2.0"
763 + "@reach/window-size" "^0.1.3"
764 + warning "^4.0.2"
765 +
766 +"@reach/observe-rect@^1.0.3":
767 + version "1.0.3"
768 + resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.0.3.tgz#2ea3dcc369ab22bd9f050a92ea319321356a61e8"
769 + integrity sha1-LqPcw2mrIr2fBQqS6jGTITVqYeg=
770 +
771 +"@reach/portal@^0.1.3":
772 + version "0.1.3"
773 + resolved "https://registry.yarnpkg.com/@reach/portal/-/portal-0.1.3.tgz#31d820f31bbab73570d5b5a449e2b0fa6457802f"
774 + integrity sha512-yDcu5XZWfWKmKvbOs/uS7vITPVFXmn+XY5V6YcGhlz20KgwG+aJX2c7yvYzO++Zr0qvmtQCmxA4EGEciqIys6g==
775 + dependencies:
776 + "@reach/component-component" "^0.1.3"
777 +
778 +"@reach/rect@^0.2.0":
779 + version "0.2.0"
780 + resolved "https://registry.yarnpkg.com/@reach/rect/-/rect-0.2.0.tgz#3e8dd4e2188294228ea223223a956885a8a33472"
781 + integrity sha512-/C0r28VC/0dJ7ehKqkiebU7WvyiqXw5ViWC4KUWQRVTwauLENmslJ3jgEDUQZn6M3Ko63owaMZ2/rAivFfpIGQ==
782 + dependencies:
783 + "@reach/component-component" "^0.1.3"
784 + "@reach/observe-rect" "^1.0.3"
785 +
786 +"@reach/router@^1.1.0":
787 + version "1.2.1"
788 + resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.2.1.tgz#34ae3541a5ac44fa7796e5506a5d7274a162be4e"
789 + integrity sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ==
790 + dependencies:
791 + create-react-context "^0.2.1"
792 + invariant "^2.2.3"
793 + prop-types "^15.6.1"
794 + react-lifecycles-compat "^3.0.4"
795 + warning "^3.0.0"
796 +
797 +"@reach/utils@^0.2.0":
798 + version "0.2.0"
799 + resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.2.0.tgz#504e84613b4aed7adf189aaa6b9d110b282ec523"
800 + integrity sha512-AIfX18Ska78d4SjLt4awYHsgXEIVHhOUxLtxze2XT0D5aPOPx1XJl0seRZfQI0EVod4K1KVvHJnskEYSXqKQQg==
801 +
802 +"@reach/window-size@^0.1.3":
803 + version "0.1.3"
804 + resolved "https://registry.yarnpkg.com/@reach/window-size/-/window-size-0.1.3.tgz#eaf8ed8265cf20321a83037d2ab32dad936e79bd"
805 + integrity sha512-XU/PdGZ9GoRHUkIqIEcARIKWvfEDYCR/b2/Yubo+acKXJQ2I/YkQJdpILdIhNqF93nGa4zIAHrRHXkXdW11Xyg==
806 + dependencies:
807 + "@reach/component-component" "^0.1.3"
808 +
809 "@samverschueren/stream-to-observable@^0.3.0":
810 version "0.3.0"
811 resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
@@ -3177,6 +3238,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
3238 safe-buffer "^5.0.1"
3239 sha.js "^2.4.8"
3240
3241 +create-react-context@^0.2.1:
3242 + version "0.2.3"
3243 + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3"
3244 + integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==
3245 + dependencies:
3246 + fbjs "^0.8.0"
3247 + gud "^1.0.0"
3248 +
3249 cross-spawn-async@^2.2.2:
3250 version "2.2.5"
3251 resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc"
@@ -3739,6 +3808,13 @@ emojis-list@^2.0.0:
3808 resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
3809 integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
3810
3811 +encoding@^0.1.11:
3812 + version "0.1.12"
3813 + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
3814 + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
3815 + dependencies:
3816 + iconv-lite "~0.4.13"
3817 +
3818 end-of-stream@^1.0.0, end-of-stream@^1.1.0:
3819 version "1.4.1"
3820 resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
@@ -4487,6 +4563,19 @@ fbjs@0.5.1:
4563 ua-parser-js "^0.7.9"
4564 whatwg-fetch "^0.9.0"
4565
4566 +fbjs@^0.8.0:
4567 + version "0.8.17"
4568 + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
4569 + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
4570 + dependencies:
4571 + core-js "^1.0.0"
4572 + isomorphic-fetch "^2.1.1"
4573 + loose-envify "^1.0.0"
4574 + object-assign "^4.1.0"
4575 + promise "^7.1.1"
4576 + setimmediate "^1.0.5"
4577 + ua-parser-js "^0.7.18"
4578 +
4579 fd-slicer@~1.0.1:
4580 version "1.0.1"
4581 resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
@@ -5169,6 +5258,11 @@ growly@^1.3.0:
5258 version "1.3.0"
5259 resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
5260
5261 +gud@^1.0.0:
5262 + version "1.0.0"
5263 + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
5264 + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
5265 +
5266 gulp-util@^3.0.4:
5267 version "3.0.8"
5268 resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
@@ -5469,7 +5563,7 @@ iconv-lite@0.4.19:
5563 version "0.4.19"
5564 resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
5565
5472 -iconv-lite@^0.4.17, iconv-lite@^0.4.4:
5566 +iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
5567 version "0.4.24"
5568 resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
5569 integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5642,7 +5736,7 @@ invariant@^2.2.0:
5736 dependencies:
5737 loose-envify "^1.0.0"
5738
5645 -invariant@^2.2.2:
5739 +invariant@^2.2.2, invariant@^2.2.3:
5740 version "2.2.4"
5741 resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
5742 integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -5967,7 +6061,7 @@ is-retry-allowed@^1.0.0:
6061 resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
6062 integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
6063
5970 -is-stream@^1.0.0, is-stream@^1.1.0:
6064 +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
6065 version "1.1.0"
6066 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
6067 integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -6041,6 +6135,14 @@ isobject@^3.0.0, isobject@^3.0.1:
6135 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
6136 integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
6137
6138 +isomorphic-fetch@^2.1.1:
6139 + version "2.2.1"
6140 + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
6141 + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
6142 + dependencies:
6143 + node-fetch "^1.0.1"
6144 + whatwg-fetch ">=0.10.0"
6145 +
6146 isstream@~0.1.2:
6147 version "0.1.2"
6148 resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -7597,6 +7699,14 @@ nice-try@^1.0.4:
7699 resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
7700 integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
7701
7702 +node-fetch@^1.0.1:
7703 + version "1.7.3"
7704 + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
7705 + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
7706 + dependencies:
7707 + encoding "^0.1.11"
7708 + is-stream "^1.0.1"
7709 +
7710 node-firefox-connect@1.2.0:
7711 version "1.2.0"
7712 resolved "https://registry.yarnpkg.com/node-firefox-connect/-/node-firefox-connect-1.2.0.tgz#42403848313240c98514ef14b3302816fe3b84e1"
@@ -8467,7 +8577,14 @@ promise@^7.0.3:
8577 dependencies:
8578 asap "~2.0.3"
8579
8470 -prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2:
8580 +promise@^7.1.1:
8581 + version "7.3.1"
8582 + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
8583 + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
8584 + dependencies:
8585 + asap "~2.0.3"
8586 +
8587 +prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2:
8588 version "15.7.2"
8589 resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
8590 integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -8674,6 +8791,11 @@ react-is@^16.8.4:
8791 resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2"
8792 integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==
8793
8794 +react-lifecycles-compat@^3.0.4:
8795 + version "3.0.4"
8796 + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
8797 + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
8798 +
8799 react-portal@^3.1.0:
8800 version "3.2.0"
8801 resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-3.2.0.tgz#4224e19b2b05d5cbe730a7ba0e34ec7585de0043"
@@ -9375,7 +9497,7 @@ set-value@^2.0.0:
9497 is-plain-object "^2.0.3"
9498 split-string "^3.0.1"
9499
9378 -setimmediate@^1.0.4:
9500 +setimmediate@^1.0.4, setimmediate@^1.0.5:
9501 version "1.0.5"
9502 resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
9503 integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
@@ -10369,7 +10491,7 @@ typedarray@^0.0.6:
10491 resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
10492 integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
10493
10372 -ua-parser-js@^0.7.9:
10494 +ua-parser-js@^0.7.18, ua-parser-js@^0.7.9:
10495 version "0.7.19"
10496 resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b"
10497 integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==
@@ -10646,6 +10768,20 @@ walker@~1.0.5:
10768 dependencies:
10769 makeerror "1.0.x"
10770
10771 +warning@^3.0.0:
10772 + version "3.0.0"
10773 + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
10774 + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=
10775 + dependencies:
10776 + loose-envify "^1.0.0"
10777 +
10778 +warning@^4.0.2:
10779 + version "4.0.3"
10780 + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
10781 + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
10782 + dependencies:
10783 + loose-envify "^1.0.0"
10784 +
10785 watch@~0.18.0:
10786 version "0.18.0"
10787 resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
@@ -10781,6 +10917,11 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
10917 dependencies:
10918 iconv-lite "0.4.19"
10919
10920 +whatwg-fetch@>=0.10.0:
10921 + version "3.0.0"
10922 + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
10923 + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==
10924 +
10925 whatwg-fetch@^0.9.0:
10926 version "0.9.0"
10927 resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0"