mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-03-06 22:39:41 +08:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea5d14a720 | ||
|
|
313d0726a8 | ||
|
|
b52f153747 | ||
|
|
44621005ff | ||
|
|
bf58364c3d | ||
|
|
b55053cde6 | ||
|
|
9abb2644a9 | ||
|
|
6a946d6ab7 | ||
|
|
395abe5200 | ||
|
|
ba62509ff4 | ||
|
|
45391db7d9 | ||
|
|
7f86362e86 | ||
|
|
99605737e9 | ||
|
|
842f5eb7b2 | ||
|
|
183ea82416 | ||
|
|
108a6504a7 | ||
|
|
f92d671746 | ||
|
|
e0c4a8f7d3 | ||
|
|
bc881c8aa1 | ||
|
|
118c19dcce | ||
|
|
01b43974e6 | ||
|
|
2f90899620 | ||
|
|
6cc86f66e1 | ||
|
|
4be99b6645 | ||
|
|
80016b7218 | ||
|
|
f555a9ec9a | ||
|
|
05cbd85d5c | ||
|
|
51965eac38 | ||
|
|
a3956bf3ce | ||
|
|
ce24c66b5a |
22
.eslintrc
22
.eslintrc
@@ -7,18 +7,18 @@
|
|||||||
"prettier/react"
|
"prettier/react"
|
||||||
],
|
],
|
||||||
"parser": "babel-eslint",
|
"parser": "babel-eslint",
|
||||||
"plugins": [
|
"plugins": ["react", "prettier"],
|
||||||
"react",
|
|
||||||
"prettier"
|
|
||||||
],
|
|
||||||
"env": {
|
"env": {
|
||||||
"jasmine": true
|
"jasmine": true
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"prettier/prettier": ["error", {
|
"prettier/prettier": [
|
||||||
"trailingComma": "es5",
|
"error",
|
||||||
"singleQuote": true
|
{
|
||||||
}],
|
"trailingComma": "es5",
|
||||||
|
"singleQuote": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
"no-underscore-dangle": "off",
|
"no-underscore-dangle": "off",
|
||||||
"no-use-before-define": "off",
|
"no-use-before-define": "off",
|
||||||
@@ -27,17 +27,15 @@
|
|||||||
"no-plusplus": "off",
|
"no-plusplus": "off",
|
||||||
"no-class-assign": "off",
|
"no-class-assign": "off",
|
||||||
"no-duplicate-imports": "off",
|
"no-duplicate-imports": "off",
|
||||||
|
|
||||||
"import/extensions": "off",
|
"import/extensions": "off",
|
||||||
"import/no-extraneous-dependencies": "off",
|
"import/no-extraneous-dependencies": "off",
|
||||||
"import/no-unresolved": "off",
|
"import/no-unresolved": "off",
|
||||||
|
|
||||||
"react/jsx-filename-extension": [
|
"react/jsx-filename-extension": ["off", { "extensions": [".js", ".jsx"] }],
|
||||||
"off", { "extensions": [".js", ".jsx"] }
|
|
||||||
],
|
|
||||||
|
|
||||||
"react/sort-comp": "off",
|
"react/sort-comp": "off",
|
||||||
"react/prefer-stateless-function": "off",
|
"react/prefer-stateless-function": "off",
|
||||||
|
"react/no-deprecated": "off",
|
||||||
|
|
||||||
"react/forbid-prop-types": "warn",
|
"react/forbid-prop-types": "warn",
|
||||||
"react/prop-types": "off",
|
"react/prop-types": "off",
|
||||||
|
|||||||
@@ -55,4 +55,4 @@ This library has adopted a Code of Conduct that we expect project participants t
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
React-navigation is licensed under the [BSD 2-clause "Simplified" License](https://github.com/react-community/react-navigation/blob/master/LICENSE).
|
React Navigation is licensed under the [BSD 2-clause "Simplified" License](https://github.com/react-community/react-navigation/blob/master/LICENSE).
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ module.system=haste
|
|||||||
|
|
||||||
emoji=true
|
emoji=true
|
||||||
|
|
||||||
experimental.strict_type_args=true
|
|
||||||
|
|
||||||
munge_underscores=true
|
munge_underscores=true
|
||||||
|
|
||||||
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'
|
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'
|
||||||
@@ -77,7 +75,5 @@ suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*
|
|||||||
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
|
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
|
||||||
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
|
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
|
||||||
|
|
||||||
unsafe.enable_getters_and_setters=true
|
|
||||||
|
|
||||||
[version]
|
[version]
|
||||||
^0.61.0
|
^0.67.0
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import {
|
|||||||
createStackNavigator,
|
createStackNavigator,
|
||||||
SafeAreaView,
|
SafeAreaView,
|
||||||
withNavigation,
|
withNavigation,
|
||||||
|
NavigationActions,
|
||||||
|
StackActions,
|
||||||
} from 'react-navigation';
|
} from 'react-navigation';
|
||||||
import invariant from 'invariant';
|
import invariant from 'invariant';
|
||||||
|
|
||||||
@@ -62,6 +64,22 @@ class MyNavScreen extends React.Component<MyNavScreenProps> {
|
|||||||
onPress={() => push('Profile', { name: 'Jane' })}
|
onPress={() => push('Profile', { name: 'Jane' })}
|
||||||
title="Push a profile screen"
|
title="Push a profile screen"
|
||||||
/>
|
/>
|
||||||
|
<Button
|
||||||
|
onPress={() =>
|
||||||
|
navigation.dispatch(
|
||||||
|
StackActions.reset({
|
||||||
|
index: 0,
|
||||||
|
actions: [
|
||||||
|
NavigationActions.navigate({
|
||||||
|
routeName: 'Photos',
|
||||||
|
params: { name: 'Jane' },
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
title="Reset photos"
|
||||||
|
/>
|
||||||
<Button
|
<Button
|
||||||
onPress={() => navigation.navigate('Photos', { name: 'Jane' })}
|
onPress={() => navigation.navigate('Photos', { name: 'Jane' })}
|
||||||
title="Navigate to a photos screen"
|
title="Navigate to a photos screen"
|
||||||
@@ -72,7 +90,16 @@ class MyNavScreen extends React.Component<MyNavScreenProps> {
|
|||||||
/>
|
/>
|
||||||
<Button onPress={() => popToTop()} title="Pop to top" />
|
<Button onPress={() => popToTop()} title="Pop to top" />
|
||||||
<Button onPress={() => pop()} title="Pop" />
|
<Button onPress={() => pop()} title="Pop" />
|
||||||
<Button onPress={() => navigation.goBack()} title="Go back" />
|
<Button
|
||||||
|
onPress={() => {
|
||||||
|
if (navigation.goBack()) {
|
||||||
|
console.log('goBack handled');
|
||||||
|
} else {
|
||||||
|
console.log('goBack unhandled');
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
title="Go back"
|
||||||
|
/>
|
||||||
<Button onPress={() => dismiss()} title="Dismiss" />
|
<Button onPress={() => dismiss()} title="Dismiss" />
|
||||||
<StatusBar barStyle="default" />
|
<StatusBar barStyle="default" />
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-jest": "^22.4.1",
|
"babel-jest": "^22.4.1",
|
||||||
"babel-plugin-transform-remove-console": "^6.9.0",
|
"babel-plugin-transform-remove-console": "^6.9.0",
|
||||||
"flow-bin": "^0.61.0",
|
"flow-bin": "^0.67.0",
|
||||||
"jest": "^22.1.3",
|
"jest": "^22.1.3",
|
||||||
"jest-expo": "^26.0.0",
|
"jest-expo": "^26.0.0",
|
||||||
"react-native-scripts": "^1.5.0",
|
"react-native-scripts": "^1.5.0",
|
||||||
|
|||||||
@@ -590,8 +590,8 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "10.1.2"
|
version "10.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.1.2.tgz#1b928a0baa408fc8ae3ac012cc81375addc147c6"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.1.tgz#51092fbacaed768a122a293814474fbf6e5e8b6d"
|
||||||
|
|
||||||
abab@^1.0.4:
|
abab@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
@@ -619,8 +619,8 @@ acorn-globals@^4.1.0:
|
|||||||
acorn "^5.0.0"
|
acorn "^5.0.0"
|
||||||
|
|
||||||
acorn@^5.0.0, acorn@^5.3.0:
|
acorn@^5.0.0, acorn@^5.3.0:
|
||||||
version "5.5.3"
|
version "5.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7"
|
||||||
|
|
||||||
agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0:
|
agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0:
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
@@ -855,8 +855,8 @@ assign-symbols@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
|
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
|
||||||
|
|
||||||
ast-types@0.x.x:
|
ast-types@0.x.x:
|
||||||
version "0.11.4"
|
version "0.11.5"
|
||||||
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.4.tgz#76f930930e9571851ba282a9a0f6923f29f6be2f"
|
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28"
|
||||||
|
|
||||||
astral-regex@^1.0.0:
|
astral-regex@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
@@ -1195,8 +1195,8 @@ babel-plugin-transform-class-properties@^6.18.0, babel-plugin-transform-class-pr
|
|||||||
babel-template "^6.24.1"
|
babel-template "^6.24.1"
|
||||||
|
|
||||||
babel-plugin-transform-decorators-legacy@^1.3.4:
|
babel-plugin-transform-decorators-legacy@^1.3.4:
|
||||||
version "1.3.4"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925"
|
resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1"
|
||||||
dependencies:
|
dependencies:
|
||||||
babel-plugin-syntax-decorators "^6.1.18"
|
babel-plugin-syntax-decorators "^6.1.18"
|
||||||
babel-runtime "^6.2.0"
|
babel-runtime "^6.2.0"
|
||||||
@@ -1678,8 +1678,8 @@ bcrypt-pbkdf@^1.0.0:
|
|||||||
tweetnacl "^0.14.3"
|
tweetnacl "^0.14.3"
|
||||||
|
|
||||||
big-integer@^1.6.7:
|
big-integer@^1.6.7:
|
||||||
version "1.6.28"
|
version "1.6.30"
|
||||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.28.tgz#8cef0fda3ccde8759c2c66efcfacc35aea658283"
|
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.30.tgz#7796f04acdd6ba56345f19049c8fffd427f09d16"
|
||||||
|
|
||||||
bluebird@^2.10.2:
|
bluebird@^2.10.2:
|
||||||
version "2.11.0"
|
version "2.11.0"
|
||||||
@@ -1773,28 +1773,28 @@ bser@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
node-int64 "^0.4.0"
|
node-int64 "^0.4.0"
|
||||||
|
|
||||||
buffer-alloc-unsafe@^0.1.0:
|
buffer-alloc-unsafe@^1.1.0:
|
||||||
version "0.1.1"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz#ffe1f67551dd055737de253337bfe853dfab1a6a"
|
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
|
||||||
|
|
||||||
buffer-alloc@^1.1.0:
|
buffer-alloc@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.1.0.tgz#05514d33bf1656d3540c684f65b1202e90eca303"
|
resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer-alloc-unsafe "^0.1.0"
|
buffer-alloc-unsafe "^1.1.0"
|
||||||
buffer-fill "^0.1.0"
|
buffer-fill "^1.0.0"
|
||||||
|
|
||||||
buffer-equal-constant-time@1.0.1:
|
buffer-equal-constant-time@1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
|
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
|
||||||
|
|
||||||
buffer-fill@^0.1.0:
|
buffer-fill@^1.0.0:
|
||||||
version "0.1.1"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.1.tgz#76d825c4d6e50e06b7a31eb520c04d08cc235071"
|
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
|
||||||
|
|
||||||
buffer-from@^1.0.0:
|
buffer-from@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
|
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
|
||||||
|
|
||||||
builtin-modules@^1.0.0:
|
builtin-modules@^1.0.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
@@ -2053,10 +2053,10 @@ component-type@^1.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/component-type/-/component-type-1.2.1.tgz#8a47901700238e4fc32269771230226f24b415a9"
|
resolved "https://registry.yarnpkg.com/component-type/-/component-type-1.2.1.tgz#8a47901700238e4fc32269771230226f24b415a9"
|
||||||
|
|
||||||
compressible@~2.0.13:
|
compressible@~2.0.13:
|
||||||
version "2.0.13"
|
version "2.0.14"
|
||||||
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
|
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db ">= 1.33.0 < 2"
|
mime-db ">= 1.34.0 < 2"
|
||||||
|
|
||||||
compression@^1.7.1:
|
compression@^1.7.1:
|
||||||
version "1.7.2"
|
version "1.7.2"
|
||||||
@@ -2124,8 +2124,8 @@ cookie@0.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
||||||
|
|
||||||
cookiejar@^2.1.0:
|
cookiejar@^2.1.0:
|
||||||
version "2.1.1"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a"
|
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
|
||||||
|
|
||||||
copy-descriptor@^0.1.0:
|
copy-descriptor@^0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
@@ -2136,8 +2136,8 @@ core-js@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||||
|
|
||||||
core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.6:
|
core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.6:
|
||||||
version "2.5.6"
|
version "2.5.7"
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
|
||||||
|
|
||||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
@@ -2254,9 +2254,9 @@ deep-diff@0.3.4:
|
|||||||
version "0.3.4"
|
version "0.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.4.tgz#aac5c39952236abe5f037a2349060ba01b00ae48"
|
resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.4.tgz#aac5c39952236abe5f037a2349060ba01b00ae48"
|
||||||
|
|
||||||
deep-extend@^0.5.1:
|
deep-extend@^0.6.0:
|
||||||
version "0.5.1"
|
version "0.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
|
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||||
|
|
||||||
deep-is@~0.1.3:
|
deep-is@~0.1.3:
|
||||||
version "0.1.3"
|
version "0.1.3"
|
||||||
@@ -2267,8 +2267,8 @@ deepmerge@^1.3.0, deepmerge@^1.5.1:
|
|||||||
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
|
||||||
|
|
||||||
deepmerge@^2.1.0:
|
deepmerge@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.0.tgz#511a54fff405fc346f0240bb270a3e9533a31102"
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.1.tgz#e862b4e45ea0555072bf51e7fd0d9845170ae768"
|
||||||
|
|
||||||
default-require-extensions@^1.0.0:
|
default-require-extensions@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
@@ -2426,8 +2426,8 @@ errorhandler@^1.5.0:
|
|||||||
escape-html "~1.0.3"
|
escape-html "~1.0.3"
|
||||||
|
|
||||||
es-abstract@^1.5.1:
|
es-abstract@^1.5.1:
|
||||||
version "1.11.0"
|
version "1.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
|
||||||
dependencies:
|
dependencies:
|
||||||
es-to-primitive "^1.1.1"
|
es-to-primitive "^1.1.1"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
@@ -2868,9 +2868,9 @@ find-up@^2.0.0, find-up@^2.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
locate-path "^2.0.0"
|
locate-path "^2.0.0"
|
||||||
|
|
||||||
flow-bin@^0.61.0:
|
flow-bin@^0.67.0:
|
||||||
version "0.61.0"
|
version "0.67.1"
|
||||||
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.61.0.tgz#d0473a8c35dbbf4de573823f4932124397d32d35"
|
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.67.1.tgz#eabb7197cce870ac9442cfd04251c7ddc30377db"
|
||||||
|
|
||||||
follow-redirects@^1.2.3:
|
follow-redirects@^1.2.3:
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
@@ -2974,7 +2974,7 @@ ftp@~0.3.10:
|
|||||||
readable-stream "1.1.x"
|
readable-stream "1.1.x"
|
||||||
xregexp "2.0.0"
|
xregexp "2.0.0"
|
||||||
|
|
||||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
|
|
||||||
@@ -3202,10 +3202,10 @@ has-values@^1.0.0:
|
|||||||
kind-of "^4.0.0"
|
kind-of "^4.0.0"
|
||||||
|
|
||||||
has@^1.0.1:
|
has@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.0.2"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
hasbin@^1.2.3:
|
hasbin@^1.2.3:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
@@ -3731,8 +3731,8 @@ istanbul-lib-source-maps@^1.2.1:
|
|||||||
source-map "^0.5.3"
|
source-map "^0.5.3"
|
||||||
|
|
||||||
istanbul-lib-source-maps@^1.2.4:
|
istanbul-lib-source-maps@^1.2.4:
|
||||||
version "1.2.4"
|
version "1.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7"
|
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^3.1.0"
|
debug "^3.1.0"
|
||||||
istanbul-lib-coverage "^1.2.0"
|
istanbul-lib-coverage "^1.2.0"
|
||||||
@@ -4069,8 +4069,8 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
||||||
|
|
||||||
js-yaml@^3.7.0:
|
js-yaml@^3.7.0:
|
||||||
version "3.11.0"
|
version "3.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
|
||||||
dependencies:
|
dependencies:
|
||||||
argparse "^1.0.7"
|
argparse "^1.0.7"
|
||||||
esprima "^4.0.0"
|
esprima "^4.0.0"
|
||||||
@@ -4661,14 +4661,18 @@ micromatch@^3.1.4, micromatch@^3.1.8:
|
|||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.2"
|
to-regex "^3.0.2"
|
||||||
|
|
||||||
"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0:
|
"mime-db@>= 1.34.0 < 2":
|
||||||
version "1.33.0"
|
version "1.34.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.34.0.tgz#452d0ecff5c30346a6dc1e64b1eaee0d3719ff9a"
|
||||||
|
|
||||||
mime-db@~1.23.0:
|
mime-db@~1.23.0:
|
||||||
version "1.23.0"
|
version "1.23.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
|
||||||
|
|
||||||
|
mime-db@~1.33.0:
|
||||||
|
version "1.33.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
|
||||||
|
|
||||||
mime-types@2.1.11:
|
mime-types@2.1.11:
|
||||||
version "2.1.11"
|
version "2.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
|
||||||
@@ -4750,8 +4754,8 @@ mkdirp@*, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
|
|||||||
minimist "0.0.8"
|
minimist "0.0.8"
|
||||||
|
|
||||||
moment@2.x.x, moment@^2.10.6:
|
moment@2.x.x, moment@^2.10.6:
|
||||||
version "2.22.1"
|
version "2.22.2"
|
||||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad"
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
|
||||||
|
|
||||||
morgan@^1.9.0:
|
morgan@^1.9.0:
|
||||||
version "1.9.0"
|
version "1.9.0"
|
||||||
@@ -4944,8 +4948,8 @@ number-is-nan@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||||
|
|
||||||
nwsapi@^2.0.0:
|
nwsapi@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.0.tgz#7c8faf4ad501e1d17a651ebc5547f966b547c5c7"
|
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.1.tgz#a50d59a2dcb14b6931401171713ced2d0eb3468f"
|
||||||
|
|
||||||
oauth-sign@~0.8.2:
|
oauth-sign@~0.8.2:
|
||||||
version "0.8.2"
|
version "0.8.2"
|
||||||
@@ -5378,7 +5382,7 @@ prop-types@15.5.8:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fbjs "^0.8.9"
|
fbjs "^0.8.9"
|
||||||
|
|
||||||
prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0:
|
prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1:
|
||||||
version "15.6.1"
|
version "15.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
|
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5414,6 +5418,10 @@ pseudomap@^1.0.1, pseudomap@^1.0.2:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||||
|
|
||||||
|
psl@^1.1.24:
|
||||||
|
version "1.1.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.27.tgz#2b2c77019db86855170d903532400bf71ee085b6"
|
||||||
|
|
||||||
punycode@1.3.2:
|
punycode@1.3.2:
|
||||||
version "1.3.2"
|
version "1.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
||||||
@@ -5487,10 +5495,10 @@ raw-body@2.3.3, raw-body@^2.2.0:
|
|||||||
unpipe "1.0.0"
|
unpipe "1.0.0"
|
||||||
|
|
||||||
rc@^1.1.7:
|
rc@^1.1.7:
|
||||||
version "1.2.7"
|
version "1.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297"
|
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||||
dependencies:
|
dependencies:
|
||||||
deep-extend "^0.5.1"
|
deep-extend "^0.6.0"
|
||||||
ini "~1.3.0"
|
ini "~1.3.0"
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
strip-json-comments "~2.0.1"
|
strip-json-comments "~2.0.1"
|
||||||
@@ -5648,13 +5656,19 @@ react-native-svg@6.2.2:
|
|||||||
lodash "^4.16.6"
|
lodash "^4.16.6"
|
||||||
pegjs "^0.10.0"
|
pegjs "^0.10.0"
|
||||||
|
|
||||||
react-native-tab-view@^0.0.74:
|
react-native-tab-view@^0.0.77:
|
||||||
version "0.0.74"
|
version "0.0.77"
|
||||||
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-0.0.74.tgz#62c0c882d9232b461ce181d440d683b4f99d1bd8"
|
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-0.0.77.tgz#11ceb8e7c23100d07e628dc151b57797524d00d4"
|
||||||
dependencies:
|
dependencies:
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.0"
|
||||||
|
|
||||||
react-native-tab-view@~0.0.77, react-native-tab-view@~0.0.78:
|
react-native-tab-view@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.0.2.tgz#66e0bc6d38a227ed2b212e3a256b7902f6ce02ed"
|
||||||
|
dependencies:
|
||||||
|
prop-types "^15.6.1"
|
||||||
|
|
||||||
|
react-native-tab-view@~0.0.77:
|
||||||
version "0.0.78"
|
version "0.0.78"
|
||||||
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-0.0.78.tgz#9b90730d89cbd34a03f0e0ab10e74ca7af945560"
|
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-0.0.78.tgz#9b90730d89cbd34a03f0e0ab10e74ca7af945560"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5738,11 +5752,17 @@ react-native@^0.55.0:
|
|||||||
xmldoc "^0.4.0"
|
xmldoc "^0.4.0"
|
||||||
yargs "^9.0.0"
|
yargs "^9.0.0"
|
||||||
|
|
||||||
react-navigation-deprecated-tab-navigator@1.2.0:
|
react-navigation-deprecated-tab-navigator@1.3.0:
|
||||||
version "1.2.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-navigation-deprecated-tab-navigator/-/react-navigation-deprecated-tab-navigator-1.2.0.tgz#e0d969c196dcd3a4a440770a7bd97fa058eb4aaf"
|
resolved "https://registry.yarnpkg.com/react-navigation-deprecated-tab-navigator/-/react-navigation-deprecated-tab-navigator-1.3.0.tgz#015dcae1e977b984ca7e99245261c15439026bb7"
|
||||||
dependencies:
|
dependencies:
|
||||||
react-native-tab-view "^0.0.74"
|
react-native-tab-view "^0.0.77"
|
||||||
|
|
||||||
|
react-navigation-drawer@0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-navigation-drawer/-/react-navigation-drawer-0.2.0.tgz#906f78c35f82f6ee39c3ca1d275f1a71e80e2c57"
|
||||||
|
dependencies:
|
||||||
|
react-native-drawer-layout-polyfill "^1.3.2"
|
||||||
|
|
||||||
react-navigation-header-buttons@^0.0.4:
|
react-navigation-header-buttons@^0.0.4:
|
||||||
version "0.0.4"
|
version "0.0.4"
|
||||||
@@ -5769,15 +5789,15 @@ react-navigation-tabs@0.2.0-rc.0:
|
|||||||
react-native-safe-area-view "^0.7.0"
|
react-native-safe-area-view "^0.7.0"
|
||||||
react-native-tab-view "~0.0.77"
|
react-native-tab-view "~0.0.77"
|
||||||
|
|
||||||
react-navigation-tabs@0.3.0:
|
react-navigation-tabs@0.5.0:
|
||||||
version "0.3.0"
|
version "0.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-0.3.0.tgz#b1fe7ef1c665dd8928fafcc8622616e220ae5efa"
|
resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-0.5.0.tgz#74d5511270742a0b67c46fe65a1b19e553763819"
|
||||||
dependencies:
|
dependencies:
|
||||||
hoist-non-react-statics "^2.5.0"
|
hoist-non-react-statics "^2.5.0"
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.1"
|
||||||
react-lifecycles-compat "^3.0.4"
|
react-lifecycles-compat "^3.0.4"
|
||||||
react-native-safe-area-view "^0.7.0"
|
react-native-safe-area-view "^0.7.0"
|
||||||
react-native-tab-view "~0.0.78"
|
react-native-tab-view "^1.0.0"
|
||||||
|
|
||||||
"react-navigation@link:../..":
|
"react-navigation@link:../..":
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
@@ -5955,8 +5975,8 @@ regenerator-transform@^0.10.0:
|
|||||||
private "^0.1.6"
|
private "^0.1.6"
|
||||||
|
|
||||||
regenerator-transform@^0.12.3:
|
regenerator-transform@^0.12.3:
|
||||||
version "0.12.3"
|
version "0.12.4"
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.12.3.tgz#459adfb64f6a27164ab991b7873f45ab969eca8b"
|
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.12.4.tgz#aa9b6c59f4b97be080e972506c560b3bccbfcff0"
|
||||||
dependencies:
|
dependencies:
|
||||||
private "^0.1.6"
|
private "^0.1.6"
|
||||||
|
|
||||||
@@ -6189,7 +6209,7 @@ safe-regex@^1.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ret "~0.1.10"
|
ret "~0.1.10"
|
||||||
|
|
||||||
"safer-buffer@>= 2.1.2 < 3":
|
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
|
|
||||||
@@ -6491,13 +6511,14 @@ sprintf-js@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||||
|
|
||||||
sshpk@^1.7.0:
|
sshpk@^1.7.0:
|
||||||
version "1.14.1"
|
version "1.14.2"
|
||||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb"
|
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
|
||||||
dependencies:
|
dependencies:
|
||||||
asn1 "~0.2.3"
|
asn1 "~0.2.3"
|
||||||
assert-plus "^1.0.0"
|
assert-plus "^1.0.0"
|
||||||
dashdash "^1.12.0"
|
dashdash "^1.12.0"
|
||||||
getpass "^0.1.1"
|
getpass "^0.1.1"
|
||||||
|
safer-buffer "^2.0.2"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
bcrypt-pbkdf "^1.0.0"
|
bcrypt-pbkdf "^1.0.0"
|
||||||
ecc-jsbn "~0.1.1"
|
ecc-jsbn "~0.1.1"
|
||||||
@@ -6807,7 +6828,14 @@ topo@2.x.x:
|
|||||||
dependencies:
|
dependencies:
|
||||||
hoek "4.x.x"
|
hoek "4.x.x"
|
||||||
|
|
||||||
tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.3:
|
tough-cookie@>=2.3.3, tough-cookie@^2.3.3:
|
||||||
|
version "2.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.2.tgz#aa9133154518b494efab98a58247bfc38818c00c"
|
||||||
|
dependencies:
|
||||||
|
psl "^1.1.24"
|
||||||
|
punycode "^1.4.1"
|
||||||
|
|
||||||
|
tough-cookie@~2.3.3:
|
||||||
version "2.3.4"
|
version "2.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -7069,8 +7097,8 @@ which-module@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||||
|
|
||||||
which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
|
which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
|
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { StackNavigator } from 'react-navigation';
|
import { createStackNavigator } from 'react-navigation';
|
||||||
import { initializeListeners } from 'react-navigation-redux-helpers';
|
import { initializeListeners } from 'react-navigation-redux-helpers';
|
||||||
|
|
||||||
import LoginScreen from '../components/LoginScreen';
|
import LoginScreen from '../components/LoginScreen';
|
||||||
@@ -9,7 +9,7 @@ import MainScreen from '../components/MainScreen';
|
|||||||
import ProfileScreen from '../components/ProfileScreen';
|
import ProfileScreen from '../components/ProfileScreen';
|
||||||
import { navigationPropConstructor } from '../utils/redux';
|
import { navigationPropConstructor } from '../utils/redux';
|
||||||
|
|
||||||
export const AppNavigator = StackNavigator({
|
export const AppNavigator = createStackNavigator({
|
||||||
Login: { screen: LoginScreen },
|
Login: { screen: LoginScreen },
|
||||||
Main: { screen: MainScreen },
|
Main: { screen: MainScreen },
|
||||||
Profile: { screen: ProfileScreen },
|
Profile: { screen: ProfileScreen },
|
||||||
|
|||||||
204
flow/react-navigation.js
vendored
204
flow/react-navigation.js
vendored
@@ -69,6 +69,14 @@ declare module 'react-navigation' {
|
|||||||
[key: string]: mixed,
|
[key: string]: mixed,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
declare export type NavigationBackAction = {|
|
||||||
|
type: 'Navigation/BACK',
|
||||||
|
key?: ?string,
|
||||||
|
|};
|
||||||
|
declare export type NavigationInitAction = {|
|
||||||
|
type: 'Navigation/INIT',
|
||||||
|
params?: NavigationParams,
|
||||||
|
|};
|
||||||
declare export type NavigationNavigateAction = {|
|
declare export type NavigationNavigateAction = {|
|
||||||
type: 'Navigation/NAVIGATE',
|
type: 'Navigation/NAVIGATE',
|
||||||
routeName: string,
|
routeName: string,
|
||||||
@@ -79,12 +87,6 @@ declare module 'react-navigation' {
|
|||||||
|
|
||||||
key?: string,
|
key?: string,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare export type NavigationBackAction = {|
|
|
||||||
type: 'Navigation/BACK',
|
|
||||||
key?: ?string,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationSetParamsAction = {|
|
declare export type NavigationSetParamsAction = {|
|
||||||
type: 'Navigation/SET_PARAMS',
|
type: 'Navigation/SET_PARAMS',
|
||||||
|
|
||||||
@@ -95,30 +97,6 @@ declare module 'react-navigation' {
|
|||||||
params: NavigationParams,
|
params: NavigationParams,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare export type NavigationInitAction = {|
|
|
||||||
type: 'Navigation/INIT',
|
|
||||||
params?: NavigationParams,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationResetAction = {|
|
|
||||||
type: 'Navigation/RESET',
|
|
||||||
index: number,
|
|
||||||
key?: ?string,
|
|
||||||
actions: Array<NavigationNavigateAction>,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationUriAction = {|
|
|
||||||
type: 'Navigation/URI',
|
|
||||||
uri: string,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationReplaceAction = {|
|
|
||||||
+type: 'Navigation/REPLACE',
|
|
||||||
+key: string,
|
|
||||||
+routeName: string,
|
|
||||||
+params?: NavigationParams,
|
|
||||||
+action?: NavigationNavigateAction,
|
|
||||||
|};
|
|
||||||
declare export type NavigationPopAction = {|
|
declare export type NavigationPopAction = {|
|
||||||
+type: 'Navigation/POP',
|
+type: 'Navigation/POP',
|
||||||
+n?: number,
|
+n?: number,
|
||||||
@@ -135,17 +113,51 @@ declare module 'react-navigation' {
|
|||||||
+action?: NavigationNavigateAction,
|
+action?: NavigationNavigateAction,
|
||||||
+key?: string,
|
+key?: string,
|
||||||
|};
|
|};
|
||||||
|
declare export type NavigationResetAction = {|
|
||||||
|
type: 'Navigation/RESET',
|
||||||
|
index: number,
|
||||||
|
key?: ?string,
|
||||||
|
actions: Array<NavigationNavigateAction>,
|
||||||
|
|};
|
||||||
|
declare export type NavigationReplaceAction = {|
|
||||||
|
+type: 'Navigation/REPLACE',
|
||||||
|
+key: string,
|
||||||
|
+routeName: string,
|
||||||
|
+params?: NavigationParams,
|
||||||
|
+action?: NavigationNavigateAction,
|
||||||
|
|};
|
||||||
|
declare export type NavigationCompleteTransitionAction = {|
|
||||||
|
+type: 'Navigation/COMPLETE_TRANSITION',
|
||||||
|
+key?: string,
|
||||||
|
|};
|
||||||
|
|
||||||
|
declare export type NavigationOpenDrawerAction = {|
|
||||||
|
+type: 'Navigation/OPEN_DRAWER',
|
||||||
|
+key?: string,
|
||||||
|
|};
|
||||||
|
declare export type NavigationCloseDrawerAction = {|
|
||||||
|
+type: 'Navigation/CLOSE_DRAWER',
|
||||||
|
+key?: string,
|
||||||
|
|};
|
||||||
|
declare export type NavigationToggleDrawerAction = {|
|
||||||
|
+type: 'Navigation/TOGGLE_DRAWER',
|
||||||
|
+key?: string,
|
||||||
|
|};
|
||||||
|
|
||||||
declare export type NavigationAction =
|
declare export type NavigationAction =
|
||||||
|
| NavigationBackAction
|
||||||
| NavigationInitAction
|
| NavigationInitAction
|
||||||
| NavigationNavigateAction
|
| NavigationNavigateAction
|
||||||
| NavigationReplaceAction
|
| NavigationSetParamsAction
|
||||||
| NavigationPopAction
|
| NavigationPopAction
|
||||||
| NavigationPopToTopAction
|
| NavigationPopToTopAction
|
||||||
| NavigationPushAction
|
| NavigationPushAction
|
||||||
| NavigationBackAction
|
| NavigationResetAction
|
||||||
| NavigationSetParamsAction
|
| NavigationReplaceAction
|
||||||
| NavigationResetAction;
|
| NavigationCompleteTransitionAction
|
||||||
|
| NavigationOpenDrawerAction
|
||||||
|
| NavigationCloseDrawerAction
|
||||||
|
| NavigationToggleDrawerAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NavigationState is a tree of routes for a single navigator, where each
|
* NavigationState is a tree of routes for a single navigator, where each
|
||||||
@@ -271,6 +283,10 @@ declare module 'react-navigation' {
|
|||||||
| NavigationScreenComponent<NavigationRoute, *, *>
|
| NavigationScreenComponent<NavigationRoute, *, *>
|
||||||
| NavigationContainer<*, *, *>;
|
| NavigationContainer<*, *, *>;
|
||||||
|
|
||||||
|
declare interface withOptionalNavigationOptions<Options> {
|
||||||
|
navigationOptions?: NavigationScreenConfig<Options>,
|
||||||
|
}
|
||||||
|
|
||||||
declare export type NavigationScreenComponent<
|
declare export type NavigationScreenComponent<
|
||||||
Route: NavigationRoute,
|
Route: NavigationRoute,
|
||||||
Options: {},
|
Options: {},
|
||||||
@@ -278,8 +294,11 @@ declare module 'react-navigation' {
|
|||||||
> = React$ComponentType<{
|
> = React$ComponentType<{
|
||||||
...Props,
|
...Props,
|
||||||
...NavigationNavigatorProps<Options, Route>,
|
...NavigationNavigatorProps<Options, Route>,
|
||||||
}> &
|
}> & withOptionalNavigationOptions<Options>;
|
||||||
({} | { navigationOptions: NavigationScreenConfig<Options> });
|
|
||||||
|
declare interface withRouter<State, Options> {
|
||||||
|
router: NavigationRouter<State, Options>,
|
||||||
|
}
|
||||||
|
|
||||||
declare export type NavigationNavigator<
|
declare export type NavigationNavigator<
|
||||||
State: NavigationState,
|
State: NavigationState,
|
||||||
@@ -288,10 +307,7 @@ declare module 'react-navigation' {
|
|||||||
> = React$ComponentType<{
|
> = React$ComponentType<{
|
||||||
...Props,
|
...Props,
|
||||||
...NavigationNavigatorProps<Options, State>,
|
...NavigationNavigatorProps<Options, State>,
|
||||||
}> & {
|
}> & withRouter<State, Options> & withOptionalNavigationOptions<Options>;
|
||||||
router: NavigationRouter<State, Options>,
|
|
||||||
navigationOptions?: ?NavigationScreenConfig<Options>,
|
|
||||||
};
|
|
||||||
|
|
||||||
declare export type NavigationRouteConfig =
|
declare export type NavigationRouteConfig =
|
||||||
| NavigationComponent
|
| NavigationComponent
|
||||||
@@ -537,10 +553,7 @@ declare module 'react-navigation' {
|
|||||||
> = React$ComponentType<{
|
> = React$ComponentType<{
|
||||||
...Props,
|
...Props,
|
||||||
...NavigationContainerProps<State, Options>,
|
...NavigationContainerProps<State, Options>,
|
||||||
}> & {
|
}> & withRouter<State, Options> & withOptionalNavigationOptions<Options>;
|
||||||
router: NavigationRouter<State, Options>,
|
|
||||||
navigationOptions?: ?NavigationScreenConfig<Options>,
|
|
||||||
};
|
|
||||||
|
|
||||||
declare export type NavigationContainerProps<S: {}, O: {}> = $Shape<{
|
declare export type NavigationContainerProps<S: {}, O: {}> = $Shape<{
|
||||||
uriPrefix?: string | RegExp,
|
uriPrefix?: string | RegExp,
|
||||||
@@ -709,44 +722,73 @@ declare module 'react-navigation' {
|
|||||||
BACK: 'Navigation/BACK',
|
BACK: 'Navigation/BACK',
|
||||||
INIT: 'Navigation/INIT',
|
INIT: 'Navigation/INIT',
|
||||||
NAVIGATE: 'Navigation/NAVIGATE',
|
NAVIGATE: 'Navigation/NAVIGATE',
|
||||||
RESET: 'Navigation/RESET',
|
|
||||||
SET_PARAMS: 'Navigation/SET_PARAMS',
|
SET_PARAMS: 'Navigation/SET_PARAMS',
|
||||||
URI: 'Navigation/URI',
|
|
||||||
back: {
|
back: (payload?: { key?: ?string }) => NavigationBackAction,
|
||||||
(payload?: { key?: ?string }): NavigationBackAction,
|
init: (payload?: { params?: NavigationParams }) => NavigationInitAction,
|
||||||
toString: () => string,
|
navigate: (payload: {
|
||||||
},
|
routeName: string,
|
||||||
init: {
|
params?: ?NavigationParams,
|
||||||
(payload?: { params?: NavigationParams }): NavigationInitAction,
|
action?: ?NavigationNavigateAction,
|
||||||
toString: () => string,
|
key?: string,
|
||||||
},
|
}) => NavigationNavigateAction,
|
||||||
navigate: {
|
setParams: (payload: {
|
||||||
(payload: {
|
key: string,
|
||||||
routeName: string,
|
params: NavigationParams,
|
||||||
params?: ?NavigationParams,
|
}) => NavigationSetParamsAction,
|
||||||
action?: ?NavigationNavigateAction,
|
};
|
||||||
}): NavigationNavigateAction,
|
|
||||||
toString: () => string,
|
declare export var StackActions: {
|
||||||
},
|
POP: 'Navigation/POP',
|
||||||
reset: {
|
POP_TO_TOP: 'Navigation/POP_TO_TOP',
|
||||||
(payload: {
|
PUSH: 'Navigation/PUSH',
|
||||||
index: number,
|
RESET: 'Navigation/RESET',
|
||||||
key?: ?string,
|
REPLACE: 'Navigation/REPLACE',
|
||||||
actions: Array<NavigationNavigateAction>,
|
COMPLETE_TRANSITION: 'Navigation/COMPLETE_TRANSITION',
|
||||||
}): NavigationResetAction,
|
|
||||||
toString: () => string,
|
pop: (payload: {
|
||||||
},
|
n?: number,
|
||||||
setParams: {
|
immediate?: boolean,
|
||||||
(payload: {
|
}) => NavigationPopAction,
|
||||||
key: string,
|
popToTop: (payload: {
|
||||||
params: NavigationParams,
|
immediate?: boolean,
|
||||||
}): NavigationSetParamsAction,
|
}) => NavigationPopToTopAction,
|
||||||
toString: () => string,
|
push: (payload: {
|
||||||
},
|
routeName: string,
|
||||||
uri: {
|
params?: NavigationParams,
|
||||||
(payload: { uri: string }): NavigationUriAction,
|
action?: NavigationNavigateAction,
|
||||||
toString: () => string,
|
key?: string,
|
||||||
},
|
}) => NavigationPushAction,
|
||||||
|
reset: (payload: {
|
||||||
|
index: number,
|
||||||
|
key?: ?string,
|
||||||
|
actions: Array<NavigationNavigateAction>,
|
||||||
|
}) => NavigationResetAction,
|
||||||
|
replace: (payload: {
|
||||||
|
key: string,
|
||||||
|
routeName: string,
|
||||||
|
params?: NavigationParams,
|
||||||
|
action?: NavigationNavigateAction,
|
||||||
|
}) => NavigationReplaceAction,
|
||||||
|
completeTransition: (payload: {
|
||||||
|
key?: string,
|
||||||
|
}) => NavigationCompleteTransitionAction,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare export var DrawerActions: {
|
||||||
|
OPEN_DRAWER: 'Navigation/OPEN_DRAWER',
|
||||||
|
CLOSE_DRAWER: 'Navigation/CLOSE_DRAWER',
|
||||||
|
TOGGLE_DRAWER: 'Navigation/TOGGLE_DRAWER',
|
||||||
|
|
||||||
|
openDrawer: (payload: {
|
||||||
|
key?: string,
|
||||||
|
}) => NavigationOpenDrawerAction,
|
||||||
|
closeDrawer: (payload: {
|
||||||
|
key?: string,
|
||||||
|
}) => NavigationCloseDrawerAction,
|
||||||
|
toggleDrawer: (payload: {
|
||||||
|
key?: string,
|
||||||
|
}) => NavigationToggleDrawerAction,
|
||||||
};
|
};
|
||||||
|
|
||||||
declare type _DefaultActionCreators = {|
|
declare type _DefaultActionCreators = {|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "react-navigation",
|
"name": "react-navigation",
|
||||||
"version": "2.0.4",
|
"version": "2.2.3",
|
||||||
"description": "Routing and navigation for your React Native apps",
|
"description": "Routing and navigation for your React Native apps",
|
||||||
"main": "src/react-navigation.js",
|
"main": "src/react-navigation.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -35,10 +35,10 @@
|
|||||||
"path-to-regexp": "^1.7.0",
|
"path-to-regexp": "^1.7.0",
|
||||||
"prop-types": "^15.5.10",
|
"prop-types": "^15.5.10",
|
||||||
"react-lifecycles-compat": "^3",
|
"react-lifecycles-compat": "^3",
|
||||||
"react-native-drawer-layout-polyfill": "^1.3.2",
|
|
||||||
"react-native-safe-area-view": "^0.8.0",
|
"react-native-safe-area-view": "^0.8.0",
|
||||||
"react-navigation-deprecated-tab-navigator": "1.3.0",
|
"react-navigation-deprecated-tab-navigator": "1.3.0",
|
||||||
"react-navigation-tabs": "0.3.0"
|
"react-navigation-drawer": "0.2.1",
|
||||||
|
"react-navigation-tabs": "0.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-cli": "^6.24.1",
|
"babel-cli": "^6.24.1",
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ set -eo pipefail
|
|||||||
|
|
||||||
case $CIRCLE_NODE_INDEX in
|
case $CIRCLE_NODE_INDEX in
|
||||||
0) yarn test && yarn codecov ;;
|
0) yarn test && yarn codecov ;;
|
||||||
1) cd examples/NavigationPlayground && yarn && yarn test ;;
|
#1) cd examples/NavigationPlayground && yarn && yarn test ;;
|
||||||
#2) cd examples/ReduxExample && yarn && yarn test ;;
|
#2) cd examples/ReduxExample && yarn && yarn test ;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
import React, { Component } from 'react';
|
|
||||||
import { View } from 'react-native';
|
|
||||||
import renderer from 'react-test-renderer';
|
|
||||||
|
|
||||||
import DrawerNavigator from '../createDrawerNavigator';
|
|
||||||
|
|
||||||
class HomeScreen extends Component {
|
|
||||||
static navigationOptions = ({ navigation }) => ({
|
|
||||||
title: `Welcome ${
|
|
||||||
navigation.state.params ? navigation.state.params.user : 'anonymous'
|
|
||||||
}`,
|
|
||||||
gesturesEnabled: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const routeConfig = {
|
|
||||||
Home: {
|
|
||||||
screen: HomeScreen,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('DrawerNavigator', () => {
|
|
||||||
it('renders successfully', () => {
|
|
||||||
const MyDrawerNavigator = DrawerNavigator(routeConfig);
|
|
||||||
const rendered = renderer.create(<MyDrawerNavigator />).toJSON();
|
|
||||||
|
|
||||||
expect(rendered).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,243 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`DrawerNavigator renders successfully 1`] = `
|
|
||||||
<View
|
|
||||||
onMoveShouldSetResponder={[Function]}
|
|
||||||
onMoveShouldSetResponderCapture={[Function]}
|
|
||||||
onResponderEnd={[Function]}
|
|
||||||
onResponderGrant={[Function]}
|
|
||||||
onResponderMove={[Function]}
|
|
||||||
onResponderReject={[Function]}
|
|
||||||
onResponderRelease={[Function]}
|
|
||||||
onResponderStart={[Function]}
|
|
||||||
onResponderTerminate={[Function]}
|
|
||||||
onResponderTerminationRequest={[Function]}
|
|
||||||
onStartShouldSetResponder={[Function]}
|
|
||||||
onStartShouldSetResponderCapture={[Function]}
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"flex": 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
collapsable={undefined}
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"flex": 1,
|
|
||||||
"zIndex": 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<View
|
|
||||||
accessibilityComponentType={undefined}
|
|
||||||
accessibilityLabel={undefined}
|
|
||||||
accessibilityTraits={undefined}
|
|
||||||
accessible={true}
|
|
||||||
collapsable={undefined}
|
|
||||||
hitSlop={undefined}
|
|
||||||
nativeID={undefined}
|
|
||||||
onLayout={undefined}
|
|
||||||
onResponderGrant={[Function]}
|
|
||||||
onResponderMove={[Function]}
|
|
||||||
onResponderRelease={[Function]}
|
|
||||||
onResponderTerminate={[Function]}
|
|
||||||
onResponderTerminationRequest={[Function]}
|
|
||||||
onStartShouldSetResponder={[Function]}
|
|
||||||
pointerEvents="none"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"backgroundColor": "#000",
|
|
||||||
"bottom": 0,
|
|
||||||
"left": 0,
|
|
||||||
"opacity": 0,
|
|
||||||
"position": "absolute",
|
|
||||||
"right": 0,
|
|
||||||
"top": 0,
|
|
||||||
"zIndex": 1000,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
testID={undefined}
|
|
||||||
/>
|
|
||||||
<View
|
|
||||||
accessibilityViewIsModal={false}
|
|
||||||
collapsable={undefined}
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"backgroundColor": "white",
|
|
||||||
"bottom": 0,
|
|
||||||
"left": 0,
|
|
||||||
"position": "absolute",
|
|
||||||
"right": null,
|
|
||||||
"top": 0,
|
|
||||||
"transform": Array [
|
|
||||||
Object {
|
|
||||||
"translateX": -320,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"width": 320,
|
|
||||||
"zIndex": 1001,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"flex": 1,
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<RCTScrollView
|
|
||||||
DEPRECATED_sendUpdatedChildFrames={false}
|
|
||||||
alwaysBounceHorizontal={undefined}
|
|
||||||
alwaysBounceVertical={false}
|
|
||||||
onContentSizeChange={null}
|
|
||||||
onMomentumScrollBegin={[Function]}
|
|
||||||
onMomentumScrollEnd={[Function]}
|
|
||||||
onResponderGrant={[Function]}
|
|
||||||
onResponderReject={[Function]}
|
|
||||||
onResponderRelease={[Function]}
|
|
||||||
onResponderTerminate={undefined}
|
|
||||||
onResponderTerminationRequest={[Function]}
|
|
||||||
onScroll={[Function]}
|
|
||||||
onScrollBeginDrag={[Function]}
|
|
||||||
onScrollEndDrag={[Function]}
|
|
||||||
onScrollShouldSetResponder={[Function]}
|
|
||||||
onStartShouldSetResponder={[Function]}
|
|
||||||
onStartShouldSetResponderCapture={[Function]}
|
|
||||||
onTouchCancel={[Function]}
|
|
||||||
onTouchEnd={[Function]}
|
|
||||||
onTouchMove={[Function]}
|
|
||||||
onTouchStart={[Function]}
|
|
||||||
scrollEventThrottle={undefined}
|
|
||||||
sendMomentumEvents={false}
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"flexDirection": "column",
|
|
||||||
"flexGrow": 1,
|
|
||||||
"flexShrink": 1,
|
|
||||||
"overflow": "scroll",
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<RCTScrollContentView
|
|
||||||
collapsable={false}
|
|
||||||
removeClippedSubviews={undefined}
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
collapsable={undefined}
|
|
||||||
onLayout={[Function]}
|
|
||||||
pointerEvents="box-none"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"paddingBottom": 0,
|
|
||||||
"paddingLeft": 0,
|
|
||||||
"paddingRight": 0,
|
|
||||||
"paddingTop": 20,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"paddingVertical": 4,
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
accessibilityComponentType={undefined}
|
|
||||||
accessibilityLabel={undefined}
|
|
||||||
accessibilityTraits={undefined}
|
|
||||||
accessible={true}
|
|
||||||
collapsable={undefined}
|
|
||||||
hasTVPreferredFocus={undefined}
|
|
||||||
hitSlop={undefined}
|
|
||||||
isTVSelectable={true}
|
|
||||||
nativeID={undefined}
|
|
||||||
onLayout={undefined}
|
|
||||||
onResponderGrant={[Function]}
|
|
||||||
onResponderMove={[Function]}
|
|
||||||
onResponderRelease={[Function]}
|
|
||||||
onResponderTerminate={[Function]}
|
|
||||||
onResponderTerminationRequest={[Function]}
|
|
||||||
onStartShouldSetResponder={[Function]}
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"opacity": 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
testID={undefined}
|
|
||||||
tvParallaxProperties={undefined}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
collapsable={undefined}
|
|
||||||
onLayout={[Function]}
|
|
||||||
pointerEvents="box-none"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"backgroundColor": "rgba(0, 0, 0, .04)",
|
|
||||||
"paddingBottom": 0,
|
|
||||||
"paddingLeft": 0,
|
|
||||||
"paddingRight": 0,
|
|
||||||
"paddingTop": 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<View
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"alignItems": "center",
|
|
||||||
"flexDirection": "row",
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<Text
|
|
||||||
accessible={true}
|
|
||||||
allowFontScaling={true}
|
|
||||||
ellipsizeMode="tail"
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"fontWeight": "bold",
|
|
||||||
"margin": 16,
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"color": "#2196f3",
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
>
|
|
||||||
Welcome anonymous
|
|
||||||
</Text>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</RCTScrollContentView>
|
|
||||||
</RCTScrollView>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
`;
|
|
||||||
@@ -2,12 +2,7 @@
|
|||||||
|
|
||||||
exports[`TabNavigator renders successfully 1`] = `
|
exports[`TabNavigator renders successfully 1`] = `
|
||||||
<View
|
<View
|
||||||
loaded={
|
collapsable={false}
|
||||||
Array [
|
|
||||||
0,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
onLayout={[Function]}
|
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
Object {
|
Object {
|
||||||
@@ -21,56 +16,65 @@ exports[`TabNavigator renders successfully 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
collapsable={undefined}
|
onLayout={[Function]}
|
||||||
onMoveShouldSetResponder={[Function]}
|
|
||||||
onMoveShouldSetResponderCapture={[Function]}
|
|
||||||
onResponderEnd={[Function]}
|
|
||||||
onResponderGrant={[Function]}
|
|
||||||
onResponderMove={[Function]}
|
|
||||||
onResponderReject={[Function]}
|
|
||||||
onResponderRelease={[Function]}
|
|
||||||
onResponderStart={[Function]}
|
|
||||||
onResponderTerminate={[Function]}
|
|
||||||
onResponderTerminationRequest={[Function]}
|
|
||||||
onStartShouldSetResponder={[Function]}
|
|
||||||
onStartShouldSetResponderCapture={[Function]}
|
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"alignItems": "stretch",
|
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
"flexDirection": "row",
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
|
collapsable={undefined}
|
||||||
|
onMoveShouldSetResponder={[Function]}
|
||||||
|
onMoveShouldSetResponderCapture={[Function]}
|
||||||
|
onResponderEnd={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderReject={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderStart={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
onStartShouldSetResponderCapture={[Function]}
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"bottom": 0,
|
"alignItems": "stretch",
|
||||||
"left": 0,
|
"flex": 1,
|
||||||
"position": "absolute",
|
"flexDirection": "row",
|
||||||
"right": 0,
|
|
||||||
"top": 0,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testID={undefined}
|
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
collapsable={false}
|
|
||||||
removeClippedSubviews={false}
|
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"bottom": 0,
|
||||||
"overflow": "hidden",
|
"left": 0,
|
||||||
|
"position": "absolute",
|
||||||
|
"right": 0,
|
||||||
|
"top": 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
testID={undefined}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
|
collapsable={false}
|
||||||
|
removeClippedSubviews={false}
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
"overflow": "hidden",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/>
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"flex": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import { Dimensions, Platform, ScrollView } from 'react-native';
|
|
||||||
import SafeAreaView from 'react-native-safe-area-view';
|
|
||||||
|
|
||||||
import createNavigator from './createNavigator';
|
|
||||||
import createNavigationContainer from '../createNavigationContainer';
|
|
||||||
import DrawerRouter from '../routers/DrawerRouter';
|
|
||||||
import DrawerView from '../views/Drawer/DrawerView';
|
|
||||||
import DrawerItems from '../views/Drawer/DrawerNavigatorItems';
|
|
||||||
|
|
||||||
// A stack navigators props are the intersection between
|
|
||||||
// the base navigator props (navgiation, screenProps, etc)
|
|
||||||
// and the view's props
|
|
||||||
|
|
||||||
const defaultContentComponent = props => (
|
|
||||||
<ScrollView alwaysBounceVertical={false}>
|
|
||||||
<SafeAreaView forceInset={{ top: 'always', horizontal: 'never' }}>
|
|
||||||
<DrawerItems {...props} />
|
|
||||||
</SafeAreaView>
|
|
||||||
</ScrollView>
|
|
||||||
);
|
|
||||||
|
|
||||||
const DefaultDrawerConfig = {
|
|
||||||
drawerWidth: () => {
|
|
||||||
/*
|
|
||||||
* Default drawer width is screen width - header height
|
|
||||||
* with a max width of 280 on mobile and 320 on tablet
|
|
||||||
* https://material.io/guidelines/patterns/navigation-drawer.html
|
|
||||||
*/
|
|
||||||
const { height, width } = Dimensions.get('window');
|
|
||||||
const smallerAxisSize = Math.min(height, width);
|
|
||||||
const isLandscape = width > height;
|
|
||||||
const isTablet = smallerAxisSize >= 600;
|
|
||||||
const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;
|
|
||||||
const maxWidth = isTablet ? 320 : 280;
|
|
||||||
|
|
||||||
return Math.min(smallerAxisSize - appBarHeight, maxWidth);
|
|
||||||
},
|
|
||||||
contentComponent: defaultContentComponent,
|
|
||||||
drawerPosition: 'left',
|
|
||||||
drawerBackgroundColor: 'white',
|
|
||||||
useNativeAnimations: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
const DrawerNavigator = (routeConfigs, config = {}) => {
|
|
||||||
const mergedConfig = { ...DefaultDrawerConfig, ...config };
|
|
||||||
|
|
||||||
const {
|
|
||||||
order,
|
|
||||||
paths,
|
|
||||||
initialRouteName,
|
|
||||||
backBehavior,
|
|
||||||
...drawerConfig
|
|
||||||
} = mergedConfig;
|
|
||||||
|
|
||||||
const routerConfig = {
|
|
||||||
order,
|
|
||||||
paths,
|
|
||||||
initialRouteName,
|
|
||||||
backBehavior,
|
|
||||||
};
|
|
||||||
|
|
||||||
const drawerRouter = DrawerRouter(routeConfigs, routerConfig);
|
|
||||||
|
|
||||||
const navigator = createNavigator(DrawerView, drawerRouter, drawerConfig);
|
|
||||||
|
|
||||||
return createNavigationContainer(navigator);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default DrawerNavigator;
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { polyfill } from 'react-lifecycles-compat';
|
||||||
|
|
||||||
import getChildEventSubscriber from '../getChildEventSubscriber';
|
import getChildEventSubscriber from '../getChildEventSubscriber';
|
||||||
|
|
||||||
@@ -7,21 +8,90 @@ function createNavigator(NavigatorView, router, navigationConfig) {
|
|||||||
static router = router;
|
static router = router;
|
||||||
static navigationOptions = null;
|
static navigationOptions = null;
|
||||||
|
|
||||||
childEventSubscribers = {};
|
state = {
|
||||||
|
descriptors: {},
|
||||||
|
childEventSubscribers: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
static getDerivedStateFromProps(nextProps, prevState) {
|
||||||
|
const { navigation, screenProps } = nextProps;
|
||||||
|
const { dispatch, state, addListener } = navigation;
|
||||||
|
const { routes } = state;
|
||||||
|
|
||||||
|
const descriptors = { ...prevState.descriptors };
|
||||||
|
const childEventSubscribers = { ...prevState.childEventSubscribers };
|
||||||
|
routes.forEach(route => {
|
||||||
|
if (!descriptors[route.key] || descriptors[route.key].state !== route) {
|
||||||
|
const getComponent = () =>
|
||||||
|
router.getComponentForRouteName(route.routeName);
|
||||||
|
|
||||||
|
if (!childEventSubscribers[route.key]) {
|
||||||
|
childEventSubscribers[route.key] = getChildEventSubscriber(
|
||||||
|
addListener,
|
||||||
|
route.key
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const actionCreators = {
|
||||||
|
...navigation.actions,
|
||||||
|
...router.getActionCreators(route, state.key),
|
||||||
|
};
|
||||||
|
const actionHelpers = {};
|
||||||
|
Object.keys(actionCreators).forEach(actionName => {
|
||||||
|
actionHelpers[actionName] = (...args) => {
|
||||||
|
const actionCreator = actionCreators[actionName];
|
||||||
|
const action = actionCreator(...args);
|
||||||
|
return dispatch(action);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const childNavigation = {
|
||||||
|
...actionHelpers,
|
||||||
|
actions: actionCreators,
|
||||||
|
dispatch,
|
||||||
|
state: route,
|
||||||
|
addListener: childEventSubscribers[route.key].addListener,
|
||||||
|
getParam: (paramName, defaultValue) => {
|
||||||
|
const params = route.params;
|
||||||
|
|
||||||
|
if (params && paramName in params) {
|
||||||
|
return params[paramName];
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultValue;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const options = router.getScreenOptions(childNavigation, screenProps);
|
||||||
|
descriptors[route.key] = {
|
||||||
|
key: route.key,
|
||||||
|
getComponent,
|
||||||
|
options,
|
||||||
|
state: route,
|
||||||
|
navigation: childNavigation,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
descriptors,
|
||||||
|
childEventSubscribers,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// Cleanup subscriptions for routes that no longer exist
|
// Cleanup subscriptions for routes that no longer exist
|
||||||
componentDidUpdate() {
|
componentDidUpdate() {
|
||||||
const activeKeys = this.props.navigation.state.routes.map(r => r.key);
|
const activeKeys = this.props.navigation.state.routes.map(r => r.key);
|
||||||
Object.keys(this.childEventSubscribers).forEach(key => {
|
let childEventSubscribers = { ...this.state.childEventSubscribers };
|
||||||
|
Object.keys(childEventSubscribers).forEach(key => {
|
||||||
if (!activeKeys.includes(key)) {
|
if (!activeKeys.includes(key)) {
|
||||||
delete this.childEventSubscribers[key];
|
delete childEventSubscribers[key];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
if (
|
||||||
|
childEventSubscribers.length !== this.state.childEventSubscribers.length
|
||||||
// Remove all subscription references
|
) {
|
||||||
componentWillUnmount() {
|
this.setState({ childEventSubscribers });
|
||||||
this.childEventSubscribers = {};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_isRouteFocused = route => {
|
_isRouteFocused = route => {
|
||||||
@@ -35,75 +105,33 @@ function createNavigator(NavigatorView, router, navigationConfig) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { navigation, screenProps } = this.props;
|
// Mutation in render 😩
|
||||||
const { dispatch, state, addListener } = navigation;
|
// The problem:
|
||||||
const { routes } = state;
|
// - We don't want to re-render each screen every time the parent navigator changes
|
||||||
|
// - But we need to be able to access the parent navigator from callbacks
|
||||||
const descriptors = {};
|
// - These functions should only be used within callbacks, but they are passed in props,
|
||||||
routes.forEach(route => {
|
// which is what makes this awkward. What's a good way to pass in stuff that we don't
|
||||||
const getComponent = () =>
|
// want people to depend on in render?
|
||||||
router.getComponentForRouteName(route.routeName);
|
let descriptors = { ...this.state.descriptors };
|
||||||
|
Object.values(descriptors).forEach(descriptor => {
|
||||||
if (!this.childEventSubscribers[route.key]) {
|
descriptor.navigation.isFocused = () =>
|
||||||
this.childEventSubscribers[route.key] = getChildEventSubscriber(
|
this._isRouteFocused(descriptor.state);
|
||||||
addListener,
|
descriptor.navigation.dangerouslyGetParent = this._dangerouslyGetParent;
|
||||||
route.key
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const actionCreators = {
|
|
||||||
...navigation.actions,
|
|
||||||
...router.getActionCreators(route, state.key),
|
|
||||||
};
|
|
||||||
const actionHelpers = {};
|
|
||||||
Object.keys(actionCreators).forEach(actionName => {
|
|
||||||
actionHelpers[actionName] = (...args) => {
|
|
||||||
const actionCreator = actionCreators[actionName];
|
|
||||||
const action = actionCreator(...args);
|
|
||||||
dispatch(action);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
const childNavigation = {
|
|
||||||
...actionHelpers,
|
|
||||||
actions: actionCreators,
|
|
||||||
dispatch,
|
|
||||||
state: route,
|
|
||||||
isFocused: () => this._isRouteFocused(route),
|
|
||||||
dangerouslyGetParent: this._dangerouslyGetParent,
|
|
||||||
addListener: this.childEventSubscribers[route.key].addListener,
|
|
||||||
getParam: (paramName, defaultValue) => {
|
|
||||||
const params = route.params;
|
|
||||||
|
|
||||||
if (params && paramName in params) {
|
|
||||||
return params[paramName];
|
|
||||||
}
|
|
||||||
|
|
||||||
return defaultValue;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const options = router.getScreenOptions(childNavigation, screenProps);
|
|
||||||
descriptors[route.key] = {
|
|
||||||
key: route.key,
|
|
||||||
getComponent,
|
|
||||||
options,
|
|
||||||
state: route,
|
|
||||||
navigation: childNavigation,
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NavigatorView
|
<NavigatorView
|
||||||
{...this.props}
|
{...this.props}
|
||||||
screenProps={screenProps}
|
screenProps={this.props.screenProps}
|
||||||
navigation={navigation}
|
navigation={this.props.navigation}
|
||||||
navigationConfig={navigationConfig}
|
navigationConfig={navigationConfig}
|
||||||
descriptors={descriptors}
|
descriptors={descriptors}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Navigator;
|
|
||||||
|
return polyfill(Navigator);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default createNavigator;
|
export default createNavigator;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as React from 'react';
|
import React from 'react';
|
||||||
import createNavigationContainer from '../createNavigationContainer';
|
import createNavigationContainer from '../createNavigationContainer';
|
||||||
import createKeyboardAwareNavigator from './createKeyboardAwareNavigator';
|
import createKeyboardAwareNavigator from './createKeyboardAwareNavigator';
|
||||||
import createNavigator from './createNavigator';
|
import createNavigator from './createNavigator';
|
||||||
@@ -13,6 +13,7 @@ function createStackNavigator(routeConfigMap, stackConfig = {}) {
|
|||||||
paths,
|
paths,
|
||||||
navigationOptions,
|
navigationOptions,
|
||||||
disableKeyboardHandling,
|
disableKeyboardHandling,
|
||||||
|
getCustomActionCreators,
|
||||||
} = stackConfig;
|
} = stackConfig;
|
||||||
|
|
||||||
const stackRouterConfig = {
|
const stackRouterConfig = {
|
||||||
@@ -21,6 +22,7 @@ function createStackNavigator(routeConfigMap, stackConfig = {}) {
|
|||||||
initialRouteParams,
|
initialRouteParams,
|
||||||
paths,
|
paths,
|
||||||
navigationOptions,
|
navigationOptions,
|
||||||
|
getCustomActionCreators,
|
||||||
};
|
};
|
||||||
|
|
||||||
const router = StackRouter(routeConfigMap, stackRouterConfig);
|
const router = StackRouter(routeConfigMap, stackRouterConfig);
|
||||||
|
|||||||
14
src/react-navigation.js
vendored
14
src/react-navigation.js
vendored
@@ -32,13 +32,13 @@ module.exports = {
|
|||||||
return require('./navigators/createSwitchNavigator').default;
|
return require('./navigators/createSwitchNavigator').default;
|
||||||
},
|
},
|
||||||
get createDrawerNavigator() {
|
get createDrawerNavigator() {
|
||||||
return require('./navigators/createDrawerNavigator').default;
|
return require('react-navigation-drawer').createDrawerNavigator;
|
||||||
},
|
},
|
||||||
get DrawerNavigator() {
|
get DrawerNavigator() {
|
||||||
console.warn(
|
console.warn(
|
||||||
'The DrawerNavigator function name is deprecated, please use createDrawerNavigator instead'
|
'The DrawerNavigator function name is deprecated, please use createDrawerNavigator instead'
|
||||||
);
|
);
|
||||||
return require('./navigators/createDrawerNavigator').default;
|
return require('react-navigation-drawer').createDrawerNavigator;
|
||||||
},
|
},
|
||||||
get createTabNavigator() {
|
get createTabNavigator() {
|
||||||
console.warn(
|
console.warn(
|
||||||
@@ -69,7 +69,7 @@ module.exports = {
|
|||||||
return require('./routers/StackActions').default;
|
return require('./routers/StackActions').default;
|
||||||
},
|
},
|
||||||
get DrawerActions() {
|
get DrawerActions() {
|
||||||
return require('./routers/DrawerActions').default;
|
return require('react-navigation-drawer').DrawerActions;
|
||||||
},
|
},
|
||||||
get getNavigationActionCreators() {
|
get getNavigationActionCreators() {
|
||||||
return require('./routers/getNavigationActionCreators').default;
|
return require('./routers/getNavigationActionCreators').default;
|
||||||
@@ -83,7 +83,7 @@ module.exports = {
|
|||||||
return require('./routers/TabRouter').default;
|
return require('./routers/TabRouter').default;
|
||||||
},
|
},
|
||||||
get DrawerRouter() {
|
get DrawerRouter() {
|
||||||
return require('./routers/DrawerRouter').default;
|
return require('react-navigation-drawer').DrawerRouter;
|
||||||
},
|
},
|
||||||
get SwitchRouter() {
|
get SwitchRouter() {
|
||||||
return require('./routers/SwitchRouter').default;
|
return require('./routers/SwitchRouter').default;
|
||||||
@@ -122,13 +122,13 @@ module.exports = {
|
|||||||
|
|
||||||
// DrawerView
|
// DrawerView
|
||||||
get DrawerView() {
|
get DrawerView() {
|
||||||
return require('./views/Drawer/DrawerView').default;
|
return require('react-navigation-drawer').DrawerView;
|
||||||
},
|
},
|
||||||
get DrawerItems() {
|
get DrawerItems() {
|
||||||
return require('./views/Drawer/DrawerNavigatorItems').default;
|
return require('react-navigation-drawer').DrawerNavigatorItems;
|
||||||
},
|
},
|
||||||
get DrawerSidebar() {
|
get DrawerSidebar() {
|
||||||
return require('./views/Drawer/DrawerSidebar').default;
|
return require('react-navigation-drawer').DrawerSidebar;
|
||||||
},
|
},
|
||||||
|
|
||||||
// TabView
|
// TabView
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
const OPEN_DRAWER = 'Navigation/OPEN_DRAWER';
|
|
||||||
const CLOSE_DRAWER = 'Navigation/CLOSE_DRAWER';
|
|
||||||
const TOGGLE_DRAWER = 'Navigation/TOGGLE_DRAWER';
|
|
||||||
|
|
||||||
const openDrawer = payload => ({
|
|
||||||
type: OPEN_DRAWER,
|
|
||||||
...payload,
|
|
||||||
});
|
|
||||||
|
|
||||||
const closeDrawer = payload => ({
|
|
||||||
type: CLOSE_DRAWER,
|
|
||||||
...payload,
|
|
||||||
});
|
|
||||||
|
|
||||||
const toggleDrawer = payload => ({
|
|
||||||
type: TOGGLE_DRAWER,
|
|
||||||
...payload,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default {
|
|
||||||
OPEN_DRAWER,
|
|
||||||
CLOSE_DRAWER,
|
|
||||||
TOGGLE_DRAWER,
|
|
||||||
|
|
||||||
openDrawer,
|
|
||||||
closeDrawer,
|
|
||||||
toggleDrawer,
|
|
||||||
};
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
import SwitchRouter from './SwitchRouter';
|
|
||||||
import NavigationActions from '../NavigationActions';
|
|
||||||
|
|
||||||
import invariant from '../utils/invariant';
|
|
||||||
import withDefaultValue from '../utils/withDefaultValue';
|
|
||||||
|
|
||||||
import DrawerActions from './DrawerActions';
|
|
||||||
|
|
||||||
export default (routeConfigs, config = {}) => {
|
|
||||||
config = { ...config };
|
|
||||||
config = withDefaultValue(config, 'resetOnBlur', false);
|
|
||||||
config = withDefaultValue(config, 'backBehavior', 'initialRoute');
|
|
||||||
|
|
||||||
const switchRouter = SwitchRouter(routeConfigs, config);
|
|
||||||
|
|
||||||
return {
|
|
||||||
...switchRouter,
|
|
||||||
|
|
||||||
getActionCreators(route, navStateKey) {
|
|
||||||
return {
|
|
||||||
openDrawer: () => DrawerActions.openDrawer({ key: navStateKey }),
|
|
||||||
closeDrawer: () => DrawerActions.closeDrawer({ key: navStateKey }),
|
|
||||||
toggleDrawer: () => DrawerActions.toggleDrawer({ key: navStateKey }),
|
|
||||||
...switchRouter.getActionCreators(route, navStateKey),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
getStateForAction(action, state) {
|
|
||||||
// Set up the initial state if needed
|
|
||||||
if (!state) {
|
|
||||||
return {
|
|
||||||
...switchRouter.getStateForAction(action, undefined),
|
|
||||||
isDrawerOpen: false,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const isRouterTargeted = action.key == null || action.key === state.key;
|
|
||||||
|
|
||||||
if (isRouterTargeted) {
|
|
||||||
// Only handle actions that are meant for this drawer, as specified by action.key.
|
|
||||||
|
|
||||||
if (action.type === DrawerActions.CLOSE_DRAWER && state.isDrawerOpen) {
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
isDrawerOpen: false,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (action.type === DrawerActions.OPEN_DRAWER && !state.isDrawerOpen) {
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
isDrawerOpen: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (action.type === DrawerActions.TOGGLE_DRAWER) {
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
isDrawerOpen: !state.isDrawerOpen,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fall back on switch router for screen switching logic, and handling of child routers
|
|
||||||
const switchedState = switchRouter.getStateForAction(action, state);
|
|
||||||
|
|
||||||
if (switchedState === null) {
|
|
||||||
// The switch router or a child router is attempting to swallow this action. We return null to allow this.
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (switchedState !== state) {
|
|
||||||
if (switchedState.index !== state.index) {
|
|
||||||
// If the tabs have changed, make sure to close the drawer
|
|
||||||
return {
|
|
||||||
...switchedState,
|
|
||||||
isDrawerOpen: false,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Return the state new state, as returned by the switch router.
|
|
||||||
// The index hasn't changed, so this most likely means that a child router has returned a new state
|
|
||||||
return switchedState;
|
|
||||||
}
|
|
||||||
|
|
||||||
return state;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -267,11 +267,18 @@ export default (routeConfigs, stackConfig = {}) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (nextRouteState === null || nextRouteState !== childRoute) {
|
if (nextRouteState === null || nextRouteState !== childRoute) {
|
||||||
return StateUtils.replaceAndPrune(
|
const newState = StateUtils.replaceAndPrune(
|
||||||
state,
|
state,
|
||||||
nextRouteState ? nextRouteState.key : childRoute.key,
|
nextRouteState ? nextRouteState.key : childRoute.key,
|
||||||
nextRouteState ? nextRouteState : childRoute
|
nextRouteState ? nextRouteState : childRoute
|
||||||
);
|
);
|
||||||
|
return {
|
||||||
|
...newState,
|
||||||
|
isTransitioning:
|
||||||
|
state.index !== newState.index
|
||||||
|
? action.immediate !== true
|
||||||
|
: state.isTransitioning,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,176 +0,0 @@
|
|||||||
/* eslint react/display-name:0 */
|
|
||||||
|
|
||||||
import React from 'react';
|
|
||||||
import DrawerRouter from '../DrawerRouter';
|
|
||||||
|
|
||||||
import NavigationActions from '../../NavigationActions';
|
|
||||||
import DrawerActions from '../../routers/DrawerActions';
|
|
||||||
|
|
||||||
const INIT_ACTION = { type: NavigationActions.INIT };
|
|
||||||
|
|
||||||
describe('DrawerRouter', () => {
|
|
||||||
test('Handles basic tab logic', () => {
|
|
||||||
const ScreenA = () => <div />;
|
|
||||||
const ScreenB = () => <div />;
|
|
||||||
const router = DrawerRouter({
|
|
||||||
Foo: { screen: ScreenA },
|
|
||||||
Bar: { screen: ScreenB },
|
|
||||||
});
|
|
||||||
const state = router.getStateForAction(INIT_ACTION);
|
|
||||||
const expectedState = {
|
|
||||||
index: 0,
|
|
||||||
isTransitioning: false,
|
|
||||||
routes: [
|
|
||||||
{ key: 'Foo', routeName: 'Foo', params: undefined },
|
|
||||||
{ key: 'Bar', routeName: 'Bar', params: undefined },
|
|
||||||
],
|
|
||||||
isDrawerOpen: false,
|
|
||||||
};
|
|
||||||
expect(state).toEqual(expectedState);
|
|
||||||
const state2 = router.getStateForAction(
|
|
||||||
{ type: NavigationActions.NAVIGATE, routeName: 'Bar' },
|
|
||||||
state
|
|
||||||
);
|
|
||||||
const expectedState2 = {
|
|
||||||
index: 1,
|
|
||||||
isTransitioning: false,
|
|
||||||
routes: [
|
|
||||||
{ key: 'Foo', routeName: 'Foo', params: undefined },
|
|
||||||
{ key: 'Bar', routeName: 'Bar', params: undefined },
|
|
||||||
],
|
|
||||||
isDrawerOpen: false,
|
|
||||||
};
|
|
||||||
expect(state2).toEqual(expectedState2);
|
|
||||||
expect(router.getComponentForState(expectedState)).toEqual(ScreenA);
|
|
||||||
expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Handles initial route navigation', () => {
|
|
||||||
const FooScreen = () => <div />;
|
|
||||||
const BarScreen = () => <div />;
|
|
||||||
const router = DrawerRouter(
|
|
||||||
{
|
|
||||||
Foo: {
|
|
||||||
screen: FooScreen,
|
|
||||||
},
|
|
||||||
Bar: {
|
|
||||||
screen: BarScreen,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ initialRouteName: 'Bar' }
|
|
||||||
);
|
|
||||||
const state = router.getStateForAction({
|
|
||||||
type: NavigationActions.NAVIGATE,
|
|
||||||
routeName: 'Foo',
|
|
||||||
});
|
|
||||||
expect(state).toEqual({
|
|
||||||
index: 0,
|
|
||||||
isDrawerOpen: false,
|
|
||||||
isTransitioning: false,
|
|
||||||
routes: [
|
|
||||||
{
|
|
||||||
key: 'Foo',
|
|
||||||
params: undefined,
|
|
||||||
routeName: 'Foo',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'Bar',
|
|
||||||
params: undefined,
|
|
||||||
routeName: 'Bar',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Drawer opens closes and toggles', () => {
|
|
||||||
const ScreenA = () => <div />;
|
|
||||||
const ScreenB = () => <div />;
|
|
||||||
const router = DrawerRouter({
|
|
||||||
Foo: { screen: ScreenA },
|
|
||||||
Bar: { screen: ScreenB },
|
|
||||||
});
|
|
||||||
const state = router.getStateForAction(INIT_ACTION);
|
|
||||||
expect(state.isDrawerOpen).toEqual(false);
|
|
||||||
const state2 = router.getStateForAction(
|
|
||||||
{ type: DrawerActions.OPEN_DRAWER },
|
|
||||||
state
|
|
||||||
);
|
|
||||||
expect(state2.isDrawerOpen).toEqual(true);
|
|
||||||
const state3 = router.getStateForAction(
|
|
||||||
{ type: DrawerActions.CLOSE_DRAWER },
|
|
||||||
state2
|
|
||||||
);
|
|
||||||
expect(state3.isDrawerOpen).toEqual(false);
|
|
||||||
const state4 = router.getStateForAction(
|
|
||||||
{ type: DrawerActions.TOGGLE_DRAWER },
|
|
||||||
state3
|
|
||||||
);
|
|
||||||
expect(state4.isDrawerOpen).toEqual(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Drawer opens closes with key targeted', () => {
|
|
||||||
const ScreenA = () => <div />;
|
|
||||||
const ScreenB = () => <div />;
|
|
||||||
const router = DrawerRouter({
|
|
||||||
Foo: { screen: ScreenA },
|
|
||||||
Bar: { screen: ScreenB },
|
|
||||||
});
|
|
||||||
const state = router.getStateForAction(INIT_ACTION);
|
|
||||||
const state2 = router.getStateForAction(
|
|
||||||
{ type: DrawerActions.OPEN_DRAWER, key: 'wrong' },
|
|
||||||
state
|
|
||||||
);
|
|
||||||
expect(state2.isDrawerOpen).toEqual(false);
|
|
||||||
const state3 = router.getStateForAction(
|
|
||||||
{ type: DrawerActions.OPEN_DRAWER, key: state.key },
|
|
||||||
state2
|
|
||||||
);
|
|
||||||
expect(state3.isDrawerOpen).toEqual(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Nested routers bubble up blocked actions', () => {
|
|
||||||
const ScreenA = () => <div />;
|
|
||||||
ScreenA.router = {
|
|
||||||
getStateForAction(action, lastState) {
|
|
||||||
if (action.type === 'CHILD_ACTION') return null;
|
|
||||||
return lastState;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const ScreenB = () => <div />;
|
|
||||||
const router = DrawerRouter({
|
|
||||||
Foo: { screen: ScreenA },
|
|
||||||
Bar: { screen: ScreenB },
|
|
||||||
});
|
|
||||||
const state = router.getStateForAction(INIT_ACTION);
|
|
||||||
|
|
||||||
const state2 = router.getStateForAction({ type: 'CHILD_ACTION' }, state);
|
|
||||||
expect(state2).toEqual(null);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Drawer stays open when child routers return new state', () => {
|
|
||||||
const ScreenA = () => <div />;
|
|
||||||
ScreenA.router = {
|
|
||||||
getStateForAction(action, lastState = { changed: false }) {
|
|
||||||
if (action.type === 'CHILD_ACTION')
|
|
||||||
return { ...lastState, changed: true };
|
|
||||||
return lastState;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const router = DrawerRouter({
|
|
||||||
Foo: { screen: ScreenA },
|
|
||||||
});
|
|
||||||
|
|
||||||
const state = router.getStateForAction(INIT_ACTION);
|
|
||||||
expect(state.isDrawerOpen).toEqual(false);
|
|
||||||
|
|
||||||
const state2 = router.getStateForAction(
|
|
||||||
{ type: DrawerActions.OPEN_DRAWER, key: state.key },
|
|
||||||
state
|
|
||||||
);
|
|
||||||
expect(state2.isDrawerOpen).toEqual(true);
|
|
||||||
|
|
||||||
const state3 = router.getStateForAction({ type: 'CHILD_ACTION' }, state2);
|
|
||||||
expect(state3.isDrawerOpen).toEqual(true);
|
|
||||||
expect(state3.routes[0].changed).toEqual(true);
|
|
||||||
});
|
|
||||||
@@ -16,6 +16,7 @@ beforeEach(() => {
|
|||||||
const ROUTERS = {
|
const ROUTERS = {
|
||||||
TabRouter,
|
TabRouter,
|
||||||
StackRouter,
|
StackRouter,
|
||||||
|
SwitchRouter,
|
||||||
};
|
};
|
||||||
|
|
||||||
const dummyEventSubscriber = (name, handler) => ({
|
const dummyEventSubscriber = (name, handler) => ({
|
||||||
@@ -26,7 +27,7 @@ Object.keys(ROUTERS).forEach(routerName => {
|
|||||||
const Router = ROUTERS[routerName];
|
const Router = ROUTERS[routerName];
|
||||||
|
|
||||||
describe(`General router features - ${routerName}`, () => {
|
describe(`General router features - ${routerName}`, () => {
|
||||||
test('title is configurable using navigationOptions and getScreenOptions', () => {
|
test(`title is configurable using navigationOptions and getScreenOptions - ${routerName}`, () => {
|
||||||
class FooView extends React.Component {
|
class FooView extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
return <div />;
|
return <div />;
|
||||||
@@ -87,6 +88,31 @@ Object.keys(ROUTERS).forEach(routerName => {
|
|||||||
).title
|
).title
|
||||||
).toEqual('Baz-123');
|
).toEqual('Baz-123');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test(`set params works in ${routerName}`, () => {
|
||||||
|
class FooView extends React.Component {
|
||||||
|
render() {
|
||||||
|
return <div />;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const router = Router({
|
||||||
|
Foo: { screen: FooView },
|
||||||
|
Bar: { screen: FooView },
|
||||||
|
});
|
||||||
|
|
||||||
|
const initState = router.getStateForAction(NavigationActions.init());
|
||||||
|
const initRoute = initState.routes[initState.index];
|
||||||
|
expect(initRoute.params).toEqual(undefined);
|
||||||
|
|
||||||
|
const state0 = router.getStateForAction(
|
||||||
|
NavigationActions.setParams({
|
||||||
|
params: { foo: 42 },
|
||||||
|
key: initRoute.key,
|
||||||
|
}),
|
||||||
|
initState
|
||||||
|
);
|
||||||
|
expect(state0.routes[state0.index].params.foo).toEqual(42);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1450,6 +1450,34 @@ describe('StackRouter', () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Navigate action to previous nested StackRouter causes isTransitioning start', () => {
|
||||||
|
const ChildNavigator = () => <div />;
|
||||||
|
ChildNavigator.router = StackRouter({
|
||||||
|
Baz: { screen: () => <div /> },
|
||||||
|
});
|
||||||
|
const router = StackRouter({
|
||||||
|
Bar: { screen: ChildNavigator },
|
||||||
|
Foo: { screen: () => <div /> },
|
||||||
|
});
|
||||||
|
const state = router.getStateForAction(
|
||||||
|
{
|
||||||
|
type: NavigationActions.NAVIGATE,
|
||||||
|
immediate: true,
|
||||||
|
routeName: 'Foo',
|
||||||
|
},
|
||||||
|
router.getStateForAction({ type: NavigationActions.INIT })
|
||||||
|
);
|
||||||
|
const state2 = router.getStateForAction(
|
||||||
|
{
|
||||||
|
type: NavigationActions.NAVIGATE,
|
||||||
|
routeName: 'Baz',
|
||||||
|
},
|
||||||
|
state
|
||||||
|
);
|
||||||
|
expect(state2.index).toEqual(0);
|
||||||
|
expect(state2.isTransitioning).toEqual(true);
|
||||||
|
});
|
||||||
|
|
||||||
test('Handles the navigate action with params and nested StackRouter as a first action', () => {
|
test('Handles the navigate action with params and nested StackRouter as a first action', () => {
|
||||||
const state = TestStackRouter.getStateForAction({
|
const state = TestStackRouter.getStateForAction({
|
||||||
type: NavigationActions.NAVIGATE,
|
type: NavigationActions.NAVIGATE,
|
||||||
|
|||||||
@@ -1,119 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import { View, Text, Platform, StyleSheet } from 'react-native';
|
|
||||||
import SafeAreaView from 'react-native-safe-area-view';
|
|
||||||
|
|
||||||
import TouchableItem from '../TouchableItem';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Component that renders the navigation list in the drawer.
|
|
||||||
*/
|
|
||||||
const DrawerNavigatorItems = ({
|
|
||||||
navigation: { state, navigate },
|
|
||||||
items,
|
|
||||||
activeItemKey,
|
|
||||||
activeTintColor,
|
|
||||||
activeBackgroundColor,
|
|
||||||
inactiveTintColor,
|
|
||||||
inactiveBackgroundColor,
|
|
||||||
getLabel,
|
|
||||||
renderIcon,
|
|
||||||
onItemPress,
|
|
||||||
itemsContainerStyle,
|
|
||||||
itemStyle,
|
|
||||||
labelStyle,
|
|
||||||
activeLabelStyle,
|
|
||||||
inactiveLabelStyle,
|
|
||||||
iconContainerStyle,
|
|
||||||
drawerPosition,
|
|
||||||
}) => (
|
|
||||||
<View style={[styles.container, itemsContainerStyle]}>
|
|
||||||
{items.map((route, index) => {
|
|
||||||
const focused = activeItemKey === route.key;
|
|
||||||
const color = focused ? activeTintColor : inactiveTintColor;
|
|
||||||
const backgroundColor = focused
|
|
||||||
? activeBackgroundColor
|
|
||||||
: inactiveBackgroundColor;
|
|
||||||
const scene = { route, index, focused, tintColor: color };
|
|
||||||
const icon = renderIcon(scene);
|
|
||||||
const label = getLabel(scene);
|
|
||||||
const extraLabelStyle = focused ? activeLabelStyle : inactiveLabelStyle;
|
|
||||||
return (
|
|
||||||
<TouchableItem
|
|
||||||
key={route.key}
|
|
||||||
onPress={() => {
|
|
||||||
onItemPress({ route, focused });
|
|
||||||
}}
|
|
||||||
delayPressIn={0}
|
|
||||||
>
|
|
||||||
<SafeAreaView
|
|
||||||
style={{ backgroundColor }}
|
|
||||||
forceInset={{
|
|
||||||
[drawerPosition]: 'always',
|
|
||||||
[drawerPosition === 'left' ? 'right' : 'left']: 'never',
|
|
||||||
vertical: 'never',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<View style={[styles.item, itemStyle]}>
|
|
||||||
{icon ? (
|
|
||||||
<View
|
|
||||||
style={[
|
|
||||||
styles.icon,
|
|
||||||
focused ? null : styles.inactiveIcon,
|
|
||||||
iconContainerStyle,
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
{icon}
|
|
||||||
</View>
|
|
||||||
) : null}
|
|
||||||
{typeof label === 'string' ? (
|
|
||||||
<Text
|
|
||||||
style={[styles.label, { color }, labelStyle, extraLabelStyle]}
|
|
||||||
>
|
|
||||||
{label}
|
|
||||||
</Text>
|
|
||||||
) : (
|
|
||||||
label
|
|
||||||
)}
|
|
||||||
</View>
|
|
||||||
</SafeAreaView>
|
|
||||||
</TouchableItem>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
|
|
||||||
/* Material design specs - https://material.io/guidelines/patterns/navigation-drawer.html#navigation-drawer-specs */
|
|
||||||
DrawerNavigatorItems.defaultProps = {
|
|
||||||
activeTintColor: '#2196f3',
|
|
||||||
activeBackgroundColor: 'rgba(0, 0, 0, .04)',
|
|
||||||
inactiveTintColor: 'rgba(0, 0, 0, .87)',
|
|
||||||
inactiveBackgroundColor: 'transparent',
|
|
||||||
};
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
container: {
|
|
||||||
paddingVertical: 4,
|
|
||||||
},
|
|
||||||
item: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
},
|
|
||||||
icon: {
|
|
||||||
marginHorizontal: 16,
|
|
||||||
width: 24,
|
|
||||||
alignItems: 'center',
|
|
||||||
},
|
|
||||||
inactiveIcon: {
|
|
||||||
/*
|
|
||||||
* Icons have 0.54 opacity according to guidelines
|
|
||||||
* 100/87 * 54 ~= 62
|
|
||||||
*/
|
|
||||||
opacity: 0.62,
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
margin: 16,
|
|
||||||
fontWeight: 'bold',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export default DrawerNavigatorItems;
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import { StyleSheet, View } from 'react-native';
|
|
||||||
|
|
||||||
import NavigationActions from '../../NavigationActions';
|
|
||||||
import StackActions from '../../routers/StackActions';
|
|
||||||
import invariant from '../../utils/invariant';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Component that renders the sidebar screen of the drawer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
class DrawerSidebar extends React.PureComponent {
|
|
||||||
_getScreenOptions = routeKey => {
|
|
||||||
const descriptor = this.props.descriptors[routeKey];
|
|
||||||
invariant(
|
|
||||||
descriptor.options,
|
|
||||||
'Cannot access screen descriptor options from drawer sidebar'
|
|
||||||
);
|
|
||||||
return descriptor.options;
|
|
||||||
};
|
|
||||||
|
|
||||||
_getLabel = ({ focused, tintColor, route }) => {
|
|
||||||
const { drawerLabel, title } = this._getScreenOptions(route.key);
|
|
||||||
if (drawerLabel) {
|
|
||||||
return typeof drawerLabel === 'function'
|
|
||||||
? drawerLabel({ tintColor, focused })
|
|
||||||
: drawerLabel;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof title === 'string') {
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
return route.routeName;
|
|
||||||
};
|
|
||||||
|
|
||||||
_renderIcon = ({ focused, tintColor, route }) => {
|
|
||||||
const { drawerIcon } = this._getScreenOptions(route.key);
|
|
||||||
if (drawerIcon) {
|
|
||||||
return typeof drawerIcon === 'function'
|
|
||||||
? drawerIcon({ tintColor, focused })
|
|
||||||
: drawerIcon;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
};
|
|
||||||
|
|
||||||
_onItemPress = ({ route, focused }) => {
|
|
||||||
if (!focused) {
|
|
||||||
let subAction;
|
|
||||||
// TODO (v3): Revisit and repeal this behavior:
|
|
||||||
// if the child screen is a StackRouter then always navigate to its first screen (see #1914)
|
|
||||||
if (route.index != null && route.index !== 0) {
|
|
||||||
subAction = StackActions.reset({
|
|
||||||
index: 0,
|
|
||||||
actions: [
|
|
||||||
NavigationActions.navigate({
|
|
||||||
routeName: route.routes[0].routeName,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.props.navigation.dispatch(
|
|
||||||
NavigationActions.navigate({
|
|
||||||
routeName: route.routeName,
|
|
||||||
action: subAction,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
render() {
|
|
||||||
const ContentComponent = this.props.contentComponent;
|
|
||||||
if (!ContentComponent) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
const { state } = this.props.navigation;
|
|
||||||
invariant(typeof state.index === 'number', 'should be set');
|
|
||||||
return (
|
|
||||||
<View style={[styles.container, this.props.style]}>
|
|
||||||
<ContentComponent
|
|
||||||
{...this.props.contentOptions}
|
|
||||||
navigation={this.props.navigation}
|
|
||||||
descriptors={this.props.descriptors}
|
|
||||||
items={state.routes}
|
|
||||||
activeItemKey={
|
|
||||||
state.routes[state.index] ? state.routes[state.index].key : null
|
|
||||||
}
|
|
||||||
screenProps={this.props.screenProps}
|
|
||||||
getLabel={this._getLabel}
|
|
||||||
renderIcon={this._renderIcon}
|
|
||||||
onItemPress={this._onItemPress}
|
|
||||||
drawerPosition={this.props.drawerPosition}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default DrawerSidebar;
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
container: {
|
|
||||||
flex: 1,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import { Dimensions } from 'react-native';
|
|
||||||
import DrawerLayout from 'react-native-drawer-layout-polyfill';
|
|
||||||
|
|
||||||
import DrawerSidebar from './DrawerSidebar';
|
|
||||||
import NavigationActions from '../../NavigationActions';
|
|
||||||
import DrawerActions from '../../routers/DrawerActions';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Component that renders the drawer.
|
|
||||||
*/
|
|
||||||
export default class DrawerView extends React.PureComponent {
|
|
||||||
state = {
|
|
||||||
drawerWidth:
|
|
||||||
typeof this.props.navigationConfig.drawerWidth === 'function'
|
|
||||||
? this.props.navigationConfig.drawerWidth()
|
|
||||||
: this.props.navigationConfig.drawerWidth,
|
|
||||||
};
|
|
||||||
|
|
||||||
componentDidMount() {
|
|
||||||
Dimensions.addEventListener('change', this._updateWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
Dimensions.removeEventListener('change', this._updateWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidUpdate(prevProps, prevState) {
|
|
||||||
const { isDrawerOpen } = this.props.navigation.state;
|
|
||||||
const wasDrawerOpen = prevProps.navigation.state.isDrawerOpen;
|
|
||||||
|
|
||||||
if (isDrawerOpen && !wasDrawerOpen) {
|
|
||||||
this._drawer.openDrawer();
|
|
||||||
} else if (wasDrawerOpen && !isDrawerOpen) {
|
|
||||||
this._drawer.closeDrawer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_handleDrawerOpen = () => {
|
|
||||||
const { navigation } = this.props;
|
|
||||||
const { isDrawerOpen } = navigation.state;
|
|
||||||
if (!isDrawerOpen) {
|
|
||||||
navigation.dispatch({ type: DrawerActions.OPEN_DRAWER });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_handleDrawerClose = () => {
|
|
||||||
const { navigation } = this.props;
|
|
||||||
const { isDrawerOpen } = navigation.state;
|
|
||||||
if (isDrawerOpen) {
|
|
||||||
navigation.dispatch({ type: DrawerActions.CLOSE_DRAWER });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_updateWidth = () => {
|
|
||||||
const drawerWidth =
|
|
||||||
typeof this.props.navigationConfig.drawerWidth === 'function'
|
|
||||||
? this.props.navigationConfig.drawerWidth()
|
|
||||||
: this.props.navigationConfig.drawerWidth;
|
|
||||||
|
|
||||||
if (this.state.drawerWidth !== drawerWidth) {
|
|
||||||
this.setState({ drawerWidth });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_renderNavigationView = () => {
|
|
||||||
return (
|
|
||||||
<DrawerSidebar
|
|
||||||
screenProps={this.props.screenProps}
|
|
||||||
navigation={this.props.navigation}
|
|
||||||
descriptors={this.props.descriptors}
|
|
||||||
contentComponent={this.props.navigationConfig.contentComponent}
|
|
||||||
contentOptions={this.props.navigationConfig.contentOptions}
|
|
||||||
drawerPosition={this.props.navigationConfig.drawerPosition}
|
|
||||||
style={this.props.navigationConfig.style}
|
|
||||||
{...this.props.navigationConfig}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
render() {
|
|
||||||
const { state } = this.props.navigation;
|
|
||||||
const activeKey = state.routes[state.index].key;
|
|
||||||
const descriptor = this.props.descriptors[activeKey];
|
|
||||||
|
|
||||||
const DrawerScreen = descriptor.getComponent();
|
|
||||||
|
|
||||||
const { drawerLockMode } = descriptor.options;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<DrawerLayout
|
|
||||||
ref={c => {
|
|
||||||
this._drawer = c;
|
|
||||||
}}
|
|
||||||
drawerLockMode={
|
|
||||||
drawerLockMode ||
|
|
||||||
(this.props.screenProps && this.props.screenProps.drawerLockMode) ||
|
|
||||||
this.props.navigationConfig.drawerLockMode
|
|
||||||
}
|
|
||||||
drawerBackgroundColor={
|
|
||||||
this.props.navigationConfig.drawerBackgroundColor
|
|
||||||
}
|
|
||||||
drawerWidth={this.state.drawerWidth}
|
|
||||||
onDrawerOpen={this._handleDrawerOpen}
|
|
||||||
onDrawerClose={this._handleDrawerClose}
|
|
||||||
useNativeAnimations={this.props.navigationConfig.useNativeAnimations}
|
|
||||||
renderNavigationView={this._renderNavigationView}
|
|
||||||
drawerPosition={
|
|
||||||
this.props.navigationConfig.drawerPosition === 'right'
|
|
||||||
? DrawerLayout.positions.Right
|
|
||||||
: DrawerLayout.positions.Left
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<DrawerScreen
|
|
||||||
screenProps={this.props.screenProps}
|
|
||||||
navigation={descriptor.navigation}
|
|
||||||
/>
|
|
||||||
</DrawerLayout>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as React from 'react';
|
import React from 'react';
|
||||||
import { NativeModules } from 'react-native';
|
import { NativeModules } from 'react-native';
|
||||||
|
|
||||||
import StackViewLayout from './StackViewLayout';
|
import StackViewLayout from './StackViewLayout';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import clamp from 'clamp';
|
import clamp from 'clamp';
|
||||||
import {
|
import {
|
||||||
@@ -211,6 +211,8 @@ class StackViewLayout extends React.Component {
|
|||||||
|
|
||||||
_panResponder = PanResponder.create({
|
_panResponder = PanResponder.create({
|
||||||
onPanResponderTerminate: () => {
|
onPanResponderTerminate: () => {
|
||||||
|
const { navigation } = this.props.transitionProps;
|
||||||
|
const { index } = navigation.state;
|
||||||
this._isResponding = false;
|
this._isResponding = false;
|
||||||
this._reset(index, 0);
|
this._reset(index, 0);
|
||||||
this.props.onGestureCanceled && this.props.onGestureCanceled();
|
this.props.onGestureCanceled && this.props.onGestureCanceled();
|
||||||
|
|||||||
@@ -90,6 +90,24 @@ class Transitioner extends React.Component {
|
|||||||
this._prevTransitionProps = this._transitionProps;
|
this._prevTransitionProps = this._transitionProps;
|
||||||
this._transitionProps = buildTransitionProps(nextProps, nextState);
|
this._transitionProps = buildTransitionProps(nextProps, nextState);
|
||||||
|
|
||||||
|
const toValue = nextProps.navigation.state.index;
|
||||||
|
|
||||||
|
if (!this._transitionProps.navigation.state.isTransitioning) {
|
||||||
|
this.setState(nextState, async () => {
|
||||||
|
const result = nextProps.onTransitionStart(
|
||||||
|
this._transitionProps,
|
||||||
|
this._prevTransitionProps
|
||||||
|
);
|
||||||
|
if (result instanceof Promise) {
|
||||||
|
await result;
|
||||||
|
}
|
||||||
|
progress.setValue(1);
|
||||||
|
position.setValue(toValue);
|
||||||
|
this._onTransitionEnd();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// get the transition spec.
|
// get the transition spec.
|
||||||
const transitionUserSpec = nextProps.configureTransition
|
const transitionUserSpec = nextProps.configureTransition
|
||||||
? nextProps.configureTransition(
|
? nextProps.configureTransition(
|
||||||
@@ -106,7 +124,6 @@ class Transitioner extends React.Component {
|
|||||||
const { timing } = transitionSpec;
|
const { timing } = transitionSpec;
|
||||||
delete transitionSpec.timing;
|
delete transitionSpec.timing;
|
||||||
|
|
||||||
const toValue = nextProps.navigation.state.index;
|
|
||||||
const positionHasChanged = position.__getValue() !== toValue;
|
const positionHasChanged = position.__getValue() !== toValue;
|
||||||
|
|
||||||
// if swiped back, indexHasChanged == true && positionHasChanged == false
|
// if swiped back, indexHasChanged == true && positionHasChanged == false
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* eslint react/display-name:0 */
|
/* eslint react/display-name:0 */
|
||||||
import * as React from 'react';
|
import React from 'react';
|
||||||
import renderer from 'react-test-renderer';
|
import renderer from 'react-test-renderer';
|
||||||
import Transitioner from '../Transitioner';
|
import Transitioner from '../Transitioner';
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,7 @@
|
|||||||
|
|
||||||
exports[`TabBarBottom renders successfully 1`] = `
|
exports[`TabBarBottom renders successfully 1`] = `
|
||||||
<View
|
<View
|
||||||
loaded={
|
collapsable={false}
|
||||||
Array [
|
|
||||||
0,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
onLayout={[Function]}
|
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
Object {
|
Object {
|
||||||
@@ -20,73 +15,67 @@ exports[`TabBarBottom renders successfully 1`] = `
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<RCTScrollView
|
<View
|
||||||
DEPRECATED_sendUpdatedChildFrames={false}
|
onLayout={[Function]}
|
||||||
alwaysBounceHorizontal={false}
|
style={
|
||||||
alwaysBounceVertical={false}
|
|
||||||
automaticallyAdjustContentInsets={false}
|
|
||||||
bounces={false}
|
|
||||||
contentContainerStyle={
|
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
contentOffset={
|
>
|
||||||
Object {
|
<RCTScrollView
|
||||||
"x": 0,
|
DEPRECATED_sendUpdatedChildFrames={false}
|
||||||
"y": 0,
|
alwaysBounceHorizontal={false}
|
||||||
}
|
alwaysBounceVertical={false}
|
||||||
}
|
automaticallyAdjustContentInsets={false}
|
||||||
directionalLockEnabled={true}
|
bounces={false}
|
||||||
horizontal={true}
|
contentContainerStyle={
|
||||||
keyboardDismissMode="on-drag"
|
|
||||||
keyboardShouldPersistTaps="always"
|
|
||||||
onContentSizeChange={null}
|
|
||||||
onMomentumScrollBegin={[Function]}
|
|
||||||
onMomentumScrollEnd={[Function]}
|
|
||||||
onResponderGrant={[Function]}
|
|
||||||
onResponderReject={[Function]}
|
|
||||||
onResponderRelease={[Function]}
|
|
||||||
onResponderTerminate={undefined}
|
|
||||||
onResponderTerminationRequest={[Function]}
|
|
||||||
onScroll={[Function]}
|
|
||||||
onScrollBeginDrag={[Function]}
|
|
||||||
onScrollEndDrag={[Function]}
|
|
||||||
onScrollShouldSetResponder={[Function]}
|
|
||||||
onStartShouldSetResponder={[Function]}
|
|
||||||
onStartShouldSetResponderCapture={[Function]}
|
|
||||||
onTouchCancel={[Function]}
|
|
||||||
onTouchEnd={[Function]}
|
|
||||||
onTouchMove={[Function]}
|
|
||||||
onTouchStart={[Function]}
|
|
||||||
overScrollMode="never"
|
|
||||||
pagingEnabled={true}
|
|
||||||
scrollEnabled={undefined}
|
|
||||||
scrollEventThrottle={1}
|
|
||||||
scrollsToTop={false}
|
|
||||||
sendMomentumEvents={true}
|
|
||||||
showsHorizontalScrollIndicator={false}
|
|
||||||
style={
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"flexDirection": "row",
|
|
||||||
"flexGrow": 1,
|
|
||||||
"flexShrink": 1,
|
|
||||||
"overflow": "scroll",
|
|
||||||
},
|
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
},
|
}
|
||||||
]
|
}
|
||||||
}
|
contentOffset={
|
||||||
>
|
Object {
|
||||||
<RCTScrollContentView
|
"x": 0,
|
||||||
collapsable={false}
|
"y": 0,
|
||||||
removeClippedSubviews={undefined}
|
}
|
||||||
|
}
|
||||||
|
directionalLockEnabled={true}
|
||||||
|
horizontal={true}
|
||||||
|
keyboardDismissMode="on-drag"
|
||||||
|
keyboardShouldPersistTaps="always"
|
||||||
|
onContentSizeChange={null}
|
||||||
|
onMomentumScrollBegin={[Function]}
|
||||||
|
onMomentumScrollEnd={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderReject={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={undefined}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onScroll={[Function]}
|
||||||
|
onScrollBeginDrag={[Function]}
|
||||||
|
onScrollEndDrag={[Function]}
|
||||||
|
onScrollShouldSetResponder={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
onStartShouldSetResponderCapture={[Function]}
|
||||||
|
onTouchCancel={[Function]}
|
||||||
|
onTouchEnd={[Function]}
|
||||||
|
onTouchMove={[Function]}
|
||||||
|
onTouchStart={[Function]}
|
||||||
|
overScrollMode="never"
|
||||||
|
pagingEnabled={true}
|
||||||
|
scrollEnabled={undefined}
|
||||||
|
scrollEventThrottle={1}
|
||||||
|
scrollsToTop={false}
|
||||||
|
sendMomentumEvents={true}
|
||||||
|
showsHorizontalScrollIndicator={false}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
Object {
|
Object {
|
||||||
"flexDirection": "row",
|
"flexDirection": "row",
|
||||||
|
"flexGrow": 1,
|
||||||
|
"flexShrink": 1,
|
||||||
|
"overflow": "scroll",
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
@@ -94,47 +83,62 @@ exports[`TabBarBottom renders successfully 1`] = `
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<View
|
<RCTScrollContentView
|
||||||
|
collapsable={false}
|
||||||
|
removeClippedSubviews={undefined}
|
||||||
style={
|
style={
|
||||||
Object {
|
Array [
|
||||||
"flex": 1,
|
Object {
|
||||||
"overflow": "hidden",
|
"flexDirection": "row",
|
||||||
}
|
},
|
||||||
|
Object {
|
||||||
|
"flex": 1,
|
||||||
|
},
|
||||||
|
]
|
||||||
}
|
}
|
||||||
testID={undefined}
|
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
collapsable={false}
|
|
||||||
removeClippedSubviews={false}
|
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
testID={undefined}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
|
collapsable={false}
|
||||||
|
removeClippedSubviews={false}
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
"overflow": "hidden",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
navigation={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"state": Object {
|
"flex": 1,
|
||||||
"key": "s1",
|
|
||||||
"routeName": "s1",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
screenProps={undefined}
|
>
|
||||||
/>
|
<View
|
||||||
|
navigation={
|
||||||
|
Object {
|
||||||
|
"state": Object {
|
||||||
|
"key": "s1",
|
||||||
|
"routeName": "s1",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
screenProps={undefined}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</RCTScrollContentView>
|
||||||
</RCTScrollContentView>
|
</RCTScrollView>
|
||||||
</RCTScrollView>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
`;
|
`;
|
||||||
|
|||||||
176
yarn.lock
176
yarn.lock
@@ -59,8 +59,8 @@ acorn@^3.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
||||||
|
|
||||||
acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0:
|
acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0:
|
||||||
version "5.5.3"
|
version "5.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7"
|
||||||
|
|
||||||
ajv-keywords@^2.1.0:
|
ajv-keywords@^2.1.0:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
@@ -163,11 +163,11 @@ app-root-path@^2.0.0:
|
|||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
|
resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
|
||||||
|
|
||||||
append-transform@^0.4.0:
|
append-transform@^1.0.0:
|
||||||
version "0.4.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
|
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
|
||||||
dependencies:
|
dependencies:
|
||||||
default-require-extensions "^1.0.0"
|
default-require-extensions "^2.0.0"
|
||||||
|
|
||||||
aproba@^1.0.3:
|
aproba@^1.0.3:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
@@ -1082,8 +1082,8 @@ bcrypt-pbkdf@^1.0.0:
|
|||||||
tweetnacl "^0.14.3"
|
tweetnacl "^0.14.3"
|
||||||
|
|
||||||
big-integer@^1.6.7:
|
big-integer@^1.6.7:
|
||||||
version "1.6.28"
|
version "1.6.30"
|
||||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.28.tgz#8cef0fda3ccde8759c2c66efcfacc35aea658283"
|
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.30.tgz#7796f04acdd6ba56345f19049c8fffd427f09d16"
|
||||||
|
|
||||||
binary-extensions@^1.0.0:
|
binary-extensions@^1.0.0:
|
||||||
version "1.11.0"
|
version "1.11.0"
|
||||||
@@ -1169,8 +1169,8 @@ bser@^2.0.0:
|
|||||||
node-int64 "^0.4.0"
|
node-int64 "^0.4.0"
|
||||||
|
|
||||||
buffer-from@^1.0.0:
|
buffer-from@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
|
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
|
||||||
|
|
||||||
builtin-modules@^1.0.0:
|
builtin-modules@^1.0.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
@@ -1413,10 +1413,8 @@ commander@~2.13.0:
|
|||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
|
||||||
|
|
||||||
common-tags@^1.4.0:
|
common-tags@^1.4.0:
|
||||||
version "1.7.2"
|
version "1.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771"
|
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
|
||||||
dependencies:
|
|
||||||
babel-runtime "^6.26.0"
|
|
||||||
|
|
||||||
compare-versions@^3.1.0:
|
compare-versions@^3.1.0:
|
||||||
version "3.2.1"
|
version "3.2.1"
|
||||||
@@ -1427,10 +1425,10 @@ component-emitter@^1.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
||||||
|
|
||||||
compressible@~2.0.5:
|
compressible@~2.0.5:
|
||||||
version "2.0.13"
|
version "2.0.14"
|
||||||
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
|
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db ">= 1.33.0 < 2"
|
mime-db ">= 1.34.0 < 2"
|
||||||
|
|
||||||
compression@~1.5.2:
|
compression@~1.5.2:
|
||||||
version "1.5.2"
|
version "1.5.2"
|
||||||
@@ -1550,8 +1548,8 @@ core-js@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||||
|
|
||||||
core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
|
core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
|
||||||
version "2.5.6"
|
version "2.5.7"
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
|
||||||
|
|
||||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
@@ -1678,19 +1676,19 @@ decode-uri-component@^0.2.0:
|
|||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||||
|
|
||||||
deep-extend@^0.5.1:
|
deep-extend@^0.6.0:
|
||||||
version "0.5.1"
|
version "0.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
|
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||||
|
|
||||||
deep-is@~0.1.3:
|
deep-is@~0.1.3:
|
||||||
version "0.1.3"
|
version "0.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||||
|
|
||||||
default-require-extensions@^1.0.0:
|
default-require-extensions@^2.0.0:
|
||||||
version "1.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
|
resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
|
||||||
dependencies:
|
dependencies:
|
||||||
strip-bom "^2.0.0"
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
define-properties@^1.1.2:
|
define-properties@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
@@ -1773,8 +1771,8 @@ diff@^3.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
||||||
|
|
||||||
dlv@^1.1.0:
|
dlv@^1.1.0:
|
||||||
version "1.1.1"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.1.tgz#c79d96bfe659a5568001250ed2aaf653992bdd3f"
|
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.2.tgz#270f6737b30d25b6657a7e962c784403f85137e5"
|
||||||
|
|
||||||
doctrine@1.5.0:
|
doctrine@1.5.0:
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
@@ -1783,7 +1781,7 @@ doctrine@1.5.0:
|
|||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
isarray "^1.0.0"
|
isarray "^1.0.0"
|
||||||
|
|
||||||
doctrine@^2.0.2, doctrine@^2.1.0:
|
doctrine@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
|
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1851,8 +1849,8 @@ errorhandler@~1.4.2:
|
|||||||
escape-html "~1.0.3"
|
escape-html "~1.0.3"
|
||||||
|
|
||||||
es-abstract@^1.5.1, es-abstract@^1.7.0:
|
es-abstract@^1.5.1, es-abstract@^1.7.0:
|
||||||
version "1.11.0"
|
version "1.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
|
||||||
dependencies:
|
dependencies:
|
||||||
es-to-primitive "^1.1.1"
|
es-to-primitive "^1.1.1"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
@@ -1946,13 +1944,13 @@ eslint-plugin-prettier@^2.6.0:
|
|||||||
jest-docblock "^21.0.0"
|
jest-docblock "^21.0.0"
|
||||||
|
|
||||||
eslint-plugin-react@^7.1.0:
|
eslint-plugin-react@^7.1.0:
|
||||||
version "7.8.2"
|
version "7.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.9.1.tgz#101aadd15e7c7b431ed025303ac7b421a8e3dc15"
|
||||||
dependencies:
|
dependencies:
|
||||||
doctrine "^2.0.2"
|
doctrine "^2.1.0"
|
||||||
has "^1.0.1"
|
has "^1.0.2"
|
||||||
jsx-ast-utils "^2.0.1"
|
jsx-ast-utils "^2.0.1"
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.1"
|
||||||
|
|
||||||
eslint-scope@^3.7.1:
|
eslint-scope@^3.7.1:
|
||||||
version "3.7.1"
|
version "3.7.1"
|
||||||
@@ -2423,7 +2421,7 @@ fsevents@^1.0.0, fsevents@^1.2.3:
|
|||||||
nan "^2.9.2"
|
nan "^2.9.2"
|
||||||
node-pre-gyp "^0.10.0"
|
node-pre-gyp "^0.10.0"
|
||||||
|
|
||||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
|
|
||||||
@@ -2627,11 +2625,11 @@ has-values@^1.0.0:
|
|||||||
is-number "^3.0.0"
|
is-number "^3.0.0"
|
||||||
kind-of "^4.0.0"
|
kind-of "^4.0.0"
|
||||||
|
|
||||||
has@^1.0.1:
|
has@^1.0.1, has@^1.0.2:
|
||||||
version "1.0.1"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.0.2"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
hawk@~3.1.3:
|
hawk@~3.1.3:
|
||||||
version "3.1.3"
|
version "3.1.3"
|
||||||
@@ -3096,10 +3094,10 @@ istanbul-lib-coverage@^1.1.1, istanbul-lib-coverage@^1.1.2, istanbul-lib-coverag
|
|||||||
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
|
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
|
||||||
|
|
||||||
istanbul-lib-hook@^1.2.0:
|
istanbul-lib-hook@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c"
|
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805"
|
||||||
dependencies:
|
dependencies:
|
||||||
append-transform "^0.4.0"
|
append-transform "^1.0.0"
|
||||||
|
|
||||||
istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.8.0:
|
istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.8.0:
|
||||||
version "1.10.1"
|
version "1.10.1"
|
||||||
@@ -3133,8 +3131,8 @@ istanbul-lib-source-maps@^1.2.1:
|
|||||||
source-map "^0.5.3"
|
source-map "^0.5.3"
|
||||||
|
|
||||||
istanbul-lib-source-maps@^1.2.4:
|
istanbul-lib-source-maps@^1.2.4:
|
||||||
version "1.2.4"
|
version "1.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7"
|
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^3.1.0"
|
debug "^3.1.0"
|
||||||
istanbul-lib-coverage "^1.2.0"
|
istanbul-lib-coverage "^1.2.0"
|
||||||
@@ -3461,8 +3459,8 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
||||||
|
|
||||||
js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1:
|
js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1:
|
||||||
version "3.11.0"
|
version "3.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
|
||||||
dependencies:
|
dependencies:
|
||||||
argparse "^1.0.7"
|
argparse "^1.0.7"
|
||||||
esprima "^4.0.0"
|
esprima "^4.0.0"
|
||||||
@@ -3955,14 +3953,18 @@ micromatch@^3.1.4, micromatch@^3.1.8:
|
|||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.2"
|
to-regex "^3.0.2"
|
||||||
|
|
||||||
"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0:
|
"mime-db@>= 1.34.0 < 2":
|
||||||
version "1.33.0"
|
version "1.34.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.34.0.tgz#452d0ecff5c30346a6dc1e64b1eaee0d3719ff9a"
|
||||||
|
|
||||||
mime-db@~1.23.0:
|
mime-db@~1.23.0:
|
||||||
version "1.23.0"
|
version "1.23.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
|
||||||
|
|
||||||
|
mime-db@~1.33.0:
|
||||||
|
version "1.33.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
|
||||||
|
|
||||||
mime-types@2.1.11:
|
mime-types@2.1.11:
|
||||||
version "2.1.11"
|
version "2.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
|
||||||
@@ -4229,8 +4231,8 @@ number-is-nan@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||||
|
|
||||||
nwsapi@^2.0.0:
|
nwsapi@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.0.tgz#7c8faf4ad501e1d17a651ebc5547f966b547c5c7"
|
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.2.tgz#33a0aab27c678d4dfdbba6a7f84b1c627fc4966f"
|
||||||
|
|
||||||
oauth-sign@~0.8.1, oauth-sign@~0.8.2:
|
oauth-sign@~0.8.1, oauth-sign@~0.8.2:
|
||||||
version "0.8.2"
|
version "0.8.2"
|
||||||
@@ -4384,8 +4386,8 @@ p-finally@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||||
|
|
||||||
p-limit@^1.1.0:
|
p-limit@^1.1.0:
|
||||||
version "1.2.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
|
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
|
||||||
dependencies:
|
dependencies:
|
||||||
p-try "^1.0.0"
|
p-try "^1.0.0"
|
||||||
|
|
||||||
@@ -4579,8 +4581,8 @@ prettier-eslint@^8.8.1:
|
|||||||
typescript-eslint-parser "^11.0.0"
|
typescript-eslint-parser "^11.0.0"
|
||||||
|
|
||||||
prettier@^1.12.1, prettier@^1.7.0:
|
prettier@^1.12.1, prettier@^1.7.0:
|
||||||
version "1.12.1"
|
version "1.13.4"
|
||||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.4.tgz#31bbae6990f13b1093187c731766a14036fa72e6"
|
||||||
|
|
||||||
pretty-format@^21.2.1:
|
pretty-format@^21.2.1:
|
||||||
version "21.2.1"
|
version "21.2.1"
|
||||||
@@ -4622,7 +4624,7 @@ promise@^7.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
asap "~2.0.3"
|
asap "~2.0.3"
|
||||||
|
|
||||||
prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0:
|
prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1:
|
||||||
version "15.6.1"
|
version "15.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
|
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4634,6 +4636,10 @@ pseudomap@^1.0.2:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||||
|
|
||||||
|
psl@^1.1.24:
|
||||||
|
version "1.1.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.27.tgz#2b2c77019db86855170d903532400bf71ee085b6"
|
||||||
|
|
||||||
punycode@^1.4.1:
|
punycode@^1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
||||||
@@ -4679,10 +4685,10 @@ raw-body@~2.1.2:
|
|||||||
unpipe "1.0.0"
|
unpipe "1.0.0"
|
||||||
|
|
||||||
rc@^1.1.7:
|
rc@^1.1.7:
|
||||||
version "1.2.7"
|
version "1.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297"
|
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||||
dependencies:
|
dependencies:
|
||||||
deep-extend "^0.5.1"
|
deep-extend "^0.6.0"
|
||||||
ini "~1.3.0"
|
ini "~1.3.0"
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
strip-json-comments "~2.0.1"
|
strip-json-comments "~2.0.1"
|
||||||
@@ -4744,11 +4750,11 @@ react-native-tab-view@^0.0.77:
|
|||||||
dependencies:
|
dependencies:
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.0"
|
||||||
|
|
||||||
react-native-tab-view@~0.0.78:
|
react-native-tab-view@^1.0.0:
|
||||||
version "0.0.78"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-0.0.78.tgz#9b90730d89cbd34a03f0e0ab10e74ca7af945560"
|
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.0.2.tgz#66e0bc6d38a227ed2b212e3a256b7902f6ce02ed"
|
||||||
dependencies:
|
dependencies:
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.1"
|
||||||
|
|
||||||
react-native-vector-icons@^4.2.0:
|
react-native-vector-icons@^4.2.0:
|
||||||
version "4.6.0"
|
version "4.6.0"
|
||||||
@@ -4823,15 +4829,21 @@ react-navigation-deprecated-tab-navigator@1.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
react-native-tab-view "^0.0.77"
|
react-native-tab-view "^0.0.77"
|
||||||
|
|
||||||
react-navigation-tabs@0.3.0:
|
react-navigation-drawer@0.2.1:
|
||||||
version "0.3.0"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-0.3.0.tgz#b1fe7ef1c665dd8928fafcc8622616e220ae5efa"
|
resolved "https://registry.yarnpkg.com/react-navigation-drawer/-/react-navigation-drawer-0.2.1.tgz#fed9b09a41ddfdc1ff198fad04a7b6051def8adf"
|
||||||
|
dependencies:
|
||||||
|
react-native-drawer-layout-polyfill "^1.3.2"
|
||||||
|
|
||||||
|
react-navigation-tabs@0.5.1:
|
||||||
|
version "0.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-0.5.1.tgz#ed33bce3a3e21b92646700de25bd94b8fc570371"
|
||||||
dependencies:
|
dependencies:
|
||||||
hoist-non-react-statics "^2.5.0"
|
hoist-non-react-statics "^2.5.0"
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.1"
|
||||||
react-lifecycles-compat "^3.0.4"
|
react-lifecycles-compat "^3.0.4"
|
||||||
react-native-safe-area-view "^0.7.0"
|
react-native-safe-area-view "^0.7.0"
|
||||||
react-native-tab-view "~0.0.78"
|
react-native-tab-view "^1.0.0"
|
||||||
|
|
||||||
react-proxy@^1.1.7:
|
react-proxy@^1.1.7:
|
||||||
version "1.1.8"
|
version "1.1.8"
|
||||||
@@ -5216,7 +5228,7 @@ safe-regex@^1.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ret "~0.1.10"
|
ret "~0.1.10"
|
||||||
|
|
||||||
"safer-buffer@>= 2.1.2 < 3":
|
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
|
|
||||||
@@ -5491,13 +5503,14 @@ sprintf-js@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||||
|
|
||||||
sshpk@^1.7.0:
|
sshpk@^1.7.0:
|
||||||
version "1.14.1"
|
version "1.14.2"
|
||||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb"
|
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
|
||||||
dependencies:
|
dependencies:
|
||||||
asn1 "~0.2.3"
|
asn1 "~0.2.3"
|
||||||
assert-plus "^1.0.0"
|
assert-plus "^1.0.0"
|
||||||
dashdash "^1.12.0"
|
dashdash "^1.12.0"
|
||||||
getpass "^0.1.1"
|
getpass "^0.1.1"
|
||||||
|
safer-buffer "^2.0.2"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
bcrypt-pbkdf "^1.0.0"
|
bcrypt-pbkdf "^1.0.0"
|
||||||
ecc-jsbn "~0.1.1"
|
ecc-jsbn "~0.1.1"
|
||||||
@@ -5754,7 +5767,14 @@ to-regex@^3.0.1, to-regex@^3.0.2:
|
|||||||
regex-not "^1.0.2"
|
regex-not "^1.0.2"
|
||||||
safe-regex "^1.1.0"
|
safe-regex "^1.1.0"
|
||||||
|
|
||||||
tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3:
|
tough-cookie@>=2.3.3, tough-cookie@^2.3.3:
|
||||||
|
version "2.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.2.tgz#aa9133154518b494efab98a58247bfc38818c00c"
|
||||||
|
dependencies:
|
||||||
|
psl "^1.1.24"
|
||||||
|
punycode "^1.4.1"
|
||||||
|
|
||||||
|
tough-cookie@~2.3.0, tough-cookie@~2.3.3:
|
||||||
version "2.3.4"
|
version "2.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5813,8 +5833,8 @@ typescript-eslint-parser@^11.0.0:
|
|||||||
semver "5.4.1"
|
semver "5.4.1"
|
||||||
|
|
||||||
typescript@^2.5.1:
|
typescript@^2.5.1:
|
||||||
version "2.8.3"
|
version "2.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961"
|
||||||
|
|
||||||
ua-parser-js@^0.7.9:
|
ua-parser-js@^0.7.9:
|
||||||
version "0.7.18"
|
version "0.7.18"
|
||||||
@@ -6012,8 +6032,8 @@ which-module@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||||
|
|
||||||
which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
|
which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
|
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user