├── .editorconfig
├── .gitignore
├── .npmignore
├── README.md
├── package.json
├── src
└── index.ts
├── tsconfig.json
├── tslint.json
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | lib
3 | es
4 | yarn-error.log
5 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | .editorconfig
3 | tsconfig.json
4 | tslint.json
5 | yarn.lock
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-hooks-responsive
2 |
3 | A react hooks approach to responsive layout.
4 |
5 | ## Install
6 |
7 | ```
8 | yarn add react-hooks-responsive
9 | ```
10 |
11 | or
12 |
13 | ```
14 | npm install react-hooks-responsive
15 | ```
16 |
17 | ## Usage Example
18 |
19 | ```tsx
20 | import React from 'react'
21 | import { useResponsive } from 'react-hooks-responsive'
22 |
23 | // smallest breakpoint must be 0
24 | // any number of breakpoints with any names can be given
25 | const breakpoints = { xs: 0, sm: 480, md: 1024 }
26 |
27 | const App: React.StatelessComponent = () => {
28 | const { size, orientation, screenIsAtLeast, screenIsAtMost } = useResponsive(breakpoints)
29 |
30 | return (
31 |
32 |
33 | The screen is currently {size} in {orientation}.{' '}
34 |
35 |
is the screen at least sm? {screenIsAtLeast('sm') ? 'yes' : 'no'}.
36 |
is the screen at most sm and portrait? {screenIsAtMost('sm', 'portrait') ? 'yes' : 'no'}.
37 |
38 | )
39 | }
40 |
41 | export default App
42 | ```
43 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-hooks-responsive",
3 | "version": "0.2.1",
4 | "description": "A react hooks approach to responsive layout",
5 | "repository": "https://github.com/garth/react-hooks-responsive.git",
6 | "author": "Garth Williams",
7 | "license": "MIT",
8 | "keywords": [
9 | "react",
10 | "responsive",
11 | "hooks"
12 | ],
13 | "main": "lib/index.js",
14 | "module": "es/index.js",
15 | "types": "lib/index.d.ts",
16 | "scripts": {
17 | "prebuild": "rimraf lib && rimraf es",
18 | "build:lib": "tsc --outDir lib --target es5 --preserveWatchOutput --downlevelIteration",
19 | "build:es": "tsc --outDir es --module es2015 --preserveWatchOutput",
20 | "build": "npm run build:lib & npm run build:es",
21 | "lint": "tslint -c tslint.json -t verbose 'src/**/*.{ts,tsx}'",
22 | "prettier": "prettier --write \"src/**/*.{js,json,ts,tsx,scss,html}\""
23 | },
24 | "prettier": {
25 | "printWidth": 120,
26 | "tabWidth": 2,
27 | "semi": false,
28 | "singleQuote": true,
29 | "jsxBracketSameLine": true
30 | },
31 | "devDependencies": {
32 | "@types/react": "^16.9.2",
33 | "prettier": "^1.18.2",
34 | "react": "^16.9.0",
35 | "rimraf": "^3.0.0",
36 | "tslint": "^5.19.0",
37 | "tslint-config-prettier": "^1.18.0",
38 | "tslint-react": "^4.0.0",
39 | "typescript": "^3.6.2"
40 | },
41 | "dependencies": {
42 | "tslib": "^1.10.0"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from 'react'
2 |
3 | export type Orientation = 'landscape' | 'portrait'
4 |
5 | export interface Screen {
6 | size: keyof T
7 | orientation: Orientation
8 | screenIsAtLeast(breakpoint: keyof T, andOrientation?: Orientation): boolean
9 | screenIsAtMost(breakpoint: keyof T, andOrientation?: Orientation): boolean
10 | }
11 |
12 | export const useResponsive = (breakpoints: T): Screen => {
13 | const sizes = Object.entries(breakpoints).sort(([a, aSize], [b, bSize]) => bSize - aSize)
14 | if (sizes[sizes.length - 1][1] !== 0) {
15 | console.warn('fixing', sizes[sizes.length - 1][0], 'size which should be 0')
16 | sizes[sizes.length - 1][1] = 0
17 | }
18 |
19 | const getScreen = (): Screen => {
20 | const width = window.innerWidth
21 | const size = sizes.find(([_, size]) => size < width)[0]
22 | const orientation = width > window.innerHeight ? 'landscape' : 'portrait'
23 | return {
24 | size,
25 | orientation,
26 | screenIsAtLeast(breakpoint, andOrientation) {
27 | return width >= breakpoints[breakpoint] && (!andOrientation || andOrientation === orientation)
28 | },
29 | screenIsAtMost(breakpoint, andOrientation) {
30 | return width <= breakpoints[breakpoint] && (!andOrientation || andOrientation === orientation)
31 | }
32 | }
33 | }
34 |
35 | const [screen, setScreen] = useState(getScreen())
36 |
37 | useEffect(
38 | () => {
39 | const onResize = () => {
40 | const current = getScreen()
41 |
42 | if (current.size !== screen.size || current.orientation !== screen.orientation) {
43 | setScreen(current)
44 | }
45 | }
46 |
47 | window.addEventListener('resize', onResize)
48 |
49 | return () => {
50 | window.removeEventListener('resize', onResize)
51 | }
52 | },
53 | [screen, setScreen, getScreen]
54 | )
55 |
56 | return screen
57 | }
58 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "esModuleInterop": true,
4 | "target": "es6",
5 | "module": "commonjs",
6 | "jsx": "react",
7 | "rootDir": "src",
8 | "outDir": ".code",
9 | "newLine": "LF",
10 | "lib": ["dom", "es2017"],
11 | "moduleResolution": "node",
12 | "importHelpers": true,
13 | "declaration": true,
14 | "pretty": true,
15 | "sourceMap": true,
16 | "inlineSources": true
17 | },
18 | "exclude": ["node_modules", "es", "lib"]
19 | }
20 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "defaultSeverity": "error",
3 | "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
4 | "jsRules": {},
5 | "rules": {
6 | "ordered-imports": false,
7 | "object-literal-sort-keys": false,
8 | "no-string-literal": false,
9 | "interface-name": false,
10 | "no-shadowed-variable": false,
11 | "jsx-no-lambda": false,
12 | "no-console": false,
13 | "member-ordering": false
14 | },
15 | "rulesDirectory": []
16 | }
17 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0":
6 | version "7.5.5"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
8 | integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
9 | dependencies:
10 | "@babel/highlight" "^7.0.0"
11 |
12 | "@babel/highlight@^7.0.0":
13 | version "7.5.0"
14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
15 | integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
16 | dependencies:
17 | chalk "^2.0.0"
18 | esutils "^2.0.2"
19 | js-tokens "^4.0.0"
20 |
21 | "@types/prop-types@*":
22 | version "15.7.1"
23 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6"
24 | integrity sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==
25 |
26 | "@types/react@^16.9.2":
27 | version "16.9.2"
28 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.2.tgz#6d1765431a1ad1877979013906731aae373de268"
29 | integrity sha512-jYP2LWwlh+FTqGd9v7ynUKZzjj98T8x7Yclz479QdRhHfuW9yQ+0jjnD31eXSXutmBpppj5PYNLYLRfnZJvcfg==
30 | dependencies:
31 | "@types/prop-types" "*"
32 | csstype "^2.2.0"
33 |
34 | ansi-styles@^3.2.1:
35 | version "3.2.1"
36 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
37 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
38 | dependencies:
39 | color-convert "^1.9.0"
40 |
41 | argparse@^1.0.7:
42 | version "1.0.10"
43 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
44 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
45 | dependencies:
46 | sprintf-js "~1.0.2"
47 |
48 | balanced-match@^1.0.0:
49 | version "1.0.0"
50 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
51 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
52 |
53 | brace-expansion@^1.1.7:
54 | version "1.1.11"
55 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
56 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
57 | dependencies:
58 | balanced-match "^1.0.0"
59 | concat-map "0.0.1"
60 |
61 | builtin-modules@^1.1.1:
62 | version "1.1.1"
63 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
64 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
65 |
66 | chalk@^2.0.0, chalk@^2.3.0:
67 | version "2.4.2"
68 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
69 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
70 | dependencies:
71 | ansi-styles "^3.2.1"
72 | escape-string-regexp "^1.0.5"
73 | supports-color "^5.3.0"
74 |
75 | color-convert@^1.9.0:
76 | version "1.9.3"
77 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
78 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
79 | dependencies:
80 | color-name "1.1.3"
81 |
82 | color-name@1.1.3:
83 | version "1.1.3"
84 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
85 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
86 |
87 | commander@^2.12.1:
88 | version "2.20.0"
89 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
90 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
91 |
92 | concat-map@0.0.1:
93 | version "0.0.1"
94 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
95 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
96 |
97 | csstype@^2.2.0:
98 | version "2.6.6"
99 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.6.tgz#c34f8226a94bbb10c32cc0d714afdf942291fc41"
100 | integrity sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg==
101 |
102 | diff@^3.2.0:
103 | version "3.5.0"
104 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
105 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
106 |
107 | escape-string-regexp@^1.0.5:
108 | version "1.0.5"
109 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
110 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
111 |
112 | esprima@^4.0.0:
113 | version "4.0.1"
114 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
115 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
116 |
117 | esutils@^2.0.2:
118 | version "2.0.3"
119 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
120 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
121 |
122 | fs.realpath@^1.0.0:
123 | version "1.0.0"
124 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
125 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
126 |
127 | glob@^7.1.1, glob@^7.1.3:
128 | version "7.1.4"
129 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
130 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
131 | dependencies:
132 | fs.realpath "^1.0.0"
133 | inflight "^1.0.4"
134 | inherits "2"
135 | minimatch "^3.0.4"
136 | once "^1.3.0"
137 | path-is-absolute "^1.0.0"
138 |
139 | has-flag@^3.0.0:
140 | version "3.0.0"
141 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
142 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
143 |
144 | inflight@^1.0.4:
145 | version "1.0.6"
146 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
147 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
148 | dependencies:
149 | once "^1.3.0"
150 | wrappy "1"
151 |
152 | inherits@2:
153 | version "2.0.4"
154 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
155 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
156 |
157 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
158 | version "4.0.0"
159 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
160 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
161 |
162 | js-yaml@^3.13.1:
163 | version "3.13.1"
164 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
165 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
166 | dependencies:
167 | argparse "^1.0.7"
168 | esprima "^4.0.0"
169 |
170 | loose-envify@^1.1.0, loose-envify@^1.4.0:
171 | version "1.4.0"
172 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
173 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
174 | dependencies:
175 | js-tokens "^3.0.0 || ^4.0.0"
176 |
177 | minimatch@^3.0.4:
178 | version "3.0.4"
179 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
180 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
181 | dependencies:
182 | brace-expansion "^1.1.7"
183 |
184 | minimist@0.0.8:
185 | version "0.0.8"
186 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
187 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
188 |
189 | mkdirp@^0.5.1:
190 | version "0.5.1"
191 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
192 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
193 | dependencies:
194 | minimist "0.0.8"
195 |
196 | object-assign@^4.1.1:
197 | version "4.1.1"
198 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
199 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
200 |
201 | once@^1.3.0:
202 | version "1.4.0"
203 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
204 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
205 | dependencies:
206 | wrappy "1"
207 |
208 | path-is-absolute@^1.0.0:
209 | version "1.0.1"
210 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
211 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
212 |
213 | path-parse@^1.0.6:
214 | version "1.0.6"
215 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
216 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
217 |
218 | prettier@^1.18.2:
219 | version "1.18.2"
220 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
221 | integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
222 |
223 | prop-types@^15.6.2:
224 | version "15.7.2"
225 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
226 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
227 | dependencies:
228 | loose-envify "^1.4.0"
229 | object-assign "^4.1.1"
230 | react-is "^16.8.1"
231 |
232 | react-is@^16.8.1:
233 | version "16.9.0"
234 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb"
235 | integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==
236 |
237 | react@^16.9.0:
238 | version "16.9.0"
239 | resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa"
240 | integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==
241 | dependencies:
242 | loose-envify "^1.1.0"
243 | object-assign "^4.1.1"
244 | prop-types "^15.6.2"
245 |
246 | resolve@^1.3.2:
247 | version "1.12.0"
248 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
249 | integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
250 | dependencies:
251 | path-parse "^1.0.6"
252 |
253 | rimraf@^3.0.0:
254 | version "3.0.0"
255 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b"
256 | integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==
257 | dependencies:
258 | glob "^7.1.3"
259 |
260 | semver@^5.3.0:
261 | version "5.7.1"
262 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
263 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
264 |
265 | sprintf-js@~1.0.2:
266 | version "1.0.3"
267 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
268 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
269 |
270 | supports-color@^5.3.0:
271 | version "5.5.0"
272 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
273 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
274 | dependencies:
275 | has-flag "^3.0.0"
276 |
277 | tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1:
278 | version "1.10.0"
279 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
280 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
281 |
282 | tslint-config-prettier@^1.18.0:
283 | version "1.18.0"
284 | resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37"
285 | integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==
286 |
287 | tslint-react@^4.0.0:
288 | version "4.0.0"
289 | resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-4.0.0.tgz#b4bb4c01c32448cb14d23f143a2f5e4989bb961e"
290 | integrity sha512-9fNE0fm9zNDx1+b6hgy8rgDN2WsQLRiIrn3+fbqm0tazBVF6jiaCFAITxmU+WSFWYE03Xhp1joCircXOe1WVAQ==
291 | dependencies:
292 | tsutils "^3.9.1"
293 |
294 | tslint@^5.19.0:
295 | version "5.19.0"
296 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.19.0.tgz#a2cbd4a7699386da823f6b499b8394d6c47bb968"
297 | integrity sha512-1LwwtBxfRJZnUvoS9c0uj8XQtAnyhWr9KlNvDIdB+oXyT+VpsOAaEhEgKi1HrZ8rq0ki/AAnbGSv4KM6/AfVZw==
298 | dependencies:
299 | "@babel/code-frame" "^7.0.0"
300 | builtin-modules "^1.1.1"
301 | chalk "^2.3.0"
302 | commander "^2.12.1"
303 | diff "^3.2.0"
304 | glob "^7.1.1"
305 | js-yaml "^3.13.1"
306 | minimatch "^3.0.4"
307 | mkdirp "^0.5.1"
308 | resolve "^1.3.2"
309 | semver "^5.3.0"
310 | tslib "^1.8.0"
311 | tsutils "^2.29.0"
312 |
313 | tsutils@^2.29.0:
314 | version "2.29.0"
315 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
316 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
317 | dependencies:
318 | tslib "^1.8.1"
319 |
320 | tsutils@^3.9.1:
321 | version "3.17.1"
322 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
323 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
324 | dependencies:
325 | tslib "^1.8.1"
326 |
327 | typescript@^3.6.2:
328 | version "3.6.2"
329 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.2.tgz#105b0f1934119dde543ac8eb71af3a91009efe54"
330 | integrity sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw==
331 |
332 | wrappy@1:
333 | version "1.0.2"
334 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
335 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
336 |
--------------------------------------------------------------------------------