mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-01-23 04:18:18 +08:00
Compare commits
12 Commits
@react-nav
...
@react-nav
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5303e8ffb5 | ||
|
|
ba6b6ae025 | ||
|
|
16079d1050 | ||
|
|
b4a76814c6 | ||
|
|
8294efc8f4 | ||
|
|
a27ade8881 | ||
|
|
615b523d26 | ||
|
|
070c46ba64 | ||
|
|
d8394cf919 | ||
|
|
a7c4a4d7cd | ||
|
|
282b465ae1 | ||
|
|
6f5f4b7d35 |
@@ -41,7 +41,7 @@
|
|||||||
"typescript": "^3.6.3"
|
"typescript": "^3.6.3"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "0.59.10"
|
"react-native": "0.59.10"
|
||||||
},
|
},
|
||||||
"husky": {
|
"husky": {
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.13](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/bottom-tabs@5.0.0-alpha.12...@react-navigation/bottom-tabs@5.0.0-alpha.13) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.12](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/bottom-tabs@5.0.0-alpha.11...@react-navigation/bottom-tabs@5.0.0-alpha.12) (2019-10-03)
|
# [5.0.0-alpha.12](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/bottom-tabs@5.0.0-alpha.11...@react-navigation/bottom-tabs@5.0.0-alpha.12) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"android",
|
"android",
|
||||||
"tab"
|
"tab"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.12",
|
"version": "5.0.0-alpha.13",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"@types/react-native": "^0.60.17",
|
"@types/react-native": "^0.60.17",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "0.59.10",
|
"react-native": "0.59.10",
|
||||||
"react-native-safe-area-context": "^0.3.6",
|
"react-native-safe-area-context": "^0.3.6",
|
||||||
"typescript": "^3.6.3"
|
"typescript": "^3.6.3"
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.7](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.6...@react-navigation/compat@5.0.0-alpha.7) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.6](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.5...@react-navigation/compat@5.0.0-alpha.6) (2019-10-03)
|
# [5.0.0-alpha.6](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.5...@react-navigation/compat@5.0.0-alpha.6) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/compat
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/compat",
|
"name": "@react-navigation/compat",
|
||||||
"description": "Compatibility layer to write navigator definitions in static configuration format",
|
"description": "Compatibility layer to write navigator definitions in static configuration format",
|
||||||
"version": "5.0.0-alpha.6",
|
"version": "5.0.0-alpha.7",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -28,12 +28,12 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"react": "^16.10.1",
|
"react": "^16.8.3",
|
||||||
"typescript": "^3.6.3"
|
"typescript": "^3.6.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@react-navigation/core": "^5.0.0-alpha.0",
|
"@react-navigation/core": "^5.0.0-alpha.0",
|
||||||
"react": "^16.10.1"
|
"react": "^16.8.3"
|
||||||
},
|
},
|
||||||
"@react-native-community/bob": {
|
"@react-native-community/bob": {
|
||||||
"source": "src",
|
"source": "src",
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.14](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/core@5.0.0-alpha.13...@react-navigation/core@5.0.0-alpha.14) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/core
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.13](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/core@5.0.0-alpha.12...@react-navigation/core@5.0.0-alpha.13) (2019-10-03)
|
# [5.0.0-alpha.13](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/core@5.0.0-alpha.12...@react-navigation/core@5.0.0-alpha.13) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/core
|
**Note:** Version bump only for package @react-navigation/core
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"react-native",
|
"react-native",
|
||||||
"react-navigation"
|
"react-navigation"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.13",
|
"version": "5.0.0-alpha.14",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -40,13 +40,13 @@
|
|||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"@types/shortid": "^0.0.29",
|
"@types/shortid": "^0.0.29",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "^16.10.1",
|
"react": "^16.8.3",
|
||||||
"react-native-testing-library": "^1.9.1",
|
"react-native-testing-library": "^1.9.1",
|
||||||
"react-test-renderer": "16.10.1",
|
"react-test-renderer": "16.8.3",
|
||||||
"typescript": "^3.6.3"
|
"typescript": "^3.6.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"react": "^16.10.1"
|
"react": "^16.8.3"
|
||||||
},
|
},
|
||||||
"@react-native-community/bob": {
|
"@react-native-community/bob": {
|
||||||
"source": "src",
|
"source": "src",
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.13](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/drawer@5.0.0-alpha.12...@react-navigation/drawer@5.0.0-alpha.13) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.12](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/drawer@5.0.0-alpha.11...@react-navigation/drawer@5.0.0-alpha.12) (2019-10-03)
|
# [5.0.0-alpha.12](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/drawer@5.0.0-alpha.11...@react-navigation/drawer@5.0.0-alpha.12) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/drawer
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"material",
|
"material",
|
||||||
"drawer"
|
"drawer"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.12",
|
"version": "5.0.0-alpha.13",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"@types/react-native": "^0.60.17",
|
"@types/react-native": "^0.60.17",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "0.59.10",
|
"react-native": "0.59.10",
|
||||||
"react-native-gesture-handler": "^1.3.0",
|
"react-native-gesture-handler": "^1.3.0",
|
||||||
"react-native-reanimated": "^1.3.0",
|
"react-native-reanimated": "^1.3.0",
|
||||||
|
|||||||
@@ -3,6 +3,25 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.12](https://github.com/satya164/navigation-ex/compare/@react-navigation/example@5.0.0-alpha.11...@react-navigation/example@5.0.0-alpha.12) (2019-10-06)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* drop header: null in favor of more explitit headerShown option ([ba6b6ae](https://github.com/satya164/navigation-ex/commit/ba6b6ae))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [5.0.0-alpha.11](https://github.com/satya164/navigation-ex/compare/@react-navigation/example@5.0.0-alpha.10...@react-navigation/example@5.0.0-alpha.11) (2019-10-03)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/example
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.10](https://github.com/satya164/navigation-ex/compare/@react-navigation/example@5.0.0-alpha.9...@react-navigation/example@5.0.0-alpha.10) (2019-10-03)
|
# [5.0.0-alpha.10](https://github.com/satya164/navigation-ex/compare/@react-navigation/example@5.0.0-alpha.9...@react-navigation/example@5.0.0-alpha.10) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/example
|
**Note:** Version bump only for package @react-navigation/example
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/example",
|
"name": "@react-navigation/example",
|
||||||
"description": "Demo app to showcase various functionality of React Navigation",
|
"description": "Demo app to showcase various functionality of React Navigation",
|
||||||
"version": "5.0.0-alpha.10",
|
"version": "5.0.0-alpha.12",
|
||||||
"private": true,
|
"private": true,
|
||||||
"workspaces": {
|
"workspaces": {
|
||||||
"nohoist": [
|
"nohoist": [
|
||||||
@@ -21,9 +21,9 @@
|
|||||||
"expo": "^35.0.0",
|
"expo": "^35.0.0",
|
||||||
"expo-asset": "~7.0.0",
|
"expo-asset": "~7.0.0",
|
||||||
"query-string": "^6.8.3",
|
"query-string": "^6.8.3",
|
||||||
"react": "^16.10.1",
|
"react": "^16.8.3",
|
||||||
"react-dom": "^16.10.1",
|
"react-dom": "^16.8.3",
|
||||||
"react-native": "^0.61.2",
|
"react-native": "^0.59.10",
|
||||||
"react-native-gesture-handler": "~1.3.0",
|
"react-native-gesture-handler": "~1.3.0",
|
||||||
"react-native-paper": "^3.0.0-alpha.3",
|
"react-native-paper": "^3.0.0-alpha.3",
|
||||||
"react-native-reanimated": "~1.2.0",
|
"react-native-reanimated": "~1.2.0",
|
||||||
|
|||||||
@@ -14,11 +14,13 @@ type AuthStackParams = {
|
|||||||
'sign-in': undefined;
|
'sign-in': undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
const SplashScreen = () => (
|
const SplashScreen = () => {
|
||||||
<View style={styles.content}>
|
return (
|
||||||
<ActivityIndicator />
|
<View style={styles.content}>
|
||||||
</View>
|
<ActivityIndicator />
|
||||||
);
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const SignInScreen = ({
|
const SignInScreen = ({
|
||||||
setUserToken,
|
setUserToken,
|
||||||
@@ -74,7 +76,7 @@ export default function SimpleStackScreen({ navigation }: Props) {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
navigation.setOptions({
|
navigation.setOptions({
|
||||||
header: null,
|
headerShown: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -19,27 +19,29 @@ type CompatStackParams = {
|
|||||||
|
|
||||||
const ArticleScreen: CompatScreenType<
|
const ArticleScreen: CompatScreenType<
|
||||||
StackNavigationProp<CompatStackParams, 'Article'>
|
StackNavigationProp<CompatStackParams, 'Article'>
|
||||||
> = ({ navigation }) => (
|
> = ({ navigation }) => {
|
||||||
<React.Fragment>
|
return (
|
||||||
<View style={styles.buttons}>
|
<React.Fragment>
|
||||||
<Button
|
<View style={styles.buttons}>
|
||||||
mode="contained"
|
<Button
|
||||||
onPress={() => navigation.push('Album')}
|
mode="contained"
|
||||||
style={styles.button}
|
onPress={() => navigation.push('Album')}
|
||||||
>
|
style={styles.button}
|
||||||
Push album
|
>
|
||||||
</Button>
|
Push album
|
||||||
<Button
|
</Button>
|
||||||
mode="outlined"
|
<Button
|
||||||
onPress={() => navigation.goBack()}
|
mode="outlined"
|
||||||
style={styles.button}
|
onPress={() => navigation.goBack()}
|
||||||
>
|
style={styles.button}
|
||||||
Go back
|
>
|
||||||
</Button>
|
Go back
|
||||||
</View>
|
</Button>
|
||||||
<Article author={{ name: navigation.getParam('author') }} />
|
</View>
|
||||||
</React.Fragment>
|
<Article author={{ name: navigation.getParam('author') }} />
|
||||||
);
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
ArticleScreen.navigationOptions = ({ navigation }) => ({
|
ArticleScreen.navigationOptions = ({ navigation }) => ({
|
||||||
title: `Article by ${navigation.getParam('author')}`,
|
title: `Article by ${navigation.getParam('author')}`,
|
||||||
@@ -47,27 +49,29 @@ ArticleScreen.navigationOptions = ({ navigation }) => ({
|
|||||||
|
|
||||||
const AlbumsScreen: CompatScreenType<
|
const AlbumsScreen: CompatScreenType<
|
||||||
StackNavigationProp<CompatStackParams>
|
StackNavigationProp<CompatStackParams>
|
||||||
> = ({ navigation }) => (
|
> = ({ navigation }) => {
|
||||||
<React.Fragment>
|
return (
|
||||||
<View style={styles.buttons}>
|
<React.Fragment>
|
||||||
<Button
|
<View style={styles.buttons}>
|
||||||
mode="contained"
|
<Button
|
||||||
onPress={() => navigation.push('Article', { author: 'Babel fish' })}
|
mode="contained"
|
||||||
style={styles.button}
|
onPress={() => navigation.push('Article', { author: 'Babel fish' })}
|
||||||
>
|
style={styles.button}
|
||||||
Push article
|
>
|
||||||
</Button>
|
Push article
|
||||||
<Button
|
</Button>
|
||||||
mode="outlined"
|
<Button
|
||||||
onPress={() => navigation.goBack()}
|
mode="outlined"
|
||||||
style={styles.button}
|
onPress={() => navigation.goBack()}
|
||||||
>
|
style={styles.button}
|
||||||
Go back
|
>
|
||||||
</Button>
|
Go back
|
||||||
</View>
|
</Button>
|
||||||
<Albums />
|
</View>
|
||||||
</React.Fragment>
|
<Albums />
|
||||||
);
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const CompatStack = createCompatNavigatorFactory(createStackNavigator)<
|
const CompatStack = createCompatNavigatorFactory(createStackNavigator)<
|
||||||
StackNavigationProp<CompatStackParams>
|
StackNavigationProp<CompatStackParams>
|
||||||
@@ -92,7 +96,7 @@ export default function CompatStackScreen({
|
|||||||
navigation: StackNavigationProp<{}>;
|
navigation: StackNavigationProp<{}>;
|
||||||
}) {
|
}) {
|
||||||
navigation.setOptions({
|
navigation.setOptions({
|
||||||
header: null,
|
headerShown: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
return <CompatStack />;
|
return <CompatStack />;
|
||||||
|
|||||||
131
packages/example/src/Screens/ModalPresentationStack.tsx
Normal file
131
packages/example/src/Screens/ModalPresentationStack.tsx
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
import * as React from 'react';
|
||||||
|
import { View, StyleSheet } from 'react-native';
|
||||||
|
import { Button } from 'react-native-paper';
|
||||||
|
import { useSafeArea } from 'react-native-safe-area-context';
|
||||||
|
import { RouteProp, ParamListBase } from '@react-navigation/core';
|
||||||
|
import {
|
||||||
|
createStackNavigator,
|
||||||
|
StackNavigationProp,
|
||||||
|
TransitionPresets,
|
||||||
|
} from '@react-navigation/stack';
|
||||||
|
import Article from '../Shared/Article';
|
||||||
|
import Albums from '../Shared/Albums';
|
||||||
|
|
||||||
|
type SimpleStackParams = {
|
||||||
|
article: { author: string };
|
||||||
|
album: undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
||||||
|
|
||||||
|
const ArticleScreen = ({
|
||||||
|
navigation,
|
||||||
|
route,
|
||||||
|
}: {
|
||||||
|
navigation: SimpleStackNavigation;
|
||||||
|
route: RouteProp<SimpleStackParams, 'article'>;
|
||||||
|
}) => {
|
||||||
|
const insets = useSafeArea();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<React.Fragment>
|
||||||
|
<View style={[styles.buttons, { marginTop: insets.top }]}>
|
||||||
|
<Button
|
||||||
|
mode="contained"
|
||||||
|
onPress={() => navigation.push('album')}
|
||||||
|
style={styles.button}
|
||||||
|
>
|
||||||
|
Push album
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
mode="outlined"
|
||||||
|
onPress={() => navigation.goBack()}
|
||||||
|
style={styles.button}
|
||||||
|
>
|
||||||
|
Go back
|
||||||
|
</Button>
|
||||||
|
</View>
|
||||||
|
<Article author={{ name: route.params.author }} />
|
||||||
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const AlbumsScreen = ({
|
||||||
|
navigation,
|
||||||
|
}: {
|
||||||
|
navigation: SimpleStackNavigation;
|
||||||
|
}) => {
|
||||||
|
const insets = useSafeArea();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<React.Fragment>
|
||||||
|
<View style={[styles.buttons, { marginTop: insets.top }]}>
|
||||||
|
<Button
|
||||||
|
mode="contained"
|
||||||
|
onPress={() => navigation.push('article', { author: 'Babel fish' })}
|
||||||
|
style={styles.button}
|
||||||
|
>
|
||||||
|
Push article
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
mode="outlined"
|
||||||
|
onPress={() => navigation.goBack()}
|
||||||
|
style={styles.button}
|
||||||
|
>
|
||||||
|
Go back
|
||||||
|
</Button>
|
||||||
|
</View>
|
||||||
|
<Albums />
|
||||||
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const ModalPresentationStack = createStackNavigator<SimpleStackParams>();
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
options?: React.ComponentProps<typeof ModalPresentationStack.Navigator>;
|
||||||
|
navigation: StackNavigationProp<ParamListBase>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function SimpleStackScreen({ navigation, options }: Props) {
|
||||||
|
navigation.setOptions({
|
||||||
|
headerShown: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ModalPresentationStack.Navigator
|
||||||
|
mode="modal"
|
||||||
|
headerMode="none"
|
||||||
|
screenOptions={{
|
||||||
|
...TransitionPresets.ModalPresentationIOS,
|
||||||
|
cardOverlayEnabled: true,
|
||||||
|
gestureEnabled: true,
|
||||||
|
}}
|
||||||
|
{...options}
|
||||||
|
>
|
||||||
|
<ModalPresentationStack.Screen
|
||||||
|
name="article"
|
||||||
|
component={ArticleScreen}
|
||||||
|
options={({ route }) => ({
|
||||||
|
title: `Article by ${route.params.author}`,
|
||||||
|
})}
|
||||||
|
initialParams={{ author: 'Gandalf' }}
|
||||||
|
/>
|
||||||
|
<ModalPresentationStack.Screen
|
||||||
|
name="album"
|
||||||
|
component={AlbumsScreen}
|
||||||
|
options={{ title: 'Album' }}
|
||||||
|
/>
|
||||||
|
</ModalPresentationStack.Navigator>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
buttons: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
padding: 8,
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
margin: 8,
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -22,53 +22,57 @@ const ArticleScreen = ({
|
|||||||
}: {
|
}: {
|
||||||
navigation: SimpleStackNavigation;
|
navigation: SimpleStackNavigation;
|
||||||
route: RouteProp<SimpleStackParams, 'article'>;
|
route: RouteProp<SimpleStackParams, 'article'>;
|
||||||
}) => (
|
}) => {
|
||||||
<React.Fragment>
|
return (
|
||||||
<View style={styles.buttons}>
|
<React.Fragment>
|
||||||
<Button
|
<View style={styles.buttons}>
|
||||||
mode="contained"
|
<Button
|
||||||
onPress={() => navigation.push('album')}
|
mode="contained"
|
||||||
style={styles.button}
|
onPress={() => navigation.push('album')}
|
||||||
>
|
style={styles.button}
|
||||||
Push album
|
>
|
||||||
</Button>
|
Push album
|
||||||
<Button
|
</Button>
|
||||||
mode="outlined"
|
<Button
|
||||||
onPress={() => navigation.goBack()}
|
mode="outlined"
|
||||||
style={styles.button}
|
onPress={() => navigation.goBack()}
|
||||||
>
|
style={styles.button}
|
||||||
Go back
|
>
|
||||||
</Button>
|
Go back
|
||||||
</View>
|
</Button>
|
||||||
<Article author={{ name: route.params.author }} />
|
</View>
|
||||||
</React.Fragment>
|
<Article author={{ name: route.params.author }} />
|
||||||
);
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const AlbumsScreen = ({
|
const AlbumsScreen = ({
|
||||||
navigation,
|
navigation,
|
||||||
}: {
|
}: {
|
||||||
navigation: SimpleStackNavigation;
|
navigation: SimpleStackNavigation;
|
||||||
}) => (
|
}) => {
|
||||||
<React.Fragment>
|
return (
|
||||||
<View style={styles.buttons}>
|
<React.Fragment>
|
||||||
<Button
|
<View style={styles.buttons}>
|
||||||
mode="contained"
|
<Button
|
||||||
onPress={() => navigation.push('article', { author: 'Babel fish' })}
|
mode="contained"
|
||||||
style={styles.button}
|
onPress={() => navigation.push('article', { author: 'Babel fish' })}
|
||||||
>
|
style={styles.button}
|
||||||
Push article
|
>
|
||||||
</Button>
|
Push article
|
||||||
<Button
|
</Button>
|
||||||
mode="outlined"
|
<Button
|
||||||
onPress={() => navigation.goBack()}
|
mode="outlined"
|
||||||
style={styles.button}
|
onPress={() => navigation.goBack()}
|
||||||
>
|
style={styles.button}
|
||||||
Go back
|
>
|
||||||
</Button>
|
Go back
|
||||||
</View>
|
</Button>
|
||||||
<Albums />
|
</View>
|
||||||
</React.Fragment>
|
<Albums />
|
||||||
);
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const SimpleStack = createStackNavigator<SimpleStackParams>();
|
const SimpleStack = createStackNavigator<SimpleStackParams>();
|
||||||
|
|
||||||
@@ -79,7 +83,7 @@ type Props = {
|
|||||||
|
|
||||||
export default function SimpleStackScreen({ navigation, options }: Props) {
|
export default function SimpleStackScreen({ navigation, options }: Props) {
|
||||||
navigation.setOptions({
|
navigation.setOptions({
|
||||||
header: null,
|
headerShown: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -22,8 +22,9 @@ import {
|
|||||||
StackNavigationProp,
|
StackNavigationProp,
|
||||||
} from '@react-navigation/stack';
|
} from '@react-navigation/stack';
|
||||||
|
|
||||||
import SimpleStackScreen from './Screens/SimpleStack';
|
import SimpleStack from './Screens/SimpleStack';
|
||||||
import BottomTabsScreen from './Screens/BottomTabs';
|
import ModalPresentationStack from './Screens/ModalPresentationStack';
|
||||||
|
import BottomTabs from './Screens/BottomTabs';
|
||||||
import MaterialTopTabsScreen from './Screens/MaterialTopTabs';
|
import MaterialTopTabsScreen from './Screens/MaterialTopTabs';
|
||||||
import MaterialBottomTabs from './Screens/MaterialBottomTabs';
|
import MaterialBottomTabs from './Screens/MaterialBottomTabs';
|
||||||
import AuthFlow from './Screens/AuthFlow';
|
import AuthFlow from './Screens/AuthFlow';
|
||||||
@@ -42,21 +43,25 @@ type RootStackParamList = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const SCREENS = {
|
const SCREENS = {
|
||||||
'simple-stack': { title: 'Simple Stack', component: SimpleStackScreen },
|
SimpleStack: { title: 'Simple Stack', component: SimpleStack },
|
||||||
'bottom-tabs': { title: 'Bottom Tabs', component: BottomTabsScreen },
|
ModalPresentationStack: {
|
||||||
'material-top-tabs': {
|
title: 'Modal Presentation Stack',
|
||||||
|
component: ModalPresentationStack,
|
||||||
|
},
|
||||||
|
BottomTabs: { title: 'Bottom Tabs', component: BottomTabs },
|
||||||
|
MaterialTopTabs: {
|
||||||
title: 'Material Top Tabs',
|
title: 'Material Top Tabs',
|
||||||
component: MaterialTopTabsScreen,
|
component: MaterialTopTabsScreen,
|
||||||
},
|
},
|
||||||
'material-bottom-tabs': {
|
MaterialBottomTabs: {
|
||||||
title: 'Material Bottom Tabs',
|
title: 'Material Bottom Tabs',
|
||||||
component: MaterialBottomTabs,
|
component: MaterialBottomTabs,
|
||||||
},
|
},
|
||||||
'auth-flow': {
|
AuthFlow: {
|
||||||
title: 'Auth Flow',
|
title: 'Auth Flow',
|
||||||
component: AuthFlow,
|
component: AuthFlow,
|
||||||
},
|
},
|
||||||
'compat-api': {
|
CompatAPI: {
|
||||||
title: 'Compat Layer',
|
title: 'Compat Layer',
|
||||||
component: CompatAPI,
|
component: CompatAPI,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.12](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/material-bottom-tabs@5.0.0-alpha.11...@react-navigation/material-bottom-tabs@5.0.0-alpha.12) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.11](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/material-bottom-tabs@5.0.0-alpha.10...@react-navigation/material-bottom-tabs@5.0.0-alpha.11) (2019-10-03)
|
# [5.0.0-alpha.11](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/material-bottom-tabs@5.0.0-alpha.10...@react-navigation/material-bottom-tabs@5.0.0-alpha.11) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"material",
|
"material",
|
||||||
"tab"
|
"tab"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.11",
|
"version": "5.0.0-alpha.12",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"@types/react-native": "^0.60.17",
|
"@types/react-native": "^0.60.17",
|
||||||
"@types/react-native-vector-icons": "^6.4.4",
|
"@types/react-native-vector-icons": "^6.4.4",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "0.59.10",
|
"react-native": "0.59.10",
|
||||||
"react-native-paper": "^3.0.0-alpha.3",
|
"react-native-paper": "^3.0.0-alpha.3",
|
||||||
"react-native-vector-icons": "^6.6.0",
|
"react-native-vector-icons": "^6.6.0",
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.11](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/material-top-tabs@5.0.0-alpha.10...@react-navigation/material-top-tabs@5.0.0-alpha.11) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.10](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/material-top-tabs@5.0.0-alpha.9...@react-navigation/material-top-tabs@5.0.0-alpha.10) (2019-10-03)
|
# [5.0.0-alpha.10](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/material-top-tabs@5.0.0-alpha.9...@react-navigation/material-top-tabs@5.0.0-alpha.10) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"material",
|
"material",
|
||||||
"tab"
|
"tab"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.10",
|
"version": "5.0.0-alpha.11",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -41,8 +41,8 @@
|
|||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"@types/react-native": "^0.60.17",
|
"@types/react-native": "^0.60.17",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "^0.59.8",
|
"react-native": "^0.59.10",
|
||||||
"react-native-gesture-handler": "^1.3.0",
|
"react-native-gesture-handler": "^1.3.0",
|
||||||
"react-native-reanimated": "^1.3.0",
|
"react-native-reanimated": "^1.3.0",
|
||||||
"react-native-tab-view": "^2.10.0",
|
"react-native-tab-view": "^2.10.0",
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.11](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/native@5.0.0-alpha.10...@react-navigation/native@5.0.0-alpha.11) (2019-10-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/native
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.10](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/native@5.0.0-alpha.9...@react-navigation/native@5.0.0-alpha.10) (2019-10-03)
|
# [5.0.0-alpha.10](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/native@5.0.0-alpha.9...@react-navigation/native@5.0.0-alpha.10) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/native
|
**Note:** Version bump only for package @react-navigation/native
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"ios",
|
"ios",
|
||||||
"android"
|
"android"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.10",
|
"version": "5.0.0-alpha.11",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"@types/react-native": "^0.60.17",
|
"@types/react-native": "^0.60.17",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "0.59.10",
|
"react-native": "0.59.10",
|
||||||
"typescript": "^3.6.3"
|
"typescript": "^3.6.3"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,6 +3,38 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.0.0-alpha.24](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/stack@5.0.0-alpha.23...@react-navigation/stack@5.0.0-alpha.24) (2019-10-06)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* actually expose gestureVelocityImpact in the public API ([16079d1](https://github.com/react-navigation/navigation-ex/commit/16079d1))
|
||||||
|
* don't recompute if routes didn't change ([615b523](https://github.com/react-navigation/navigation-ex/commit/615b523))
|
||||||
|
* handling vertical gesture in RTL ([#122](https://github.com/react-navigation/navigation-ex/issues/122)) ([a27ade8](https://github.com/react-navigation/navigation-ex/commit/a27ade8))
|
||||||
|
* use next screen's animation when not focused. fixes [#87](https://github.com/react-navigation/navigation-ex/issues/87) ([b4a7681](https://github.com/react-navigation/navigation-ex/commit/b4a7681))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add gestureVelocityImpact as a prop for stack ([#123](https://github.com/react-navigation/navigation-ex/issues/123)) ([8294efc](https://github.com/react-navigation/navigation-ex/commit/8294efc))
|
||||||
|
* drop header: null in favor of more explitit headerShown option ([ba6b6ae](https://github.com/react-navigation/navigation-ex/commit/ba6b6ae))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [5.0.0-alpha.23](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/stack@5.0.0-alpha.22...@react-navigation/stack@5.0.0-alpha.23) (2019-10-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix passing insets to interpolator ([6f5f4b7](https://github.com/react-navigation/navigation-ex/commit/6f5f4b7))
|
||||||
|
* fix vertical gesture ([a7c4a4d](https://github.com/react-navigation/navigation-ex/commit/a7c4a4d))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.0.0-alpha.22](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/stack@5.0.0-alpha.21...@react-navigation/stack@5.0.0-alpha.22) (2019-10-03)
|
# [5.0.0-alpha.22](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/stack@5.0.0-alpha.21...@react-navigation/stack@5.0.0-alpha.22) (2019-10-03)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/stack
|
**Note:** Version bump only for package @react-navigation/stack
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"android",
|
"android",
|
||||||
"stack"
|
"stack"
|
||||||
],
|
],
|
||||||
"version": "5.0.0-alpha.22",
|
"version": "5.0.0-alpha.24",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"@types/react": "^16.9.4",
|
"@types/react": "^16.9.4",
|
||||||
"@types/react-native": "^0.60.17",
|
"@types/react-native": "^0.60.17",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
"react": "16.10.1",
|
"react": "16.8.3",
|
||||||
"react-native": "0.59.10",
|
"react-native": "0.59.10",
|
||||||
"react-native-gesture-handler": "^1.3.0",
|
"react-native-gesture-handler": "^1.3.0",
|
||||||
"react-native-reanimated": "^1.3.0",
|
"react-native-reanimated": "^1.3.0",
|
||||||
|
|||||||
@@ -241,7 +241,12 @@ export type StackNavigationOptions = StackHeaderOptions &
|
|||||||
* Function that given `HeaderProps` returns a React Element to display as a header.
|
* Function that given `HeaderProps` returns a React Element to display as a header.
|
||||||
* Setting to `null` hides header.
|
* Setting to `null` hides header.
|
||||||
*/
|
*/
|
||||||
header?: null | ((props: StackHeaderProps) => React.ReactNode);
|
header?: (props: StackHeaderProps) => React.ReactNode;
|
||||||
|
/**
|
||||||
|
* Whether to show the header. The header is shown by default unless `headerMode` was set to `none`.
|
||||||
|
* Setting this to `false` hides the header.
|
||||||
|
*/
|
||||||
|
headerShown?: boolean;
|
||||||
/**
|
/**
|
||||||
* Whether a shadow is visible for the card during transitions. Defaults to `true`.
|
* Whether a shadow is visible for the card during transitions. Defaults to `true`.
|
||||||
*/
|
*/
|
||||||
@@ -287,6 +292,11 @@ export type StackNavigationOptions = StackHeaderOptions &
|
|||||||
*/
|
*/
|
||||||
horizontal?: number;
|
horizontal?: number;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Number which determines the relevance of velocity for the gesture.
|
||||||
|
* Defaults to 0.3.
|
||||||
|
*/
|
||||||
|
gestureVelocityImpact?: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type StackNavigationConfig = {
|
export type StackNavigationConfig = {
|
||||||
|
|||||||
@@ -77,11 +77,11 @@ export default function HeaderContainer({
|
|||||||
const isHeaderStatic =
|
const isHeaderStatic =
|
||||||
mode === 'float'
|
mode === 'float'
|
||||||
? (previousScene &&
|
? (previousScene &&
|
||||||
previousScene.descriptor.options.header === null &&
|
previousScene.descriptor.options.headerShown === false &&
|
||||||
// We still need to animate when coming back from next scene
|
// We still need to animate when coming back from next scene
|
||||||
// A hacky way to check this is if the next scene exists
|
// A hacky way to check this is if the next scene exists
|
||||||
!nextScene) ||
|
!nextScene) ||
|
||||||
(nextScene && nextScene.descriptor.options.header === null)
|
(nextScene && nextScene.descriptor.options.headerShown === false)
|
||||||
: false;
|
: false;
|
||||||
|
|
||||||
const props = {
|
const props = {
|
||||||
@@ -121,13 +121,13 @@ export default function HeaderContainer({
|
|||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{options.header !== undefined ? (
|
{options.headerShown !== false ? (
|
||||||
options.header === null ? null : (
|
options.header !== undefined ? (
|
||||||
options.header(props)
|
options.header(props)
|
||||||
|
) : (
|
||||||
|
<Header {...props} />
|
||||||
)
|
)
|
||||||
) : (
|
) : null}
|
||||||
<Header {...props} />
|
|
||||||
)}
|
|
||||||
</View>
|
</View>
|
||||||
</NavigationContext.Provider>
|
</NavigationContext.Provider>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ import {
|
|||||||
PanGestureHandler,
|
PanGestureHandler,
|
||||||
State as GestureState,
|
State as GestureState,
|
||||||
} from 'react-native-gesture-handler';
|
} from 'react-native-gesture-handler';
|
||||||
|
import { EdgeInsets } from 'react-native-safe-area-context';
|
||||||
|
import PointerEventsView from './PointerEventsView';
|
||||||
|
import memoize from '../../utils/memoize';
|
||||||
|
import StackGestureContext from '../../utils/StackGestureContext';
|
||||||
import {
|
import {
|
||||||
TransitionSpec,
|
TransitionSpec,
|
||||||
StackCardStyleInterpolator,
|
StackCardStyleInterpolator,
|
||||||
@@ -21,9 +25,6 @@ import {
|
|||||||
SpringConfig,
|
SpringConfig,
|
||||||
TimingConfig,
|
TimingConfig,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
import memoize from '../../utils/memoize';
|
|
||||||
import StackGestureContext from '../../utils/StackGestureContext';
|
|
||||||
import PointerEventsView from './PointerEventsView';
|
|
||||||
|
|
||||||
type Props = ViewProps & {
|
type Props = ViewProps & {
|
||||||
index: number;
|
index: number;
|
||||||
@@ -33,6 +34,7 @@ type Props = ViewProps & {
|
|||||||
next?: Animated.Node<number>;
|
next?: Animated.Node<number>;
|
||||||
current: Animated.Value<number>;
|
current: Animated.Value<number>;
|
||||||
layout: Layout;
|
layout: Layout;
|
||||||
|
insets: EdgeInsets;
|
||||||
gestureDirection: 'horizontal' | 'vertical';
|
gestureDirection: 'horizontal' | 'vertical';
|
||||||
onOpen: (isFinished: boolean) => void;
|
onOpen: (isFinished: boolean) => void;
|
||||||
onClose: (isFinished: boolean) => void;
|
onClose: (isFinished: boolean) => void;
|
||||||
@@ -48,6 +50,7 @@ type Props = ViewProps & {
|
|||||||
vertical?: number;
|
vertical?: number;
|
||||||
horizontal?: number;
|
horizontal?: number;
|
||||||
};
|
};
|
||||||
|
gestureVelocityImpact: number;
|
||||||
transitionSpec: {
|
transitionSpec: {
|
||||||
open: TransitionSpec;
|
open: TransitionSpec;
|
||||||
close: TransitionSpec;
|
close: TransitionSpec;
|
||||||
@@ -86,7 +89,7 @@ const MINUS_ONE_NODE = UNSET_NODE;
|
|||||||
const DIRECTION_VERTICAL = -1;
|
const DIRECTION_VERTICAL = -1;
|
||||||
const DIRECTION_HORIZONTAL = 1;
|
const DIRECTION_HORIZONTAL = 1;
|
||||||
|
|
||||||
const SWIPE_VELOCITY_IMPACT = 0.3;
|
const GESTURE_VELOCITY_IMPACT = 0.3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The distance of touch start from the edge of the screen where the gesture will be recognized
|
* The distance of touch start from the edge of the screen where the gesture will be recognized
|
||||||
@@ -228,10 +231,16 @@ export default class Card extends React.Component<Props> {
|
|||||||
overlayEnabled: Platform.OS !== 'ios',
|
overlayEnabled: Platform.OS !== 'ios',
|
||||||
shadowEnabled: true,
|
shadowEnabled: true,
|
||||||
gestureEnabled: true,
|
gestureEnabled: true,
|
||||||
|
gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,
|
||||||
};
|
};
|
||||||
|
|
||||||
componentDidUpdate(prevProps: Props) {
|
componentDidUpdate(prevProps: Props) {
|
||||||
const { layout, gestureDirection, closing } = this.props;
|
const {
|
||||||
|
layout,
|
||||||
|
gestureDirection,
|
||||||
|
gestureVelocityImpact,
|
||||||
|
closing,
|
||||||
|
} = this.props;
|
||||||
const { width, height } = layout;
|
const { width, height } = layout;
|
||||||
|
|
||||||
if (width !== prevProps.layout.width) {
|
if (width !== prevProps.layout.width) {
|
||||||
@@ -242,6 +251,10 @@ export default class Card extends React.Component<Props> {
|
|||||||
this.layout.height.setValue(height);
|
this.layout.height.setValue(height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gestureVelocityImpact !== prevProps.gestureVelocityImpact) {
|
||||||
|
this.gestureVelocityImpact.setValue(gestureVelocityImpact);
|
||||||
|
}
|
||||||
|
|
||||||
if (gestureDirection !== prevProps.gestureDirection) {
|
if (gestureDirection !== prevProps.gestureDirection) {
|
||||||
this.direction.setValue(
|
this.direction.setValue(
|
||||||
gestureDirection === 'vertical'
|
gestureDirection === 'vertical'
|
||||||
@@ -277,6 +290,9 @@ export default class Card extends React.Component<Props> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private isVisible = new Value<Binary>(TRUE);
|
private isVisible = new Value<Binary>(TRUE);
|
||||||
|
private gestureVelocityImpact = new Value<number>(
|
||||||
|
this.props.gestureVelocityImpact
|
||||||
|
);
|
||||||
private isVisibleValue: Binary = TRUE;
|
private isVisibleValue: Binary = TRUE;
|
||||||
private nextIsVisible = new Value<Binary | -1>(UNSET);
|
private nextIsVisible = new Value<Binary | -1>(UNSET);
|
||||||
|
|
||||||
@@ -368,7 +384,8 @@ export default class Card extends React.Component<Props> {
|
|||||||
this.props.index,
|
this.props.index,
|
||||||
this.props.current,
|
this.props.current,
|
||||||
this.props.next,
|
this.props.next,
|
||||||
this.props.layout
|
this.props.layout,
|
||||||
|
this.props.insets
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -471,18 +488,19 @@ export default class Card extends React.Component<Props> {
|
|||||||
|
|
||||||
private extrapolatedPosition = add(
|
private extrapolatedPosition = add(
|
||||||
this.gesture,
|
this.gesture,
|
||||||
multiply(this.velocity, SWIPE_VELOCITY_IMPACT)
|
multiply(this.velocity, this.gestureVelocityImpact)
|
||||||
);
|
);
|
||||||
|
|
||||||
private exec = [
|
private exec = [
|
||||||
cond(
|
set(
|
||||||
eq(this.direction, DIRECTION_HORIZONTAL),
|
this.gesture,
|
||||||
set(
|
cond(
|
||||||
this.gesture,
|
eq(this.direction, DIRECTION_HORIZONTAL),
|
||||||
multiply(
|
multiply(
|
||||||
this.gestureUntraversed,
|
this.gestureUntraversed,
|
||||||
I18nManager.isRTL ? MINUS_ONE_NODE : TRUE_NODE
|
I18nManager.isRTL ? MINUS_ONE_NODE : TRUE_NODE
|
||||||
)
|
),
|
||||||
|
this.gestureUntraversed
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
set(
|
set(
|
||||||
@@ -577,9 +595,13 @@ export default class Card extends React.Component<Props> {
|
|||||||
cond(
|
cond(
|
||||||
this.distance,
|
this.distance,
|
||||||
divide(
|
divide(
|
||||||
multiply(
|
cond(
|
||||||
this.gestureUntraversed,
|
eq(this.direction, DIRECTION_HORIZONTAL),
|
||||||
I18nManager.isRTL ? MINUS_ONE_NODE : TRUE_NODE
|
multiply(
|
||||||
|
this.gestureUntraversed,
|
||||||
|
I18nManager.isRTL ? MINUS_ONE_NODE : TRUE_NODE
|
||||||
|
),
|
||||||
|
this.gestureUntraversed
|
||||||
),
|
),
|
||||||
this.distance
|
this.distance
|
||||||
),
|
),
|
||||||
@@ -645,8 +667,8 @@ export default class Card extends React.Component<Props> {
|
|||||||
private handleGestureEventVertical = Animated.event([
|
private handleGestureEventVertical = Animated.event([
|
||||||
{
|
{
|
||||||
nativeEvent: {
|
nativeEvent: {
|
||||||
translationY: this.gesture,
|
translationY: this.gestureUntraversed,
|
||||||
velocityY: this.velocity,
|
velocityY: this.velocityUntraversed,
|
||||||
state: this.gestureState,
|
state: this.gestureState,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -661,7 +683,8 @@ export default class Card extends React.Component<Props> {
|
|||||||
index: number,
|
index: number,
|
||||||
current: Animated.Node<number>,
|
current: Animated.Node<number>,
|
||||||
next: Animated.Node<number> | undefined,
|
next: Animated.Node<number> | undefined,
|
||||||
layout: Layout
|
layout: Layout,
|
||||||
|
insets: EdgeInsets
|
||||||
) =>
|
) =>
|
||||||
styleInterpolator({
|
styleInterpolator({
|
||||||
index,
|
index,
|
||||||
@@ -671,12 +694,7 @@ export default class Card extends React.Component<Props> {
|
|||||||
layouts: {
|
layouts: {
|
||||||
screen: layout,
|
screen: layout,
|
||||||
},
|
},
|
||||||
insets: {
|
insets,
|
||||||
top: 0,
|
|
||||||
right: 0,
|
|
||||||
bottom: 0,
|
|
||||||
left: 0,
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -689,7 +707,8 @@ export default class Card extends React.Component<Props> {
|
|||||||
this.props.index,
|
this.props.index,
|
||||||
this.props.current,
|
this.props.current,
|
||||||
this.props.next,
|
this.props.next,
|
||||||
this.props.layout
|
this.props.layout,
|
||||||
|
this.props.insets
|
||||||
);
|
);
|
||||||
|
|
||||||
private gestureActivationCriteria() {
|
private gestureActivationCriteria() {
|
||||||
@@ -739,6 +758,7 @@ export default class Card extends React.Component<Props> {
|
|||||||
current,
|
current,
|
||||||
next,
|
next,
|
||||||
layout,
|
layout,
|
||||||
|
insets,
|
||||||
overlayEnabled,
|
overlayEnabled,
|
||||||
shadowEnabled,
|
shadowEnabled,
|
||||||
gestureEnabled,
|
gestureEnabled,
|
||||||
@@ -755,7 +775,8 @@ export default class Card extends React.Component<Props> {
|
|||||||
index,
|
index,
|
||||||
current,
|
current,
|
||||||
next,
|
next,
|
||||||
layout
|
layout,
|
||||||
|
insets
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ type Props = {
|
|||||||
navigation: StackNavigationHelpers;
|
navigation: StackNavigationHelpers;
|
||||||
descriptors: StackDescriptorMap;
|
descriptors: StackDescriptorMap;
|
||||||
routes: Route<string>[];
|
routes: Route<string>[];
|
||||||
openingRoutes: string[];
|
openingRouteKeys: string[];
|
||||||
closingRoutes: string[];
|
closingRouteKeys: string[];
|
||||||
onGoBack: (props: { route: Route<string> }) => void;
|
onGoBack: (props: { route: Route<string> }) => void;
|
||||||
onOpenRoute: (props: { route: Route<string> }) => void;
|
onOpenRoute: (props: { route: Route<string> }) => void;
|
||||||
onCloseRoute: (props: { route: Route<string> }) => void;
|
onCloseRoute: (props: { route: Route<string> }) => void;
|
||||||
@@ -148,7 +148,7 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
acc[curr.key] =
|
acc[curr.key] =
|
||||||
state.progress[curr.key] ||
|
state.progress[curr.key] ||
|
||||||
new Animated.Value(
|
new Animated.Value(
|
||||||
props.openingRoutes.includes(curr.key) &&
|
props.openingRouteKeys.includes(curr.key) &&
|
||||||
descriptor &&
|
descriptor &&
|
||||||
descriptor.options.animationEnabled !== false
|
descriptor.options.animationEnabled !== false
|
||||||
? 0
|
? 0
|
||||||
@@ -292,11 +292,12 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
mode,
|
mode,
|
||||||
|
insets,
|
||||||
descriptors,
|
descriptors,
|
||||||
state,
|
state,
|
||||||
navigation,
|
navigation,
|
||||||
routes,
|
routes,
|
||||||
closingRoutes,
|
closingRouteKeys,
|
||||||
onOpenRoute,
|
onOpenRoute,
|
||||||
onCloseRoute,
|
onCloseRoute,
|
||||||
onGoBack,
|
onGoBack,
|
||||||
@@ -337,7 +338,6 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
const focused = focusedRoute.key === route.key;
|
const focused = focusedRoute.key === route.key;
|
||||||
const current = progress[route.key];
|
const current = progress[route.key];
|
||||||
const scene = scenes[index];
|
const scene = scenes[index];
|
||||||
const descriptor = scene.descriptor;
|
|
||||||
const next = self[index + 1]
|
const next = self[index + 1]
|
||||||
? progress[self[index + 1].key]
|
? progress[self[index + 1].key]
|
||||||
: ANIMATED_ONE;
|
: ANIMATED_ONE;
|
||||||
@@ -353,21 +353,54 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
header,
|
headerShown,
|
||||||
headerTransparent,
|
headerTransparent,
|
||||||
cardTransparent,
|
cardTransparent,
|
||||||
cardShadowEnabled,
|
cardShadowEnabled,
|
||||||
cardOverlayEnabled,
|
cardOverlayEnabled,
|
||||||
cardStyle,
|
cardStyle,
|
||||||
gestureResponseDistance,
|
gestureResponseDistance,
|
||||||
|
gestureVelocityImpact,
|
||||||
gestureDirection = defaultTransitionPreset.gestureDirection,
|
gestureDirection = defaultTransitionPreset.gestureDirection,
|
||||||
transitionSpec = defaultTransitionPreset.transitionSpec,
|
transitionSpec = defaultTransitionPreset.transitionSpec,
|
||||||
cardStyleInterpolator = defaultTransitionPreset.cardStyleInterpolator,
|
cardStyleInterpolator = defaultTransitionPreset.cardStyleInterpolator,
|
||||||
headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,
|
headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,
|
||||||
} = descriptor
|
} = scene.descriptor
|
||||||
? descriptor.options
|
? scene.descriptor.options
|
||||||
: ({} as StackNavigationOptions);
|
: ({} as StackNavigationOptions);
|
||||||
|
|
||||||
|
let transitionConfig = {
|
||||||
|
transitionSpec,
|
||||||
|
cardStyleInterpolator,
|
||||||
|
headerStyleInterpolator,
|
||||||
|
};
|
||||||
|
|
||||||
|
// When a screen is not the last, it should use next screen's transition config
|
||||||
|
// Many transitions also animate the previous screen, so using 2 different transitions doesn't look right
|
||||||
|
// For example combining a slide and a modal transition would look wrong otherwise
|
||||||
|
// With this approach, combining different transition styles in the same navigator mostly looks right
|
||||||
|
// This will still be broken when 2 transitions have different idle state (e.g. modal presentation),
|
||||||
|
// but majority of the transitions look alright
|
||||||
|
if (index !== self.length - 1) {
|
||||||
|
const nextScene = scenes[index + 1];
|
||||||
|
|
||||||
|
if (nextScene) {
|
||||||
|
const {
|
||||||
|
transitionSpec = defaultTransitionPreset.transitionSpec,
|
||||||
|
cardStyleInterpolator = defaultTransitionPreset.cardStyleInterpolator,
|
||||||
|
headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,
|
||||||
|
} = nextScene.descriptor
|
||||||
|
? nextScene.descriptor.options
|
||||||
|
: ({} as StackNavigationOptions);
|
||||||
|
|
||||||
|
transitionConfig = {
|
||||||
|
transitionSpec,
|
||||||
|
cardStyleInterpolator,
|
||||||
|
headerStyleInterpolator,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MaybeScreen
|
<MaybeScreen
|
||||||
key={route.key}
|
key={route.key}
|
||||||
@@ -380,8 +413,9 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
index={index}
|
index={index}
|
||||||
active={index === self.length - 1}
|
active={index === self.length - 1}
|
||||||
focused={focused}
|
focused={focused}
|
||||||
closing={closingRoutes.includes(route.key)}
|
closing={closingRouteKeys.includes(route.key)}
|
||||||
layout={layout}
|
layout={layout}
|
||||||
|
insets={insets}
|
||||||
current={current}
|
current={current}
|
||||||
scene={scene}
|
scene={scene}
|
||||||
previousScene={scenes[index - 1]}
|
previousScene={scenes[index - 1]}
|
||||||
@@ -391,15 +425,14 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
cardOverlayEnabled={cardOverlayEnabled}
|
cardOverlayEnabled={cardOverlayEnabled}
|
||||||
cardShadowEnabled={cardShadowEnabled}
|
cardShadowEnabled={cardShadowEnabled}
|
||||||
cardStyle={cardStyle}
|
cardStyle={cardStyle}
|
||||||
gestureEnabled={index !== 0 && getGesturesEnabled({ route })}
|
|
||||||
onPageChangeStart={onPageChangeStart}
|
onPageChangeStart={onPageChangeStart}
|
||||||
onPageChangeConfirm={onPageChangeConfirm}
|
onPageChangeConfirm={onPageChangeConfirm}
|
||||||
onPageChangeCancel={onPageChangeCancel}
|
onPageChangeCancel={onPageChangeCancel}
|
||||||
gestureResponseDistance={gestureResponseDistance}
|
gestureResponseDistance={gestureResponseDistance}
|
||||||
floatingHeaderHeight={floatingHeaderHeights[route.key]}
|
floatingHeaderHeight={floatingHeaderHeights[route.key]}
|
||||||
hasCustomHeader={header === null}
|
|
||||||
getPreviousRoute={getPreviousRoute}
|
getPreviousRoute={getPreviousRoute}
|
||||||
headerMode={headerMode}
|
headerMode={headerMode}
|
||||||
|
headerShown={headerShown}
|
||||||
headerTransparent={headerTransparent}
|
headerTransparent={headerTransparent}
|
||||||
renderHeader={renderHeader}
|
renderHeader={renderHeader}
|
||||||
renderScene={renderScene}
|
renderScene={renderScene}
|
||||||
@@ -408,10 +441,10 @@ export default class Stack extends React.Component<Props, State> {
|
|||||||
onTransitionStart={this.handleTransitionStart}
|
onTransitionStart={this.handleTransitionStart}
|
||||||
onTransitionEnd={this.handleTransitionEnd}
|
onTransitionEnd={this.handleTransitionEnd}
|
||||||
onGoBack={onGoBack}
|
onGoBack={onGoBack}
|
||||||
|
gestureEnabled={index !== 0 && getGesturesEnabled({ route })}
|
||||||
|
gestureVelocityImpact={gestureVelocityImpact}
|
||||||
gestureDirection={gestureDirection}
|
gestureDirection={gestureDirection}
|
||||||
transitionSpec={transitionSpec}
|
{...transitionConfig}
|
||||||
cardStyleInterpolator={cardStyleInterpolator}
|
|
||||||
headerStyleInterpolator={headerStyleInterpolator}
|
|
||||||
/>
|
/>
|
||||||
</MaybeScreen>
|
</MaybeScreen>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { View, StyleSheet, StyleProp, ViewStyle } from 'react-native';
|
import { View, StyleSheet, StyleProp, ViewStyle } from 'react-native';
|
||||||
import Animated from 'react-native-reanimated';
|
import Animated from 'react-native-reanimated';
|
||||||
|
import { EdgeInsets } from 'react-native-safe-area-context';
|
||||||
import { StackNavigationState } from '@react-navigation/routers';
|
import { StackNavigationState } from '@react-navigation/routers';
|
||||||
import { Route } from '@react-navigation/core';
|
import { Route } from '@react-navigation/core';
|
||||||
import { Props as HeaderContainerProps } from '../Header/HeaderContainer';
|
import { Props as HeaderContainerProps } from '../Header/HeaderContainer';
|
||||||
@@ -19,6 +20,7 @@ type Props = TransitionPreset & {
|
|||||||
focused: boolean;
|
focused: boolean;
|
||||||
closing: boolean;
|
closing: boolean;
|
||||||
layout: Layout;
|
layout: Layout;
|
||||||
|
insets: EdgeInsets;
|
||||||
current: Animated.Value<number>;
|
current: Animated.Value<number>;
|
||||||
previousScene?: Scene<Route<string>>;
|
previousScene?: Scene<Route<string>>;
|
||||||
scene: Scene<Route<string>>;
|
scene: Scene<Route<string>>;
|
||||||
@@ -28,7 +30,6 @@ type Props = TransitionPreset & {
|
|||||||
cardOverlayEnabled?: boolean;
|
cardOverlayEnabled?: boolean;
|
||||||
cardShadowEnabled?: boolean;
|
cardShadowEnabled?: boolean;
|
||||||
cardStyle?: StyleProp<ViewStyle>;
|
cardStyle?: StyleProp<ViewStyle>;
|
||||||
gestureEnabled?: boolean;
|
|
||||||
getPreviousRoute: (props: {
|
getPreviousRoute: (props: {
|
||||||
route: Route<string>;
|
route: Route<string>;
|
||||||
}) => Route<string> | undefined;
|
}) => Route<string> | undefined;
|
||||||
@@ -45,14 +46,16 @@ type Props = TransitionPreset & {
|
|||||||
onPageChangeStart?: () => void;
|
onPageChangeStart?: () => void;
|
||||||
onPageChangeConfirm?: () => void;
|
onPageChangeConfirm?: () => void;
|
||||||
onPageChangeCancel?: () => void;
|
onPageChangeCancel?: () => void;
|
||||||
|
gestureEnabled?: boolean;
|
||||||
gestureResponseDistance?: {
|
gestureResponseDistance?: {
|
||||||
vertical?: number;
|
vertical?: number;
|
||||||
horizontal?: number;
|
horizontal?: number;
|
||||||
};
|
};
|
||||||
|
gestureVelocityImpact?: number;
|
||||||
headerMode: StackHeaderMode;
|
headerMode: StackHeaderMode;
|
||||||
|
headerShown?: boolean;
|
||||||
headerTransparent?: boolean;
|
headerTransparent?: boolean;
|
||||||
floatingHeaderHeight: number;
|
floatingHeaderHeight: number;
|
||||||
hasCustomHeader: boolean;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class StackItem extends React.PureComponent<Props> {
|
export default class StackItem extends React.PureComponent<Props> {
|
||||||
@@ -93,6 +96,7 @@ export default class StackItem extends React.PureComponent<Props> {
|
|||||||
const {
|
const {
|
||||||
index,
|
index,
|
||||||
layout,
|
layout,
|
||||||
|
insets,
|
||||||
active,
|
active,
|
||||||
focused,
|
focused,
|
||||||
closing,
|
closing,
|
||||||
@@ -104,12 +108,13 @@ export default class StackItem extends React.PureComponent<Props> {
|
|||||||
cardOverlayEnabled,
|
cardOverlayEnabled,
|
||||||
cardShadowEnabled,
|
cardShadowEnabled,
|
||||||
cardStyle,
|
cardStyle,
|
||||||
gestureEnabled,
|
|
||||||
onPageChangeStart,
|
onPageChangeStart,
|
||||||
onPageChangeCancel,
|
onPageChangeCancel,
|
||||||
|
gestureEnabled,
|
||||||
gestureResponseDistance,
|
gestureResponseDistance,
|
||||||
|
gestureVelocityImpact,
|
||||||
floatingHeaderHeight,
|
floatingHeaderHeight,
|
||||||
hasCustomHeader,
|
headerShown,
|
||||||
getPreviousRoute,
|
getPreviousRoute,
|
||||||
headerMode,
|
headerMode,
|
||||||
headerTransparent,
|
headerTransparent,
|
||||||
@@ -128,6 +133,7 @@ export default class StackItem extends React.PureComponent<Props> {
|
|||||||
transparent={cardTransparent}
|
transparent={cardTransparent}
|
||||||
gestureDirection={gestureDirection}
|
gestureDirection={gestureDirection}
|
||||||
layout={layout}
|
layout={layout}
|
||||||
|
insets={insets}
|
||||||
current={current}
|
current={current}
|
||||||
next={scene.progress.next}
|
next={scene.progress.next}
|
||||||
closing={closing}
|
closing={closing}
|
||||||
@@ -135,18 +141,19 @@ export default class StackItem extends React.PureComponent<Props> {
|
|||||||
onClose={this.handleClose}
|
onClose={this.handleClose}
|
||||||
overlayEnabled={cardOverlayEnabled}
|
overlayEnabled={cardOverlayEnabled}
|
||||||
shadowEnabled={cardShadowEnabled}
|
shadowEnabled={cardShadowEnabled}
|
||||||
gestureEnabled={gestureEnabled}
|
|
||||||
onTransitionStart={this.handleTransitionStart}
|
onTransitionStart={this.handleTransitionStart}
|
||||||
onGestureBegin={onPageChangeStart}
|
onGestureBegin={onPageChangeStart}
|
||||||
onGestureCanceled={onPageChangeCancel}
|
onGestureCanceled={onPageChangeCancel}
|
||||||
|
gestureEnabled={gestureEnabled}
|
||||||
gestureResponseDistance={gestureResponseDistance}
|
gestureResponseDistance={gestureResponseDistance}
|
||||||
|
gestureVelocityImpact={gestureVelocityImpact}
|
||||||
transitionSpec={transitionSpec}
|
transitionSpec={transitionSpec}
|
||||||
styleInterpolator={cardStyleInterpolator}
|
styleInterpolator={cardStyleInterpolator}
|
||||||
accessibilityElementsHidden={!focused}
|
accessibilityElementsHidden={!focused}
|
||||||
importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}
|
importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}
|
||||||
pointerEvents="box-none"
|
pointerEvents="box-none"
|
||||||
containerStyle={
|
containerStyle={
|
||||||
headerMode === 'float' && !headerTransparent && !hasCustomHeader
|
headerMode === 'float' && !headerTransparent && headerShown !== false
|
||||||
? { marginTop: floatingHeaderHeight }
|
? { marginTop: floatingHeaderHeight }
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,12 +30,14 @@ type Props = StackNavigationConfig & {
|
|||||||
type State = {
|
type State = {
|
||||||
// Local copy of the routes which are actually rendered
|
// Local copy of the routes which are actually rendered
|
||||||
routes: Route<string>[];
|
routes: Route<string>[];
|
||||||
|
// Previous routes, to compare whether routes have changed or not
|
||||||
|
previousRoutes: Route<string>[];
|
||||||
// List of routes being opened, we need to animate pushing of these new routes
|
// List of routes being opened, we need to animate pushing of these new routes
|
||||||
opening: string[];
|
openingRouteKeys: string[];
|
||||||
// List of routes being closed, we need to animate popping of these routes
|
// List of routes being closed, we need to animate popping of these routes
|
||||||
closing: string[];
|
closingRouteKeys: string[];
|
||||||
// List of routes being replaced, we need to keep a copy until the new route animates in
|
// List of routes being replaced, we need to keep a copy until the new route animates in
|
||||||
replacing: string[];
|
replacingRouteKeys: string[];
|
||||||
// Since the local routes can vary from the routes from props, we need to keep the descriptors for old routes
|
// Since the local routes can vary from the routes from props, we need to keep the descriptors for old routes
|
||||||
// Otherwise we won't be able to access the options for routes that were removed
|
// Otherwise we won't be able to access the options for routes that were removed
|
||||||
descriptors: StackDescriptorMap;
|
descriptors: StackDescriptorMap;
|
||||||
@@ -46,6 +48,11 @@ class StackView extends React.Component<Props, State> {
|
|||||||
props: Readonly<Props>,
|
props: Readonly<Props>,
|
||||||
state: Readonly<State>
|
state: Readonly<State>
|
||||||
) {
|
) {
|
||||||
|
// If there was no change in routes, we don't need to compute anything
|
||||||
|
if (props.state.routes === state.previousRoutes && state.routes.length) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Here we determine which routes were added or removed to animate them
|
// Here we determine which routes were added or removed to animate them
|
||||||
// We keep a copy of the route being removed in local state to be able to animate it
|
// We keep a copy of the route being removed in local state to be able to animate it
|
||||||
|
|
||||||
@@ -56,31 +63,23 @@ class StackView extends React.Component<Props, State> {
|
|||||||
props.state.routes.slice(0, props.state.index + 1)
|
props.state.routes.slice(0, props.state.index + 1)
|
||||||
: props.state.routes;
|
: props.state.routes;
|
||||||
|
|
||||||
if (props.state.index < props.state.routes.length - 1) {
|
|
||||||
console.warn(
|
|
||||||
'StackRouter provided invalid state, index should always be the last route in the stack.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there was no change in routes, we don't need to compute anything
|
|
||||||
if (routes === state.routes || !state.routes.length) {
|
|
||||||
return {
|
|
||||||
routes,
|
|
||||||
descriptors: props.descriptors,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now we need to determine which routes were added and removed
|
// Now we need to determine which routes were added and removed
|
||||||
let { opening, closing, replacing } = state;
|
let {
|
||||||
|
openingRouteKeys,
|
||||||
|
closingRouteKeys,
|
||||||
|
replacingRouteKeys,
|
||||||
|
previousRoutes,
|
||||||
|
} = state;
|
||||||
|
|
||||||
const previousRoutes = state.routes.filter(
|
const previousFocusedRoute = previousRoutes[previousRoutes.length - 1] as
|
||||||
route => !closing.includes(route.key) && !replacing.includes(route.key)
|
| Route<string>
|
||||||
);
|
| undefined;
|
||||||
|
|
||||||
const previousFocusedRoute = previousRoutes[previousRoutes.length - 1];
|
|
||||||
const nextFocusedRoute = routes[routes.length - 1];
|
const nextFocusedRoute = routes[routes.length - 1];
|
||||||
|
|
||||||
if (previousFocusedRoute.key !== nextFocusedRoute.key) {
|
if (
|
||||||
|
previousFocusedRoute &&
|
||||||
|
previousFocusedRoute.key !== nextFocusedRoute.key
|
||||||
|
) {
|
||||||
// We only need to animate routes if the focused route changed
|
// We only need to animate routes if the focused route changed
|
||||||
// Animating previous routes won't be visible coz the focused route is on top of everything
|
// Animating previous routes won't be visible coz the focused route is on top of everything
|
||||||
|
|
||||||
@@ -99,22 +98,33 @@ class StackView extends React.Component<Props, State> {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
isAnimationEnabled(nextFocusedRoute) &&
|
isAnimationEnabled(nextFocusedRoute) &&
|
||||||
!opening.includes(nextFocusedRoute.key)
|
!openingRouteKeys.includes(nextFocusedRoute.key)
|
||||||
) {
|
) {
|
||||||
// In this case, we need to animate pushing the focused route
|
// In this case, we need to animate pushing the focused route
|
||||||
// We don't care about animating any other added routes because they won't be visible
|
// We don't care about animating any other added routes because they won't be visible
|
||||||
opening = [...opening, nextFocusedRoute.key];
|
openingRouteKeys = [...openingRouteKeys, nextFocusedRoute.key];
|
||||||
|
|
||||||
closing = closing.filter(key => key !== nextFocusedRoute.key);
|
closingRouteKeys = closingRouteKeys.filter(
|
||||||
replacing = replacing.filter(key => key !== nextFocusedRoute.key);
|
key => key !== nextFocusedRoute.key
|
||||||
|
);
|
||||||
|
replacingRouteKeys = replacingRouteKeys.filter(
|
||||||
|
key => key !== nextFocusedRoute.key
|
||||||
|
);
|
||||||
|
|
||||||
if (!routes.find(r => r.key === previousFocusedRoute.key)) {
|
if (!routes.find(r => r.key === previousFocusedRoute.key)) {
|
||||||
// The previous focused route isn't present in state, we treat this as a replace
|
// The previous focused route isn't present in state, we treat this as a replace
|
||||||
|
|
||||||
replacing = [...replacing, previousFocusedRoute.key];
|
replacingRouteKeys = [
|
||||||
|
...replacingRouteKeys,
|
||||||
|
previousFocusedRoute.key,
|
||||||
|
];
|
||||||
|
|
||||||
opening = opening.filter(key => key !== previousFocusedRoute.key);
|
openingRouteKeys = openingRouteKeys.filter(
|
||||||
closing = closing.filter(key => key !== previousFocusedRoute.key);
|
key => key !== previousFocusedRoute.key
|
||||||
|
);
|
||||||
|
closingRouteKeys = closingRouteKeys.filter(
|
||||||
|
key => key !== previousFocusedRoute.key
|
||||||
|
);
|
||||||
|
|
||||||
// Keep the old route in state because it's visible under the new route, and removing it will feel abrupt
|
// Keep the old route in state because it's visible under the new route, and removing it will feel abrupt
|
||||||
// We need to insert it just before the focused one (the route being pushed)
|
// We need to insert it just before the focused one (the route being pushed)
|
||||||
@@ -128,14 +138,18 @@ class StackView extends React.Component<Props, State> {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
isAnimationEnabled(previousFocusedRoute) &&
|
isAnimationEnabled(previousFocusedRoute) &&
|
||||||
!closing.includes(previousFocusedRoute.key)
|
!closingRouteKeys.includes(previousFocusedRoute.key)
|
||||||
) {
|
) {
|
||||||
// Sometimes a route can be closed before the opening animation finishes
|
// Sometimes a route can be closed before the opening animation finishes
|
||||||
// So we also need to remove it from the opening list
|
// So we also need to remove it from the opening list
|
||||||
closing = [...closing, previousFocusedRoute.key];
|
closingRouteKeys = [...closingRouteKeys, previousFocusedRoute.key];
|
||||||
|
|
||||||
opening = opening.filter(key => key !== previousFocusedRoute.key);
|
openingRouteKeys = openingRouteKeys.filter(
|
||||||
replacing = replacing.filter(key => key !== previousFocusedRoute.key);
|
key => key !== previousFocusedRoute.key
|
||||||
|
);
|
||||||
|
replacingRouteKeys = replacingRouteKeys.filter(
|
||||||
|
key => key !== previousFocusedRoute.key
|
||||||
|
);
|
||||||
|
|
||||||
// Keep a copy of route being removed in the state to be able to animate it
|
// Keep a copy of route being removed in the state to be able to animate it
|
||||||
routes = [...routes, previousFocusedRoute];
|
routes = [...routes, previousFocusedRoute];
|
||||||
@@ -145,14 +159,15 @@ class StackView extends React.Component<Props, State> {
|
|||||||
// i.e. the currently focused route already existed and the previously focused route still exists
|
// i.e. the currently focused route already existed and the previously focused route still exists
|
||||||
// We don't know how to animate this
|
// We don't know how to animate this
|
||||||
}
|
}
|
||||||
} else {
|
} else if (replacingRouteKeys.length || closingRouteKeys.length) {
|
||||||
// Keep the routes we are closing or replacing
|
// Keep the routes we are closing or replacing
|
||||||
routes = routes.slice();
|
routes = routes.slice();
|
||||||
routes.splice(
|
routes.splice(
|
||||||
routes.length - 1,
|
routes.length - 1,
|
||||||
0,
|
0,
|
||||||
...state.routes.filter(
|
...state.routes.filter(
|
||||||
({ key }) => replacing.includes(key) || closing.includes(key)
|
({ key }) =>
|
||||||
|
replacingRouteKeys.includes(key) || closingRouteKeys.includes(key)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -173,18 +188,20 @@ class StackView extends React.Component<Props, State> {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
routes,
|
routes,
|
||||||
opening,
|
previousRoutes: props.state.routes,
|
||||||
closing,
|
openingRouteKeys,
|
||||||
replacing,
|
closingRouteKeys,
|
||||||
|
replacingRouteKeys,
|
||||||
descriptors,
|
descriptors,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
state: State = {
|
state: State = {
|
||||||
routes: [],
|
routes: [],
|
||||||
opening: [],
|
previousRoutes: [],
|
||||||
closing: [],
|
openingRouteKeys: [],
|
||||||
replacing: [],
|
closingRouteKeys: [],
|
||||||
|
replacingRouteKeys: [],
|
||||||
descriptors: {},
|
descriptors: {},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -209,11 +226,12 @@ class StackView extends React.Component<Props, State> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private getPreviousRoute = ({ route }: { route: Route<string> }) => {
|
private getPreviousRoute = ({ route }: { route: Route<string> }) => {
|
||||||
const { closing, replacing } = this.state;
|
const { closingRouteKeys, replacingRouteKeys } = this.state;
|
||||||
const routes = this.state.routes.filter(
|
const routes = this.state.routes.filter(
|
||||||
r =>
|
r =>
|
||||||
r.key === route.key ||
|
r.key === route.key ||
|
||||||
(!closing.includes(r.key) && !replacing.includes(r.key))
|
(!closingRouteKeys.includes(r.key) &&
|
||||||
|
!replacingRouteKeys.includes(r.key))
|
||||||
);
|
);
|
||||||
const index = routes.findIndex(r => r.key === route.key);
|
const index = routes.findIndex(r => r.key === route.key);
|
||||||
|
|
||||||
@@ -249,12 +267,12 @@ class StackView extends React.Component<Props, State> {
|
|||||||
|
|
||||||
private handleOpenRoute = ({ route }: { route: Route<string> }) => {
|
private handleOpenRoute = ({ route }: { route: Route<string> }) => {
|
||||||
this.setState(state => ({
|
this.setState(state => ({
|
||||||
routes: state.replacing.length
|
routes: state.replacingRouteKeys.length
|
||||||
? state.routes.filter(r => !state.replacing.includes(r.key))
|
? state.routes.filter(r => !state.replacingRouteKeys.includes(r.key))
|
||||||
: state.routes,
|
: state.routes,
|
||||||
opening: state.opening.filter(key => key !== route.key),
|
openingRouteKeys: state.openingRouteKeys.filter(key => key !== route.key),
|
||||||
closing: state.closing.filter(key => key !== route.key),
|
closingRouteKeys: state.closingRouteKeys.filter(key => key !== route.key),
|
||||||
replacing: [],
|
replacingRouteKeys: [],
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -265,8 +283,8 @@ class StackView extends React.Component<Props, State> {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
this.setState(state => ({
|
this.setState(state => ({
|
||||||
routes: state.routes.filter(r => r.key !== route.key),
|
routes: state.routes.filter(r => r.key !== route.key),
|
||||||
opening: state.opening.filter(key => key !== route.key),
|
openingRouteKeys: state.openingRouteKeys.filter(key => key !== route.key),
|
||||||
closing: state.closing.filter(key => key !== route.key),
|
closingRouteKeys: state.closingRouteKeys.filter(key => key !== route.key),
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -281,7 +299,12 @@ class StackView extends React.Component<Props, State> {
|
|||||||
...rest
|
...rest
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const { routes, descriptors, opening, closing } = this.state;
|
const {
|
||||||
|
routes,
|
||||||
|
descriptors,
|
||||||
|
openingRouteKeys,
|
||||||
|
closingRouteKeys,
|
||||||
|
} = this.state;
|
||||||
|
|
||||||
const headerMode =
|
const headerMode =
|
||||||
mode !== 'modal' && Platform.OS === 'ios' ? 'float' : 'screen';
|
mode !== 'modal' && Platform.OS === 'ios' ? 'float' : 'screen';
|
||||||
@@ -296,8 +319,8 @@ class StackView extends React.Component<Props, State> {
|
|||||||
getPreviousRoute={this.getPreviousRoute}
|
getPreviousRoute={this.getPreviousRoute}
|
||||||
getGesturesEnabled={this.getGesturesEnabled}
|
getGesturesEnabled={this.getGesturesEnabled}
|
||||||
routes={routes}
|
routes={routes}
|
||||||
openingRoutes={opening}
|
openingRouteKeys={openingRouteKeys}
|
||||||
closingRoutes={closing}
|
closingRouteKeys={closingRouteKeys}
|
||||||
onGoBack={this.handleGoBack}
|
onGoBack={this.handleGoBack}
|
||||||
onOpenRoute={this.handleOpenRoute}
|
onOpenRoute={this.handleOpenRoute}
|
||||||
onCloseRoute={this.handleCloseRoute}
|
onCloseRoute={this.handleCloseRoute}
|
||||||
|
|||||||
221
yarn.lock
221
yarn.lock
@@ -1097,7 +1097,7 @@
|
|||||||
mv "~2"
|
mv "~2"
|
||||||
safe-json-stringify "~1"
|
safe-json-stringify "~1"
|
||||||
|
|
||||||
"@expo/config@^2.1.5", "@expo/config@^2.1.6":
|
"@expo/config@^2.1.6":
|
||||||
version "2.1.6"
|
version "2.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/config/-/config-2.1.6.tgz#05144899e1438d7f125f5115c473f514ad8b39b9"
|
resolved "https://registry.yarnpkg.com/@expo/config/-/config-2.1.6.tgz#05144899e1438d7f125f5115c473f514ad8b39b9"
|
||||||
integrity sha512-P2tIT9rs2ljE8nC2cOclnlJtDdAhtnDsixHal4n3vGLzWHSJ6M/Zaa/F4BwoOBRe0D/+lB11P9vs85aFYWw3uw==
|
integrity sha512-P2tIT9rs2ljE8nC2cOclnlJtDdAhtnDsixHal4n3vGLzWHSJ6M/Zaa/F4BwoOBRe0D/+lB11P9vs85aFYWw3uw==
|
||||||
@@ -1108,10 +1108,10 @@
|
|||||||
resolve-from "^5.0.0"
|
resolve-from "^5.0.0"
|
||||||
slugify "^1.3.4"
|
slugify "^1.3.4"
|
||||||
|
|
||||||
"@expo/dev-tools@^0.6.2":
|
"@expo/dev-tools@^0.6.5":
|
||||||
version "0.6.4"
|
version "0.6.5"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/dev-tools/-/dev-tools-0.6.4.tgz#7c282ae434a36b94ef678ed8f4f9a0b0f7b88f01"
|
resolved "https://registry.yarnpkg.com/@expo/dev-tools/-/dev-tools-0.6.5.tgz#83110b39a39b895c573a72f17df5f751bf2d161d"
|
||||||
integrity sha512-5ePx75GnGYCRRZgEOqK7aH7VzWKR9/rYXEUHuw/2EeDYVQv7VGkwtzqnEgLWrnJFxnQK90UDHI6R4H9lHXJyOQ==
|
integrity sha512-H6EbiAQO1OHRUehYF8OYFQfXWPBb3GEBUhYsf+EljOOKlNFB/fiVD/HAdOReMZ/yxA27wHzgwTalqyd/FarQ3w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/config" "^2.1.6"
|
"@expo/config" "^2.1.6"
|
||||||
base64url "3.0.1"
|
base64url "3.0.1"
|
||||||
@@ -1133,7 +1133,7 @@
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
sharp-cli "1.10.0"
|
sharp-cli "1.10.0"
|
||||||
|
|
||||||
"@expo/json-file@^8.1.12", "@expo/json-file@^8.1.12-alpha.0":
|
"@expo/json-file@^8.1.12":
|
||||||
version "8.1.12"
|
version "8.1.12"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.1.12.tgz#f7128f0fc63f2726efd85a27e3c2e31193148d6c"
|
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.1.12.tgz#f7128f0fc63f2726efd85a27e3c2e31193148d6c"
|
||||||
integrity sha512-TSn31UGQ5N40c5a4uyruxw0JAY40CUjjXdH5YeUyBSX1wqOth4YujHnGCuHyKH1ViSQQ+qinN2OpT+2294GV3g==
|
integrity sha512-TSn31UGQ5N40c5a4uyruxw0JAY40CUjjXdH5YeUyBSX1wqOth4YujHnGCuHyKH1ViSQQ+qinN2OpT+2294GV3g==
|
||||||
@@ -1261,15 +1261,15 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn "^6.0.5"
|
cross-spawn "^6.0.5"
|
||||||
|
|
||||||
"@expo/traveling-fastlane-darwin@1.9.11":
|
"@expo/traveling-fastlane-darwin@1.10.0":
|
||||||
version "1.9.11"
|
version "1.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/traveling-fastlane-darwin/-/traveling-fastlane-darwin-1.9.11.tgz#9064cfe3c266d5dc12fcc1fbed5acadc3f965870"
|
resolved "https://registry.yarnpkg.com/@expo/traveling-fastlane-darwin/-/traveling-fastlane-darwin-1.10.0.tgz#d7d250fdcc485263d29c9a4e524370fc2c9be5e9"
|
||||||
integrity sha512-nvZSe2FI8cFcv27uosrmjIhfwbuClG+rbMe9OswsdhIVaJkYvF8LN8gIJ/Fsi2S+20GQizxjC11DFq++MOCm+w==
|
integrity sha512-Ry9gHhDIPjSnP5lvtUcR7LoE5vU2Ngn893B22PYEk1RuwJG5m7ezKSGyXjs3W1WVUvPW/2+ikF1YjrNyPAIrqQ==
|
||||||
|
|
||||||
"@expo/traveling-fastlane-linux@1.9.11":
|
"@expo/traveling-fastlane-linux@1.10.0":
|
||||||
version "1.9.11"
|
version "1.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/traveling-fastlane-linux/-/traveling-fastlane-linux-1.9.11.tgz#a26a94c0e4b118130da27a7edb3410d67706b81b"
|
resolved "https://registry.yarnpkg.com/@expo/traveling-fastlane-linux/-/traveling-fastlane-linux-1.10.0.tgz#ef3914a34f290bcc4d60dd1e1d090bb11c32a4bd"
|
||||||
integrity sha512-xCHnqKfwWYygQfRbi9MGNSG28EHKDtzMB+QDklSH1GeD90TA0beAjlNF+Z+KPxj28s3WZlQr9yw1AqBS7aipcw==
|
integrity sha512-+9Mjvs9m15Meexp00A2JDXLfQHwcgua1dI0ldqVboHblzTACTMvXrfHmewxBoIBLZ45c1lLuIHD7+3UAnBHVCA==
|
||||||
|
|
||||||
"@expo/vector-icons@^10.0.0", "@expo/vector-icons@^10.0.2":
|
"@expo/vector-icons@^10.0.0", "@expo/vector-icons@^10.0.2":
|
||||||
version "10.0.5"
|
version "10.0.5"
|
||||||
@@ -1278,10 +1278,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
lodash "^4.17.4"
|
lodash "^4.17.4"
|
||||||
|
|
||||||
"@expo/webpack-config@^0.7.8":
|
"@expo/webpack-config@^0.7.11":
|
||||||
version "0.7.9"
|
version "0.7.11"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/webpack-config/-/webpack-config-0.7.9.tgz#507ca5144efcc893553a867e60092d5d6ae0ebb2"
|
resolved "https://registry.yarnpkg.com/@expo/webpack-config/-/webpack-config-0.7.11.tgz#f79e89bd336495651bed776958784947440b2cce"
|
||||||
integrity sha512-8nImzNpmJvk50MitmEEvZEZYMBjB5ivj/Tk3qlwe1+stwk9RWs0BkqE68ZUb6puEm+59PvhX4K6G0A434hH0gg==
|
integrity sha512-jOvqup4MR6hCIhtaNp4hwZI7PxzKg2jWIEKYQVCg5A9Eo1K2RWgi50BRvRT7xJ5/ZyNwOUSirzp6LYg4r+YuUg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/runtime" "^7.3.4"
|
"@babel/runtime" "^7.3.4"
|
||||||
@@ -1344,10 +1344,10 @@
|
|||||||
pouchdb-collections "^1.0.1"
|
pouchdb-collections "^1.0.1"
|
||||||
tiny-queue "^0.2.1"
|
tiny-queue "^0.2.1"
|
||||||
|
|
||||||
"@expo/xdl@^56.2.4":
|
"@expo/xdl@^56.2.7":
|
||||||
version "56.2.6"
|
version "56.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/xdl/-/xdl-56.2.6.tgz#c2bf2cf45f1798c318551df45235801a97dc3038"
|
resolved "https://registry.yarnpkg.com/@expo/xdl/-/xdl-56.2.7.tgz#fcbae6dc2ffd67257427a0a2f4e8d5736d741491"
|
||||||
integrity sha512-5scnyNmJk1I9iin2BXj/RIs4gwSrWGTIYbabEsUiywepv9LnjpleAELR9K7negpw6lL8nnkHcUxvMIhUrA3h8Q==
|
integrity sha512-0IqbRLYAAzHdFCitinywFf4MSLEhNHs3RnFuoDIMPEsGeYhnlobUChdkcbNZ84q2+R1bH6yDf0/m2aFubmU95A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/bunyan" "3.0.2"
|
"@expo/bunyan" "3.0.2"
|
||||||
"@expo/config" "^2.1.6"
|
"@expo/config" "^2.1.6"
|
||||||
@@ -1357,7 +1357,7 @@
|
|||||||
"@expo/osascript" "^2.0.6-alpha.0"
|
"@expo/osascript" "^2.0.6-alpha.0"
|
||||||
"@expo/schemer" "^1.2.8"
|
"@expo/schemer" "^1.2.8"
|
||||||
"@expo/spawn-async" "1.5.0"
|
"@expo/spawn-async" "1.5.0"
|
||||||
"@expo/webpack-config" "^0.7.8"
|
"@expo/webpack-config" "^0.7.11"
|
||||||
"@types/webpack" "^4.32.1"
|
"@types/webpack" "^4.32.1"
|
||||||
"@types/webpack-dev-server" "^3.1.7"
|
"@types/webpack-dev-server" "^3.1.7"
|
||||||
analytics-node "3.3.0"
|
analytics-node "3.3.0"
|
||||||
@@ -2266,18 +2266,18 @@
|
|||||||
call-me-maybe "^1.0.1"
|
call-me-maybe "^1.0.1"
|
||||||
glob-to-regexp "^0.3.0"
|
glob-to-regexp "^0.3.0"
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.2":
|
"@nodelib/fs.scandir@2.1.3":
|
||||||
version "2.1.2"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.2.tgz#1f981cd5b83e85cfdeb386fc693d4baab392fa54"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
|
||||||
integrity sha512-wrIBsjA5pl13f0RN4Zx4FNWmU71lv03meGKnqRUoCyan17s4V3WL92f3w3AIuWbNnpcrQyFBU5qMavJoB8d27w==
|
integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nodelib/fs.stat" "2.0.2"
|
"@nodelib/fs.stat" "2.0.3"
|
||||||
run-parallel "^1.1.9"
|
run-parallel "^1.1.9"
|
||||||
|
|
||||||
"@nodelib/fs.stat@2.0.2", "@nodelib/fs.stat@^2.0.1":
|
"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.1":
|
||||||
version "2.0.2"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.2.tgz#2762aea8fe78ea256860182dcb52d61ee4b8fda6"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
|
||||||
integrity sha512-z8+wGWV2dgUhLqrtRYa03yDx4HWMvXKi1z8g3m2JyxAx8F7xk74asqPk5LAETjqDSGLFML/6CDl0+yFunSYicw==
|
integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
|
||||||
|
|
||||||
"@nodelib/fs.stat@^1.1.2":
|
"@nodelib/fs.stat@^1.1.2":
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
@@ -2285,11 +2285,11 @@
|
|||||||
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
||||||
|
|
||||||
"@nodelib/fs.walk@^1.2.1":
|
"@nodelib/fs.walk@^1.2.1":
|
||||||
version "1.2.3"
|
version "1.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.3.tgz#a555dc256acaf00c62b0db29529028dd4d4cb141"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
|
||||||
integrity sha512-l6t8xEhfK9Sa4YO5mIRdau7XSOADfmh3jCr0evNHdY+HNkW6xuQhgMH7D73VV6WpZOagrW0UludvMTiifiwTfA==
|
integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nodelib/fs.scandir" "2.1.2"
|
"@nodelib/fs.scandir" "2.1.3"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
"@octokit/endpoint@^5.1.0":
|
"@octokit/endpoint@^5.1.0":
|
||||||
@@ -2327,9 +2327,9 @@
|
|||||||
universal-user-agent "^4.0.0"
|
universal-user-agent "^4.0.0"
|
||||||
|
|
||||||
"@octokit/rest@^16.28.4":
|
"@octokit/rest@^16.28.4":
|
||||||
version "16.30.1"
|
version "16.30.2"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.30.1.tgz#03e6dfb93e9a9cd2b3bacb95c49a8c7923f42ad0"
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.30.2.tgz#da379a6f4f7e7e152733d38a9cba21da5c76ef7c"
|
||||||
integrity sha512-1n2QzTbbaBXNLpx7WHlcsSMdJvxSdKmerXQm+bMYlKDbQM19uq446ZpGs7Ynq5SsdLj1usIfgJ9gJf4LtcWkDw==
|
integrity sha512-6YN4N/uWjjBUx4TNfWAxkrzCy1i7M4agdHs2g/sOTdSY/Va3T1v/f/ME5EnNfd64AMpBWee6rcLHQe5fki89lg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/request" "^5.0.0"
|
"@octokit/request" "^5.0.0"
|
||||||
"@octokit/request-error" "^1.0.2"
|
"@octokit/request-error" "^1.0.2"
|
||||||
@@ -2618,9 +2618,9 @@
|
|||||||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||||
|
|
||||||
"@types/node@*", "@types/node@^12.0.2":
|
"@types/node@*", "@types/node@^12.0.2":
|
||||||
version "12.7.10"
|
version "12.7.11"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.10.tgz#942c128c37b5d780aff5441fd457cd7ffdc18b36"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.11.tgz#be879b52031cfb5d295b047f5462d8ef1a716446"
|
||||||
integrity sha512-ObiPa43kJCkgjG+7usRCoxWhqKCmT5JWvi+8bg54KMkP2CvTliYLmKR9uHLaz+51JDOX/8MjWc6Xz18xHTs7XQ==
|
integrity sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==
|
||||||
|
|
||||||
"@types/node@^9.4.6":
|
"@types/node@^9.4.6":
|
||||||
version "9.6.52"
|
version "9.6.52"
|
||||||
@@ -2661,17 +2661,17 @@
|
|||||||
"@types/react-native" "*"
|
"@types/react-native" "*"
|
||||||
|
|
||||||
"@types/react-native@*", "@types/react-native@^0.60.17":
|
"@types/react-native@*", "@types/react-native@^0.60.17":
|
||||||
version "0.60.17"
|
version "0.60.18"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.17.tgz#3a4c2f3ebe1942fb267bba9374f0533c0ece261c"
|
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.18.tgz#00cee391af17f2f1c0936c2143ffbd97c65fddfb"
|
||||||
integrity sha512-dvPdLYxrU74bU14GvGV+f1EMjyD6L2iDenEzDfUBWhxn7KKRgkWb289r2EIN+10XqvRP+H7YBgl+AoEHEfkcTA==
|
integrity sha512-l/mZQ6r1Y3Owokp00wGZDTiSSkCbGGNscAsuc2ZFa86p1nBmYGot/a5tYvWrw1mRSbUqYb0/J/NqQZwoGoB+3A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/prop-types" "*"
|
"@types/prop-types" "*"
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react@*", "@types/react@^16.9.4":
|
"@types/react@*", "@types/react@^16.9.4":
|
||||||
version "16.9.4"
|
version "16.9.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.4.tgz#de8cf5e5e2838659fb78fa93181078469eeb19fc"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.5.tgz#079dabd918b19b32118c25fd00a786bb6d0d5e51"
|
||||||
integrity sha512-ItGNmJvQ0IvWt8rbk5PLdpdQhvBVxAaXI9hDlx7UMd8Ie1iMIuwMNiKeTfmVN517CdplpyXvA22X4zm4jGGZnw==
|
integrity sha512-jQ12VMiFOWYlp+j66dghOWcmDDwhca0bnlcTxS4Qz/fh5gi6wpaZDthPEu/Gc/YlAuO87vbiUXL8qKstFvuOaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/prop-types" "*"
|
"@types/prop-types" "*"
|
||||||
csstype "^2.2.0"
|
csstype "^2.2.0"
|
||||||
@@ -3140,12 +3140,12 @@ agentkeepalive@^3.4.1:
|
|||||||
humanize-ms "^1.2.1"
|
humanize-ms "^1.2.1"
|
||||||
|
|
||||||
aggregate-error@^3.0.0:
|
aggregate-error@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.0.tgz#5b5a3c95e9095f311c9ab16c19fb4f3527cd3f79"
|
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
|
||||||
integrity sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA==
|
integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==
|
||||||
dependencies:
|
dependencies:
|
||||||
clean-stack "^2.0.0"
|
clean-stack "^2.0.0"
|
||||||
indent-string "^3.2.0"
|
indent-string "^4.0.0"
|
||||||
|
|
||||||
ajv-errors@^1.0.0:
|
ajv-errors@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@@ -5706,6 +5706,11 @@ detect-indent@^5.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
|
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
|
||||||
integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
|
integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
|
||||||
|
|
||||||
|
detect-indent@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd"
|
||||||
|
integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==
|
||||||
|
|
||||||
detect-libc@^1.0.2, detect-libc@^1.0.3:
|
detect-libc@^1.0.2, detect-libc@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||||
@@ -5716,6 +5721,11 @@ detect-newline@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||||
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
|
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
|
||||||
|
|
||||||
|
detect-newline@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.0.0.tgz#8ae477c089e51872c264531cd6547719c0b86b2f"
|
||||||
|
integrity sha512-JAP22dVPAqvhdRFFxK1G5GViIokyUn0UWXRNW0ztK96fsqi9cuM8w8ESbSk+T2w5OVorcMcL6m7yUg1RrX+2CA==
|
||||||
|
|
||||||
detect-node@^2.0.4:
|
detect-node@^2.0.4:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
|
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
|
||||||
@@ -6052,7 +6062,7 @@ errorhandler@^1.5.0:
|
|||||||
accepts "~1.3.7"
|
accepts "~1.3.7"
|
||||||
escape-html "~1.0.3"
|
escape-html "~1.0.3"
|
||||||
|
|
||||||
es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
|
es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
|
||||||
version "1.15.0"
|
version "1.15.0"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57"
|
||||||
integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==
|
integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==
|
||||||
@@ -6230,9 +6240,9 @@ eslint-plugin-prettier@^3.1.1:
|
|||||||
prettier-linter-helpers "^1.0.0"
|
prettier-linter-helpers "^1.0.0"
|
||||||
|
|
||||||
eslint-plugin-react-hooks@^2.1.0:
|
eslint-plugin-react-hooks@^2.1.0:
|
||||||
version "2.1.1"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.1.1.tgz#b416390b642113f444ee175b667c3222a045a98e"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.1.2.tgz#1358d2acb2c5e02b7e90c37e611ac258a488e3a7"
|
||||||
integrity sha512-AYitPYzwHyKpZKpzMH5sCkld68vP8wn29Lq716h4jk1ll9Gp4BBFoPq/iCjBBT35eXFJvOPjgMlvhIXFB0OhXg==
|
integrity sha512-ZR+AyesAUGxJAyTFlF3MbzeVHAcQTFQt1fFVe5o0dzY/HFoj1dgQDMoIkiM+ltN/HhlHBYX4JpJwYonjxsyQMA==
|
||||||
|
|
||||||
eslint-plugin-react-native-globals@^0.1.1:
|
eslint-plugin-react-native-globals@^0.1.1:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
@@ -6563,17 +6573,17 @@ expo-asset@~7.0.0:
|
|||||||
url-parse "^1.4.4"
|
url-parse "^1.4.4"
|
||||||
|
|
||||||
expo-cli@^3.1.2:
|
expo-cli@^3.1.2:
|
||||||
version "3.1.2"
|
version "3.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/expo-cli/-/expo-cli-3.1.2.tgz#6b2bf82da5693b141ed1d148e54f7ebe49528a93"
|
resolved "https://registry.yarnpkg.com/expo-cli/-/expo-cli-3.2.2.tgz#2b85c4167392e40fd3c2e1228376ab8f39442f3b"
|
||||||
integrity sha512-z5Nb5IiI43B7wZugLh4yj2FoN+aSUNLA6xrxZCltZJGdwJcwa/EC6PQv55qQe5jo/4SBk15iQCfCS5AQRfKyrw==
|
integrity sha512-p4n8Hyai/IcGdDTXc2+9Ravko+StOnxGS/g/uKxymvHH2/PCRL4biE4JW+a7dcSq5xjnjTAEmgSsRjIwI5oW6A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/bunyan" "3.0.2"
|
"@expo/bunyan" "3.0.2"
|
||||||
"@expo/config" "^2.1.5"
|
"@expo/config" "^2.1.6"
|
||||||
"@expo/dev-tools" "^0.6.2"
|
"@expo/dev-tools" "^0.6.5"
|
||||||
"@expo/json-file" "^8.1.12-alpha.0"
|
"@expo/json-file" "^8.1.12"
|
||||||
"@expo/simple-spinner" "1.0.2"
|
"@expo/simple-spinner" "1.0.2"
|
||||||
"@expo/spawn-async" "1.5.0"
|
"@expo/spawn-async" "1.5.0"
|
||||||
"@expo/xdl" "^56.2.4"
|
"@expo/xdl" "^56.2.7"
|
||||||
"@types/untildify" "^3.0.0"
|
"@types/untildify" "^3.0.0"
|
||||||
ansi-regex "^4.1.0"
|
ansi-regex "^4.1.0"
|
||||||
axios "0.19.0"
|
axios "0.19.0"
|
||||||
@@ -6585,6 +6595,8 @@ expo-cli@^3.1.2:
|
|||||||
commander "2.17.1"
|
commander "2.17.1"
|
||||||
dateformat "3.0.3"
|
dateformat "3.0.3"
|
||||||
delay-async "1.2.0"
|
delay-async "1.2.0"
|
||||||
|
detect-indent "^6.0.0"
|
||||||
|
detect-newline "^3.0.0"
|
||||||
enquirer "2.1.1"
|
enquirer "2.1.1"
|
||||||
envinfo "5.10.0"
|
envinfo "5.10.0"
|
||||||
es6-error "3.2.0"
|
es6-error "3.2.0"
|
||||||
@@ -6615,8 +6627,8 @@ expo-cli@^3.1.2:
|
|||||||
validator "10.5.0"
|
validator "10.5.0"
|
||||||
wordwrap "1.0.0"
|
wordwrap "1.0.0"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@expo/traveling-fastlane-darwin" "1.9.11"
|
"@expo/traveling-fastlane-darwin" "1.10.0"
|
||||||
"@expo/traveling-fastlane-linux" "1.9.11"
|
"@expo/traveling-fastlane-linux" "1.10.0"
|
||||||
|
|
||||||
expo-constants@~7.0.0:
|
expo-constants@~7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
@@ -7427,9 +7439,9 @@ get-caller-file@^2.0.1:
|
|||||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||||
|
|
||||||
get-own-enumerable-property-symbols@^3.0.0:
|
get-own-enumerable-property-symbols@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
|
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz#6f7764f88ea11e0b514bd9bd860a132259992ca4"
|
||||||
integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
|
integrity sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==
|
||||||
|
|
||||||
get-pkg-repo@^1.0.0:
|
get-pkg-repo@^1.0.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
@@ -8312,12 +8324,12 @@ imurmurhash@^0.1.4:
|
|||||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||||
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
|
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
|
||||||
|
|
||||||
indent-string@3.2.0, indent-string@^3.0.0, indent-string@^3.2.0:
|
indent-string@3.2.0, indent-string@^3.0.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
|
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
|
||||||
integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
|
integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
|
||||||
|
|
||||||
indent-string@4.0.0:
|
indent-string@4.0.0, indent-string@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
|
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
|
||||||
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
|
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
|
||||||
@@ -11428,14 +11440,14 @@ object.entries@^1.1.0:
|
|||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
|
|
||||||
object.fromentries@^2.0.0:
|
object.fromentries@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab"
|
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704"
|
||||||
integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==
|
integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties "^1.1.2"
|
define-properties "^1.1.3"
|
||||||
es-abstract "^1.11.0"
|
es-abstract "^1.15.0"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
has "^1.0.1"
|
has "^1.0.3"
|
||||||
|
|
||||||
object.getownpropertydescriptors@^2.0.3:
|
object.getownpropertydescriptors@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
@@ -13006,25 +13018,25 @@ react-devtools-core@^3.6.0:
|
|||||||
shell-quote "^1.6.1"
|
shell-quote "^1.6.1"
|
||||||
ws "^3.3.1"
|
ws "^3.3.1"
|
||||||
|
|
||||||
react-dom@^16.10.1:
|
react-dom@^16.8.3:
|
||||||
version "16.10.1"
|
version "16.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.10.1.tgz#479a6511ba34a429273c213cbc2a9ac4d296dac1"
|
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.10.2.tgz#4840bce5409176bc3a1f2bd8cb10b92db452fda6"
|
||||||
integrity sha512-SmM4ZW0uug0rn95U8uqr52I7UdNf6wdGLeXDmNLfg3y5q5H9eAbdjF5ubQc3bjDyRrvdAB2IKG7X0GzSpnn5Mg==
|
integrity sha512-kWGDcH3ItJK4+6Pl9DZB16BXYAZyrYQItU4OMy0jAkv5aNqc+mAKb4TpFtAteI6TJZu+9ZlNhaeNQSVQDHJzkw==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.16.1"
|
scheduler "^0.16.2"
|
||||||
|
|
||||||
react-error-overlay@^6.0.1:
|
react-error-overlay@^6.0.1:
|
||||||
version "6.0.3"
|
version "6.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d"
|
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d"
|
||||||
integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==
|
integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==
|
||||||
|
|
||||||
react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6:
|
react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.3, react-is@^16.8.4:
|
||||||
version "16.10.1"
|
version "16.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.1.tgz#0612786bf19df406502d935494f0450b40b8294f"
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab"
|
||||||
integrity sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw==
|
integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==
|
||||||
|
|
||||||
react-native-branch@~3.0.1:
|
react-native-branch@~3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
@@ -13138,7 +13150,7 @@ react-native-view-shot@2.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-2.6.0.tgz#3b23675826f67658366352c4b97b59a6aded2f43"
|
resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-2.6.0.tgz#3b23675826f67658366352c4b97b59a6aded2f43"
|
||||||
integrity sha512-yO9vWi/11m2hEJl8FrW1SMeVzFfPtMKh20MUInGqlsL0H8Ya2JGGlFfrBzx1KiFR2hFb5OdsTLYNtcVZtJ6pLQ==
|
integrity sha512-yO9vWi/11m2hEJl8FrW1SMeVzFfPtMKh20MUInGqlsL0H8Ya2JGGlFfrBzx1KiFR2hFb5OdsTLYNtcVZtJ6pLQ==
|
||||||
|
|
||||||
react-native@0.59.10, react-native@^0.59.8, react-native@^0.61.2:
|
react-native@0.59.10, react-native@^0.59.10:
|
||||||
version "0.59.10"
|
version "0.59.10"
|
||||||
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.59.10.tgz#352f381e382f93a0403be499c9e384bf51c2591c"
|
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.59.10.tgz#352f381e382f93a0403be499c9e384bf51c2591c"
|
||||||
integrity sha512-guB9YW+pBqS1dnfZ4ntzjINopiCUAbdmshU2wMWD1W32fRczLAopi/7Q2iHKP8LTCdxuYZV3fa9Mew5PSuANAw==
|
integrity sha512-guB9YW+pBqS1dnfZ4ntzjINopiCUAbdmshU2wMWD1W32fRczLAopi/7Q2iHKP8LTCdxuYZV3fa9Mew5PSuANAw==
|
||||||
@@ -13202,15 +13214,15 @@ react-proxy@^1.1.7:
|
|||||||
lodash "^4.6.1"
|
lodash "^4.6.1"
|
||||||
react-deep-force-update "^1.0.0"
|
react-deep-force-update "^1.0.0"
|
||||||
|
|
||||||
react-test-renderer@16.10.1:
|
react-test-renderer@16.8.3:
|
||||||
version "16.10.1"
|
version "16.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.10.1.tgz#75b8e8ce152e00eadd303e9fa514a2ca917ee049"
|
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.3.tgz#230006af264cc46aeef94392e04747c21839e05e"
|
||||||
integrity sha512-VT8nd7XrrUV7MQPxeIuH7WstfrK2A8kgcMwGUtVXa0ja+CiYkxdmLYNjwX1L7irRF7ydzJJWiSLsQf2xBj4Xaw==
|
integrity sha512-rjJGYebduKNZH0k1bUivVrRLX04JfIQ0FKJLPK10TAb06XWhfi4gTobooF9K/DEFNW98iGac3OSxkfIJUN9Mdg==
|
||||||
dependencies:
|
dependencies:
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
react-is "^16.8.6"
|
react-is "^16.8.3"
|
||||||
scheduler "^0.16.1"
|
scheduler "^0.13.3"
|
||||||
|
|
||||||
react-transform-hmr@^1.0.4:
|
react-transform-hmr@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
@@ -13220,14 +13232,15 @@ react-transform-hmr@^1.0.4:
|
|||||||
global "^4.3.0"
|
global "^4.3.0"
|
||||||
react-proxy "^1.1.7"
|
react-proxy "^1.1.7"
|
||||||
|
|
||||||
react@16.10.1, react@^16.10.1:
|
react@16.8.3, react@^16.8.3:
|
||||||
version "16.10.1"
|
version "16.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-16.10.1.tgz#967c1e71a2767dfa699e6ba702a00483e3b0573f"
|
resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9"
|
||||||
integrity sha512-2bisHwMhxQ3XQz4LiJJwG3360pY965pTl/MRrZYxIBKVj4fOHoDs5aZAkYXGxDRO1Li+SyjTAilQEbOmtQJHzA==
|
integrity sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
|
scheduler "^0.13.3"
|
||||||
|
|
||||||
read-chunk@2.1.0:
|
read-chunk@2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
@@ -13939,10 +13952,18 @@ sax@~1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240"
|
||||||
integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=
|
integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=
|
||||||
|
|
||||||
scheduler@^0.16.1:
|
scheduler@^0.13.3:
|
||||||
version "0.16.1"
|
version "0.13.6"
|
||||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.16.1.tgz#a6fb6ddec12dc2119176e6eb54ecfe69a9eba8df"
|
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
|
||||||
integrity sha512-MIuie7SgsqMYOdCXVFZa8SKoNorJZUWHW8dPgto7uEHn1lX3fg2Gu0TzgK8USj76uxV7vB5eRMnZs/cdEHg+cg==
|
integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
|
||||||
|
dependencies:
|
||||||
|
loose-envify "^1.1.0"
|
||||||
|
object-assign "^4.1.1"
|
||||||
|
|
||||||
|
scheduler@^0.16.1, scheduler@^0.16.2:
|
||||||
|
version "0.16.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.16.2.tgz#f74cd9d33eff6fc554edfb79864868e4819132c1"
|
||||||
|
integrity sha512-BqYVWqwz6s1wZMhjFvLfVR5WXP7ZY32M/wYPo04CcuPM7XZEbV2TBNW7Z0UkguPTl0dWMA59VbNXxK6q+pHItg==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user