diff --git a/packages/react-navigation/examples/NavigationPlayground/.babelrc b/packages/react-navigation/examples/NavigationPlayground/.babelrc index 76d1cd70..d4b74b5b 100644 --- a/packages/react-navigation/examples/NavigationPlayground/.babelrc +++ b/packages/react-navigation/examples/NavigationPlayground/.babelrc @@ -1,5 +1,3 @@ { - "presets": [ - "expo" - ] + "presets": ["module:metro-react-native-babel-preset"] } diff --git a/packages/react-navigation/examples/NavigationPlayground/.buckconfig b/packages/react-navigation/examples/NavigationPlayground/.buckconfig new file mode 100644 index 00000000..934256cb --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/packages/react-navigation/examples/NavigationPlayground/.flowconfig b/packages/react-navigation/examples/NavigationPlayground/.flowconfig deleted file mode 100644 index e70a6fce..00000000 --- a/packages/react-navigation/examples/NavigationPlayground/.flowconfig +++ /dev/null @@ -1,79 +0,0 @@ -[ignore] -; We fork some components by platform -.*/*[.]android.js - -; Ignore "BUCK" generated dirs -/\.buckd/ - -; Ignore unexpected extra "@providesModule" -.*/node_modules/.*/node_modules/fbjs/.* - -; Ignore duplicate module providers -; For RN Apps installed via npm, "Libraries" folder is inside -; "node_modules/react-native" but in the source repo it is in the root -.*/Libraries/react-native/React.js - -; Ignore polyfills -.*/Libraries/polyfills/.* - -.*/react-navigation/node_modules/.* - -; Additional create-react-native-app ignores - -; Ignore duplicate module providers -.*/node_modules/fbemitter/lib/* - -; Ignore misbehaving dev-dependencies -.*/node_modules/xdl/build/* -.*/node_modules/reqwest/tests/* - -; Ignore missing expo-sdk dependencies (temporarily) -; https://github.com/expo/expo/issues/162 -.*/node_modules/expo/src/* - -; Ignore react-native-fbads dependency of the expo sdk -.*/node_modules/react-native-fbads/* - -.*/react-navigation/examples/ReduxExample/.* -.*/react-navigation/website/.* - -; This package is required by Expo and causes Flow errors -.*/node_modules/react-native-gesture-handler/.* - -.*/node_modules/metro/.* - -[include] - -[libs] -node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow/ -node_modules/react-native/flow-github/ -../../flow/ - -[options] -module.system=haste - -emoji=true - -munge_underscores=true - -module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' -module.file_ext=.js -module.file_ext=.jsx -module.file_ext=.json -module.file_ext=.native.js - -suppress_type=$FlowIgnore -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState - -suppress_comment=\\(.\\|\n\\)*\\$FlowIgnore\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ -suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy -suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError - -[version] -^0.67.0 diff --git a/packages/react-navigation/examples/NavigationPlayground/.gitattributes b/packages/react-navigation/examples/NavigationPlayground/.gitattributes new file mode 100644 index 00000000..d42ff183 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/packages/react-navigation/examples/NavigationPlayground/.gitignore b/packages/react-navigation/examples/NavigationPlayground/.gitignore index 1025e17b..56aba49d 100644 --- a/packages/react-navigation/examples/NavigationPlayground/.gitignore +++ b/packages/react-navigation/examples/NavigationPlayground/.gitignore @@ -1,3 +1,60 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# Visual Studio Code +# +.vscode/ + +# node.js +# node_modules/ -.expo/ -npm-debug.* +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# Bundle artifact +*.jsbundle diff --git a/packages/react-navigation/examples/NavigationPlayground/.watchmanconfig b/packages/react-navigation/examples/NavigationPlayground/.watchmanconfig index 0967ef42..9e26dfee 100644 --- a/packages/react-navigation/examples/NavigationPlayground/.watchmanconfig +++ b/packages/react-navigation/examples/NavigationPlayground/.watchmanconfig @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/packages/react-navigation/examples/NavigationPlayground/App.js b/packages/react-navigation/examples/NavigationPlayground/App.js deleted file mode 100644 index 36789705..00000000 --- a/packages/react-navigation/examples/NavigationPlayground/App.js +++ /dev/null @@ -1,9 +0,0 @@ -import { Platform } from 'react-native'; -import { useScreens } from 'react-native-screens'; - -if (Platform.OS === 'android') { - // useScreens(); -} - -import App from './js/App'; -export default App; diff --git a/packages/react-navigation/examples/NavigationPlayground/android/.project b/packages/react-navigation/examples/NavigationPlayground/android/.project new file mode 100644 index 00000000..19e6bfca --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/.project @@ -0,0 +1,17 @@ + + + NavigationPlayground + Project NavigationPlayground created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/packages/react-navigation/examples/NavigationPlayground/android/.settings/org.eclipse.buildship.core.prefs b/packages/react-navigation/examples/NavigationPlayground/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..e8895216 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/.classpath b/packages/react-navigation/examples/NavigationPlayground/android/app/.classpath new file mode 100644 index 00000000..eb19361b --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/.project b/packages/react-navigation/examples/NavigationPlayground/android/app/.project new file mode 100644 index 00000000..ac485d7c --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/.project @@ -0,0 +1,23 @@ + + + app + Project app created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/.settings/org.eclipse.buildship.core.prefs b/packages/react-navigation/examples/NavigationPlayground/android/app/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..b1886adb --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/BUCK b/packages/react-navigation/examples/NavigationPlayground/android/app/BUCK new file mode 100644 index 00000000..70790026 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/BUCK @@ -0,0 +1,65 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +lib_deps = [] + +for jarfile in glob(['libs/*.jar']): + name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] + lib_deps.append(':' + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) + +for aarfile in glob(['libs/*.aar']): + name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] + lib_deps.append(':' + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.navigationplayground", +) + +android_resource( + name = "res", + package = "com.navigationplayground", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/build.gradle b/packages/react-navigation/examples/NavigationPlayground/android/app/build.gradle new file mode 100644 index 00000000..b006e759 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/build.gradle @@ -0,0 +1,153 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation + * entryFile: "index.android.js", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + entryFile: "index.js" +] + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + + defaultConfig { + applicationId "com.navigationplayground" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86" + } + } + buildTypes { + release { + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits + def versionCodes = ["armeabi-v7a":1, "x86":2] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + } + } +} + +dependencies { + compile project(':react-native-blur') + compile project(':react-native-vector-icons') + compile project(':react-native-gesture-handler') + implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" + implementation "com.facebook.react:react-native:+" // From node_modules +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/proguard-rules.pro b/packages/react-navigation/examples/NavigationPlayground/android/app/proguard-rules.pro new file mode 100644 index 00000000..a92fa177 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/AndroidManifest.xml b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..a77cacb9 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/AntDesign.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/AntDesign.ttf new file mode 100644 index 00000000..2abf0354 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/AntDesign.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Entypo.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Entypo.ttf new file mode 100644 index 00000000..1c8f5e91 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Entypo.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/EvilIcons.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/EvilIcons.ttf new file mode 100644 index 00000000..6868f7bb Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/EvilIcons.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Feather.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Feather.ttf new file mode 100755 index 00000000..fc963dfe Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Feather.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf new file mode 100644 index 00000000..953d567b Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf new file mode 100644 index 00000000..235101c2 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf new file mode 100644 index 00000000..7c92e986 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Foundation.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Foundation.ttf new file mode 100644 index 00000000..6cce217d Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Foundation.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Ionicons.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Ionicons.ttf new file mode 100644 index 00000000..67bd8420 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Ionicons.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf new file mode 100644 index 00000000..42a11c88 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/MaterialIcons.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/MaterialIcons.ttf new file mode 100644 index 00000000..7015564a Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/MaterialIcons.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Octicons.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Octicons.ttf new file mode 100644 index 00000000..0ffe00b9 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Octicons.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/SimpleLineIcons.ttf new file mode 100644 index 00000000..6ecb6868 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/SimpleLineIcons.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Zocial.ttf b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Zocial.ttf new file mode 100644 index 00000000..e4ae46c6 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/assets/fonts/Zocial.ttf differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/java/com/navigationplayground/MainActivity.java b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/java/com/navigationplayground/MainActivity.java new file mode 100644 index 00000000..715dbaef --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/java/com/navigationplayground/MainActivity.java @@ -0,0 +1,28 @@ +package com.navigationplayground; + +import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.ReactRootView; +import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. This is + * used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "NavigationPlayground"; + } + + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new ReactActivityDelegate(this, getMainComponentName()) { + @Override + protected ReactRootView createRootView() { + return new RNGestureHandlerEnabledRootView(MainActivity.this); + } + }; + } +} diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/java/com/navigationplayground/MainApplication.java b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/java/com/navigationplayground/MainApplication.java new file mode 100644 index 00000000..de70d6f0 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/java/com/navigationplayground/MainApplication.java @@ -0,0 +1,51 @@ +package com.navigationplayground; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import com.cmcewen.blurview.BlurViewPackage; +import com.oblador.vectoricons.VectorIconsPackage; +import com.swmansion.gesturehandler.react.RNGestureHandlerPackage; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new BlurViewPackage(), + new VectorIconsPackage(), + new RNGestureHandlerPackage() + ); + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + } +} diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..a2f59082 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..1b523998 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..ff10afd6 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..115a4c76 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..dcd3cd80 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..459ca609 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..8ca12fe0 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..8e19b410 Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..b824ebdd Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..4c19a13c Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/values/strings.xml b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..48b206d4 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + NavigationPlayground + diff --git a/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/values/styles.xml b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..319eb0ca --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/packages/react-navigation/examples/NavigationPlayground/android/build.gradle b/packages/react-navigation/examples/NavigationPlayground/android/build.gradle new file mode 100644 index 00000000..a1e80854 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/build.gradle @@ -0,0 +1,39 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = "27.0.3" + minSdkVersion = 16 + compileSdkVersion = 27 + targetSdkVersion = 26 + supportLibVersion = "27.1.1" + } + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.1.4' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + google() + jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + } +} + + +task wrapper(type: Wrapper) { + gradleVersion = '4.4' + distributionUrl = distributionUrl.replace("bin", "all") +} diff --git a/packages/react-navigation/examples/NavigationPlayground/android/gradle.properties b/packages/react-navigation/examples/NavigationPlayground/android/gradle.properties new file mode 100644 index 00000000..89e0d99e --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/gradle.properties @@ -0,0 +1,18 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true diff --git a/packages/react-navigation/examples/NavigationPlayground/android/gradle/wrapper/gradle-wrapper.jar b/packages/react-navigation/examples/NavigationPlayground/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..01b8bf6b Binary files /dev/null and b/packages/react-navigation/examples/NavigationPlayground/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/packages/react-navigation/examples/NavigationPlayground/android/gradle/wrapper/gradle-wrapper.properties b/packages/react-navigation/examples/NavigationPlayground/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..b6517bb1 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/packages/react-navigation/examples/NavigationPlayground/android/gradlew b/packages/react-navigation/examples/NavigationPlayground/android/gradlew new file mode 100755 index 00000000..cccdd3d5 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/packages/react-navigation/examples/NavigationPlayground/android/gradlew.bat b/packages/react-navigation/examples/NavigationPlayground/android/gradlew.bat new file mode 100644 index 00000000..f9553162 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/react-navigation/examples/NavigationPlayground/android/keystores/BUCK b/packages/react-navigation/examples/NavigationPlayground/android/keystores/BUCK new file mode 100644 index 00000000..88e4c31b --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = "debug", + properties = "debug.keystore.properties", + store = "debug.keystore", + visibility = [ + "PUBLIC", + ], +) diff --git a/packages/react-navigation/examples/NavigationPlayground/android/keystores/debug.keystore.properties b/packages/react-navigation/examples/NavigationPlayground/android/keystores/debug.keystore.properties new file mode 100644 index 00000000..121bfb49 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/keystores/debug.keystore.properties @@ -0,0 +1,4 @@ +key.store=debug.keystore +key.alias=androiddebugkey +key.store.password=android +key.alias.password=android diff --git a/packages/react-navigation/examples/NavigationPlayground/android/settings.gradle b/packages/react-navigation/examples/NavigationPlayground/android/settings.gradle new file mode 100644 index 00000000..099274c8 --- /dev/null +++ b/packages/react-navigation/examples/NavigationPlayground/android/settings.gradle @@ -0,0 +1,9 @@ +rootProject.name = 'NavigationPlayground' +include ':react-native-blur' +project(':react-native-blur').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-blur/android') +include ':react-native-vector-icons' +project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') +include ':react-native-gesture-handler' +project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android') + +include ':app' diff --git a/packages/react-navigation/examples/NavigationPlayground/App.test.js b/packages/react-navigation/examples/NavigationPlayground/app/App.test.tsx similarity index 60% rename from packages/react-navigation/examples/NavigationPlayground/App.test.js rename to packages/react-navigation/examples/NavigationPlayground/app/App.test.tsx index 15668c90..e6f67cb7 100644 --- a/packages/react-navigation/examples/NavigationPlayground/App.test.js +++ b/packages/react-navigation/examples/NavigationPlayground/app/App.test.tsx @@ -5,6 +5,5 @@ import renderer from 'react-test-renderer'; it('renders without crashing', () => { const rendered = renderer.create().toJSON(); - // Will be null because the playground uses state persistence which happens asyncronously - expect(rendered).toEqual(null); + expect(rendered).toBeDefined(); }); diff --git a/packages/react-navigation/examples/NavigationPlayground/js/App.js b/packages/react-navigation/examples/NavigationPlayground/app/App.tsx similarity index 85% rename from packages/react-navigation/examples/NavigationPlayground/js/App.js rename to packages/react-navigation/examples/NavigationPlayground/app/App.tsx index 1f5d0d86..41751d7e 100644 --- a/packages/react-navigation/examples/NavigationPlayground/js/App.js +++ b/packages/react-navigation/examples/NavigationPlayground/app/App.tsx @@ -1,184 +1,165 @@ -/* @flow */ - import React from 'react'; -import { Asset, Constants, ScreenOrientation } from 'expo'; - -ScreenOrientation.allow(ScreenOrientation.Orientation.ALL); - import { Animated, Image, Platform, - ScrollView, + StatusBar, StyleSheet, Text, - StatusBar, View, } from 'react-native'; import { - RectButton, NativeViewGestureHandler, + RectButton, } from 'react-native-gesture-handler'; import { createAppContainer, - SafeAreaView, createStackNavigator, + SafeAreaView, } from 'react-navigation'; -import { Assets as StackAssets } from 'react-navigation-stack'; - import CustomTabs from './CustomTabs'; -import CustomTransitioner from './CustomTransitioner'; +import CustomTabUI from './CustomTabUI'; +// import CustomTransitioner from './CustomTransitioner'; import Drawer from './Drawer'; -import MultipleDrawer from './MultipleDrawer'; -import TabsInDrawer from './TabsInDrawer'; import ModalStack from './ModalStack'; +import SimpleStack from './SimpleStack'; +import SimpleTabs from './SimpleTabs'; import StacksInTabs from './StacksInTabs'; import StacksOverTabs from './StacksOverTabs'; import StacksOverTopTabs from './StacksOverTopTabs'; import StacksWithKeys from './StacksWithKeys'; -import InactiveStack from './InactiveStack'; import StackWithCustomHeaderBackImage from './StackWithCustomHeaderBackImage'; -import SimpleStack from './SimpleStack'; import StackWithHeaderPreset from './StackWithHeaderPreset'; import StackWithTranslucentHeader from './StackWithTranslucentHeader'; -import SimpleTabs from './SimpleTabs'; -import CustomTabUI from './CustomTabUI'; import SwitchWithStacks from './SwitchWithStacks'; -import TabsWithNavigationFocus from './TabsWithNavigationFocus'; -import TabsWithNavigationEvents from './TabsWithNavigationEvents'; -import KeyboardHandlingExample from './KeyboardHandlingExample'; +import TabsInDrawer from './TabsInDrawer'; -process.env.REACT_NAV_LOGGING = true; - -const ExampleInfo = { - SimpleStack: { - name: 'Stack Example', - description: 'A card stack', - }, - SwitchWithStacks: { - name: 'Switch between routes', - description: 'Jump between routes', - }, - InactiveStack: { - name: 'Navigate idempotently to stacks in inactive routes', - description: - 'An inactive route in a stack should be given the opportunity to handle actions', - }, - StackWithCustomHeaderBackImage: { - name: 'Custom header back image', - description: 'Stack with custom header back image', - }, - SimpleTabs: { - name: 'Tabs Example', - description: 'Tabs following platform conventions', - }, - Drawer: { - name: 'Drawer Example', - description: 'Android-style drawer navigation', - }, - StackWithHeaderPreset: { - name: 'UIKit-style Header Transitions', - description: 'Masked back button and sliding header items. iOS only.', - }, - StackWithTranslucentHeader: { - name: 'Translucent Header', - description: 'Render arbitrary translucent content in header background.', - }, - // MultipleDrawer: { - // name: 'Multiple Drawer Example', - // description: 'Add any drawer you need', - // }, - TabsInDrawer: { - name: 'Drawer + Tabs Example', - description: 'A drawer combined with tabs', +const ExampleInfo: any = { + CustomTabUI: { + description: 'Render additional views around a Tab navigator', + name: 'Custom Tabs UI', }, CustomTabs: { - name: 'Custom Tabs', description: 'Custom tabs with tab router', + name: 'Custom Tabs', }, CustomTransitioner: { - name: 'Custom Transitioner', description: 'Custom transitioner with stack router', + name: 'Custom Transitioner', + }, + Drawer: { + description: 'Android-style drawer navigation', + name: 'Drawer Example', + }, + InactiveStack: { + description: + 'An inactive route in a stack should be given the opportunity to handle actions', + name: 'Navigate idempotently to stacks in inactive routes', + }, + KeyboardHandlingExample: { + description: + 'Demo automatic handling of keyboard showing/hiding inside StackNavigator', + name: 'Keyboard Handling Example', + }, + LinkStack: { + description: 'Deep linking into a route in stack', + name: 'Link in Stack', + }, + LinkTabs: { + description: 'Deep linking into a route in tab', + name: 'Link to Settings Tab', }, ModalStack: { - name: - Platform.OS === 'ios' - ? 'Modal Stack Example' - : 'Stack with Dynamic Header', description: Platform.OS === 'ios' ? 'Stack navigation with modals' : 'Dynamically showing and hiding the header', + name: + Platform.OS === 'ios' + ? 'Modal Stack Example' + : 'Stack with Dynamic Header', + }, + SimpleStack: { + description: 'A card stack', + name: 'Stack Example', + }, + SimpleTabs: { + description: 'Tabs following platform conventions', + name: 'Tabs Example', + }, + StackWithCustomHeaderBackImage: { + description: 'Stack with custom header back image', + name: 'Custom header back image', + }, + StackWithHeaderPreset: { + description: 'Masked back button and sliding header items. iOS only.', + name: 'UIKit-style Header Transitions', + }, + StackWithTranslucentHeader: { + description: 'Render arbitrary translucent content in header background.', + name: 'Translucent Header', }, StacksInTabs: { - name: 'Stacks in Tabs', description: 'Nested stack navigation in tabs', + name: 'Stacks in Tabs', }, StacksOverTabs: { - name: 'Stacks over Tabs', description: 'Nested stack navigation that pushes on top of tabs', + name: 'Stacks over Tabs', }, StacksOverTopTabs: { - name: 'Stacks with non-standard header height', description: 'Tab navigator in stack with custom header heights', + name: 'Stacks with non-standard header height', }, StacksWithKeys: { - name: 'Link in Stack with keys', description: 'Use keys to link between screens', + name: 'Link in Stack with keys', }, - LinkStack: { - name: 'Link in Stack', - description: 'Deep linking into a route in stack', + SwitchWithStacks: { + description: 'Jump between routes', + name: 'Switch between routes', }, - LinkTabs: { - name: 'Link to Settings Tab', - description: 'Deep linking into a route in tab', - }, - TabsWithNavigationFocus: { - name: 'withNavigationFocus', - description: 'Receive the focus prop to know when a screen is focused', + // MultipleDrawer: { + // description: 'Add any drawer you need', + // name: 'Multiple Drawer Example', + // }, + TabsInDrawer: { + description: 'A drawer combined with tabs', + name: 'Drawer + Tabs Example', }, TabsWithNavigationEvents: { - name: 'NavigationEvents', description: 'Declarative NavigationEvents component to subscribe to navigation events', + name: 'NavigationEvents', }, - KeyboardHandlingExample: { - name: 'Keyboard Handling Example', - description: - 'Demo automatic handling of keyboard showing/hiding inside StackNavigator', - }, - CustomTabUI: { - name: 'Custom Tabs UI', - description: 'Render additional views around a Tab navigator', + TabsWithNavigationFocus: { + description: 'Receive the focus prop to know when a screen is focused', + name: 'withNavigationFocus', }, }; -const ExampleRoutes = { +const ExampleRoutes: any = { + CustomTabUI, + CustomTabs, + // CustomTransitioner, + Drawer, + ModalStack, SimpleStack, + SimpleTabs, + StackWithCustomHeaderBackImage, + StackWithTranslucentHeader, + StacksWithKeys, + StacksOverTabs, SwitchWithStacks, - SimpleTabs: SimpleTabs, - Drawer: Drawer, - // MultipleDrawer: { - // screen: MultipleDrawer, - // }, - StackWithCustomHeaderBackImage: StackWithCustomHeaderBackImage, + StacksOverTopTabs, + StacksInTabs, ...Platform.select({ - ios: { - StackWithHeaderPreset: StackWithHeaderPreset, - }, android: {}, + ios: { + StackWithHeaderPreset, + }, }), - StackWithTranslucentHeader: StackWithTranslucentHeader, - TabsInDrawer: TabsInDrawer, - CustomTabs: CustomTabs, - CustomTransitioner: CustomTransitioner, - ModalStack: ModalStack, - StacksWithKeys: StacksWithKeys, - StacksInTabs: StacksInTabs, - CustomTabUI: CustomTabUI, - StacksOverTabs: StacksOverTabs, - StacksOverTopTabs: StacksOverTopTabs, + TabsInDrawer, LinkStack: { screen: SimpleStack, path: 'people/Jordan', @@ -187,32 +168,24 @@ const ExampleRoutes = { screen: SimpleTabs, path: 'settings', }, - TabsWithNavigationFocus, - TabsWithNavigationEvents, - KeyboardHandlingExample, - // This is commented out because it's rarely useful - // InactiveStack, }; -type State = { - scrollY: Animated.Value, -}; +interface State { + scrollY: Animated.Value; +} + class MainScreen extends React.Component { state = { scrollY: new Animated.Value(0), }; - componentDidMount() { - Asset.loadAsync(StackAssets); - } - render() { const { navigation } = this.props; const scale = this.state.scrollY.interpolate({ + extrapolate: 'clamp', inputRange: [-450, 0, 100], outputRange: [2, 1, 0.8], - extrapolate: 'clamp', }); const translateY = this.state.scrollY.interpolate({ @@ -221,21 +194,21 @@ class MainScreen extends React.Component { }); const opacity = this.state.scrollY.interpolate({ + extrapolate: 'clamp', inputRange: [0, 50], outputRange: [1, 0], - extrapolate: 'clamp', }); const underlayOpacity = this.state.scrollY.interpolate({ + extrapolate: 'clamp', inputRange: [0, 50], outputRange: [0, 1], - extrapolate: 'clamp', }); const backgroundScale = this.state.scrollY.interpolate({ + extrapolate: 'clamp', inputRange: [-450, 0], outputRange: [3, 1], - extrapolate: 'clamp', }); const backgroundTranslateY = this.state.scrollY.interpolate({ @@ -299,7 +272,7 @@ class MainScreen extends React.Component { underlayColor="#ccc" activeOpacity={0.3} onPress={() => { - let route = ExampleRoutes[routeName]; + const route = ExampleRoutes[routeName]; if (route.screen || route.path || route.params) { const { path, params, screen } = route; const { router } = screen; @@ -344,13 +317,13 @@ const AppNavigator = createAppContainer( }, }, { - initialRouteName: 'Index', headerMode: 'none', + initialRouteName: 'Index', /* - * Use modal on iOS because the card mode comes from the right, - * which conflicts with the drawer example gesture - */ + * Use modal on iOS because the card mode comes from the right, + * which conflicts with the drawer example gesture + */ mode: Platform.OS === 'ios' ? 'modal' : 'card', } ) @@ -363,65 +336,65 @@ export default class App extends React.Component { } const styles = StyleSheet.create({ - item: { - paddingHorizontal: 16, - paddingVertical: 12, - borderBottomWidth: StyleSheet.hairlineWidth, - borderBottomColor: '#ddd', - }, - image: { - width: 120, - height: 120, - alignSelf: 'center', - marginBottom: 20, - resizeMode: 'contain', - }, - statusBarUnderlay: { - backgroundColor: '#673ab7', - position: 'absolute', - top: 0, - left: 0, - right: 0, - height: Constants.statusBarHeight, - }, - title: { - fontSize: 16, - fontWeight: 'bold', - color: '#444', - }, - description: { - fontSize: 13, - color: '#999', - }, backgroundUnderlay: { backgroundColor: '#673ab7', - position: 'absolute', - top: -100, height: 300, left: 0, + position: 'absolute', right: 0, + top: -100, + }, + banner: { + alignItems: 'center', + flexDirection: 'row', + padding: 16, }, bannerContainer: { // backgroundColor: '#673ab7', alignItems: 'center', }, - banner: { - flexDirection: 'row', - alignItems: 'center', - padding: 16, - }, bannerImage: { - width: 36, height: 36, + margin: 8, resizeMode: 'contain', tintColor: '#fff', - margin: 8, + width: 36, }, bannerTitle: { + color: '#fff', fontSize: 18, fontWeight: '200', - color: '#fff', - marginVertical: 8, marginRight: 5, + marginVertical: 8, + }, + description: { + color: '#999', + fontSize: 13, + }, + image: { + alignSelf: 'center', + height: 120, + marginBottom: 20, + resizeMode: 'contain', + width: 120, + }, + item: { + borderBottomColor: '#ddd', + borderBottomWidth: StyleSheet.hairlineWidth, + paddingHorizontal: 16, + paddingVertical: 12, + }, + statusBarUnderlay: { + backgroundColor: '#673ab7', + height: 20, + left: 0, + position: 'absolute', + right: 0, + top: 0, + }, + title: { + color: '#444', + fontSize: 16, + fontWeight: 'bold', }, }); diff --git a/packages/react-navigation/examples/NavigationPlayground/js/CustomTabUI.js b/packages/react-navigation/examples/NavigationPlayground/app/CustomTabUI.tsx similarity index 72% rename from packages/react-navigation/examples/NavigationPlayground/js/CustomTabUI.js rename to packages/react-navigation/examples/NavigationPlayground/app/CustomTabUI.tsx index 818d7f7c..262ba55a 100644 --- a/packages/react-navigation/examples/NavigationPlayground/js/CustomTabUI.js +++ b/packages/react-navigation/examples/NavigationPlayground/app/CustomTabUI.tsx @@ -1,19 +1,36 @@ import React from 'react'; import { LayoutAnimation, - View, - StyleSheet, StatusBar, + StyleSheet, Text, + View, } from 'react-native'; -import { SafeAreaView, createMaterialTopTabNavigator } from 'react-navigation'; import Ionicons from 'react-native-vector-icons/Ionicons'; +import { + createMaterialTopTabNavigator, + NavigationScreenProp, + NavigationState, + SafeAreaView, +} from 'react-navigation'; import { Button } from './commonComponents/ButtonWithMargin'; -class MyHomeScreen extends React.Component { +interface Props { + navigation: NavigationScreenProp; +} + +class MyHomeScreen extends React.Component { static navigationOptions = { tabBarLabel: 'Home', - tabBarIcon: ({ tintColor, focused, horizontal }) => ( + tabBarIcon: ({ + tintColor, + focused, + horizontal, + }: { + tintColor: string; + focused: boolean; + horizontal: boolean; + }) => ( { static navigationOptions = { tabBarLabel: 'Recommended', - tabBarIcon: ({ tintColor, focused, horizontal }) => ( + tabBarIcon: ({ + tintColor, + focused, + horizontal, + }: { + tintColor: string; + focused: boolean; + horizontal: boolean; + }) => ( ({ +class FeaturedScreen extends React.Component { + static navigationOptions = ({ + navigation, + }: { + navigation: NavigationScreenProp; + }) => ({ tabBarLabel: 'Featured', - tabBarIcon: ({ tintColor, focused, horizontal }) => ( + tabBarIcon: ({ + tintColor, + focused, + horizontal, + }: { + tintColor: string; + focused: boolean; + horizontal: boolean; + }) => ( { static router = SimpleTabs.router; componentWillUpdate() { LayoutAnimation.easeInEaseOut(); @@ -107,7 +144,12 @@ class TabNavigator extends React.Component { if (activeRoute.routeName !== 'Home') { bottom = ( -