Compare commits

...

12 Commits

Author SHA1 Message Date
satyajit.happy
5303e8ffb5 chore: publish
- @react-navigation/bottom-tabs@5.0.0-alpha.13
 - @react-navigation/compat@5.0.0-alpha.7
 - @react-navigation/core@5.0.0-alpha.14
 - @react-navigation/drawer@5.0.0-alpha.13
 - @react-navigation/example@5.0.0-alpha.12
 - @react-navigation/material-bottom-tabs@5.0.0-alpha.12
 - @react-navigation/material-top-tabs@5.0.0-alpha.11
 - @react-navigation/native@5.0.0-alpha.11
 - @react-navigation/stack@5.0.0-alpha.24
2019-10-06 16:44:17 +02:00
satyajit.happy
ba6b6ae025 feat: drop header: null in favor of more explitit headerShown option 2019-10-06 15:56:30 +02:00
satyajit.happy
16079d1050 fix: actually expose gestureVelocityImpact in the public API 2019-10-06 04:17:49 +02:00
satyajit.happy
b4a76814c6 fix: use next screen's animation when not focused. fixes #87 2019-10-06 04:13:13 +02:00
Michał Osadnik
8294efc8f4 feat: add gestureVelocityImpact as a prop for stack (#123) 2019-10-06 00:05:42 +02:00
Michał Osadnik
a27ade8881 fix: handling vertical gesture in RTL (#122) 2019-10-06 00:00:43 +02:00
satyajit.happy
615b523d26 fix: don't recompute if routes didn't change 2019-10-05 22:50:09 +02:00
satyajit.happy
070c46ba64 chore: fix react and react-native versions 2019-10-04 14:36:49 +02:00
satyajit.happy
d8394cf919 chore: publish
- @react-navigation/example@5.0.0-alpha.11
 - @react-navigation/stack@5.0.0-alpha.23
2019-10-04 00:54:40 +02:00
satyajit.happy
a7c4a4d7cd fix: fix vertical gesture 2019-10-04 00:53:26 +02:00
satyajit.happy
282b465ae1 chore: add example for modal presentation 2019-10-04 00:12:56 +02:00
satyajit.happy
6f5f4b7d35 fix: fix passing insets to interpolator 2019-10-04 00:01:45 +02:00
31 changed files with 702 additions and 334 deletions

View File

@@ -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": {

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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",

View File

@@ -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 (

View File

@@ -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 />;

View 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,
},
});

View File

@@ -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 (

View File

@@ -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,
}, },

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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"
}, },

View File

@@ -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

View File

@@ -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",

View File

@@ -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 = {

View File

@@ -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>
); );

View File

@@ -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
); );
} }

View File

@@ -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>
); );

View File

@@ -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
} }

View File

@@ -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
View File

@@ -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"