diff --git a/packages/stack/example/App.js b/packages/stack/example/App.js index 74f8f27a..745184b4 100644 --- a/packages/stack/example/App.js +++ b/packages/stack/example/App.js @@ -24,24 +24,35 @@ const data = [ { component: SimpleStack, title: 'Simple', routeName: 'SimpleStack' }, { component: ImageStack, title: 'Image', routeName: 'ImageStack' }, { component: ModalStack, title: 'Modal', routeName: 'ModalStack' }, - { component: LifecycleInteraction, title: 'Lifecycle', routeName: 'LifecycleStack' }, + { + component: LifecycleInteraction, + title: 'Lifecycle', + routeName: 'LifecycleStack', + }, { component: TransparentStack, title: 'Transparent', routeName: 'TransparentStack', }, - { component: GestureInteraction, title: 'Gesture Interaction', routeName: 'GestureInteraction' }, + { + component: GestureInteraction, + title: 'Gesture Interaction', + routeName: 'GestureInteraction', + }, ]; -Expo.Asset.loadAsync(require('react-navigation/src/views/assets/back-icon.png')); -Expo.Asset.loadAsync(require('react-navigation/src/views/assets/back-icon-mask.png')); +Expo.Asset.loadAsync( + require('react-navigation/src/views/assets/back-icon.png') +); +Expo.Asset.loadAsync( + require('react-navigation/src/views/assets/back-icon-mask.png') +); class Home extends React.Component { static navigationOptions = { title: 'Examples', }; - _renderItem = ({ item }) => ( ( @@ -31,7 +38,9 @@ class BarCodeScreen extends React.Component { return ( diff --git a/packages/stack/example/yarn.lock b/packages/stack/example/yarn.lock index 127d44cf..31b97f19 100644 --- a/packages/stack/example/yarn.lock +++ b/packages/stack/example/yarn.lock @@ -505,6 +505,28 @@ pouchdb-collections "^1.0.1" tiny-queue "^0.2.1" +"@react-navigation/core@^3.0.0-alpha.4": + version "3.0.0-alpha.4" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.0.0-alpha.4.tgz#0167a8352e867ebd09e444aac42b315f569fb81d" + integrity sha512-kj9PzNadCjPYU1NGzNrg6eb3KDTNECUzWL38Ef7yHwhNG6U62AbedLD8VtuSZHGAEFXnI68hhnuoIe+9f6aJ8w== + dependencies: + create-react-context "^0.2.3" + hoist-non-react-statics "^3.0.1" + path-to-regexp "^2.4.0" + query-string "^6.2.0" + +"@react-navigation/native@^3.0.0-alpha.5": + version "3.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.0.0-alpha.5.tgz#479e8ab87a6305182a77c877eda30065a785eb21" + integrity sha512-UwQ2k63wZocCGVd+GqmzKhzvG4FpP8Riu5L+PdIsZOz2E0q4tqj0X/GulWkV0W5chB/oWsyXBi4+JmL92PFloQ== + dependencies: + "@react-navigation/core" "^3.0.0-alpha.4" + hoist-non-react-statics "^3.0.1" + react-lifecycles-compat "^3.0.4" + react-native-gesture-handler "^1.0.8" + react-native-safe-area-view "^0.11.0" + react-native-screens "^1.0.0-alpha.14" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -1853,7 +1875,7 @@ create-react-context@0.2.2: fbjs "^0.8.0" gud "^1.0.0" -create-react-context@^0.2.2: +create-react-context@^0.2.2, create-react-context@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== @@ -2793,7 +2815,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hoist-non-react-statics@2.5.0, hoist-non-react-statics@^2.2.0, hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: +hoist-non-react-statics@2.5.0, hoist-non-react-statics@^2.2.0, hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0, hoist-non-react-statics@^3.0.1: version "2.5.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" integrity sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w== @@ -4071,6 +4093,11 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-to-regexp@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz#35ce7f333d5616f1c1e1bfe266c3aba2e5b2e704" + integrity sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w== + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -4221,6 +4248,14 @@ query-string@^6.1.0: decode-uri-component "^0.2.0" strict-uri-encode "^2.0.0" +query-string@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.2.0.tgz#468edeb542b7e0538f9f9b1aeb26f034f19c86e1" + integrity sha512-5wupExkIt8RYL4h/FE+WTg3JHk62e6fFPWtAZA9J5IWK1PfTfKkMS93HBUHcFpeYi9KsY5pFbh+ldvEyaz5MyA== + dependencies: + decode-uri-component "^0.2.0" + strict-uri-encode "^2.0.0" + randomatic@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" @@ -4301,6 +4336,15 @@ react-native-gesture-handler@1.0.6: invariant "^2.2.2" prop-types "^15.5.10" +react-native-gesture-handler@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.0.8.tgz#c2799741bf6443bb542892b0a36201a6d9ded209" + integrity sha512-Lc6PV5nKXgZdDeky96yi6gAM1UJHaYwzZbZyph0YuSv/L6vTtN+KPGsKyIENoOyxLJ/i43MSNn7fR+Xbv0w/xA== + dependencies: + hoist-non-react-statics "^2.3.1" + invariant "^2.2.2" + prop-types "^15.5.10" + react-native-maps@0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-0.21.0.tgz#005f58e93d7623ad59667e8002101970ddf235c2" @@ -4325,7 +4369,7 @@ react-native-reanimated@1.0.0-alpha.6: resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.0.0-alpha.6.tgz#169d23b3b39d1c88e509ddc97027b1c8cc066da8" integrity sha512-0D99kvdFZCJMMIMd0ThosAWlOhDCPDuhMxLijWE0/ZBhGCknvihg0R5jEyv9spxXyvgjKhUE+aLm27XV+1eLhQ== -react-native-safe-area-view@0.11.0: +react-native-safe-area-view@0.11.0, react-native-safe-area-view@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.11.0.tgz#4f3dda43c2bace37965e7c6aef5fc83d4f19d174" integrity sha512-N3nElaahu1Me2ltnfc9acpgt1znm6pi8DSadKy79kvdzKwvVIzw0IXueA/Hjr51eCW1BsfNw7D1SgBT9U6qEkA== @@ -4344,6 +4388,11 @@ react-native-screens@^1.0.0-alpha.11, react-native-screens@^1.0.0-alpha.5, react resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-1.0.0-alpha.12.tgz#5953c39c9dbfbe324610005e07d85a416081c48c" integrity sha512-n/XyqUStDjtCymXUhAxG98asvgI8/OSH+v9AaAzUFEqfBwJLY8/UjY6m8PIJSgqRt4aR/Z9nO+A1mcMXw6dMdA== +react-native-screens@^1.0.0-alpha.14: + version "1.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-1.0.0-alpha.15.tgz#5b5a0041310b46f12048fda1908d52e7290ec18f" + integrity sha512-S2OM/ieD+Krk+0/Z2Vz2rTUWYud5hJgCRZqXRtqEfMgEcGI4FBopXp7mwXCGbA2PFLjZwZSwLlsZ6RX30WnjRw== + react-native-svg@6.2.2: version "6.2.2" resolved "http://registry.npmjs.org/react-native-svg/-/react-native-svg-6.2.2.tgz#5803cddce374a542b4468c38a2474fca32080685" diff --git a/packages/stack/jest-setup.js b/packages/stack/jest-setup.js index 09386ab8..75bb22c1 100644 --- a/packages/stack/jest-setup.js +++ b/packages/stack/jest-setup.js @@ -2,6 +2,8 @@ * eslint-env jest */ -// No setup +jest.mock('react-native-gesture-handler', () => ({ + PanGestureHandler: 'PanGestureHandler', +})); import React from 'react'; diff --git a/packages/stack/package.json b/packages/stack/package.json index d1538494..162594f3 100644 --- a/packages/stack/package.json +++ b/packages/stack/package.json @@ -1,6 +1,6 @@ { "name": "react-navigation-stack", - "version": "1.0.0-alpha.14", + "version": "1.0.0-alpha.15", "description": "Stack navigator component for React Navigation", "main": "dist/index.js", "files": [ @@ -8,7 +8,7 @@ "src/", "LICENSE.md", "README.md" - ], + ], "react-native": "src/index.js", "scripts": { "test": "jest", @@ -35,7 +35,10 @@ "url": "https://github.com/react-navigation/react-navigation-stack/issues" }, "homepage": "https://github.com/react-navigation/react-navigation-stack#readme", - "dependencies": {}, + "dependencies": { + "@react-navigation/core": "^3.0.0-alpha.4", + "@react-navigation/native": "^3.0.0-alpha.5" + }, "devDependencies": { "@expo/vector-icons": "^6.2.0", "babel-cli": "^6.26.0", @@ -54,16 +57,15 @@ "react": "16.3.1", "react-dom": "16.3.1", "react-native": "~0.55.4", - "react-navigation": "^2.11.2", + "react-native-gesture-handler": "^1.0.8", "react-test-renderer": "16.3.1" }, "peerDependencies": { "react": "*", "react-native": "*", - "react-native-screens": "^1.0.0 || ^1.0.0-alpha", "react-native-gesture-handler": "^1.0.0", "react-native-reanimated": "^1.0.0 || ^1.0.0-alpha", - "react-navigation": ">=2.0 || ^2.0.0-beta" + "react-native-screens": "^1.0.0 || ^1.0.0-alpha" }, "jest": { "preset": "react-native", @@ -78,7 +80,7 @@ "/example/" ], "transformIgnorePatterns": [ - "node_modules/(?!(jest-)?react-native|react-clone-referenced-element|react-navigation-deprecated-tab-navigator|react-navigation)" + "node_modules/(?!(jest-)?react-native|react-clone-referenced-element|react-navigation-deprecated-tab-navigator|@react-navigation/core|@react-navigation/native)" ] }, "prettier": { diff --git a/packages/stack/src/index.js b/packages/stack/src/index.js index 02993673..2e72c500 100644 --- a/packages/stack/src/index.js +++ b/packages/stack/src/index.js @@ -5,11 +5,6 @@ module.exports = { * Navigators */ get createStackNavigator() { - return require('./navigators/createContainedStackNavigator').default; - }, - // note(brentvatne): in the future this will be default export, when we require - // people to add their own provider at root in 3.0 - get createUncontainedStackNavigator() { return require('./navigators/createStackNavigator').default; }, @@ -54,5 +49,5 @@ module.exports = { }, get StackGestureContext() { return require('./utils/StackGestureContext').default; - } + }, }; diff --git a/packages/stack/src/navigators/__tests__/NestedNavigator-test.js b/packages/stack/src/navigators/__tests__/NestedNavigator-test.js index 09910214..676282b6 100644 --- a/packages/stack/src/navigators/__tests__/NestedNavigator-test.js +++ b/packages/stack/src/navigators/__tests__/NestedNavigator-test.js @@ -1,6 +1,7 @@ import React from 'react'; import renderer from 'react-test-renderer'; -import StackNavigator from '../createContainedStackNavigator'; +import { createAppContainer } from '@react-navigation/native'; +import StackNavigator from '../createStackNavigator'; const SubNavigator = StackNavigator({ Home: { @@ -26,13 +27,15 @@ SubNavigator.prototype.componentDidCatch = null; describe('Nested navigators', () => { it('renders succesfully as direct child', () => { - const rendered = renderer.create().toJSON(); + const NavApp = createAppContainer(NavNestedDirect); + const rendered = renderer.create().toJSON(); expect(rendered).toMatchSnapshot(); }); it('throw when trying to pass navigation prop', () => { const tryRender = () => { - renderer.create(); + const NavApp = createAppContainer(NavNestedIndirect); + renderer.create(); }; expect(tryRender).toThrowErrorMatchingSnapshot(); }); diff --git a/packages/stack/src/navigators/__tests__/StackNavigator-test.js b/packages/stack/src/navigators/__tests__/StackNavigator-test.js index 08b2786e..3c1e498e 100644 --- a/packages/stack/src/navigators/__tests__/StackNavigator-test.js +++ b/packages/stack/src/navigators/__tests__/StackNavigator-test.js @@ -1,10 +1,16 @@ import React, { Component } from 'react'; import { StyleSheet, View } from 'react-native'; import renderer from 'react-test-renderer'; +import { withNavigation } from '@react-navigation/core'; -import StackNavigator from '../createContainedStackNavigator'; -import { withNavigation } from 'react-navigation'; -import NavigationTestUtils from 'react-navigation/NavigationTestUtils'; +import createStackNavigator from '../createStackNavigator'; + +import createAppContainer, { + _TESTING_ONLY_reset_container_count, +} from '@react-navigation/native/src/createAppContainer'; +const NavigationTestUtils = { + resetInternalState: _TESTING_ONLY_reset_container_count, +}; const styles = StyleSheet.create({ header: { @@ -38,14 +44,15 @@ describe('StackNavigator', () => { }); it('renders successfully', () => { - const MyStackNavigator = StackNavigator(routeConfig); - const rendered = renderer.create().toJSON(); + const MyStackNavigator = createStackNavigator(routeConfig); + const App = createAppContainer(MyStackNavigator); + const rendered = renderer.create().toJSON(); expect(rendered).toMatchSnapshot(); }); it('applies correct values when headerRight is present', () => { - const MyStackNavigator = StackNavigator({ + const MyStackNavigator = createStackNavigator({ Home: { screen: HomeScreen, navigationOptions: { @@ -53,7 +60,8 @@ describe('StackNavigator', () => { }, }, }); - const rendered = renderer.create().toJSON(); + const App = createAppContainer(MyStackNavigator); + const rendered = renderer.create().toJSON(); expect(rendered).toMatchSnapshot(); }); @@ -79,9 +87,10 @@ describe('StackNavigator', () => { } } - const Nav = StackNavigator({ A: { screen: A } }); + const Nav = createStackNavigator({ A: { screen: A } }); + const App = createAppContainer(Nav); - renderer.create(