From 852f2f0f190019e09a47203914be4e5cb6b5611b Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Tue, 17 Nov 2020 20:34:45 +0100 Subject: [PATCH] chore: remove compat package --- .eslintrc.json | 1 - example/src/Screens/CompatAPI.tsx | 164 ---- example/src/index.tsx | 5 - packages/compat/CHANGELOG.md | 778 ------------------ packages/compat/LICENSE | 21 - packages/compat/README.md | 5 - packages/compat/package.json | 59 -- packages/compat/src/CompatScreen.tsx | 17 - packages/compat/src/DrawerActions.tsx | 13 - packages/compat/src/NavigationActions.tsx | 48 -- packages/compat/src/NavigationEvents.tsx | 45 - packages/compat/src/ScreenPropsContext.tsx | 3 - packages/compat/src/StackActions.tsx | 71 -- packages/compat/src/SwitchActions.tsx | 18 - .../compat/src/createCompatNavigationProp.tsx | 220 ----- .../src/createCompatNavigatorFactory.tsx | 194 ----- packages/compat/src/createSwitchNavigator.tsx | 34 - packages/compat/src/helpers.tsx | 88 -- packages/compat/src/index.tsx | 19 - packages/compat/src/types.tsx | 92 --- packages/compat/src/useCompatNavigation.tsx | 34 - packages/compat/src/withNavigation.tsx | 34 - packages/compat/src/withNavigationFocus.tsx | 31 - packages/compat/tsconfig.build.json | 6 - packages/compat/tsconfig.json | 11 - 25 files changed, 2011 deletions(-) delete mode 100644 example/src/Screens/CompatAPI.tsx delete mode 100644 packages/compat/CHANGELOG.md delete mode 100644 packages/compat/LICENSE delete mode 100644 packages/compat/README.md delete mode 100644 packages/compat/package.json delete mode 100644 packages/compat/src/CompatScreen.tsx delete mode 100644 packages/compat/src/DrawerActions.tsx delete mode 100644 packages/compat/src/NavigationActions.tsx delete mode 100644 packages/compat/src/NavigationEvents.tsx delete mode 100644 packages/compat/src/ScreenPropsContext.tsx delete mode 100644 packages/compat/src/StackActions.tsx delete mode 100644 packages/compat/src/SwitchActions.tsx delete mode 100644 packages/compat/src/createCompatNavigationProp.tsx delete mode 100644 packages/compat/src/createCompatNavigatorFactory.tsx delete mode 100644 packages/compat/src/createSwitchNavigator.tsx delete mode 100644 packages/compat/src/helpers.tsx delete mode 100644 packages/compat/src/index.tsx delete mode 100644 packages/compat/src/types.tsx delete mode 100644 packages/compat/src/useCompatNavigation.tsx delete mode 100644 packages/compat/src/withNavigation.tsx delete mode 100644 packages/compat/src/withNavigationFocus.tsx delete mode 100644 packages/compat/tsconfig.build.json delete mode 100644 packages/compat/tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json index 35ffe19f..ced08f7c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,7 +8,6 @@ "@react-navigation/core", "@react-navigation/native", "@react-navigation/routers", - "@react-navigation/compat", "@react-navigation/stack", "@react-navigation/drawer", "@react-navigation/bottom-tabs", diff --git a/example/src/Screens/CompatAPI.tsx b/example/src/Screens/CompatAPI.tsx deleted file mode 100644 index 07cbebb0..00000000 --- a/example/src/Screens/CompatAPI.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import * as React from 'react'; -import { View, ScrollView, StyleSheet, Platform } from 'react-native'; -import { Button } from 'react-native-paper'; -import { - createCompatNavigatorFactory, - CompatScreenType, -} from '@react-navigation/compat'; -import { - createStackNavigator, - StackNavigationProp, - StackScreenProps, -} from '@react-navigation/stack'; -import Article from '../Shared/Article'; -import Albums from '../Shared/Albums'; -import NewsFeed from '../Shared/NewsFeed'; - -type CompatStackParams = { - Albums: undefined; - Nested: { author: string }; -}; - -type NestedStackParams = { - Feed: undefined; - Article: { author: string }; -}; - -const scrollEnabled = Platform.select({ web: true, default: false }); - -const AlbumsScreen: CompatScreenType> = ({ navigation }) => { - return ( - - - - - - - - ); -}; - -const FeedScreen: CompatScreenType> = ({ - navigation, -}) => { - return ( - - - - - - - - ); -}; - -const ArticleScreen: CompatScreenType> = ({ navigation }) => { - return ( - - - - - -
- - ); -}; - -ArticleScreen.navigationOptions = ({ navigation }) => ({ - title: `Article by ${navigation.getParam('author')}`, -}); - -const createCompatStackNavigator = createCompatNavigatorFactory( - createStackNavigator -); - -const CompatStack = createCompatStackNavigator< - StackNavigationProp ->( - { - Albums: AlbumsScreen, - Nested: { - screen: createCompatStackNavigator< - StackNavigationProp - >( - { - Feed: { getScreen: () => FeedScreen }, - Article: { getScreen: () => ArticleScreen }, - }, - { navigationOptions: { headerShown: false } } - ), - params: { - author: 'Gandalf', - }, - }, - }, - { - mode: 'modal', - } -); - -export default function CompatStackScreen({ - navigation, -}: StackScreenProps<{}>) { - React.useLayoutEffect(() => { - navigation.setOptions({ - headerShown: false, - }); - }, [navigation]); - - return ; -} - -const styles = StyleSheet.create({ - buttons: { - flexDirection: 'row', - padding: 8, - }, - button: { - margin: 8, - }, -}); diff --git a/example/src/index.tsx b/example/src/index.tsx index 6dd2cc75..fd96c849 100644 --- a/example/src/index.tsx +++ b/example/src/index.tsx @@ -51,7 +51,6 @@ import DynamicTabs from './Screens/DynamicTabs'; import MasterDetail from './Screens/MasterDetail'; import AuthFlow from './Screens/AuthFlow'; import PreventRemove from './Screens/PreventRemove'; -import CompatAPI from './Screens/CompatAPI'; import LinkComponent from './Screens/LinkComponent'; if (Platform.OS !== 'web') { @@ -103,10 +102,6 @@ const SCREENS = { title: 'Prevent removing screen', component: PreventRemove, }, - CompatAPI: { - title: 'Compat Layer', - component: CompatAPI, - }, LinkComponent: { title: '', component: LinkComponent, diff --git a/packages/compat/CHANGELOG.md b/packages/compat/CHANGELOG.md deleted file mode 100644 index b76c9a3a..00000000 --- a/packages/compat/CHANGELOG.md +++ /dev/null @@ -1,778 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [5.3.9](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.8...@react-navigation/compat@5.3.9) (2020-11-10) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.8](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.7...@react-navigation/compat@5.3.8) (2020-11-09) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.7](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.6...@react-navigation/compat@5.3.7) (2020-11-08) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.6](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.5...@react-navigation/compat@5.3.6) (2020-11-04) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.5](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.4...@react-navigation/compat@5.3.5) (2020-11-04) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.4](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.3...@react-navigation/compat@5.3.4) (2020-11-03) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.3](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.2...@react-navigation/compat@5.3.3) (2020-11-03) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.1...@react-navigation/compat@5.3.2) (2020-10-30) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.3.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.0...@react-navigation/compat@5.3.1) (2020-10-28) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.3.0](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.8...@react-navigation/compat@5.3.0) (2020-10-24) - - -### Features - -* improve types for navigation state ([#8980](https://github.com/react-navigation/react-navigation/issues/8980)) ([7dc2f58](https://github.com/react-navigation/react-navigation/commit/7dc2f5832e371473f3263c01ab39824eb9e2057d)) -* update helper types to have navigator specific methods ([f51086e](https://github.com/react-navigation/react-navigation/commit/f51086edea42f2382dac8c6914aac8574132114b)) - - - - - -## [5.2.8](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.7...@react-navigation/compat@5.2.8) (2020-10-07) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.2.7](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.6...@react-navigation/compat@5.2.7) (2020-09-28) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.2.6](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.5...@react-navigation/compat@5.2.6) (2020-09-22) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.2.5](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.4...@react-navigation/compat@5.2.5) (2020-08-04) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.2.4](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.3...@react-navigation/compat@5.2.4) (2020-07-28) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.2.3](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.1...@react-navigation/compat@5.2.3) (2020-07-22) - - -### Bug Fixes - -* fix false warning due to change in Object.assign in metro preset ([5e358b3](https://github.com/react-navigation/react-navigation/commit/5e358b3aadac7bb186521872d515fff2e571a940)), closes [#8584](https://github.com/react-navigation/react-navigation/issues/8584) - - - - - -## [5.2.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.1...@react-navigation/compat@5.2.2) (2020-07-22) - - -### Bug Fixes - -* fix false warning due to change in Object.assign in metro preset ([240a706](https://github.com/react-navigation/react-navigation/commit/240a706a56220b63d603a52407a738c2872349dd)), closes [#8584](https://github.com/react-navigation/react-navigation/issues/8584) - - - - - -## [5.2.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.2.0...@react-navigation/compat@5.2.1) (2020-07-19) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.2.0](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.1.28...@react-navigation/compat@5.2.0) (2020-07-10) - - -### Features - -* add a getComponent prop to lazily specify components ([f418029](https://github.com/react-navigation/react-navigation/commit/f4180295bf22e32c65f6a7ab7089523cb2de58fb)) - - - - - -## [5.1.28](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.1.27...@react-navigation/compat@5.1.28) (2020-06-25) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.27](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.1.26...@react-navigation/compat@5.1.27) (2020-06-24) - - -### Bug Fixes - -* more improvements to types ([d244488](https://github.com/react-navigation/react-navigation/commit/d2444887be227bbbdcfcb13a7f26a8ebb344043e)) - - - - - -## [5.1.26](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.25...@react-navigation/compat@5.1.26) (2020-06-06) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.25](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.24...@react-navigation/compat@5.1.25) (2020-05-27) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.24](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.23...@react-navigation/compat@5.1.24) (2020-05-23) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.23](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.22...@react-navigation/compat@5.1.23) (2020-05-20) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.22](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.21...@react-navigation/compat@5.1.22) (2020-05-20) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.21](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.20...@react-navigation/compat@5.1.21) (2020-05-16) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.20](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.19...@react-navigation/compat@5.1.20) (2020-05-14) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.19](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.18...@react-navigation/compat@5.1.19) (2020-05-14) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.18](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.17...@react-navigation/compat@5.1.18) (2020-05-10) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.17](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.16...@react-navigation/compat@5.1.17) (2020-05-08) - - -### Bug Fixes - -* fix building typescript definitions. closes [#8216](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/issues/8216) ([47a1229](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/47a12298378747edd2d22e54dc1c8677f98c49b4)) - - - - - -## [5.1.16](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.15...@react-navigation/compat@5.1.16) (2020-05-08) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.15](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.14...@react-navigation/compat@5.1.15) (2020-05-05) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.14](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.13...@react-navigation/compat@5.1.14) (2020-05-01) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.13](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.12...@react-navigation/compat@5.1.13) (2020-05-01) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.12](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.11...@react-navigation/compat@5.1.12) (2020-04-30) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.11](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.10...@react-navigation/compat@5.1.11) (2020-04-30) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.10](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.9...@react-navigation/compat@5.1.10) (2020-04-27) - - -### Bug Fixes - -* fix typo in navigationOptions ([8cbb201](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/8cbb201f1a7fb90e45a078df6bc42ce4771cc6a6)) -* spread parent params to children in compat navigator ([24febf6](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/24febf6ea99be2e5f22005fdd2a82136d647255c)), closes [#6785](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/issues/6785) - - - - - -## [5.1.9](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.8...@react-navigation/compat@5.1.9) (2020-04-17) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.8](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.7...@react-navigation/compat@5.1.8) (2020-04-08) - - -### Bug Fixes - -* use 1 as default in compatibility pop action ([4408117](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/44081172d440c713ad3543a2d5e1e18ebc8f72a4)) - - - - - -## [5.1.7](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.6...@react-navigation/compat@5.1.7) (2020-03-30) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.6](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.5...@react-navigation/compat@5.1.6) (2020-03-23) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.5](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.4...@react-navigation/compat@5.1.5) (2020-03-22) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.4](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.3...@react-navigation/compat@5.1.4) (2020-03-19) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.3](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.2...@react-navigation/compat@5.1.3) (2020-03-17) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.2](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.1...@react-navigation/compat@5.1.2) (2020-03-16) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.1.1](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.1.0...@react-navigation/compat@5.1.1) (2020-03-03) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.1.0](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.7...@react-navigation/compat@5.1.0) (2020-02-26) - - -### Features - -* add ability add listeners with listeners prop ([1624108](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/162410843c4f175ae107756de1c3af04d1d47aa7)), closes [#6756](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/issues/6756) - - - - - -## [5.0.7](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.6...@react-navigation/compat@5.0.7) (2020-02-21) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.0.6](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.5...@react-navigation/compat@5.0.6) (2020-02-19) - - -### Bug Fixes - -* add NavigationEvents ([d69b0db](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/d69b0db60455b8789276822ba73f5349db8842d7)), closes [/github.com/react-navigation/react-navigation/issues/6821#issuecomment-588268512](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/issues/issuecomment-588268512) - - - - - -## [5.0.5](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.4...@react-navigation/compat@5.0.5) (2020-02-14) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.0.4](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.3...@react-navigation/compat@5.0.4) (2020-02-14) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.0.3](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.2...@react-navigation/compat@5.0.3) (2020-02-12) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.0.2](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.1...@react-navigation/compat@5.0.2) (2020-02-11) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -## [5.0.1](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.34...@react-navigation/compat@5.0.1) (2020-02-10) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.34](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.33...@react-navigation/compat@5.0.0-alpha.34) (2020-02-04) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.33](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.32...@react-navigation/compat@5.0.0-alpha.33) (2020-02-04) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.32](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.31...@react-navigation/compat@5.0.0-alpha.32) (2020-02-03) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.31](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.28...@react-navigation/compat@5.0.0-alpha.31) (2020-02-02) - - -### Bug Fixes - -* add licenses ([0c159db](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/0c159db4c9bc85e83b5cfe6819ab2562669a4d8f)) -* throw when assigning or accessing the router property in compat ([944fa35](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/944fa35ed4778ebc7fa7cd50092719cbd5bf3caf)) - - - - - -# [5.0.0-alpha.29](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.28...@react-navigation/compat@5.0.0-alpha.29) (2020-02-02) - - -### Bug Fixes - -* add licenses ([0c159db](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/0c159db4c9bc85e83b5cfe6819ab2562669a4d8f)) -* throw when assigning or accessing the router property in compat ([944fa35](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/944fa35ed4778ebc7fa7cd50092719cbd5bf3caf)) - - - - - -# [5.0.0-alpha.28](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.27...@react-navigation/compat@5.0.0-alpha.28) (2020-01-24) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.27](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.26...@react-navigation/compat@5.0.0-alpha.27) (2020-01-23) - - -### Bug Fixes - -* ensure re-render on isFirstRouteInParent change in compat layer ([14ae373](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/14ae3738cf46088e082bd1c60b9dcc6dacacd1bf)) -* improvements to the compat layer ([2a76dc4](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/2a76dc4d3c4cc0365a3afcff6ac321145efed026)) - - - - - -# [5.0.0-alpha.26](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.25...@react-navigation/compat@5.0.0-alpha.26) (2020-01-14) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.25](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.24...@react-navigation/compat@5.0.0-alpha.25) (2020-01-13) - - -### Bug Fixes - -* make sure paths aren't aliased when building definitions ([65a5dac](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/commit/65a5dac2bf887f4ba081ab15bd4c9870bb15697f)), closes [#265](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/issues/265) - - - - - -# [5.0.0-alpha.24](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.23...@react-navigation/compat@5.0.0-alpha.24) (2020-01-13) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.23](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.21...@react-navigation/compat@5.0.0-alpha.23) (2020-01-09) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.22](https://github.com/react-navigation/react-navigation/tree/main/packages/compat/compare/@react-navigation/compat@5.0.0-alpha.21...@react-navigation/compat@5.0.0-alpha.22) (2020-01-09) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.21](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.20...@react-navigation/compat@5.0.0-alpha.21) (2020-01-05) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.20](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.19...@react-navigation/compat@5.0.0-alpha.20) (2020-01-01) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.19](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.18...@react-navigation/compat@5.0.0-alpha.19) (2019-12-19) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.18](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.17...@react-navigation/compat@5.0.0-alpha.18) (2019-12-16) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.17](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.16...@react-navigation/compat@5.0.0-alpha.17) (2019-12-11) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.16](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.15...@react-navigation/compat@5.0.0-alpha.16) (2019-12-10) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.15](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.14...@react-navigation/compat@5.0.0-alpha.15) (2019-11-17) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.14](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.13...@react-navigation/compat@5.0.0-alpha.14) (2019-11-10) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.13](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.12...@react-navigation/compat@5.0.0-alpha.13) (2019-11-08) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.12](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.11...@react-navigation/compat@5.0.0-alpha.12) (2019-11-04) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.11](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.10...@react-navigation/compat@5.0.0-alpha.11) (2019-10-30) - - -### Bug Fixes - -* drop isFirstRouteInParent method ([#145](https://github.com/react-navigation/navigation-ex/issues/145)) ([3a77107](https://github.com/react-navigation/navigation-ex/commit/3a77107)) - - - - - -# [5.0.0-alpha.10](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.9...@react-navigation/compat@5.0.0-alpha.10) (2019-10-29) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.9](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.8...@react-navigation/compat@5.0.0-alpha.9) (2019-10-22) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.8](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.7...@react-navigation/compat@5.0.0-alpha.8) (2019-10-15) - - -### Features - -* initial version of native stack ([#102](https://github.com/react-navigation/navigation-ex/issues/102)) ([ba3f718](https://github.com/react-navigation/navigation-ex/commit/ba3f718)) - - - - - -# [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) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.5](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.4...@react-navigation/compat@5.0.0-alpha.5) (2019-10-03) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.4](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.3...@react-navigation/compat@5.0.0-alpha.4) (2019-09-27) - -**Note:** Version bump only for package @react-navigation/compat - - - - - -# [5.0.0-alpha.3](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.2...@react-navigation/compat@5.0.0-alpha.3) (2019-09-23) - - -### Bug Fixes - -* throw when wrapping a compat navigatofor compat ([8920da6](https://github.com/react-navigation/navigation-ex/commit/8920da6)) - - - - - -# [5.0.0-alpha.2](https://github.com/react-navigation/navigation-ex/compare/@react-navigation/compat@5.0.0-alpha.1...@react-navigation/compat@5.0.0-alpha.2) (2019-09-17) - - -### Bug Fixes - -* provide navigation prop in header ([30e510d](https://github.com/react-navigation/navigation-ex/commit/30e510d)) - - -### Features - -* add createSwitchNavigator ([ff50282](https://github.com/react-navigation/navigation-ex/commit/ff50282)) -* add withNavigation and withNavigationFocus ([114a5dc](https://github.com/react-navigation/navigation-ex/commit/114a5dc)) - - - - - -# 5.0.0-alpha.1 (2019-09-16) - - -### Bug Fixes - -* fix dispatching compat actions ([88a560a](https://github.com/react-navigation/navigation-ex/commit/88a560a)) -* support legacy goBack method ([d83d3de](https://github.com/react-navigation/navigation-ex/commit/d83d3de)) - - -### Features - -* compatibility layer ([e0f28a4](https://github.com/react-navigation/navigation-ex/commit/e0f28a4)) diff --git a/packages/compat/LICENSE b/packages/compat/LICENSE deleted file mode 100644 index 9d268cb0..00000000 --- a/packages/compat/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/compat/README.md b/packages/compat/README.md deleted file mode 100644 index cc3c4923..00000000 --- a/packages/compat/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# `@react-navigation/compat` - -Compatibility layer to write navigator definitions in static configuration format. - -Installation instructions and documentation can be found on the [React Navigation website](https://reactnavigation.org/docs/compatibility/). diff --git a/packages/compat/package.json b/packages/compat/package.json deleted file mode 100644 index 02b86c2c..00000000 --- a/packages/compat/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "@react-navigation/compat", - "description": "Compatibility layer to write navigator definitions in static configuration format", - "version": "5.3.9", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/react-navigation/react-navigation.git", - "directory": "packages/compat" - }, - "bugs": { - "url": "https://github.com/react-navigation/react-navigation/issues" - }, - "homepage": "https://reactnavigation.org/docs/compatibility/", - "main": "lib/commonjs/index.js", - "react-native": "src/index.tsx", - "source": "src/index.tsx", - "module": "lib/module/index.js", - "types": "lib/typescript/src/index.d.ts", - "files": [ - "src", - "lib", - "!**/__tests__" - ], - "sideEffects": false, - "publishConfig": { - "access": "public", - "tag": "alpha" - }, - "scripts": { - "prepare": "bob build", - "clean": "del lib" - }, - "devDependencies": { - "@react-native-community/bob": "^0.16.2", - "@react-navigation/native": "^5.8.9", - "@types/react": "^16.9.53", - "react": "~16.13.1", - "typescript": "^4.0.3" - }, - "peerDependencies": { - "@react-navigation/native": "^5.0.5", - "react": "*" - }, - "@react-native-community/bob": { - "source": "src", - "output": "lib", - "targets": [ - "commonjs", - "module", - [ - "typescript", - { - "project": "tsconfig.build.json" - } - ] - ] - } -} diff --git a/packages/compat/src/CompatScreen.tsx b/packages/compat/src/CompatScreen.tsx deleted file mode 100644 index f415fcab..00000000 --- a/packages/compat/src/CompatScreen.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from 'react'; -import ScreenPropsContext from './ScreenPropsContext'; -import useCompatNavigation from './useCompatNavigation'; - -type Props = { - getComponent: () => React.ComponentType; -}; - -function CompatScreen({ getComponent }: Props) { - const navigation = useCompatNavigation(); - const screenProps = React.useContext(ScreenPropsContext); - const ScreenComponent = getComponent(); - - return ; -} - -export default React.memo(CompatScreen); diff --git a/packages/compat/src/DrawerActions.tsx b/packages/compat/src/DrawerActions.tsx deleted file mode 100644 index 81ef25e7..00000000 --- a/packages/compat/src/DrawerActions.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { DrawerActions, DrawerActionType } from '@react-navigation/native'; - -export function openDrawer(): DrawerActionType { - return DrawerActions.openDrawer(); -} - -export function closeDrawer(): DrawerActionType { - return DrawerActions.closeDrawer(); -} - -export function toggleDrawer(): DrawerActionType { - return DrawerActions.toggleDrawer(); -} diff --git a/packages/compat/src/NavigationActions.tsx b/packages/compat/src/NavigationActions.tsx deleted file mode 100644 index bd67f7cc..00000000 --- a/packages/compat/src/NavigationActions.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { CommonActions, NavigationState } from '@react-navigation/native'; - -export function navigate({ - routeName, - params, - key, - action, -}: { - routeName: string; - params?: object; - key?: string; - action?: never; -}): CommonActions.Action { - if (action !== undefined) { - throw new Error( - 'Sub-actions are not supported for `navigate`. Remove the `action` key from the options.' - ); - } - - return CommonActions.navigate({ - name: routeName, - key: key, - params: params, - }); -} - -export function back(options?: { key?: null | string }) { - return options?.key != null - ? (state: NavigationState) => ({ - ...CommonActions.goBack(), - source: options.key, - target: state.key, - }) - : CommonActions.goBack(); -} - -export function setParams({ - params, - key, -}: { - params: object; - key?: string; -}): CommonActions.Action { - return { - ...CommonActions.setParams(params), - ...(key !== undefined ? { source: key } : null), - }; -} diff --git a/packages/compat/src/NavigationEvents.tsx b/packages/compat/src/NavigationEvents.tsx deleted file mode 100644 index 59870298..00000000 --- a/packages/compat/src/NavigationEvents.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as React from 'react'; -import { useNavigation } from '@react-navigation/native'; - -type Props = { - onWillFocus?: () => void; - onDidFocus?: () => void; - onWillBlur?: () => void; - onDidBlur?: () => void; -}; - -export default function NavigationEvents(props: Props) { - const navigation = useNavigation(); - const propsRef = React.useRef(props); - - React.useEffect(() => { - propsRef.current = props; - }); - - React.useEffect(() => { - const unsubFocus = navigation.addListener('focus', () => { - propsRef.current.onWillFocus?.(); - }); - - const unsubBlur = navigation.addListener('blur', () => { - propsRef.current.onWillBlur?.(); - }); - - // @ts-expect-error: transitionEnd may not exist on this navigator - const unsubTransitionEnd = navigation.addListener('transitionEnd', () => { - if (navigation.isFocused()) { - propsRef.current.onDidFocus?.(); - } else { - propsRef.current.onDidBlur?.(); - } - }); - - return () => { - unsubFocus(); - unsubBlur(); - unsubTransitionEnd(); - }; - }, [navigation]); - - return null; -} diff --git a/packages/compat/src/ScreenPropsContext.tsx b/packages/compat/src/ScreenPropsContext.tsx deleted file mode 100644 index f48d3534..00000000 --- a/packages/compat/src/ScreenPropsContext.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import * as React from 'react'; - -export default React.createContext(undefined); diff --git a/packages/compat/src/StackActions.tsx b/packages/compat/src/StackActions.tsx deleted file mode 100644 index 881043ef..00000000 --- a/packages/compat/src/StackActions.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { - CommonActions, - StackActions, - StackActionType, -} from '@react-navigation/native'; - -export function reset(): CommonActions.Action { - throw new Error( - 'The legacy `reset` action is not supported. Use the new reset API by accessing the original navigation object at `navigation.original`.' - ); -} - -export function replace({ - routeName, - params, - key, - newKey, - action, -}: { - routeName: string; - params?: object; - key?: string; - newKey?: string; - action?: never; -}): StackActionType { - if (action !== undefined) { - throw new Error( - 'Sub-actions are not supported for `replace`. Remove the `action` key from the options.' - ); - } - - return { - type: 'REPLACE', - payload: { - name: routeName, - key: newKey, - params, - }, - ...(key !== undefined ? { source: key } : null), - }; -} - -export function push({ - routeName, - params, - action, -}: { - routeName: string; - params?: object; - action?: never; -}): StackActionType { - if (action !== undefined) { - throw new Error( - 'Sub-actions are not supported for `push`. Remove the `action` key from the options.' - ); - } - - return StackActions.push(routeName, params); -} - -export function pop({ n = 1 }: { n: number }): StackActionType { - return StackActions.pop(n); -} - -export function popToTop(): StackActionType { - return StackActions.popToTop(); -} - -export function dismiss(): CommonActions.Action { - throw new Error('The legacy `dismiss` action is not supported.'); -} diff --git a/packages/compat/src/SwitchActions.tsx b/packages/compat/src/SwitchActions.tsx deleted file mode 100644 index 0318b24a..00000000 --- a/packages/compat/src/SwitchActions.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { TabActions, TabActionType } from '@react-navigation/native'; - -export function jumpTo({ - routeName, - key, -}: { - routeName: string; - key?: string; -}): TabActionType { - if (key === undefined) { - return TabActions.jumpTo(routeName); - } else { - return { - ...TabActions.jumpTo(routeName), - target: key, - }; - } -} diff --git a/packages/compat/src/createCompatNavigationProp.tsx b/packages/compat/src/createCompatNavigationProp.tsx deleted file mode 100644 index 4a8b6802..00000000 --- a/packages/compat/src/createCompatNavigationProp.tsx +++ /dev/null @@ -1,220 +0,0 @@ -import type { - NavigationState, - PartialState, - ParamListBase, - NavigationProp, - RouteProp, -} from '@react-navigation/native'; -import * as helpers from './helpers'; -import type { CompatNavigationProp } from './types'; - -type EventName = - | 'action' - | 'willFocus' - | 'willBlur' - | 'didFocus' - | 'didBlur' - | 'refocus'; - -export default function createCompatNavigationProp< - NavigationPropType extends NavigationProp, - ParamList extends ParamListBase = NavigationPropType extends NavigationProp< - infer P, - any, - any, - any, - any - > - ? P - : ParamListBase ->( - navigation: NavigationPropType, - state: - | (RouteProp & { - state?: NavigationState | PartialState; - }) - | NavigationState - | PartialState, - context: Record, - isFirstRouteInParent?: boolean -): CompatNavigationProp { - context.parent = context.parent || {}; - context.subscriptions = context.subscriptions || { - didFocus: new Map<() => void, () => void>(), - didBlur: new Map<() => void, () => void>(), - refocus: new Map<() => void, () => void>(), - }; - - return { - ...navigation, - ...Object.entries(helpers).reduce<{ - [key: string]: (...args: any[]) => void; - }>((acc, [name, method]: [string, Function]) => { - if (name in navigation) { - acc[name] = (...args: any[]) => navigation.dispatch(method(...args)); - } - - return acc; - }, {}), - original: navigation, - addListener(type: EventName, callback: () => void) { - let unsubscribe: () => void; - - switch (type) { - case 'willFocus': - unsubscribe = navigation.addListener('focus', callback); - break; - case 'willBlur': - unsubscribe = navigation.addListener('blur', callback); - break; - case 'didFocus': { - const listener = () => { - if (navigation.isFocused()) { - callback(); - } - }; - - // @ts-expect-error: this event may not exist in this navigator - unsubscribe = navigation.addListener('transitionEnd', listener); - context.subscriptions.didFocus.set(callback, unsubscribe); - break; - } - case 'didBlur': { - const listener = () => { - if (!navigation.isFocused()) { - callback(); - } - }; - - // @ts-expect-error: this event may not exist in this navigator - unsubscribe = navigation.addListener('transitionEnd', listener); - context.subscriptions.didBlur.set(callback, unsubscribe); - break; - } - case 'refocus': { - const listener = () => { - if (navigation.isFocused()) { - callback(); - } - }; - - // @ts-expect-error: this event may not exist in this navigator - unsubscribe = navigation.addListener('tabPress', listener); - context.subscriptions.refocus.set(callback, unsubscribe); - break; - } - case 'action': - throw new Error("Listening to 'action' events is not supported."); - default: - unsubscribe = navigation.addListener(type, callback); - } - - const subscription = () => unsubscribe(); - - subscription.remove = unsubscribe; - - return subscription; - }, - removeListener(type: EventName, callback: () => void) { - context.subscriptions = context.subscriptions || {}; - - switch (type) { - case 'willFocus': - navigation.removeListener('focus', callback); - break; - case 'willBlur': - navigation.removeListener('blur', callback); - break; - case 'didFocus': { - const unsubscribe = context.subscriptions.didFocus.get(callback); - unsubscribe?.(); - break; - } - case 'didBlur': { - const unsubscribe = context.subscriptions.didBlur.get(callback); - unsubscribe?.(); - break; - } - case 'refocus': { - const unsubscribe = context.subscriptions.refocus.get(callback); - unsubscribe?.(); - break; - } - case 'action': - throw new Error("Listening to 'action' events is not supported."); - default: - navigation.removeListener(type, callback); - } - }, - state: { - key: state.key, - // @ts-expect-error - routeName: state.name, - // @ts-expect-error - params: state.params ?? {}, - get index() { - // @ts-expect-error - if (state.index !== undefined) { - // @ts-expect-error - return state.index; - } - - console.warn( - "Looks like you are using 'navigation.state.index' in your code. Accessing child navigation state for a route is not safe and won't work correctly. You should refactor it not to access the 'index' property in the child navigation state." - ); - - // @ts-expect-error - return state.state?.index; - }, - get routes() { - // @ts-expect-error - if (state.routes !== undefined) { - // @ts-expect-error - return state.routes; - } - - console.warn( - "Looks like you are using 'navigation.state.routes' in your code. Accessing child navigation state for a route is not safe and won't work correctly. You should refactor it not to access the 'routes' property in the child navigation state." - ); - - // @ts-expect-error - return state.state?.routes; - }, - }, - getParam( - paramName: T, - defaultValue: ParamList[T] - ): ParamList[T] { - // @ts-expect-error - const params = state.params; - - if (params && paramName in params) { - return params[paramName]; - } - - return defaultValue; - }, - isFirstRouteInParent(): boolean { - if (typeof isFirstRouteInParent === 'boolean') { - return isFirstRouteInParent; - } - - const { routes } = navigation.getState(); - - return routes[0].key === state.key; - }, - getParent() { - const parent = navigation.getParent(); - - if (parent) { - return createCompatNavigationProp( - parent, - navigation.getState(), - context.parent - ); - } - - return undefined; - }, - } as any; -} diff --git a/packages/compat/src/createCompatNavigatorFactory.tsx b/packages/compat/src/createCompatNavigatorFactory.tsx deleted file mode 100644 index 0d1d44d5..00000000 --- a/packages/compat/src/createCompatNavigatorFactory.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import * as React from 'react'; -import { - NavigationState, - PartialState, - ParamListBase, - TypedNavigator, - NavigationProp, - RouteProp, - NavigationRouteContext, -} from '@react-navigation/native'; -import CompatScreen from './CompatScreen'; -import ScreenPropsContext from './ScreenPropsContext'; -import createCompatNavigationProp from './createCompatNavigationProp'; -import type { CompatScreenType, CompatRouteConfig } from './types'; - -export default function createCompatNavigatorFactory< - CreateNavigator extends () => TypedNavigator< - ParamListBase, - NavigationState, - {}, - any, - React.ComponentType - > ->(createNavigator: CreateNavigator) { - // @ts-expect-error: isCompat may or may not exist - if (createNavigator.isCompat) { - throw new Error( - `The navigator is already in compat mode. You don't need to wrap it in 'createCompatNavigatorFactory'.` - ); - } - - const createCompatNavigator = < - NavigationPropType extends NavigationProp, - ParamList extends ParamListBase = NavigationPropType extends NavigationProp< - infer P, - any, - any, - any, - any - > - ? P - : ParamListBase, - ScreenOptions extends {} = NavigationPropType extends NavigationProp< - any, - any, - any, - infer O - > - ? O - : {}, - NavigationConfig extends {} = React.ComponentProps< - ReturnType['Navigator'] - > - >( - routeConfig: CompatRouteConfig, - navigationConfig: Partial> & { - order?: Extract[]; - defaultNavigationOptions?: ScreenOptions; - navigationOptions?: Record; - } = {} - ) => { - const Pair = createNavigator(); - - const { - order, - defaultNavigationOptions, - navigationOptions: parentNavigationOptions, - ...restConfig - } = navigationConfig; - - const routeNames = order !== undefined ? order : Object.keys(routeConfig); - - function Navigator({ screenProps }: { screenProps?: unknown }) { - const parentRouteParams = React.useContext(NavigationRouteContext) - ?.params; - - const screens = React.useMemo( - () => - routeNames.map((name) => { - let getScreenComponent: () => CompatScreenType; - - let initialParams; - - const routeConfigItem = routeConfig[name]; - - if ('getScreen' in routeConfigItem) { - getScreenComponent = routeConfigItem.getScreen; - initialParams = routeConfigItem.params; - } else if ('screen' in routeConfigItem) { - getScreenComponent = () => routeConfigItem.screen; - initialParams = routeConfigItem.params; - } else { - getScreenComponent = () => routeConfigItem; - } - - const screenOptions = ({ - navigation, - route, - }: { - navigation: NavigationPropType; - route: RouteProp & { - state?: NavigationState | PartialState; - }; - }) => { - // @ts-expect-error: navigationOptions may exists on the component, but TS is dumb - const routeNavigationOptions = routeConfigItem.navigationOptions; - const screenNavigationOptions = getScreenComponent() - .navigationOptions; - - if ( - routeNavigationOptions == null && - screenNavigationOptions == null - ) { - return undefined; - } - - const options = - typeof routeNavigationOptions === 'function' || - typeof screenNavigationOptions === 'function' - ? { - navigation: createCompatNavigationProp< - NavigationPropType, - ParamList - >(navigation, route, {}), - navigationOptions: defaultNavigationOptions || {}, - screenProps, - } - : {}; - - return { - ...(typeof routeNavigationOptions === 'function' - ? routeNavigationOptions(options) - : routeNavigationOptions), - ...(typeof screenNavigationOptions === 'function' - ? (screenNavigationOptions as (o: any) => ScreenOptions)( - options - ) - : screenNavigationOptions), - } as ScreenOptions; - }; - - return ( - - {() => } - - ); - }), - [parentRouteParams, screenProps] - ); - - return ( - - - {screens} - - - ); - } - - Navigator.navigationOptions = parentNavigationOptions; - - return Navigator; - }; - - Object.defineProperties(createCompatNavigator, { - isCompat: { - get() { - return true; - }, - }, - router: { - get() { - throw new Error( - "It's no longer possible to access the router with the 'router' property." - ); - }, - set() { - throw new Error( - "It's no longer possible to override the router by assigning the 'router' property." - ); - }, - }, - }); - - return createCompatNavigator; -} diff --git a/packages/compat/src/createSwitchNavigator.tsx b/packages/compat/src/createSwitchNavigator.tsx deleted file mode 100644 index 1c982b40..00000000 --- a/packages/compat/src/createSwitchNavigator.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { - useNavigationBuilder, - createNavigatorFactory, - DefaultNavigatorOptions, - TabRouter, - TabRouterOptions, - TabNavigationState, - TabActionHelpers, - ParamListBase, -} from '@react-navigation/native'; -import createCompatNavigatorFactory from './createCompatNavigatorFactory'; - -type Props = DefaultNavigatorOptions<{}> & TabRouterOptions; - -function SwitchNavigator(props: Props) { - const { state, descriptors } = useNavigationBuilder< - TabNavigationState, - TabRouterOptions, - {}, - {}, - TabActionHelpers - >(TabRouter, props); - - return descriptors[state.routes[state.index].key].render(); -} - -export default createCompatNavigatorFactory( - createNavigatorFactory< - TabNavigationState, - {}, - {}, - typeof SwitchNavigator - >(SwitchNavigator) -); diff --git a/packages/compat/src/helpers.tsx b/packages/compat/src/helpers.tsx deleted file mode 100644 index 2b42795e..00000000 --- a/packages/compat/src/helpers.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import * as NavigationActions from './NavigationActions'; -import * as StackActions from './StackActions'; -import * as SwitchActions from './SwitchActions'; -import * as DrawerActions from './DrawerActions'; - -type NavigateActionPayload = Parameters['0']; - -type NavigateActionType = ReturnType; - -export function navigate( - routeName: string, - params?: object, - action?: never -): NavigateActionType; -// eslint-disable-next-line no-redeclare -export function navigate(options: NavigateActionPayload): NavigateActionType; -// eslint-disable-next-line no-redeclare -export function navigate( - options: string | NavigateActionPayload, - params?: object, - action?: never -): NavigateActionType { - if (typeof options === 'string') { - return NavigationActions.navigate({ - routeName: options, - params, - action, - }); - } - - return NavigationActions.navigate(options); -} - -export function goBack(fromKey?: null | string) { - return NavigationActions.back({ key: fromKey }); -} - -export function setParams(params: object) { - return NavigationActions.setParams({ params }); -} - -export function reset() { - return StackActions.reset(); -} - -export function replace(routeName: string, params?: object, action?: never) { - return StackActions.replace({ - routeName, - params, - action, - }); -} - -export function push(routeName: string, params?: object, action?: never) { - return StackActions.push({ - routeName, - params, - action, - }); -} - -export function pop(n: number = 1) { - return StackActions.pop(typeof n === 'number' ? { n } : n); -} - -export function popToTop() { - return StackActions.popToTop(); -} - -export function dismiss() { - return StackActions.dismiss(); -} - -export function jumpTo(routeName: string) { - return SwitchActions.jumpTo({ routeName }); -} - -export function openDrawer() { - return DrawerActions.openDrawer(); -} - -export function closeDrawer() { - return DrawerActions.closeDrawer(); -} - -export function toggleDrawer() { - return DrawerActions.toggleDrawer(); -} diff --git a/packages/compat/src/index.tsx b/packages/compat/src/index.tsx deleted file mode 100644 index 66b13d60..00000000 --- a/packages/compat/src/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import * as NavigationActions from './NavigationActions'; -import * as StackActions from './StackActions'; -import * as DrawerActions from './DrawerActions'; -import * as SwitchActions from './SwitchActions'; - -export { NavigationActions, StackActions, DrawerActions, SwitchActions }; - -export { default as createCompatNavigatorFactory } from './createCompatNavigatorFactory'; - -export { default as createCompatNavigationProp } from './createCompatNavigationProp'; - -export { default as createSwitchNavigator } from './createSwitchNavigator'; - -export { default as withNavigation } from './withNavigation'; -export { default as withNavigationFocus } from './withNavigationFocus'; - -export { default as NavigationEvents } from './NavigationEvents'; - -export * from './types'; diff --git a/packages/compat/src/types.tsx b/packages/compat/src/types.tsx deleted file mode 100644 index 2d25516a..00000000 --- a/packages/compat/src/types.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import type { - ParamListBase, - NavigationProp, - Route, -} from '@react-navigation/native'; -import type * as helpers from './helpers'; - -export type CompatNavigationProp< - NavigationPropType extends NavigationProp, - ParamList extends ParamListBase = NavigationPropType extends NavigationProp< - infer P, - any, - any, - any, - any - > - ? P - : ParamListBase, - RouteName extends Extract = Extract< - NavigationPropType extends NavigationProp ? R : string, - string - > -> = Omit & - { - [method in Extract]: ( - ...args: Parameters - ) => void; - } & { - state: Route & { - routeName: RouteName; - }; - getParam( - paramName: T, - defaultValue?: ParamList[RouteName][T] - ): ParamList[RouteName][T]; - isFirstRouteInParent(): boolean; - getParent< - T = NavigationProp | undefined - >(): T extends NavigationProp - ? CompatNavigationProp - : undefined; - }; - -export type CompatNavigationOptions< - NavigationPropType extends NavigationProp, - ScreenOptions extends {} = NavigationPropType extends NavigationProp< - any, - any, - any, - infer O - > - ? O - : {} -> = - | ((options: { - navigation: CompatNavigationProp; - navigationOptions: Partial; - screenProps: unknown; - }) => ScreenOptions) - | ScreenOptions; - -export type CompatScreenType< - NavigationPropType extends NavigationProp -> = React.ComponentType<{ - navigation: CompatNavigationProp; - screenProps: unknown; -}> & { - navigationOptions?: CompatNavigationOptions; -}; - -export type CompatRouteConfig< - NavigationPropType extends NavigationProp, - ParamList extends ParamListBase = NavigationPropType extends NavigationProp< - infer P, - any, - any, - any, - any - > - ? P - : ParamListBase -> = { - [RouteName in keyof ParamList]: - | React.ComponentType - | (( - | { screen: React.ComponentType } - | { getScreen(): React.ComponentType } - ) & { - navigationOptions?: CompatNavigationOptions; - params?: ParamList[RouteName]; - }); -}; diff --git a/packages/compat/src/useCompatNavigation.tsx b/packages/compat/src/useCompatNavigation.tsx deleted file mode 100644 index 26e5fb34..00000000 --- a/packages/compat/src/useCompatNavigation.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react'; -import { - useNavigation, - useRoute, - NavigationProp, - ParamListBase, - useNavigationState, -} from '@react-navigation/native'; -import createCompatNavigationProp from './createCompatNavigationProp'; -import type { CompatNavigationProp } from './types'; - -export default function useCompatNavigation< - T extends NavigationProp ->() { - const navigation = useNavigation(); - const route = useRoute(); - - const isFirstRouteInParent = useNavigationState( - (state) => state.routes[0].key === route.key - ); - - const context = React.useRef>({}); - - return React.useMemo( - () => - createCompatNavigationProp( - navigation, - route as any, - context.current, - isFirstRouteInParent - ) as CompatNavigationProp, - [isFirstRouteInParent, navigation, route] - ); -} diff --git a/packages/compat/src/withNavigation.tsx b/packages/compat/src/withNavigation.tsx deleted file mode 100644 index c619bd53..00000000 --- a/packages/compat/src/withNavigation.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react'; -import type { NavigationProp, ParamListBase } from '@react-navigation/native'; -import useCompatNavigation from './useCompatNavigation'; -import type { CompatNavigationProp } from './types'; - -type InjectedProps> = { - navigation: CompatNavigationProp; -}; - -export default function withNavigation< - T extends NavigationProp, - P extends InjectedProps, - C extends React.ComponentType

->(Comp: C) { - const WrappedComponent = ({ - onRef, - ...rest - }: Exclude> & { - onRef?: C extends React.ComponentClass - ? React.Ref> - : never; - }): React.ReactElement => { - const navigation = useCompatNavigation(); - - // @ts-expect-error: type checking HOC is hard - return ; - }; - - WrappedComponent.displayName = `withNavigation(${ - Comp.displayName || Comp.name - })`; - - return WrappedComponent; -} diff --git a/packages/compat/src/withNavigationFocus.tsx b/packages/compat/src/withNavigationFocus.tsx deleted file mode 100644 index 267a89cd..00000000 --- a/packages/compat/src/withNavigationFocus.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import * as React from 'react'; -import { useIsFocused } from '@react-navigation/native'; - -type InjectedProps = { - isFocused: boolean; -}; - -export default function withNavigationFocus< - P extends InjectedProps, - C extends React.ComponentType

->(Comp: C) { - const WrappedComponent = ({ - onRef, - ...rest - }: Exclude & { - onRef?: C extends React.ComponentClass - ? React.Ref> - : never; - }): React.ReactElement => { - const isFocused = useIsFocused(); - - // @ts-expect-error: type checking HOC is hard - return ; - }; - - WrappedComponent.displayName = `withNavigationFocus(${ - Comp.displayName || Comp.name - })`; - - return WrappedComponent; -} diff --git a/packages/compat/tsconfig.build.json b/packages/compat/tsconfig.build.json deleted file mode 100644 index 543a7876..00000000 --- a/packages/compat/tsconfig.build.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "paths": {} - } -} diff --git a/packages/compat/tsconfig.json b/packages/compat/tsconfig.json deleted file mode 100644 index b74421ba..00000000 --- a/packages/compat/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig", - "references": [ - { "path": "../core" }, - { "path": "../routers" }, - { "path": "../native" } - ], - "compilerOptions": { - "outDir": "./lib/typescript" - } -}