From e8cb92ddf94a0173c22853df3ea34610726fb30c Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 11:24:06 -0500 Subject: [PATCH 01/20] added Sample2 --- example/Sample2/.flowconfig | 63 ++ example/Sample2/.gitignore | 34 + example/Sample2/.watchmanconfig | 1 + example/Sample2/android/app/build.gradle | 78 ++ .../Sample2/android/app/proguard-rules.pro | 60 ++ example/Sample2/android/app/react.gradle | 87 ++ .../android/app/src/main/AndroidManifest.xml | 23 + .../main/java/com/sample2/MainActivity.java | 78 ++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + example/Sample2/android/build.gradle | 23 + example/Sample2/android/gradle.properties | 20 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52266 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + example/Sample2/android/gradlew | 164 ++++ example/Sample2/android/gradlew.bat | 90 +++ example/Sample2/android/settings.gradle | 3 + example/Sample2/index.android.js | 52 ++ example/Sample2/index.ios.js | 53 ++ .../ios/Sample2.xcodeproj/project.pbxproj | 763 ++++++++++++++++++ .../xcshareddata/xcschemes/Sample2.xcscheme | 112 +++ example/Sample2/ios/Sample2/AppDelegate.h | 16 + example/Sample2/ios/Sample2/AppDelegate.m | 57 ++ .../ios/Sample2/Base.lproj/LaunchScreen.xib | 42 + .../AppIcon.appiconset/Contents.json | 38 + example/Sample2/ios/Sample2/Info.plist | 48 ++ example/Sample2/ios/Sample2/main.m | 18 + example/Sample2/ios/Sample2Tests/Info.plist | 24 + .../Sample2/ios/Sample2Tests/Sample2Tests.m | 70 ++ example/Sample2/package.json | 11 + 34 files changed, 2044 insertions(+) create mode 100644 example/Sample2/.flowconfig create mode 100644 example/Sample2/.gitignore create mode 100644 example/Sample2/.watchmanconfig create mode 100644 example/Sample2/android/app/build.gradle create mode 100644 example/Sample2/android/app/proguard-rules.pro create mode 100644 example/Sample2/android/app/react.gradle create mode 100644 example/Sample2/android/app/src/main/AndroidManifest.xml create mode 100644 example/Sample2/android/app/src/main/java/com/sample2/MainActivity.java create mode 100644 example/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 example/Sample2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 example/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 example/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 example/Sample2/android/app/src/main/res/values/strings.xml create mode 100644 example/Sample2/android/app/src/main/res/values/styles.xml create mode 100644 example/Sample2/android/build.gradle create mode 100644 example/Sample2/android/gradle.properties create mode 100644 example/Sample2/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 example/Sample2/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 example/Sample2/android/gradlew create mode 100644 example/Sample2/android/gradlew.bat create mode 100644 example/Sample2/android/settings.gradle create mode 100644 example/Sample2/index.android.js create mode 100644 example/Sample2/index.ios.js create mode 100644 example/Sample2/ios/Sample2.xcodeproj/project.pbxproj create mode 100644 example/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme create mode 100644 example/Sample2/ios/Sample2/AppDelegate.h create mode 100644 example/Sample2/ios/Sample2/AppDelegate.m create mode 100644 example/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib create mode 100644 example/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/Sample2/ios/Sample2/Info.plist create mode 100644 example/Sample2/ios/Sample2/main.m create mode 100644 example/Sample2/ios/Sample2Tests/Info.plist create mode 100644 example/Sample2/ios/Sample2Tests/Sample2Tests.m create mode 100644 example/Sample2/package.json diff --git a/example/Sample2/.flowconfig b/example/Sample2/.flowconfig new file mode 100644 index 0000000..8eadd33 --- /dev/null +++ b/example/Sample2/.flowconfig @@ -0,0 +1,63 @@ +[ignore] + +# We fork some components by platform. +.*/*.web.js +.*/*.android.js + +# Some modules have their own node_modules with overlap +.*/node_modules/node-haste/.* + +# Ugh +.*/node_modules/babel.* +.*/node_modules/babylon.* +.*/node_modules/invariant.* + +# Ignore react and fbjs where there are overlaps, but don't ignore +# anything that react-native relies on +.*/node_modules/fbjs-haste/.*/__tests__/.* +.*/node_modules/fbjs-haste/__forks__/Map.js +.*/node_modules/fbjs-haste/__forks__/Promise.js +.*/node_modules/fbjs-haste/__forks__/fetch.js +.*/node_modules/fbjs-haste/core/ExecutionEnvironment.js +.*/node_modules/fbjs-haste/core/isEmpty.js +.*/node_modules/fbjs-haste/crypto/crc32.js +.*/node_modules/fbjs-haste/stubs/ErrorUtils.js +.*/node_modules/react-haste/React.js +.*/node_modules/react-haste/renderers/dom/ReactDOM.js +.*/node_modules/react-haste/renderers/shared/event/eventPlugins/ResponderEventPlugin.js + +# Ignore commoner tests +.*/node_modules/commoner/test/.* + +# See https://github.com/facebook/flow/issues/442 +.*/react-tools/node_modules/commoner/lib/reader.js + +# Ignore jest +.*/node_modules/jest-cli/.* + +# Ignore Website +.*/website/.* + +[include] + +[libs] +node_modules/react-native/Libraries/react-native/react-native-interface.js + +[options] +module.system=haste + +munge_underscores=true + +module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' +module.name_mapper='^[./a-zA-Z0-9$_-]+\.png$' -> 'RelativeImageStub' + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FixMe + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(1[0-8]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(1[0-8]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy + +[version] +0.18.1 diff --git a/example/Sample2/.gitignore b/example/Sample2/.gitignore new file mode 100644 index 0000000..94fc867 --- /dev/null +++ b/example/Sample2/.gitignore @@ -0,0 +1,34 @@ +# 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/IJ +# +.idea +.gradle +local.properties + +# node.js +# +node_modules/ +npm-debug.log diff --git a/example/Sample2/.watchmanconfig b/example/Sample2/.watchmanconfig new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/example/Sample2/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/example/Sample2/android/app/build.gradle b/example/Sample2/android/app/build.gradle new file mode 100644 index 0000000..fd9c3be --- /dev/null +++ b/example/Sample2/android/app/build.gradle @@ -0,0 +1,78 @@ +apply plugin: "com.android.application" + +/** + * The react.gradle file registers two tasks: 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: "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, + * + * // 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/**"] + * ] + */ + +apply from: "react.gradle" + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + applicationId "com.sample2" + minSdkVersion 16 + targetSdkVersion 22 + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + buildTypes { + release { + minifyEnabled false // Set this to true to enable Proguard + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } +} + +dependencies { + compile fileTree(dir: "libs", include: ["*.jar"]) + compile "com.android.support:appcompat-v7:23.0.1" + compile "com.facebook.react:react-native:0.16.+" +} diff --git a/example/Sample2/android/app/proguard-rules.pro b/example/Sample2/android/app/proguard-rules.pro new file mode 100644 index 0000000..ffa8c9f --- /dev/null +++ b/example/Sample2/android/app/proguard-rules.pro @@ -0,0 +1,60 @@ +# 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 *; +#} + +# Disabling obfuscation is useful if you collect stack traces from production crashes +# (unless you are using a system that supports de-obfuscate the stack traces). +-dontobfuscate + +# React Native + +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.proguard.annotations.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.proguard.annotations.DoNotStrip *; +} + +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { + void set*(***); + *** get*(); +} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.ReactPropGroup ; } + +# okhttp + +-keepattributes Signature +-keepattributes *Annotation* +-keep class com.squareup.okhttp.** { *; } +-keep interface com.squareup.okhttp.** { *; } +-dontwarn com.squareup.okhttp.** + +# okio + +-keep class sun.misc.Unsafe { *; } +-dontwarn java.nio.file.* +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okio.** diff --git a/example/Sample2/android/app/react.gradle b/example/Sample2/android/app/react.gradle new file mode 100644 index 0000000..1e08b00 --- /dev/null +++ b/example/Sample2/android/app/react.gradle @@ -0,0 +1,87 @@ +import org.apache.tools.ant.taskdefs.condition.Os + +def config = project.hasProperty("react") ? project.react : []; + +def bundleAssetName = config.bundleAssetName ?: "index.android.bundle" +def entryFile = config.entryFile ?: "index.android.js" + +// because elvis operator +def elvisFile(thing) { + return thing ? file(thing) : null; +} + +def reactRoot = elvisFile(config.root) ?: file("../../") +def jsBundleDirDebug = elvisFile(config.jsBundleDirDebug) ?: + file("$buildDir/intermediates/assets/debug") +def jsBundleDirRelease = elvisFile(config.jsBundleDirRelease) ?: + file("$buildDir/intermediates/assets/release") +def resourcesDirDebug = elvisFile(config.resourcesDirDebug) ?: + file("$buildDir/intermediates/res/merged/debug") +def resourcesDirRelease = elvisFile(config.resourcesDirRelease) ?: + file("$buildDir/intermediates/res/merged/release") +def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"] + +def jsBundleFileDebug = file("$jsBundleDirDebug/$bundleAssetName") +def jsBundleFileRelease = file("$jsBundleDirRelease/$bundleAssetName") + +task bundleDebugJsAndAssets(type: Exec) { + // create dirs if they are not there (e.g. the "clean" task just ran) + doFirst { + jsBundleDirDebug.mkdirs() + resourcesDirDebug.mkdirs() + } + + // set up inputs and outputs so gradle can cache the result + inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) + outputs.dir jsBundleDirDebug + outputs.dir resourcesDirDebug + + // set up the call to the react-native cli + workingDir reactRoot + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", + entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug + } else { + commandLine "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", + entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug + } + + enabled config.bundleInDebug ?: false +} + +task bundleReleaseJsAndAssets(type: Exec) { + // create dirs if they are not there (e.g. the "clean" task just ran) + doFirst { + jsBundleDirRelease.mkdirs() + resourcesDirRelease.mkdirs() + } + + // set up inputs and outputs so gradle can cache the result + inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) + outputs.dir jsBundleDirRelease + outputs.dir resourcesDirRelease + + // set up the call to the react-native cli + workingDir reactRoot + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + commandLine "cmd","/c", "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", + entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease + } else { + commandLine "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", + entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease + } + + enabled config.bundleInRelease ?: true +} + +gradle.projectsEvaluated { + // hook bundleDebugJsAndAssets into the android build process + bundleDebugJsAndAssets.dependsOn mergeDebugResources + bundleDebugJsAndAssets.dependsOn mergeDebugAssets + processDebugResources.dependsOn bundleDebugJsAndAssets + + // hook bundleReleaseJsAndAssets into the android build process + bundleReleaseJsAndAssets.dependsOn mergeReleaseResources + bundleReleaseJsAndAssets.dependsOn mergeReleaseAssets + processReleaseResources.dependsOn bundleReleaseJsAndAssets +} diff --git a/example/Sample2/android/app/src/main/AndroidManifest.xml b/example/Sample2/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..6c2b911 --- /dev/null +++ b/example/Sample2/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + diff --git a/example/Sample2/android/app/src/main/java/com/sample2/MainActivity.java b/example/Sample2/android/app/src/main/java/com/sample2/MainActivity.java new file mode 100644 index 0000000..37ac3e2 --- /dev/null +++ b/example/Sample2/android/app/src/main/java/com/sample2/MainActivity.java @@ -0,0 +1,78 @@ +package com.sample2; + +import android.app.Activity; +import android.os.Bundle; +import android.view.KeyEvent; + +import com.facebook.react.LifecycleState; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactRootView; +import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; + +public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { + + private ReactInstanceManager mReactInstanceManager; + private ReactRootView mReactRootView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mReactRootView = new ReactRootView(this); + + mReactInstanceManager = ReactInstanceManager.builder() + .setApplication(getApplication()) + .setBundleAssetName("index.android.bundle") + .setJSMainModuleName("index.android") + .addPackage(new MainReactPackage()) + .setUseDeveloperSupport(BuildConfig.DEBUG) + .setInitialLifecycleState(LifecycleState.RESUMED) + .build(); + + mReactRootView.startReactApplication(mReactInstanceManager, "Sample2", null); + + setContentView(mReactRootView); + } + + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) { + mReactInstanceManager.showDevOptionsDialog(); + return true; + } + return super.onKeyUp(keyCode, event); + } + + @Override + public void onBackPressed() { + if (mReactInstanceManager != null) { + mReactInstanceManager.onBackPressed(); + } else { + super.onBackPressed(); + } + } + + @Override + public void invokeDefaultOnBackPressed() { + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + + if (mReactInstanceManager != null) { + mReactInstanceManager.onPause(); + } + } + + @Override + protected void onResume() { + super.onResume(); + + if (mReactInstanceManager != null) { + mReactInstanceManager.onResume(this, this); + } + } +} diff --git a/example/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cde69bcccec65160d92116f20ffce4fce0b5245c GIT binary patch literal 3418 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 literal 0 HcmV?d00001 diff --git a/example/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa42f0e7b91d006d22352c9ff2f134e504e3c1d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/example/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..324e72cdd7480cb983fa1bcc7ce686e51ef87fe7 GIT binary patch literal 7718 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 literal 0 HcmV?d00001 diff --git a/example/Sample2/android/app/src/main/res/values/strings.xml b/example/Sample2/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..dc23cf5 --- /dev/null +++ b/example/Sample2/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Sample2 + diff --git a/example/Sample2/android/app/src/main/res/values/styles.xml b/example/Sample2/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..319eb0c --- /dev/null +++ b/example/Sample2/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/example/Sample2/android/build.gradle b/example/Sample2/android/build.gradle new file mode 100644 index 0000000..bdb0fcc --- /dev/null +++ b/example/Sample2/android/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.3.1' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + jcenter() + jcenter { + url "http://dl.bintray.com/mkonicek/maven" + } + } +} diff --git a/example/Sample2/android/gradle.properties b/example/Sample2/android/gradle.properties new file mode 100644 index 0000000..1fd964e --- /dev/null +++ b/example/Sample2/android/gradle.properties @@ -0,0 +1,20 @@ +# 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 + +android.useDeprecatedNdk=true diff --git a/example/Sample2/android/gradle/wrapper/gradle-wrapper.jar b/example/Sample2/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b5166dad4d90021f6a0b45268c0755719f1d5cd4 GIT binary patch literal 52266 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 z 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 literal 0 HcmV?d00001 diff --git a/example/Sample2/android/gradle/wrapper/gradle-wrapper.properties b/example/Sample2/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b9fbfab --- /dev/null +++ b/example/Sample2/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-2.4-all.zip diff --git a/example/Sample2/android/gradlew b/example/Sample2/android/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/example/Sample2/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# 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 +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# 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\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +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" ] ; 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"` + + # 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 + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/example/Sample2/android/gradlew.bat b/example/Sample2/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/example/Sample2/android/gradlew.bat @@ -0,0 +1,90 @@ +@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 + +@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= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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 Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_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=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +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/example/Sample2/android/settings.gradle b/example/Sample2/android/settings.gradle new file mode 100644 index 0000000..078872f --- /dev/null +++ b/example/Sample2/android/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'Sample2' + +include ':app' diff --git a/example/Sample2/index.android.js b/example/Sample2/index.android.js new file mode 100644 index 0000000..dd170e3 --- /dev/null +++ b/example/Sample2/index.android.js @@ -0,0 +1,52 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + */ +'use strict'; + +var React = require('react-native'); +var { + AppRegistry, + StyleSheet, + Text, + View, +} = React; + +var Sample2 = React.createClass({ + render: function() { + return ( + + + Welcome to React Native! + + + To get started, edit index.android.js + + + Shake or press menu button for dev menu + + + ); + } +}); + +var styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#F5FCFF', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + instructions: { + textAlign: 'center', + color: '#333333', + marginBottom: 5, + }, +}); + +AppRegistry.registerComponent('Sample2', () => Sample2); diff --git a/example/Sample2/index.ios.js b/example/Sample2/index.ios.js new file mode 100644 index 0000000..8ba4ba3 --- /dev/null +++ b/example/Sample2/index.ios.js @@ -0,0 +1,53 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + */ +'use strict'; + +var React = require('react-native'); +var { + AppRegistry, + StyleSheet, + Text, + View, +} = React; + +var Sample2 = React.createClass({ + render: function() { + return ( + + + Welcome to React Native! + + + To get started, edit index.ios.js + + + Press Cmd+R to reload,{'\n'} + Cmd+D or shake for dev menu + + + ); + } +}); + +var styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#F5FCFF', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + instructions: { + textAlign: 'center', + color: '#333333', + marginBottom: 5, + }, +}); + +AppRegistry.registerComponent('Sample2', () => Sample2); diff --git a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj new file mode 100644 index 0000000..70954f3 --- /dev/null +++ b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj @@ -0,0 +1,763 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; + 00E356F31AD99517003FC87E /* Sample2Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* Sample2Tests.m */; }; + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTActionSheet; + }; + 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTGeolocation; + }; + 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5115D1A9E6B3D00147676; + remoteInfo = RCTImage; + }; + 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B511DB1A9E6C8500147676; + remoteInfo = RCTNetwork; + }; + 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; + remoteInfo = RCTVibration; + }; + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = Sample2; + }; + 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTSettings; + }; + 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3C86DF461ADF2C930047B81A; + remoteInfo = RCTWebSocket; + }; + 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; + 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTLinking; + }; + 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5119B1A9E6C1200147676; + remoteInfo = RCTText; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.jsbundle; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = ../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj; sourceTree = ""; }; + 00E356EE1AD99517003FC87E /* Sample2Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Sample2Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* Sample2Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Sample2Tests.m; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* Sample2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sample2.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Sample2/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Sample2/AppDelegate.m; sourceTree = ""; }; + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Sample2/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sample2/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sample2/main.m; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../node_modules/react-native/React/React.xcodeproj; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../node_modules/react-native/Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 146834051AC3E58100842450 /* libReact.a in Frameworks */, + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00C302A81ABCB8CE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302B61ABCB90400DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302BC1ABCB91800DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302D41ABCB9D200DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302E01ABCB9EE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, + ); + name = Products; + sourceTree = ""; + }; + 00E356EF1AD99517003FC87E /* Sample2Tests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* Sample2Tests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = Sample2Tests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 139105B71AF99BAD00B5F7CC /* Products */ = { + isa = PBXGroup; + children = ( + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, + ); + name = Products; + sourceTree = ""; + }; + 139FDEE71B06529A00C62182 /* Products */ = { + isa = PBXGroup; + children = ( + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + ); + name = Products; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* Sample2 */ = { + isa = PBXGroup; + children = ( + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = Sample2; + sourceTree = ""; + }; + 146834001AC3E56700842450 /* Products */ = { + isa = PBXGroup; + children = ( + 146834041AC3E56700842450 /* libReact.a */, + ); + name = Products; + sourceTree = ""; + }; + 78C398B11ACF4ADC00677621 /* Products */ = { + isa = PBXGroup; + children = ( + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, + ); + name = Products; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + 146833FF1AC3E56700842450 /* React.xcodeproj */, + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, + ); + name = Libraries; + sourceTree = ""; + }; + 832341B11AAA6A8300B99B32 /* Products */ = { + isa = PBXGroup; + children = ( + 832341B51AAA6A8300B99B32 /* libRCTText.a */, + ); + name = Products; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* Sample2 */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* Sample2Tests */, + 83CBBA001A601CBA00E9B192 /* Products */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* Sample2.app */, + 00E356EE1AD99517003FC87E /* Sample2Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* Sample2Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "Sample2Tests" */; + buildPhases = ( + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = Sample2Tests; + productName = Sample2Tests; + productReference = 00E356EE1AD99517003FC87E /* Sample2Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* Sample2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Sample2" */; + buildPhases = ( + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Sample2; + productName = "Hello World"; + productReference = 13B07F961A680F5B00A75B9A /* Sample2.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Sample2" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; + ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + }, + { + ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; + ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + }, + { + ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; + ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + }, + { + ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; + ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + }, + { + ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; + ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + }, + { + ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; + ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + }, + { + ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; + ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + }, + { + ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; + ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + }, + { + ProductGroup = 139FDEE71B06529A00C62182 /* Products */; + ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + }, + { + ProductGroup = 146834001AC3E56700842450 /* Products */; + ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* Sample2 */, + 00E356ED1AD99517003FC87E /* Sample2Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTActionSheet.a; + remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTGeolocation.a; + remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTImage.a; + remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTNetwork.a; + remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTVibration.a; + remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTSettings.a; + remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTWebSocket.a; + remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 146834041AC3E56700842450 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTLinking.a; + remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTText.a; + remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "../node_modules/react-native/packager/react-native-xcode.sh"; + showEnvVarsInLog = 1; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* Sample2Tests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* Sample2 */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 13B07FB21A68108700A75B9A /* Base */, + ); + name = LaunchScreen.xib; + path = Sample2; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = Sample2Tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sample2.app/Sample2"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = Sample2Tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sample2.app/Sample2"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEAD_CODE_STRIPPING = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../node_modules/react-native/React/**", + ); + INFOPLIST_FILE = "Sample2/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = Sample2; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../node_modules/react-native/React/**", + ); + INFOPLIST_FILE = "Sample2/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = Sample2; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../node_modules/react-native/React/**", + ); + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../node_modules/react-native/React/**", + ); + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "Sample2Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Sample2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Sample2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/example/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme b/example/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme new file mode 100644 index 0000000..2b0bc44 --- /dev/null +++ b/example/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/Sample2/ios/Sample2/AppDelegate.h b/example/Sample2/ios/Sample2/AppDelegate.h new file mode 100644 index 0000000..a9654d5 --- /dev/null +++ b/example/Sample2/ios/Sample2/AppDelegate.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/example/Sample2/ios/Sample2/AppDelegate.m b/example/Sample2/ios/Sample2/AppDelegate.m new file mode 100644 index 0000000..a14d2bc --- /dev/null +++ b/example/Sample2/ios/Sample2/AppDelegate.m @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "AppDelegate.h" + +#import "RCTRootView.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + NSURL *jsCodeLocation; + + /** + * Loading JavaScript code - uncomment the one you want. + * + * OPTION 1 + * Load from development server. Start the server from the repository root: + * + * $ npm start + * + * To run on device, change `localhost` to the IP address of your computer + * (you can get this by typing `ifconfig` into the terminal and selecting the + * `inet` value under `en0:`) and make sure your computer and iOS device are + * on the same Wi-Fi network. + */ + + jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; + + /** + * OPTION 2 + * Load from pre-bundled file on disk. The static bundle is automatically + * generated by "Bundle React Native code and images" build step. + */ + +// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; + + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation + moduleName:@"Sample2" + initialProperties:nil + launchOptions:launchOptions]; + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + return YES; +} + +@end diff --git a/example/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib b/example/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..30d7e10 --- /dev/null +++ b/example/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json b/example/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/example/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/example/Sample2/ios/Sample2/Info.plist b/example/Sample2/ios/Sample2/Info.plist new file mode 100644 index 0000000..cddf076 --- /dev/null +++ b/example/Sample2/ios/Sample2/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + NSLocationWhenInUseUsageDescription + + NSAppTransportSecurity + + + NSAllowsArbitraryLoads + + + + diff --git a/example/Sample2/ios/Sample2/main.m b/example/Sample2/ios/Sample2/main.m new file mode 100644 index 0000000..3d767fc --- /dev/null +++ b/example/Sample2/ios/Sample2/main.m @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/example/Sample2/ios/Sample2Tests/Info.plist b/example/Sample2/ios/Sample2Tests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/example/Sample2/ios/Sample2Tests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/example/Sample2/ios/Sample2Tests/Sample2Tests.m b/example/Sample2/ios/Sample2Tests/Sample2Tests.m new file mode 100644 index 0000000..3fc080f --- /dev/null +++ b/example/Sample2/ios/Sample2Tests/Sample2Tests.m @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import "RCTLog.h" +#import "RCTRootView.h" + +#define TIMEOUT_SECONDS 240 +#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" + +@interface Sample2Tests : XCTestCase + +@end + +@implementation Sample2Tests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + + RCTSetLogFunction(RCTDefaultLogFunction); + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + + +@end diff --git a/example/Sample2/package.json b/example/Sample2/package.json new file mode 100644 index 0000000..512dd0f --- /dev/null +++ b/example/Sample2/package.json @@ -0,0 +1,11 @@ +{ + "name": "Sample2", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "react-native start" + }, + "dependencies": { + "react-native": "^0.16.0" + } +} From 868d0be74e9b53d8f1a4bc984fc29c919b43965f Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 12:06:22 -0500 Subject: [PATCH 02/20] forked native WebView --- example/Sample2/lib/ios/RCTWebViewBridge.h | 46 +++ example/Sample2/lib/ios/RCTWebViewBridge.m | 219 ++++++++++++ .../Sample2/lib/ios/RCTWebViewManagerBridge.h | 17 + .../Sample2/lib/ios/RCTWebViewManagerBridge.m | 138 ++++++++ example/Sample2/lib/package.json | 29 ++ .../Sample2/lib/webview-bridge/index.ios.js | 311 ++++++++++++++++++ 6 files changed, 760 insertions(+) create mode 100644 example/Sample2/lib/ios/RCTWebViewBridge.h create mode 100644 example/Sample2/lib/ios/RCTWebViewBridge.m create mode 100644 example/Sample2/lib/ios/RCTWebViewManagerBridge.h create mode 100644 example/Sample2/lib/ios/RCTWebViewManagerBridge.m create mode 100644 example/Sample2/lib/package.json create mode 100644 example/Sample2/lib/webview-bridge/index.ios.js diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.h b/example/Sample2/lib/ios/RCTWebViewBridge.h new file mode 100644 index 0000000..b991d8c --- /dev/null +++ b/example/Sample2/lib/ios/RCTWebViewBridge.h @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * Copyright (c) 2015-present, Ali Najafizadeh (github.com/alinz) + * All rights reserved + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTView.h" + +@class RCTWebViewBridge; + +/** + * Special scheme used to pass messages to the injectedJavaScript + * code without triggering a page load. Usage: + * + * window.location.href = RCTJSNavigationScheme + '://hello' + */ +extern NSString *const RCTJSNavigationScheme; + +@protocol RCTWebViewBridgeDelegate + +- (BOOL)webView:(RCTWebViewBridge *)webView +shouldStartLoadForRequest:(NSMutableDictionary *)request + withCallback:(RCTDirectEventBlock)callback; + +@end + +@interface RCTWebViewBridge : RCTView + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, strong) NSURL *URL; +@property (nonatomic, assign) UIEdgeInsets contentInset; +@property (nonatomic, assign) BOOL automaticallyAdjustContentInsets; +@property (nonatomic, copy) NSString *injectedJavaScript; + +- (void)goForward; +- (void)goBack; +- (void)reload; + +@end diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m new file mode 100644 index 0000000..a0fb70a --- /dev/null +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -0,0 +1,219 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * Copyright (c) 2015-present, Ali Najafizadeh (github.com/alinz) + * All rights reserved + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTWebViewBridge.h" + +#import + +#import "RCTAutoInsetsProtocol.h" +#import "RCTEventDispatcher.h" +#import "RCTLog.h" +#import "RCTUtils.h" +#import "RCTView.h" +#import "UIView+React.h" + +NSString *const RCTJSNavigationScheme = @"react-js-navigation"; + +@interface RCTWebViewBridge () + +@property (nonatomic, copy) RCTDirectEventBlock onLoadingStart; +@property (nonatomic, copy) RCTDirectEventBlock onLoadingFinish; +@property (nonatomic, copy) RCTDirectEventBlock onLoadingError; +@property (nonatomic, copy) RCTDirectEventBlock onShouldStartLoadWithRequest; + +@end + +@implementation RCTWebViewBridge +{ + UIWebView *_webView; + NSString *_injectedJavaScript; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + super.backgroundColor = [UIColor clearColor]; + _automaticallyAdjustContentInsets = YES; + _contentInset = UIEdgeInsetsZero; + _webView = [[UIWebView alloc] initWithFrame:self.bounds]; + _webView.delegate = self; + [self addSubview:_webView]; + } + return self; +} + +RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) + +- (void)goForward +{ + [_webView goForward]; +} + +- (void)goBack +{ + [_webView goBack]; +} + +- (void)reload +{ + [_webView reload]; +} + +- (NSURL *)URL +{ + return _webView.request.URL; +} + +- (void)setURL:(NSURL *)URL +{ + // Because of the way React works, as pages redirect, we actually end up + // passing the redirect urls back here, so we ignore them if trying to load + // the same url. We'll expose a call to 'reload' to allow a user to load + // the existing page. + if ([URL isEqual:_webView.request.URL]) { + return; + } + if (!URL) { + // Clear the webview + [_webView loadHTMLString:@"" baseURL:nil]; + return; + } + [_webView loadRequest:[NSURLRequest requestWithURL:URL]]; +} + +- (void)setHTML:(NSString *)HTML +{ + [_webView loadHTMLString:HTML baseURL:nil]; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + _webView.frame = self.bounds; +} + +- (void)setContentInset:(UIEdgeInsets)contentInset +{ + _contentInset = contentInset; + [RCTView autoAdjustInsetsForView:self + withScrollView:_webView.scrollView + updateOffset:NO]; +} + +- (void)setBackgroundColor:(UIColor *)backgroundColor +{ + CGFloat alpha = CGColorGetAlpha(backgroundColor.CGColor); + self.opaque = _webView.opaque = (alpha == 1.0); + _webView.backgroundColor = backgroundColor; +} + +- (UIColor *)backgroundColor +{ + return _webView.backgroundColor; +} + +- (NSMutableDictionary *)baseEvent +{ + NSMutableDictionary *event = [[NSMutableDictionary alloc] initWithDictionary:@{ + @"url": _webView.request.URL.absoluteString ?: @"", + @"loading" : @(_webView.loading), + @"title": [_webView stringByEvaluatingJavaScriptFromString:@"document.title"], + @"canGoBack": @(_webView.canGoBack), + @"canGoForward" : @(_webView.canGoForward), + }]; + + return event; +} + +- (void)refreshContentInset +{ + [RCTView autoAdjustInsetsForView:self + withScrollView:_webView.scrollView + updateOffset:YES]; +} + +#pragma mark - UIWebViewDelegate methods + +- (BOOL)webView:(__unused UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request + navigationType:(UIWebViewNavigationType)navigationType +{ + BOOL isJSNavigation = [request.URL.scheme isEqualToString:RCTJSNavigationScheme]; + + // skip this for the JS Navigation handler + if (!isJSNavigation && _onShouldStartLoadWithRequest) { + NSMutableDictionary *event = [self baseEvent]; + [event addEntriesFromDictionary: @{ + @"url": (request.URL).absoluteString, + @"navigationType": @(navigationType) + }]; + if (![self.delegate webView:self + shouldStartLoadForRequest:event + withCallback:_onShouldStartLoadWithRequest]) { + return NO; + } + } + + if (_onLoadingStart) { + // We have this check to filter out iframe requests and whatnot + BOOL isTopFrame = [request.URL isEqual:request.mainDocumentURL]; + if (isTopFrame) { + NSMutableDictionary *event = [self baseEvent]; + [event addEntriesFromDictionary: @{ + @"url": (request.URL).absoluteString, + @"navigationType": @(navigationType) + }]; + _onLoadingStart(event); + } + } + + // JS Navigation handler + return !isJSNavigation; +} + +- (void)webView:(__unused UIWebView *)webView didFailLoadWithError:(NSError *)error +{ + if (_onLoadingError) { + if ([error.domain isEqualToString:NSURLErrorDomain] && error.code == NSURLErrorCancelled) { + // NSURLErrorCancelled is reported when a page has a redirect OR if you load + // a new URL in the WebView before the previous one came back. We can just + // ignore these since they aren't real errors. + // http://stackoverflow.com/questions/1024748/how-do-i-fix-nsurlerrordomain-error-999-in-iphone-3-0-os + return; + } + + NSMutableDictionary *event = [self baseEvent]; + [event addEntriesFromDictionary:@{ + @"domain": error.domain, + @"code": @(error.code), + @"description": error.localizedDescription, + }]; + _onLoadingError(event); + } +} + +- (void)webViewDidFinishLoad:(UIWebView *)webView +{ + if (_injectedJavaScript != nil) { + NSString *jsEvaluationValue = [webView stringByEvaluatingJavaScriptFromString:_injectedJavaScript]; + + NSMutableDictionary *event = [self baseEvent]; + event[@"jsEvaluationValue"] = jsEvaluationValue; + + _onLoadingFinish(event); + } + // we only need the final 'finishLoad' call so only fire the event when we're actually done loading. + else if (_onLoadingFinish && !webView.loading && ![webView.request.URL.absoluteString isEqualToString:@"about:blank"]) { + _onLoadingFinish([self baseEvent]); + } +} + +@end diff --git a/example/Sample2/lib/ios/RCTWebViewManagerBridge.h b/example/Sample2/lib/ios/RCTWebViewManagerBridge.h new file mode 100644 index 0000000..e0659a8 --- /dev/null +++ b/example/Sample2/lib/ios/RCTWebViewManagerBridge.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * Copyright (c) 2015-present, Ali Najafizadeh (github.com/alinz) + * All rights reserved + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTViewManager.h" + +@interface RCTWebViewBridgeManager : RCTViewManager + +@end diff --git a/example/Sample2/lib/ios/RCTWebViewManagerBridge.m b/example/Sample2/lib/ios/RCTWebViewManagerBridge.m new file mode 100644 index 0000000..c64c961 --- /dev/null +++ b/example/Sample2/lib/ios/RCTWebViewManagerBridge.m @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * Copyright (c) 2015-present, Ali Najafizadeh (github.com/alinz) + * All rights reserved + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTWebViewBridgeManager.h" + +#import "RCTBridge.h" +#import "RCTUIManager.h" +#import "RCTWebViewBridge.h" +#import "UIView+React.h" + +@interface RCTWebViewBridgeManager () + +@end + +@implementation RCTWebViewBridgeManager +{ + NSConditionLock *_shouldStartLoadLock; + BOOL _shouldStartLoad; +} + +RCT_EXPORT_MODULE() + +- (UIView *)view +{ + RCTWebViewBridge *webView = [RCTWebViewBridge new]; + webView.delegate = self; + return webView; +} + +RCT_REMAP_VIEW_PROPERTY(url, URL, NSURL) +RCT_REMAP_VIEW_PROPERTY(html, HTML, NSString) +RCT_REMAP_VIEW_PROPERTY(bounces, _webView.scrollView.bounces, BOOL) +RCT_REMAP_VIEW_PROPERTY(scrollEnabled, _webView.scrollView.scrollEnabled, BOOL) +RCT_REMAP_VIEW_PROPERTY(scalesPageToFit, _webView.scalesPageToFit, BOOL) +RCT_EXPORT_VIEW_PROPERTY(injectedJavaScript, NSString) +RCT_EXPORT_VIEW_PROPERTY(contentInset, UIEdgeInsets) +RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustContentInsets, BOOL) +RCT_EXPORT_VIEW_PROPERTY(onLoadingStart, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onLoadingFinish, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onLoadingError, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onShouldStartLoadWithRequest, RCTDirectEventBlock) +RCT_REMAP_VIEW_PROPERTY(allowsInlineMediaPlayback, _webView.allowsInlineMediaPlayback, BOOL) + +- (NSDictionary *)constantsToExport +{ + return @{ + @"JSNavigationScheme": RCTJSNavigationScheme, + @"NavigationType": @{ + @"LinkClicked": @(UIWebViewNavigationTypeLinkClicked), + @"FormSubmitted": @(UIWebViewNavigationTypeFormSubmitted), + @"BackForward": @(UIWebViewNavigationTypeBackForward), + @"Reload": @(UIWebViewNavigationTypeReload), + @"FormResubmitted": @(UIWebViewNavigationTypeFormResubmitted), + @"Other": @(UIWebViewNavigationTypeOther) + }, + }; +} + +RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag) +{ + [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + RCTWebViewBridge *view = viewRegistry[reactTag]; + if (![view isKindOfClass:[RCTWebViewBridge class]]) { + RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view); + } else { + [view goBack]; + } + }]; +} + +RCT_EXPORT_METHOD(goForward:(nonnull NSNumber *)reactTag) +{ + [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + id view = viewRegistry[reactTag]; + if (![view isKindOfClass:[RCTWebViewBridge class]]) { + RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view); + } else { + [view goForward]; + } + }]; +} + +RCT_EXPORT_METHOD(reload:(nonnull NSNumber *)reactTag) +{ + [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + RCTWebViewBridge *view = viewRegistry[reactTag]; + if (![view isKindOfClass:[RCTWebViewBridge class]]) { + RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view); + } else { + [view reload]; + } + }]; +} + +#pragma mark - Exported synchronous methods + +- (BOOL)webView:(__unused RCTWebViewBridge *)webView +shouldStartLoadForRequest:(NSMutableDictionary *)request + withCallback:(RCTDirectEventBlock)callback +{ + _shouldStartLoadLock = [[NSConditionLock alloc] initWithCondition:arc4random()]; + _shouldStartLoad = YES; + request[@"lockIdentifier"] = @(_shouldStartLoadLock.condition); + callback(request); + + // Block the main thread for a maximum of 250ms until the JS thread returns + if ([_shouldStartLoadLock lockWhenCondition:0 beforeDate:[NSDate dateWithTimeIntervalSinceNow:.25]]) { + BOOL returnValue = _shouldStartLoad; + [_shouldStartLoadLock unlock]; + _shouldStartLoadLock = nil; + return returnValue; + } else { + RCTLogWarn(@"Did not receive response to shouldStartLoad in time, defaulting to YES"); + return YES; + } +} + +RCT_EXPORT_METHOD(startLoadWithResult:(BOOL)result lockIdentifier:(NSInteger)lockIdentifier) +{ + if ([_shouldStartLoadLock tryLockWhenCondition:lockIdentifier]) { + _shouldStartLoad = result; + [_shouldStartLoadLock unlockWithCondition:0]; + } else { + RCTLogWarn(@"startLoadWithResult invoked with invalid lockIdentifier: " + "got %zd, expected %zd", lockIdentifier, _shouldStartLoadLock.condition); + } +} + +@end diff --git a/example/Sample2/lib/package.json b/example/Sample2/lib/package.json new file mode 100644 index 0000000..8f4543c --- /dev/null +++ b/example/Sample2/lib/package.json @@ -0,0 +1,29 @@ +{ + "name": "react-native-webview-bridge", + "version": "0.4.0", + "description": "React Native WebView Javascript Bridge", + "main": "webview-bridge", + "directories": { + "example": "example", + "lib": "lib" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git@github.com:alinz/react-native-webview-bridge.git" + }, + "keywords": [ + "react-native", + "react-component", + "ios", + "webview-bridge" + ], + "author": "Ali Najafizadeh", + "license": "MIT", + "bugs": { + "url": "https://github.com/alinz/react-native-webview-bridge/issues" + }, + "homepage": "https://github.com/alinz/react-native-webview-bridge" +} diff --git a/example/Sample2/lib/webview-bridge/index.ios.js b/example/Sample2/lib/webview-bridge/index.ios.js new file mode 100644 index 0000000..267b0db --- /dev/null +++ b/example/Sample2/lib/webview-bridge/index.ios.js @@ -0,0 +1,311 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * Copyright (c) 2015-present, Ali Najafizadeh (github.com/alinz) + * All rights reserved + * + * @providesModule WebViewBridge + * @flow + */ +'use strict'; + +var ActivityIndicatorIOS = require('ActivityIndicatorIOS'); +var EdgeInsetsPropType = require('EdgeInsetsPropType'); +var React = require('React'); +var StyleSheet = require('StyleSheet'); +var Text = require('Text'); +var View = require('View'); + +var invariant = require('invariant'); +var keyMirror = require('keyMirror'); +var requireNativeComponent = require('requireNativeComponent'); + +var PropTypes = React.PropTypes; +var RCTWebViewBridgeManager = require('NativeModules').WebViewBridgeManager; + +var BGWASH = 'rgba(255,255,255,0.8)'; +var RCT_WEBVIEW_BRIDGE_REF = 'webviewbridge'; + +var WebViewBridgeState = keyMirror({ + IDLE: null, + LOADING: null, + ERROR: null, +}); + +var NavigationType = { + click: RCTWebViewBridgeManager.NavigationType.LinkClicked, + formsubmit: RCTWebViewBridgeManager.NavigationType.FormSubmitted, + backforward: RCTWebViewBridgeManager.NavigationType.BackForward, + reload: RCTWebViewBridgeManager.NavigationType.Reload, + formresubmit: RCTWebViewBridgeManager.NavigationType.FormResubmitted, + other: RCTWebViewBridgeManager.NavigationType.Other, +}; + +var JSNavigationScheme = RCTWebViewBridgeManager.JSNavigationScheme; + +type ErrorEvent = { + domain: any; + code: any; + description: any; +} + +type Event = Object; + +var defaultRenderLoading = () => ( + + + +); +var defaultRenderError = (errorDomain, errorCode, errorDesc) => ( + + + Error loading page + + + {'Domain: ' + errorDomain} + + + {'Error Code: ' + errorCode} + + + {'Description: ' + errorDesc} + + +); + +/** + * Renders a native WebView. + * + * Note that WebView is only supported on iOS for now, + * see https://facebook.github.io/react-native/docs/known-issues.html + */ +var WebViewBridge = React.createClass({ + statics: { + JSNavigationScheme: JSNavigationScheme, + NavigationType: NavigationType, + }, + + propTypes: { + ...View.propTypes, + url: PropTypes.string, + html: PropTypes.string, + renderError: PropTypes.func, // view to show if there's an error + renderLoading: PropTypes.func, // loading indicator to show + bounces: PropTypes.bool, + scrollEnabled: PropTypes.bool, + automaticallyAdjustContentInsets: PropTypes.bool, + contentInset: EdgeInsetsPropType, + onNavigationStateChange: PropTypes.func, + startInLoadingState: PropTypes.bool, // force WebView to show loadingView on first load + style: View.propTypes.style, + + /** + * Used for android only, JS is enabled by default for WebView on iOS + * @platform android + */ + javaScriptEnabledAndroid: PropTypes.bool, + + /** + * Sets the JS to be injected when the webpage loads. + */ + injectedJavaScript: PropTypes.string, + + /** + * Sets whether the webpage scales to fit the view and the user can change the scale. + * @platform ios + */ + scalesPageToFit: PropTypes.bool, + + /** + * Allows custom handling of any webview requests by a JS handler. Return true + * or false from this method to continue loading the request. + * @platform ios + */ + onShouldStartLoadWithRequest: PropTypes.func, + + /** + * Determines whether HTML5 videos play inline or use the native full-screen + * controller. + * default value `false` + * **NOTE** : "In order for video to play inline, not only does this + * property need to be set to true, but the video element in the HTML + * document must also include the webkit-playsinline attribute." + * @platform ios + */ + allowsInlineMediaPlayback: PropTypes.bool, + }, + + getInitialState: function() { + return { + viewState: WebViewBridgeState.IDLE, + lastErrorEvent: (null: ?ErrorEvent), + startInLoadingState: true, + }; + }, + + componentWillMount: function() { + if (this.props.startInLoadingState) { + this.setState({viewState: WebViewBridgeState.LOADING}); + } + }, + + render: function() { + var otherView = null; + + if (this.state.viewState === WebViewBridgeState.LOADING) { + otherView = (this.props.renderLoading || defaultRenderLoading)(); + } else if (this.state.viewState === WebViewBridgeState.ERROR) { + var errorEvent = this.state.lastErrorEvent; + invariant( + errorEvent != null, + 'lastErrorEvent expected to be non-null' + ); + otherView = (this.props.renderError || defaultRenderError)( + errorEvent.domain, + errorEvent.code, + errorEvent.description + ); + } else if (this.state.viewState !== WebViewBridgeState.IDLE) { + console.error( + 'RCTWebViewBridge invalid state encountered: ' + this.state.loading + ); + } + + var webViewBridgeStyles = [styles.container, styles.webViewBridge, this.props.style]; + if (this.state.viewState === WebViewBridgeState.LOADING || + this.state.viewState === WebViewBridgeState.ERROR) { + // if we're in either LOADING or ERROR states, don't show the webView + webViewBridgeStyles.push(styles.hidden); + } + + var onShouldStartLoadWithRequest = this.props.onShouldStartLoadWithRequest && ((event: Event) => { + var shouldStart = this.props.onShouldStartLoadWithRequest && + this.props.onShouldStartLoadWithRequest(event.nativeEvent); + RCTWebViewBridgeManager.startLoadWithResult(!!shouldStart, event.nativeEvent.lockIdentifier); + }); + + var webViewBridge = + ; + + return ( + + {webViewBridge} + {otherView} + + ); + }, + + goForward: function() { + RCTWebViewBridgeManager.goForward(this.getWebViewBridgeHandle()); + }, + + goBack: function() { + RCTWebViewBridgeManager.goBack(this.getWebViewBridgeHandle()); + }, + + reload: function() { + RCTWebViewBridgeManager.reload(this.getWebViewBridgeHandle()); + }, + + /** + * We return an event with a bunch of fields including: + * url, title, loading, canGoBack, canGoForward + */ + updateNavigationState: function(event: Event) { + if (this.props.onNavigationStateChange) { + this.props.onNavigationStateChange(event.nativeEvent); + } + }, + + getWebViewBridgeHandle: function(): any { + return React.findNodeHandle(this.refs[RCT_WEBVIEW_BRIDGE_REF]); + }, + + onLoadingStart: function(event: Event) { + this.updateNavigationState(event); + }, + + onLoadingError: function(event: Event) { + event.persist(); // persist this event because we need to store it + console.warn('Encountered an error loading page', event.nativeEvent); + + this.setState({ + lastErrorEvent: event.nativeEvent, + viewState: WebViewBridgeState.ERROR + }); + }, + + onLoadingFinish: function(event: Event) { + this.setState({ + viewState: WebViewBridgeState.IDLE, + }); + this.updateNavigationState(event); + }, +}); + +var RCTWebViewBridge = requireNativeComponent('RCTWebViewBridge', WebViewBridge, { + nativeOnly: { + onLoadingStart: true, + onLoadingError: true, + onLoadingFinish: true, + }, +}); + +var styles = StyleSheet.create({ + container: { + flex: 1, + }, + errorContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: BGWASH, + }, + errorText: { + fontSize: 14, + textAlign: 'center', + marginBottom: 2, + }, + errorTextTitle: { + fontSize: 15, + fontWeight: '500', + marginBottom: 10, + }, + hidden: { + height: 0, + flex: 0, // disable 'flex:1' when hiding a View + }, + loadingView: { + backgroundColor: BGWASH, + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + webViewBridge: { + backgroundColor: '#ffffff', + } +}); + +module.exports = WebViewBridge; From 55f06bcefcc4756138d367d2c97fd6632ac94e2d Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 13:26:58 -0500 Subject: [PATCH 03/20] working on some issues --- example/Sample2/index.ios.js | 16 ++----- .../ios/Sample2.xcodeproj/project.pbxproj | 48 +++++++++++++------ example/Sample2/lib/ios/RCTWebViewBridge.m | 3 +- ...agerBridge.h => RCTWebViewBridgeManager.h} | 0 ...agerBridge.m => RCTWebViewBridgeManager.m} | 0 example/Sample2/package.json | 3 +- 6 files changed, 42 insertions(+), 28 deletions(-) rename example/Sample2/lib/ios/{RCTWebViewManagerBridge.h => RCTWebViewBridgeManager.h} (100%) rename example/Sample2/lib/ios/{RCTWebViewManagerBridge.m => RCTWebViewBridgeManager.m} (100%) diff --git a/example/Sample2/index.ios.js b/example/Sample2/index.ios.js index 8ba4ba3..2b4b6ad 100644 --- a/example/Sample2/index.ios.js +++ b/example/Sample2/index.ios.js @@ -12,21 +12,13 @@ var { View, } = React; +var WebViewBridge = require('react-native-webview-bridge'); +console.log(WebViewBridge); + var Sample2 = React.createClass({ render: function() { return ( - - - Welcome to React Native! - - - To get started, edit index.ios.js - - - Press Cmd+R to reload,{'\n'} - Cmd+D or shake for dev menu - - + ); } }); diff --git a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj index 70954f3..8e4b8ef 100644 --- a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj +++ b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj @@ -21,6 +21,8 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 4134EF261C17548C00CA8394 /* RCTWebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */; }; + 4134EF271C17548C00CA8394 /* RCTWebViewBridgeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -105,17 +107,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.jsbundle; path = main.jsbundle; sourceTree = ""; }; - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = ../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj; sourceTree = ""; }; + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 00E356EE1AD99517003FC87E /* Sample2Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Sample2Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* Sample2Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Sample2Tests.m; sourceTree = ""; }; - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* Sample2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sample2.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Sample2/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Sample2/AppDelegate.m; sourceTree = ""; }; @@ -123,9 +125,13 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Sample2/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sample2/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sample2/main.m; sourceTree = ""; }; - 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../node_modules/react-native/React/React.xcodeproj; sourceTree = ""; }; - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../node_modules/react-native/Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 4134EF221C17548C00CA8394 /* RCTWebViewBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridge.h; sourceTree = ""; }; + 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridge.m; sourceTree = ""; }; + 4134EF241C17548C00CA8394 /* RCTWebViewBridgeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridgeManager.h; sourceTree = ""; }; + 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridgeManager.m; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -251,6 +257,18 @@ name = Products; sourceTree = ""; }; + 4134EF211C17548C00CA8394 /* ios */ = { + isa = PBXGroup; + children = ( + 4134EF221C17548C00CA8394 /* RCTWebViewBridge.h */, + 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */, + 4134EF241C17548C00CA8394 /* RCTWebViewBridgeManager.h */, + 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */, + ); + name = ios; + path = "../node_modules/react-native-webview-bridge/ios"; + sourceTree = ""; + }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( @@ -262,6 +280,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 4134EF211C17548C00CA8394 /* ios */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -526,7 +545,6 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "../node_modules/react-native/packager/react-native-xcode.sh"; - showEnvVarsInLog = 1; }; /* End PBXShellScriptBuildPhase section */ @@ -543,7 +561,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4134EF261C17548C00CA8394 /* RCTWebViewBridge.m in Sources */, 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 4134EF271C17548C00CA8394 /* RCTWebViewBridgeManager.m in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -618,7 +638,7 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", ); - INFOPLIST_FILE = "Sample2/Info.plist"; + INFOPLIST_FILE = Sample2/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = Sample2; @@ -634,7 +654,7 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", ); - INFOPLIST_FILE = "Sample2/Info.plist"; + INFOPLIST_FILE = Sample2/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = Sample2; diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m index a0fb70a..16d67ba 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.m +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -21,7 +21,8 @@ #import "RCTView.h" #import "UIView+React.h" -NSString *const RCTJSNavigationScheme = @"react-js-navigation"; +//we don'e need this one since it has been defined in RCTWebView.m +//NSString *const RCTJSNavigationScheme = @"react-js-navigation"; @interface RCTWebViewBridge () diff --git a/example/Sample2/lib/ios/RCTWebViewManagerBridge.h b/example/Sample2/lib/ios/RCTWebViewBridgeManager.h similarity index 100% rename from example/Sample2/lib/ios/RCTWebViewManagerBridge.h rename to example/Sample2/lib/ios/RCTWebViewBridgeManager.h diff --git a/example/Sample2/lib/ios/RCTWebViewManagerBridge.m b/example/Sample2/lib/ios/RCTWebViewBridgeManager.m similarity index 100% rename from example/Sample2/lib/ios/RCTWebViewManagerBridge.m rename to example/Sample2/lib/ios/RCTWebViewBridgeManager.m diff --git a/example/Sample2/package.json b/example/Sample2/package.json index 512dd0f..d57ec26 100644 --- a/example/Sample2/package.json +++ b/example/Sample2/package.json @@ -6,6 +6,7 @@ "start": "react-native start" }, "dependencies": { - "react-native": "^0.16.0" + "react-native": "^0.16.0", + "react-native-webview-bridge": "./lib" } } From fe241bcf9f19fc86cef1a6f06d610963f4ebaf1d Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 14:27:53 -0500 Subject: [PATCH 04/20] added more functionality --- example/Sample2/lib/ios/RCTWebViewBridge.m | 17 +++++ example/Sample2/lib/scripts/webviewbridge.js | 66 ++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 example/Sample2/lib/scripts/webviewbridge.js diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m index 16d67ba..acb529b 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.m +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -23,6 +23,7 @@ //we don'e need this one since it has been defined in RCTWebView.m //NSString *const RCTJSNavigationScheme = @"react-js-navigation"; +NSString *const RCTWebViewBridgeSchema = @"wvb"; @interface RCTWebViewBridge () @@ -149,6 +150,15 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) { BOOL isJSNavigation = [request.URL.scheme isEqualToString:RCTJSNavigationScheme]; + if ([request.URL.scheme isEqualToString:RCTWebViewBridgeSchema]) { + NSString* message = [webView stringByEvaluatingJavaScriptFromString:@"WebViewBridge._fetch()"]; + NSArray* messages = [stringArrayJsonToArray: message]; + + NSLog(messages); + + isJSNavigation = YES; + } + // skip this for the JS Navigation handler if (!isJSNavigation && _onShouldStartLoadWithRequest) { NSMutableDictionary *event = [self baseEvent]; @@ -217,4 +227,11 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) } } +- (NSArray*)stringArrayJsonToArray:(NSString *)message +{ + return [NSJSONSerialization JSONObjectWithData:[message dataUsingEncoding:NSUTF8StringEncoding] + options:NSJSONReadingAllowFragments + error:nil]; +} + @end diff --git a/example/Sample2/lib/scripts/webviewbridge.js b/example/Sample2/lib/scripts/webviewbridge.js new file mode 100644 index 0000000..d7ab2de --- /dev/null +++ b/example/Sample2/lib/scripts/webviewbridge.js @@ -0,0 +1,66 @@ +(function (window) { + 'use strict'; + + //Make sure that if WebViewBridge already in scope we don't override it. + if (window.WebViewBridge) { + return; + } + + var RNWBSchema = 'wvb'; + var sendQueue = []; + var receiveQueue = []; + + function callFunc(func, message) { + if ('function' === typeof func) { + func(message); + } + } + + function signalNative() { + window.location = RNWBSchema + '://message' + new Date().getTime(); + } + + //I made the private function ugly signiture so user doesn't called them accidently. + //if you do, then I have nothing to say. :( + var WebViewBridge = { + //this function will be called by native side to push a new message + //to webview. + __push__: function (message) { + receiveQueue.push(message); + //reason I need this setTmeout is to return this function as fast as + //possible to release the native side thread. + setTimeout(function () { + var message = receiveQueue.pop(); + callFunc(WebViewBridge.onMessage, message); + }, 15); //this magic number is just a random small value. I don't like 0. + }, + __fetch__: function () { + //since our sendQueue array only contains string, and our connection to native + //can only accept string, we need to convert array of strings into single string. + var messages = JSON.stringify(sendQueue); + + //we make sure that sendQueue is resets + sendQueue = []; + + //return the messages back to native side. + return messages; + }, + //make sure message is string. because only string can be sent to native, + //if you don't pass it as string, onError function will be called. + send: function (message) { + if ('string' !== typeof message) { + callFunc(WebViewBridge.onError, "message is type '" + typeof message + "', and it needs to be string"); + return; + } + + //we queue the messages to make sure that native can collects all of them in one shot. + sendQueue.push(message); + //signal the objective-c that there is a message in the queue + signalNative(); + }, + onMessage: null, + onError: null + }; + + window.WebViewBridge = WebViewBridge; +}(window)); From 6ed7a21c043bfd736ee8c3cc98f3344ac7cab72d Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 14:31:16 -0500 Subject: [PATCH 05/20] added test --- example/Sample2/lib/ios/RCTWebViewBridge.m | 4 ++-- example/Sample2/lib/scripts/webviewbridge.js | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m index acb529b..7daa580 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.m +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -152,9 +152,9 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) if ([request.URL.scheme isEqualToString:RCTWebViewBridgeSchema]) { NSString* message = [webView stringByEvaluatingJavaScriptFromString:@"WebViewBridge._fetch()"]; - NSArray* messages = [stringArrayJsonToArray: message]; + NSArray* messages = [self stringArrayJsonToArray: message]; - NSLog(messages); + NSLog(@"%@", messages); isJSNavigation = YES; } diff --git a/example/Sample2/lib/scripts/webviewbridge.js b/example/Sample2/lib/scripts/webviewbridge.js index d7ab2de..9b71968 100644 --- a/example/Sample2/lib/scripts/webviewbridge.js +++ b/example/Sample2/lib/scripts/webviewbridge.js @@ -63,4 +63,9 @@ }; window.WebViewBridge = WebViewBridge; + + + setInterval(function () { + WebViewBridge.send("HELLO"); + }, 5000); }(window)); From 94be9f4f47be623c02796bc22a5348e89e265bdc Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 17:06:59 -0500 Subject: [PATCH 06/20] I think i got it working --- .../ios/Sample2.xcodeproj/project.pbxproj | 4 +++ example/Sample2/lib/ios/RCTWebViewBridge.h | 1 + example/Sample2/lib/ios/RCTWebViewBridge.m | 31 +++++++++++++++++-- .../Sample2/lib/ios/RCTWebViewBridgeManager.m | 14 +++++++++ example/Sample2/lib/scripts/webviewbridge.js | 5 --- .../Sample2/lib/webview-bridge/index.ios.js | 19 ++++++++++++ 6 files changed, 66 insertions(+), 8 deletions(-) diff --git a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj index 8e4b8ef..54b612b 100644 --- a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj +++ b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 4134EF261C17548C00CA8394 /* RCTWebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */; }; 4134EF271C17548C00CA8394 /* RCTWebViewBridgeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */; }; + 4134EF331C1767B200CA8394 /* webviewbridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 4134EF321C1767B200CA8394 /* webviewbridge.js */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -130,6 +131,7 @@ 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridge.m; sourceTree = ""; }; 4134EF241C17548C00CA8394 /* RCTWebViewBridgeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridgeManager.h; sourceTree = ""; }; 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridgeManager.m; sourceTree = ""; }; + 4134EF321C1767B200CA8394 /* webviewbridge.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = webviewbridge.js; path = ../scripts/webviewbridge.js; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -260,6 +262,7 @@ 4134EF211C17548C00CA8394 /* ios */ = { isa = PBXGroup; children = ( + 4134EF321C1767B200CA8394 /* webviewbridge.js */, 4134EF221C17548C00CA8394 /* RCTWebViewBridge.h */, 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */, 4134EF241C17548C00CA8394 /* RCTWebViewBridgeManager.h */, @@ -524,6 +527,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4134EF331C1767B200CA8394 /* webviewbridge.js in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, ); diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.h b/example/Sample2/lib/ios/RCTWebViewBridge.h index b991d8c..e78dbb1 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.h +++ b/example/Sample2/lib/ios/RCTWebViewBridge.h @@ -42,5 +42,6 @@ shouldStartLoadForRequest:(NSMutableDictionary *)request - (void)goForward; - (void)goBack; - (void)reload; +- (void)sendToBridge: NSString *message; @end diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m index 7daa580..b7a06b4 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.m +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -21,6 +21,11 @@ #import "RCTView.h" #import "UIView+React.h" +//This is very elegent way of defining multiline string on objective-c. +//source: http://stackoverflow.com/a/23387659/828487 +#define NSStringMultiline(...) [[NSString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding] + + //we don'e need this one since it has been defined in RCTWebView.m //NSString *const RCTJSNavigationScheme = @"react-js-navigation"; NSString *const RCTWebViewBridgeSchema = @"wvb"; @@ -31,6 +36,7 @@ NSString *const RCTWebViewBridgeSchema = @"wvb"; @property (nonatomic, copy) RCTDirectEventBlock onLoadingFinish; @property (nonatomic, copy) RCTDirectEventBlock onLoadingError; @property (nonatomic, copy) RCTDirectEventBlock onShouldStartLoadWithRequest; +@property (nonatomic, copy) RCTDirectEventBlock onBridgeMessage; @end @@ -70,6 +76,22 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) [_webView reload]; } +- (void)sendToBridge: NSString *message +{ + //we are warpping the send message in a function to make sure that if + //WebView is not injected, we don't crash the app. + NSString *format = NSStringMultiline( + (function(){ + if (WebViewBridge && WebViewBridge.__push__) { + WebViewBridge.__push__('%@'); + } + }()); + ); + + NSString *command = [NSString stringWithFormat: format, message]; + [_webView stringByEvaluatingJavaScriptFromString:command]; +} + - (NSURL *)URL { return _webView.request.URL; @@ -150,11 +172,14 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) { BOOL isJSNavigation = [request.URL.scheme isEqualToString:RCTJSNavigationScheme]; - if ([request.URL.scheme isEqualToString:RCTWebViewBridgeSchema]) { + if (!isJSNavigation && [request.URL.scheme isEqualToString:RCTWebViewBridgeSchema]) { NSString* message = [webView stringByEvaluatingJavaScriptFromString:@"WebViewBridge._fetch()"]; - NSArray* messages = [self stringArrayJsonToArray: message]; - NSLog(@"%@", messages); + NSMutableDictionary *onBridgeMessageEvent = [[NSMutableDictionary alloc] initWithDictionary:@{ + @"messages": [self stringArrayJsonToArray: message] + }]; + + _onBridgeMessage(onBridgeMessageEvent); isJSNavigation = YES; } diff --git a/example/Sample2/lib/ios/RCTWebViewBridgeManager.m b/example/Sample2/lib/ios/RCTWebViewBridgeManager.m index c64c961..bbbae1f 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridgeManager.m +++ b/example/Sample2/lib/ios/RCTWebViewBridgeManager.m @@ -49,6 +49,7 @@ RCT_EXPORT_VIEW_PROPERTY(onLoadingFinish, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onLoadingError, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onShouldStartLoadWithRequest, RCTDirectEventBlock) RCT_REMAP_VIEW_PROPERTY(allowsInlineMediaPlayback, _webView.allowsInlineMediaPlayback, BOOL) +RCT_EXPORT_VIEW_PROPERTY(onBridgeMessage, RCTDirectEventBlock) - (NSDictionary *)constantsToExport { @@ -101,6 +102,19 @@ RCT_EXPORT_METHOD(reload:(nonnull NSNumber *)reactTag) }]; } +RCT_EXPORT_METHOD(sendToBridge:(nonnull NSNumber *)reactTag + value:(NSString*)message) +{ + [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + RCTWebViewBridge *view = viewRegistry[reactTag]; + if (![view isKindOfClass:[RCTWebViewBridge class]]) { + RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view); + } else { + [view sendToBridge: message]; + } + }]; +} + #pragma mark - Exported synchronous methods - (BOOL)webView:(__unused RCTWebViewBridge *)webView diff --git a/example/Sample2/lib/scripts/webviewbridge.js b/example/Sample2/lib/scripts/webviewbridge.js index 9b71968..d7ab2de 100644 --- a/example/Sample2/lib/scripts/webviewbridge.js +++ b/example/Sample2/lib/scripts/webviewbridge.js @@ -63,9 +63,4 @@ }; window.WebViewBridge = WebViewBridge; - - - setInterval(function () { - WebViewBridge.send("HELLO"); - }, 5000); }(window)); diff --git a/example/Sample2/lib/webview-bridge/index.ios.js b/example/Sample2/lib/webview-bridge/index.ios.js index 267b0db..ffeaac5 100644 --- a/example/Sample2/lib/webview-bridge/index.ios.js +++ b/example/Sample2/lib/webview-bridge/index.ios.js @@ -138,6 +138,11 @@ var WebViewBridge = React.createClass({ * @platform ios */ allowsInlineMediaPlayback: PropTypes.bool, + + /** + * Will be called once the message is being sent from webview + */ + onBridgeMessage: PropTypes.func, }, getInitialState: function() { @@ -189,6 +194,15 @@ var WebViewBridge = React.createClass({ RCTWebViewBridgeManager.startLoadWithResult(!!shouldStart, event.nativeEvent.lockIdentifier); }); + var onBridgeMessage = (event: Event) => { + var onBridgeMessageCallback = this.props.onBridgeMessage; + if (onBridgeMessageCallback) { + event.messages.forEach((message) => { + onBridgeMessageCallback(message); + }); + } + }; + var webViewBridge = ; return ( @@ -229,6 +244,10 @@ var WebViewBridge = React.createClass({ RCTWebViewBridgeManager.reload(this.getWebViewBridgeHandle()); }, + sendToBridge: function (message) { + RCTWebViewBridgeManager.sendToBridge(this.getWebViewBridgeHandle(), message); + }, + /** * We return an event with a bunch of fields including: * url, title, loading, canGoBack, canGoForward From 132a4a1846846d94033e0dbc9595c1d42e95d7bb Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 17:16:58 -0500 Subject: [PATCH 07/20] adding auto injection --- example/Sample2/lib/ios/RCTWebViewBridge.h | 2 +- example/Sample2/lib/ios/RCTWebViewBridge.m | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.h b/example/Sample2/lib/ios/RCTWebViewBridge.h index e78dbb1..743640a 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.h +++ b/example/Sample2/lib/ios/RCTWebViewBridge.h @@ -42,6 +42,6 @@ shouldStartLoadForRequest:(NSMutableDictionary *)request - (void)goForward; - (void)goBack; - (void)reload; -- (void)sendToBridge: NSString *message; +- (void)sendToBridge:(NSString *)message; @end diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m index b7a06b4..f4151a2 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.m +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -21,7 +21,7 @@ #import "RCTView.h" #import "UIView+React.h" -//This is very elegent way of defining multiline string on objective-c. +//This is a very elegent way of defining multiline string in objective-c. //source: http://stackoverflow.com/a/23387659/828487 #define NSStringMultiline(...) [[NSString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding] @@ -76,7 +76,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) [_webView reload]; } -- (void)sendToBridge: NSString *message +- (void)sendToBridge:(NSString *)message { //we are warpping the send message in a function to make sure that if //WebView is not injected, we don't crash the app. @@ -238,6 +238,15 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) - (void)webViewDidFinishLoad:(UIWebView *)webView { + //injecting WebViewBridge Script + NSString *webViewBridgeScriptFile = [bundle pathForResource:@"webviewbridge" + ofType:@"js"]; + NSString *webViewBridgeScriptContent = [NSString stringWithContentsOfFile:webViewBridgeScriptFile + encoding:NSUTF8StringEncoding + error:nil]; + [webView stringByEvaluatingJavaScriptFromString:webViewBridgeScriptContent]; + ////////////////////////////////////////////////////////////////////////////// + if (_injectedJavaScript != nil) { NSString *jsEvaluationValue = [webView stringByEvaluatingJavaScriptFromString:_injectedJavaScript]; From 3992e76ba32e1fbbf1e24512962cb6ef9b347747 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 17:22:07 -0500 Subject: [PATCH 08/20] added bundle --- example/Sample2/lib/ios/RCTWebViewBridge.m | 1 + 1 file changed, 1 insertion(+) diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/example/Sample2/lib/ios/RCTWebViewBridge.m index f4151a2..115ba34 100644 --- a/example/Sample2/lib/ios/RCTWebViewBridge.m +++ b/example/Sample2/lib/ios/RCTWebViewBridge.m @@ -239,6 +239,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) - (void)webViewDidFinishLoad:(UIWebView *)webView { //injecting WebViewBridge Script + NSBundle *bundle = [NSBundle mainBundle]; NSString *webViewBridgeScriptFile = [bundle pathForResource:@"webviewbridge" ofType:@"js"]; NSString *webViewBridgeScriptContent = [NSString stringWithContentsOfFile:webViewBridgeScriptFile From 2b104ac40dd9428eea056b716522c5bdb718aa95 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Tue, 8 Dec 2015 17:37:48 -0500 Subject: [PATCH 09/20] working fine --- example/Sample2/index.ios.js | 12 +++++++++++- example/Sample2/lib/webview-bridge/index.ios.js | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/example/Sample2/index.ios.js b/example/Sample2/index.ios.js index 2b4b6ad..b8f2430 100644 --- a/example/Sample2/index.ios.js +++ b/example/Sample2/index.ios.js @@ -16,9 +16,19 @@ var WebViewBridge = require('react-native-webview-bridge'); console.log(WebViewBridge); var Sample2 = React.createClass({ + componentDidMount() { + setTimeout(() => { + this.refs.webviewbridge.sendToBridge("hahaha"); + }, 5000); + }, render: function() { return ( - + { + console.log(message); + }} + url={"http://google.com"}/> ); } }); diff --git a/example/Sample2/lib/webview-bridge/index.ios.js b/example/Sample2/lib/webview-bridge/index.ios.js index ffeaac5..8b28b9c 100644 --- a/example/Sample2/lib/webview-bridge/index.ios.js +++ b/example/Sample2/lib/webview-bridge/index.ios.js @@ -197,7 +197,8 @@ var WebViewBridge = React.createClass({ var onBridgeMessage = (event: Event) => { var onBridgeMessageCallback = this.props.onBridgeMessage; if (onBridgeMessageCallback) { - event.messages.forEach((message) => { + const messages = event.nativeEvent.messages; + messages.forEach((message) => { onBridgeMessageCallback(message); }); } From b814116b89166584bafcd33ad16e1f68a77ae16d Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 10:06:23 -0500 Subject: [PATCH 10/20] refactoring the whole thing --- example/Sample1/.flowconfig | 51 -- example/Sample1/.gitignore | 34 - example/Sample1/.watchmanconfig | 1 - example/Sample1/android/app/build.gradle | 29 - .../Sample1/android/app/proguard-rules.pro | 60 -- .../android/app/src/main/AndroidManifest.xml | 22 - .../main/java/com/sample1/MainActivity.java | 78 -- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3418 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2206 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4842 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7718 -> 0 bytes .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/styles.xml | 8 - example/Sample1/android/build.gradle | 20 - example/Sample1/android/gradle.properties | 20 - .../android/gradle/wrapper/gradle-wrapper.jar | Bin 52266 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - example/Sample1/android/gradlew | 164 ---- example/Sample1/android/gradlew.bat | 90 -- example/Sample1/android/settings.gradle | 3 - .../iOS/Sample1.xcodeproj/project.pbxproj | 776 ------------------ .../xcshareddata/xcschemes/Sample1.xcscheme | 112 --- example/Sample1/iOS/Sample1/AppDelegate.h | 16 - example/Sample1/iOS/Sample1/AppDelegate.m | 61 -- .../iOS/Sample1/Base.lproj/LaunchScreen.xib | 42 - .../AppIcon.appiconset/Contents.json | 38 - example/Sample1/iOS/Sample1/Info.plist | 48 -- example/Sample1/iOS/Sample1/main.m | 18 - example/Sample1/iOS/Sample1Tests/Info.plist | 24 - .../Sample1/iOS/Sample1Tests/Sample1Tests.m | 70 -- example/Sample1/iOS/main.jsbundle | 8 - example/Sample1/index.android.js | 52 -- example/Sample1/index.ios.js | 83 -- example/Sample1/package.json | 12 - example/Sample2/index.ios.js | 19 - .../ios/Sample2.xcodeproj/project.pbxproj | 25 - example/Sample2/lib/package.json | 29 - example/Sample2/package.json | 2 +- .../lib/ios => ios}/RCTWebViewBridge.h | 0 .../lib/ios => ios}/RCTWebViewBridge.m | 0 .../lib/ios => ios}/RCTWebViewBridgeManager.h | 0 .../lib/ios => ios}/RCTWebViewBridgeManager.m | 0 .../project.pbxproj | 133 +-- .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 19058 bytes .../react-native-webview-bridge.xcscheme | 24 +- .../xcschemes/xcschememanagement.plist | 4 +- jsx/WebViewBridge.js | 106 --- lib/ios/RCTWebView+WebViewBridge.h | 27 - lib/ios/RCTWebView+WebViewBridge.m | 165 ---- lib/ios/RCTWebViewManager+WebViewManager.h | 13 - lib/ios/RCTWebViewManager+WebViewManager.m | 105 --- .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 17648 -> 0 bytes lib/ios/webview-bridge-script.js | 42 - package.json | 5 +- .../lib/scripts => scripts}/webviewbridge.js | 0 .../index.ios.js | 0 58 files changed, 92 insertions(+), 2569 deletions(-) delete mode 100644 example/Sample1/.flowconfig delete mode 100644 example/Sample1/.gitignore delete mode 100644 example/Sample1/.watchmanconfig delete mode 100644 example/Sample1/android/app/build.gradle delete mode 100644 example/Sample1/android/app/proguard-rules.pro delete mode 100644 example/Sample1/android/app/src/main/AndroidManifest.xml delete mode 100644 example/Sample1/android/app/src/main/java/com/sample1/MainActivity.java delete mode 100644 example/Sample1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 example/Sample1/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 example/Sample1/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 example/Sample1/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 example/Sample1/android/app/src/main/res/values/strings.xml delete mode 100644 example/Sample1/android/app/src/main/res/values/styles.xml delete mode 100644 example/Sample1/android/build.gradle delete mode 100644 example/Sample1/android/gradle.properties delete mode 100644 example/Sample1/android/gradle/wrapper/gradle-wrapper.jar delete mode 100644 example/Sample1/android/gradle/wrapper/gradle-wrapper.properties delete mode 100755 example/Sample1/android/gradlew delete mode 100644 example/Sample1/android/gradlew.bat delete mode 100644 example/Sample1/android/settings.gradle delete mode 100644 example/Sample1/iOS/Sample1.xcodeproj/project.pbxproj delete mode 100644 example/Sample1/iOS/Sample1.xcodeproj/xcshareddata/xcschemes/Sample1.xcscheme delete mode 100644 example/Sample1/iOS/Sample1/AppDelegate.h delete mode 100644 example/Sample1/iOS/Sample1/AppDelegate.m delete mode 100644 example/Sample1/iOS/Sample1/Base.lproj/LaunchScreen.xib delete mode 100644 example/Sample1/iOS/Sample1/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 example/Sample1/iOS/Sample1/Info.plist delete mode 100644 example/Sample1/iOS/Sample1/main.m delete mode 100644 example/Sample1/iOS/Sample1Tests/Info.plist delete mode 100644 example/Sample1/iOS/Sample1Tests/Sample1Tests.m delete mode 100644 example/Sample1/iOS/main.jsbundle delete mode 100644 example/Sample1/index.android.js delete mode 100644 example/Sample1/index.ios.js delete mode 100644 example/Sample1/package.json delete mode 100644 example/Sample2/lib/package.json rename {example/Sample2/lib/ios => ios}/RCTWebViewBridge.h (100%) rename {example/Sample2/lib/ios => ios}/RCTWebViewBridge.m (100%) rename {example/Sample2/lib/ios => ios}/RCTWebViewBridgeManager.h (100%) rename {example/Sample2/lib/ios => ios}/RCTWebViewBridgeManager.m (100%) rename {lib/ios/React-Native-WebView-Bridge.xcodeproj => ios/React-Native-Webview-Bridge.xcodeproj}/project.pbxproj (50%) create mode 100644 ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate rename lib/ios/React-Native-WebView-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/React-Native-WebView-Bridge.xcscheme => ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/react-native-webview-bridge.xcscheme (72%) rename {lib/ios/React-Native-WebView-Bridge.xcodeproj => ios/React-Native-Webview-Bridge.xcodeproj}/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist (82%) delete mode 100644 jsx/WebViewBridge.js delete mode 100644 lib/ios/RCTWebView+WebViewBridge.h delete mode 100644 lib/ios/RCTWebView+WebViewBridge.m delete mode 100644 lib/ios/RCTWebViewManager+WebViewManager.h delete mode 100644 lib/ios/RCTWebViewManager+WebViewManager.m delete mode 100644 lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 lib/ios/webview-bridge-script.js rename {example/Sample2/lib/scripts => scripts}/webviewbridge.js (100%) rename {example/Sample2/lib/webview-bridge => webview-bridge}/index.ios.js (100%) diff --git a/example/Sample1/.flowconfig b/example/Sample1/.flowconfig deleted file mode 100644 index 05cad20..0000000 --- a/example/Sample1/.flowconfig +++ /dev/null @@ -1,51 +0,0 @@ -[ignore] - -# We fork some components by platform. -.*/*.web.js -.*/*.android.js - -# Some modules have their own node_modules with overlap -.*/node_modules/node-haste/.* - -# Ignore react-tools where there are overlaps, but don't ignore anything that -# react-native relies on -.*/node_modules/react-tools/src/React.js -.*/node_modules/react-tools/src/renderers/shared/event/EventPropagators.js -.*/node_modules/react-tools/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js -.*/node_modules/react-tools/src/shared/vendor/core/ExecutionEnvironment.js - -# Ignore commoner tests -.*/node_modules/commoner/test/.* - -# See https://github.com/facebook/flow/issues/442 -.*/react-tools/node_modules/commoner/lib/reader.js - -# Ignore jest -.*/node_modules/jest-cli/.* - -# Ignore Website -.*/website/.* - -[include] - -[libs] -node_modules/react-native/Libraries/react-native/react-native-interface.js - -[options] -module.system=haste - -munge_underscores=true - -module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' -module.name_mapper='^[./a-zA-Z0-9$_-]+\.png$' -> 'RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FixMe - -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(1[0-7]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(1[0-7]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)? #[0-9]+ -suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy - -[version] -0.17.0 diff --git a/example/Sample1/.gitignore b/example/Sample1/.gitignore deleted file mode 100644 index 94fc867..0000000 --- a/example/Sample1/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# 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/IJ -# -.idea -.gradle -local.properties - -# node.js -# -node_modules/ -npm-debug.log diff --git a/example/Sample1/.watchmanconfig b/example/Sample1/.watchmanconfig deleted file mode 100644 index 9e26dfe..0000000 --- a/example/Sample1/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/example/Sample1/android/app/build.gradle b/example/Sample1/android/app/build.gradle deleted file mode 100644 index 3626665..0000000 --- a/example/Sample1/android/app/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" - - defaultConfig { - applicationId "com.sample1" - minSdkVersion 16 - targetSdkVersion 22 - versionCode 1 - versionName "1.0" - ndk { - abiFilters "armeabi-v7a", "x86" - } - } - buildTypes { - release { - minifyEnabled false // Set this to true to enable Proguard - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.0.1' - compile 'com.facebook.react:react-native:0.13.+' -} diff --git a/example/Sample1/android/app/proguard-rules.pro b/example/Sample1/android/app/proguard-rules.pro deleted file mode 100644 index ffa8c9f..0000000 --- a/example/Sample1/android/app/proguard-rules.pro +++ /dev/null @@ -1,60 +0,0 @@ -# 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 *; -#} - -# Disabling obfuscation is useful if you collect stack traces from production crashes -# (unless you are using a system that supports de-obfuscate the stack traces). --dontobfuscate - -# React Native - -# Keep our interfaces so they can be used by other ProGuard rules. -# See http://sourceforge.net/p/proguard/bugs/466/ --keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip --keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters - -# Do not strip any method/class that is annotated with @DoNotStrip --keep @com.facebook.proguard.annotations.DoNotStrip class * --keepclassmembers class * { - @com.facebook.proguard.annotations.DoNotStrip *; -} - --keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { - void set*(***); - *** get*(); -} - --keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } --keep class * extends com.facebook.react.bridge.NativeModule { *; } --keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } --keepclassmembers class * { @com.facebook.react.uimanager.ReactProp ; } --keepclassmembers class * { @com.facebook.react.uimanager.ReactPropGroup ; } - -# okhttp - --keepattributes Signature --keepattributes *Annotation* --keep class com.squareup.okhttp.** { *; } --keep interface com.squareup.okhttp.** { *; } --dontwarn com.squareup.okhttp.** - -# okio - --keep class sun.misc.Unsafe { *; } --dontwarn java.nio.file.* --dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement --dontwarn okio.** diff --git a/example/Sample1/android/app/src/main/AndroidManifest.xml b/example/Sample1/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 463011c..0000000 --- a/example/Sample1/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/example/Sample1/android/app/src/main/java/com/sample1/MainActivity.java b/example/Sample1/android/app/src/main/java/com/sample1/MainActivity.java deleted file mode 100644 index f9027f6..0000000 --- a/example/Sample1/android/app/src/main/java/com/sample1/MainActivity.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.sample1; - -import android.app.Activity; -import android.os.Bundle; -import android.view.KeyEvent; - -import com.facebook.react.LifecycleState; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactRootView; -import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; -import com.facebook.react.shell.MainReactPackage; -import com.facebook.soloader.SoLoader; - -public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { - - private ReactInstanceManager mReactInstanceManager; - private ReactRootView mReactRootView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mReactRootView = new ReactRootView(this); - - mReactInstanceManager = ReactInstanceManager.builder() - .setApplication(getApplication()) - .setBundleAssetName("index.android.bundle") - .setJSMainModuleName("index.android") - .addPackage(new MainReactPackage()) - .setUseDeveloperSupport(BuildConfig.DEBUG) - .setInitialLifecycleState(LifecycleState.RESUMED) - .build(); - - mReactRootView.startReactApplication(mReactInstanceManager, "Sample1", null); - - setContentView(mReactRootView); - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) { - mReactInstanceManager.showDevOptionsDialog(); - return true; - } - return super.onKeyUp(keyCode, event); - } - - @Override - public void onBackPressed() { - if (mReactInstanceManager != null) { - mReactInstanceManager.onBackPressed(); - } else { - super.onBackPressed(); - } - } - - @Override - public void invokeDefaultOnBackPressed() { - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - - if (mReactInstanceManager != null) { - mReactInstanceManager.onPause(); - } - } - - @Override - protected void onResume() { - super.onResume(); - - if (mReactInstanceManager != null) { - mReactInstanceManager.onResume(this); - } - } -} diff --git a/example/Sample1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/Sample1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index cde69bcccec65160d92116f20ffce4fce0b5245c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3418 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 diff --git a/example/Sample1/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/Sample1/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index bfa42f0e7b91d006d22352c9ff2f134e504e3c1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4842 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 diff --git a/example/Sample1/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/Sample1/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 324e72cdd7480cb983fa1bcc7ce686e51ef87fe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7718 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 diff --git a/example/Sample1/android/app/src/main/res/values/strings.xml b/example/Sample1/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 0ce7021..0000000 --- a/example/Sample1/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Sample1 - diff --git a/example/Sample1/android/app/src/main/res/values/styles.xml b/example/Sample1/android/app/src/main/res/values/styles.xml deleted file mode 100644 index 319eb0c..0000000 --- a/example/Sample1/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/example/Sample1/android/build.gradle b/example/Sample1/android/build.gradle deleted file mode 100644 index ccdfc4e..0000000 --- a/example/Sample1/android/build.gradle +++ /dev/null @@ -1,20 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:1.3.1' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - mavenLocal() - jcenter() - } -} diff --git a/example/Sample1/android/gradle.properties b/example/Sample1/android/gradle.properties deleted file mode 100644 index 1fd964e..0000000 --- a/example/Sample1/android/gradle.properties +++ /dev/null @@ -1,20 +0,0 @@ -# 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 - -android.useDeprecatedNdk=true diff --git a/example/Sample1/android/gradle/wrapper/gradle-wrapper.jar b/example/Sample1/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b5166dad4d90021f6a0b45268c0755719f1d5cd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52266 zcmagFbCf4Rwk}$>ZR1zAZQJOwZQHhO+paF#?6Pg6tNQl2Gw+-`^X9&nYei=Mv13KV zUK`&=D9V6>!2kh4K>-;km5KxXeL()}_4k4PJLJSvh3KT@#Th_>6#s?LiDq?Q;4gvd z-+}gj63Pk5ONooAsM5=cKgvx{$;!~tFTl&tQO{1#H7heNv+Nx|Ow)}^&B)ErNYMhr zT!fjV9hGQPbzqX09hDf354Pf*XWlv8I|2V63;y`Goq_#b(B8@XUpDpcG_e1qF?TXF zu`&JsBt`vKQg>DEo zGsuV(x@*CvP2OwTK1BVq$BB~{g%4U4!}IE?0a$$P>_Fzr+SdI(J< zGWZkANZ6;1BYn!ZlH9PXwRS-r?NWLR+^~(Mv#pQy0+3xzheZ(*>Ka8u2}9?3Df&ZZ z%-_E{21wY6QM@Y_V@F0ok_TsP5a8FP%4`qyD3IWSjl}0uP8c#z0w*kv1wj}dI|T1a zhwuAuTprm8T}AsV01kgyEc*X*MiozI7gJkBC;Pw5a90X z@AMBQl&aX;qX;4SVF1F%77i*6YEw5>y;P5*>=z7hpkpJUndGYEWCd&uLCx#jP3#jN z>Yt)*S??j=ies7uQ;C34Z--{Dcps;EdAeT@PuFgNCOxc3VuPSz!9lI5w%8lvV$s-D zG*@r%QFS`3Nf5?{8-jR6 z?0kCiLzAs&!(^%6e=%K0R`w(zxoy$Eu4;oyS=*ydfm^*KLTWmB1fUFiY9X3V z*-Gs^g>EMIh^V?VT!H(IXJH)HiGcY0GaOE4n1O1Qeh*Eg?DvkE| zK_&ZGRAf4fAW?a?4FS_qCX9%Kbv6+ic?1e4Ak>yr7|fa_IL;7ik?%^`it%EM`CCkGRanQGS>g4pPiW(y*`BX>$G#UA$) zfA7fW7!SyAjB+XKJDkIvlt(%l)#&5HkwslSL zht-(aI4V^dM$hPw$N06(@IS`nzx4L>O4GUOue5Fc9VGu*>ZJZ3)%u4_iNy~5RV=u$ zKhx(YXvjSX<8sG?Nl*ZW}43WU8AZ@=baBGBsAbh6uI% z)|$B#8Pv>9DGj4kZkW6)LJDKU8N4%Q=#>8Tk`moP7V}+vq7p9Xpa|I+f}uNQE8}{- z{$z9e(;xI-PYPD)wXOSCzm)#!7u|n8sl@*_SZdCuPLlSvrn2_-)~*i!ICQLvjslJl z+P8S(kJV@88bE8Cl@6HBFYRl!rQxZnNL45zXa$o{=sNmt6D^zH8ogvzR*Pf&PZDf= zL&`Mc!QB&`GwyxPC)3ln0s?*@nuAqAO4Ab_MSE0vQV~>8272PUZ;?pi4Mh8$K?y*; zNM1_f$`*2iGSD(`$vPh|A41gn8xwW*rB91O@^fi!OZhHg4j1d3Y^+la)!MVpa@}2% zjN7p^rcLKDc{7+Y-d>4@7E6t|d4}HLLsm`){h@2Gu>7nYW*cR%iG>1r07fwOTp040 z64~rq4(sr(8QgFTOkYmZA!@8Ts^4ymd-$2~VWN|c)!Hj;)EI00-QvBoKWxj730OP2 zFPA+g9p$rJt$aH+kj=4TDSy*t#kJXL=P*8K|FUu~J<2K5IWY<(-iT(QN>USL6w>AQ zY?6vNLKY(HQErSuhj=!F2lkh{yJ@WO2u4SLMKa4c%li~xYN6gTh5E5n?Gf$1T%Yy? zTkR2#2>0lY2kCm(FZpqok=`4pcvG`~k27SD>W#fdjB^`9jM48)j?!y4;lV(Z>zHuX z;VT_xF;mA#yA#>O2jnQ2cNmU!Gv>WKO1u4`TFkwK$83#$GMi@ZFONKwlO3<3Dpl$NRI^>&v#&Gi$| z2!X8p=32f(igbqa52t+@w7Vh~b}CbId-*qo#5?%0IRXv@^zj!Nu>5B+74tB*adozI zGZnYAF%>d4Hg$HEGqf`_H~pv8PgR$3KsCktW1B@`*=0*CNUUfB6xyN~1i)AdN?SLw z&@O;41xIh6VE@sz9h)sD<4eSU@#%VZmRrnBN~Z}qiY*~A7R-GZct1FT&5(!1Krp=9 zo}Jc*kMK_L=k)f^2fM)c=L$R!;$bpTTVXQ@a>?-Gv4lI49^UJrC=$O*)RdIt1$2SN zm8B3Dd0HQleDQ94AkZwB5@`e*C+;wd2fL)o9JnLG+-D&eBLIyB*d#OyN0cs%I&sJW z31?Qr2&{{+*bmDu17)=&j*@%Ml}zRO)JwtDh3u0&MENw8iM)(PoPO0>Co9o9Q8AS< zHmDZMEx!m;4H~_Ty(&wryP8NyTDoF3yDN{?W(7yZMd+#3D$I;9O_4y30{4T=1Jx`o zij8VUu{*jrxGGg0!d2~!g(YgITr;a9Jwnf0vp7|Avc;(}r_{uijopswy~k=~gTds< zNC;PjhxLc;l*zJip$t<>jumo+f+G~lMv)y}7B;FA-A%29wHK{1PG*s5Wf;B;po^Zj zjdeQu<89BA&3GvzpIFB&dj=~WIoZxkoNT!>2?E|c41GxPIp{FZFeXB_@^PPu1=cWP zJ_TfE`41uyH1Pf$Thpj=Obyos#AOou+^=h`Vbq^8<0o6RLfH-sDYZW`{zU$^fhW+# zH?-#7cFOn=S{0eu#K8^mU8p{W8===;zO|AYOE-JI^IaKnUHqvwxS?cfq$qc0Cd8+; ztg4ew^ya;a7p5cAmL1P28)!7d3*{_nSxdq~!(h10ERLmFuhqg_%Dh^?U6a#o* zCK!~*?ru;C;uVm_X84)Z;COF>Pi5t$-fDtoFamfTd z?IAH-k`_zfYaBJz9j^A%O}fX?OHcf%;@3lbC@0&bfAfArg=6G%+C*H)d>!XJj28uk zXYcq#l2&CBwqj$VyI^A!3zw;GQrAg(lOtxs!YumgSk-$i>^BzgZrT(6`t>F_8b1Dc zpBNLLXr7l&6&h0ZndOKubdZ;%h=I;lKUw(#E%u~fX;lOt9X_X!XlI%-{k#x%Ou(Ig zXKxZo-Ida-TC6I_RNHo*M0TawHiC(Tg3ryJv{DlU`aK;~;YA74#yuIvAQudfPcOU7 zqM0rSj5DG%llIxNC#i+`TvmZhN88GkR)y_tLco^kwXC2<@l9j@pkMQCuF&wpJ&Q+7@9Ri$u75pA9WwZtR#hz>D85Rc z=?ihhi||`h;tg~XY1HisXjgQH7m9?8BKI@_%S}Sq=#s<1_Q*DX*>uYqr<|D0t`kPV zcv~&yhhvI6kCk5CW`~^wIK0Nv9f2}Q9ZpsQri1)o>`_h#DdHT{RWaJO$HiM=I`9Mw z=#jvI}mBkDEC|>Uu=)PQ_B22OM_YJ|5C5)|mpg z0x+VM#Jtc6DjS$kPl}?MW`nk^EoXdJlmm3bqOA)oGKw*Z{cUHYx;GL6T|Ej97CkP7 zh6f6kcdjzW=*+Ir-CSQnzd`)d@Al?&uFU=jue$DxSAg^SPgxG-CTPfv`(WPEH;!7u z&v*L^WVl4`ps@rAmfhjtju3U(10=rI1q~4WV*K3#(A@)o-_NC|wMc!7eGJd`iO=93 zfr-!P9-gBwk-Q2gM35Gr;JlaSAV?+={rIF&=~?x>a?mGQu5zQh zjL{y%ev~ERltaeUBd&K!z#lRyJ>`o?^`~v*HoAVOQVhPS?ZcKc_X?|?zYaw=jKek5 zgaN#|;-t-rE*6wh>YBVaK8JO)br-rMjd^8j6T4!wL;{{upepl-QJk?9)EWhhk1e!q7^O8*{xLrj+TFVGI%TP6Y`)vIXY6gBHOdqb_ zzVAS;VMAby2-40p7JpT8&|a{8+@h7y4=5*0 z0L;{ms9dV6W>j?&0_$XR9av%=tl%Q=cootSL>y8;i6;_1TPrrvQ}FzN8gayMunm-u zU8E2hfe9?zGd7Vnh?5Rf(yWkru%bvK7G`5ETWHdk7ITViO%$Ck;fRXF_?! zuUuedX~ESD@jtNtDymAp_?E|iF*f#J0K@p70nERLuabs#e-j1&L@%-Gm(HkaXn$<8 zO@`d2iWQ}$L!m${KOzFqZD6S9rAraX6lsIH0I zuzt>tyZ-?^yK@xIL~odR-SnQi&b{Y4&t2{Q`TdR=@b#uOL?2V(AtHh*&YCk^5yipw zM*f%rfo}Z3NbinHO`(>fexDYm9s}kmUI#5TEA1p799Ky+Ywdx%w0I>9yE8C?p*z@} z)I-U@Ls@!j&B#b9r94C%qMBzd1Y?O_7BvL}B2s4BC4tT=(N&K27Pr|fJP^jTgn}A+ z72`0A!-DO!F?v;!n8}Q%k~bxrpUwUV<27bOi7vx6Y9l^;f=`-`Do@*(;V$;lV*I$5 zMdH8M0B}2iVJ{ESp;2pKVRrk~VKyww!)|0I+SBbq+hIn*Zg*sX$yyt72}N2>q*}^j zbqr%CCCU~W*vc>^K^cyjL~@$dCZ_d>-Ux8MFToy?9?mTueT{clQuPG?4X&etR zMYckocR~-atwpK_qGFlArnhg!F?H%9i;{V)3Zg&B!*DJ5*eLXBxZsjFcla?Vs}-i> zaAxfBY*hEFJgos%UO8p&!b@D{Sw;oFTj-3VcFTEjyxcQAiiVrnV9CZZBt0n3yd~+$ z;=Cbo$x-cNXRDwb&7}^^ugsv+OkEX<$EulIosp%vX~GSWC+<4rbZHRA+{QSq=}y{p z$T{XX0s+!fN*5noHyL<_W<5hcY~RSgL|~)VNN9|Nf8G(FuBQ{pmr_6mViTOydF8j?rr8sfNh3*Z^ABUDhQW4eQhU8+wc@;?|(m4I_N0L-iv z&h65V_fr6z_!DpTsYccIFXH(_9=a)aWN_{>HXGwr8K{VY?CLILC8YIp+>g&w{& zg_oX0SmVW_@4i6%=f23_CZJ*%gmTMH_eAaWkuTrsw}bi5lCu+TC-_1r(+U(A3R5>O zH`&n|6Y1H}7gk@9vh!PPJwsk1cSzd!#lwSy^v7SZHqo{QpgUm`k8fe$qt9rKJ`IS_ z07aJwFCid(Bzd^1B38&eH$}aaB`?yoxvD-f4lJ{~pRY=DzO1N;zGvnjUmgoOBAkEI z2Z|&@8Nxj02xT3pxJaWE7vT|G^wO`$aReZXbI(X#mgr(RIgdxWBvotY_Y?wcc8*)y zqe5FFG93ytkepY6+>q~v%koqFI~Wp}*G600;*@l+k4u*nd;|ri0euh_d_Pf29AOxi zq7{PV73v+}4>)!R%oBy*&_y^04|ES+SCx9C{p(X z^{>FWT|Jh{9+MEA(d>5MhX}_q5HrAg$MqSS|>L8nenhPVQ5oXUs5oQ97 zObBg8@mZUaT_8b%&E|x>Jm*`k{6}j4@9z)zJtT!> z$vrcWbO)Ni%?b*oU|P{15j?_MsSZR!iSq^#@#PTi*z3?k8!SW2Tc>c17gE<5dbZv_ zv73Gj9n_Z(@w@L-`Xcej;gja3;#@o>g;mXC%MF1OT0WV zE+0W+v&}73yw0m6R2@;J`*GeGXLwGRsEG40A-d8FM}wf6AD{&qHfrSasp{(G!+V@I zs?!=8jhWXDkSANEFb*@)#1mmj`E?$me2A*yI{d_)GC*TnzJc&;hQntYW-^z@jU&K3 zysrFhgCHu4gN;{~D6B2a66@W;urGvzs3ch&AtB6*aR7Y`oy$Bl`scU(hq-PsNc${J zq*Yy1Bg5M(znm_A39PrY5_muAkowLdjIK7AM)&zWs(58#^^a0Jz4r%gjd=AJw zz;9|mv+sK;h;jYt{j`NNA${`1pRi|Jc)3I9(l^CZz}m(1#!s`KXEB25?&g|0p&HP7 zq>|ggQ-14sd5C+$o25G>d2JHf%Q7BxJ?V>Zi&osBi)?@r>_wSSZuH)*yMvcM!2c?e zvrd;$=#W4_b_hT~6#rQy6%Ac1gq)pCZH@lhcc-eq8{=vqf3L2hdnR*6Ij^?{8&Ss6 z{=$$_0Z5_Vt%%mve^ASBbXZ%H+Ed?lbyp9EIiUhxeZfFdJ|Qr*sfJsC{f^>6`hNY; zX`^0xf$ZhDwcMHJVA;)X|MNZf#Q~f%+JC?qHAs*%qKpS&H%!$_B%%~{43PcRX3~f< z674vwlz^{8MhT&DqKv1sm2$1aTqE9yF(%|g78gJ1Z+@=~M;Lu@=;#BIAG5FG=!27= zIASi=g+Fp?^6i5+cGm=_A8`<^KSlbdeZHlu7;) zAsu>TQ5i~pOdpd7KP@k#bT&>$BNMl?;Api`VuAfdg~JGYihhOPB0IJs>#k0d<^ujn zK{1w(N076_-CA#8{a(a>c=lpyt;OoY5|-*a2)JNH_S|BGe=Q0cReh}qnlDH#-}puz zS{{?0g6-m~r9*SQXV^1m+e~n6z;;T9E4smJyb@k@Pwh3erlIM|&7I#W^%HNEmCKGp zC~@n;u>XYZ>SiH)tn_NjyEhm2-Ug)D$hpk9_t&nW+DmmD**JEigS*ZwyH*gj6>xoI zP(;QYTdrbe+e{f@we?3$66%64q8p11cwE%3cw;)QR{FGMv`nhtbZ+B`>P1_G@QWj;MO4k6tNBqZPmjyFrQP21dzv^ z2L?Ajnp{-~^;}(-?icZxd#?b~VM)fbL6e_cmv9N$UD>&r)7L0XCC;Ptc8MM;*`peo zZs3kM_y(apSME1?vDBX;%8CRzP0}w#^w}mK2nf#;(CC;BN+X`U1S9dPaED{mc|&aI z&K}w$Dp-eNJ9b(l3U^Ua;It3YYeiT9?2#V3>bJ_X-*5uv;!V_k#MQ8GrBV8kPu4v} zd(++K9qVs$X#HwTf#q6V$?`8`GHbeGOnnX_`Yy$9xly}^h&^w`BJtw)66pSe`D!(X zYUut0`sghl5^3l3JO*e^W!0Eq&(=i_!1b^PO+mq~83hHkT|8RMKa90@U(7!X)TmFA z%Z@41CAUfp>r%E#6mt0+e;A4bwuW|9x5mPv`enp#qPtHvASw^wd!(Gea^o?Zht1Z~ zIj#T%6>s5aXCU8Fb}%fnRUL@Ct-9>-MVi0CjfNhWAYcha{I~mhn#a~2 z8+tdZH&vR0ld=J%YjoKmDtCe0iF){z#|~fo_w#=&&HN50JmXJDjCp&##oe#Nn9iB~ zMBqxhO3B5gX*_32I~^`A0z`2pAa_VAbNZbDsnxLTKWH04^`^=_CHvGT`lUT+aCnC*!Rt4j3^0VlIO=6oqwYIa#)L!gZ$ zYXBQ&w0&p)Bcq@++rE^^j6(wzTjos-6<_Mjf-X86%8rzq+;4<_^-IvFE{LLTnfZm{ z#nA%Z5n${OK65&l-394(M&WkmrL6F*XaWj(x>&ovDhW<^sk7fgJjgVn*wsjAiD#Gw zxe%;orXk#Y6}$s;%}(zauR9x!zNY;~lStgvA$J45s=krBjreKi6og<^Z( z0-xv@@E6XBFO6(yj1fV{Bap#^?hh<>j?Jv>RJ>j0YpGjHxnY%Y8x=`?QLr!MJ|R}* zmAYe7WC?UcR15Ag58UnMrKJ2sv3FwIb<3_^awLhvrel?+tpK3~<48&bNV zplmuGkg@VPY*4r!E>hUxqL5~eXFNGAJ;^5T*e$I_ZkEaU_uhv6?$6v_k=BNLh|k~g ze%yKO`}Ej-Xub7+XCv8|#SB6#=P-G5#{L!#vrjd8lfnL$=KsSjY3QX=Xzv}-|DH;e zy6Ap%MTh-OA?YvUk6CiNxC?m>{Q-&HS3WNQK_&W!tl&@0e1FP9|6)JY(=G4^V(2%E zr0bKuP*usFw68zV^M59P`@?+sC$KMO3sn`|PC0;rqRwUvfTx44lk(_=`oesI)_`#m z;g$+j9T&iv3aNW$4jv0xm2!ag;IY&rWu!L2fP13Xt9J(~m+*8_OL}wF+-(rG z!ru4#NCd3y2d_;bDSL<{aC;UHCK9NM|8!+ugKdSt z#zD7(Sv0guD=dxC@$81QY_0#x*=6 zxRoPGAxk&gQix^H!sAV^s+`5QnkavHC;~mu)43ix6w27qqMnZ@Z?ZUA`~gf_=njW? zdG3;*wv4x<9c6gdc@AFi*p4eTv@_?@^0C~AMuxvXnb96a)X$R1k+`<=MIGV@$q@;ZH7rh^33*#x-VHJZv(0`I&x%T#SBgc8%~R_;s+&mpC9_-B#JPb@hr zx6wsR8e`%Ql4-S4*KTuV!r66_Im2xnjz!A_t{em6He+EFNVWH`+3E2JyYqX}E)4f# zcH6NTxGQBP!H)pTSnIZHAP>|C<~=ERVq-L{%LY^F-|l8HA<>a4jPFK3Tnmq91Hw;= zI|?tyGy7W+6he!WB{qC|P$(|GF9lo(yi;58^v*uIG9+wO9fsPzL?NtT$2jMQ;wYJ@ z%HCF&@`8da+w~JOiye9MTvz*xQzYn6}-v;imLYiGTH>#3HlDaAB$9*!7 zxIhQ(X)k_-j^3S1ZDvhw4lS_NwGoAQ9f=yjj7pl?B+R!uIv(OBiGY6!ZxElyUMAI} z4OmMiXkZxJNSTd3``9VX9v`$gF+JB*(-X3*s4SQOf1Pk;!o0kqpH4ovAMqMfo-$o~ zWciOf3jfR#J$WD#?H8I^@O8Derctq9c*>qyk&!1PPp)OQNjDtBtGpJj@+g~2q|WMo z1m_O72q&`A=Pnuq$s1~YTOxPKTV1 zVXNsTs5aZr0+%g~e(I6du+T2eFV|N*H-2(VB`6D#hR9VrxAYP(mFU1_O@9hWl;NY! zOi{MXQB+5)@F65r<)nV>R`ug}t=byv^^n=pO|k00hOY8UMZ7n>(*tA;zE=B$@W-oi zpSDXdOKoDUJyOM=7k=VxB@T9B{!&lg!HCTE;!a|{hSI}sGb1C_c7icT;kvzUptY6O)jURh@=R5D2&T?YTCwCWUOW}G9v~*oRO@N@KvF)R zpW7F^@ zB`sUQQ1Xm{Pn`o{5||c&p;RR>cOkHj!Zct-6Jsv*E^|tf+h-sjB7Jm8WtgYdi5a}A zm0BYk2|CAH|1DhIL}!4z)3?gJ;+~l)y5-pLL?T)&59NJNoCf>71>ndAbu?2DZDS0TK<+Z8GnDsndcDQF?qZH zTJ;-Dpz`5!7??ULjUFJWJjmwPKS-$f-orTq`7XlM%23rzEkKUprOjBUW05KH2;-n; z_=Z6csg#F|>#JF+U!<@8rj;r%xDDg4dVKn3Ozoc|5Xji?S@u(hqMei&V(MD+1C-C) zZmbMEY*2e);hVtUiA8GHcNU?3Y`NmZx40WxwcN}-HJ=Dc7>NgqY~XXRtv6bp~W zS8%{oJ7B?GcmCv3Fy&&cX>KI0=$3!%Jb@~l1w${vO$HMnNp?)_CUgOwe*9R?N%B+j zHKyE#7vqamzJbR+RV+R?IXZC#-Mdm9t@E;F(eg0orUP~Z6;YMEV4;Zi<5_A=PNtL( zMJhL~*iLCk#jK>;*^@xB)x!t)3$NJ2&Zg6q1BzZFppl-=k^=rMumfW0Vx!2Zu9EIS z(Onprq7CmH=62>8K!a&3jj;%aTd8gXFOle0T$w?DX*ZbC3A07n<1sSj;CO2oopWNC#!JJuk?-}SL4Al}YoKQwF zOF#w7$5CNowy5Otx&Kn#E}AXymz@T*@hV1@x!S&MKqgh`|7Z$xIAGz$pO%+Ld0pOmp zl8cf@%)SqL3aJV77dld-oetA}Y;P?H~^2ORw3d)8&*ZP3E z^Gzu!J-C{6UZ+YdW3UdaH&$nKpI#hYhZFlS2#~|Hq%52HlB>VI_j-Aw_Cepl1T3oV zZ!Vl5ewJHKi7Dd_eOIgg5FVTRd|QmQXPaf}9}s#YlJ$m}&JQ!3Rixn)bvN`y+|mT& zgv!v?mdXd(^aJz-($6FA`=Q$wD=Z?4^zaZp#T$^9U5~?VB%-qd*^uZ->G8Usa$Wtd zIK&bN6KLtG8+e0Pq#F6warn%NKI-L_L2nG3U&Y>79s6ol#eLK-?#iH46+n6n!+|jB z8@05;%P1^kw_oRxo3ZU{u+P%YE2ndi{6pI+thFh^Q)WpCZaS#ErR@1yb;IX(KH5Gs$@&-W7O~O) zqNknOGF9+jx>VJW{QXn-zzM4hF?uSYH%PA}zf|7*8^zUJ2ru{r-r~woJ9Mu` zQ1eE#$wH*-OtcCsXp{ozi>&3FRy|+5qfb%+Xw&$Nl(3w^;EOzD7CmH!wxDk5^9&wr z-rWGZ(Kc$*p*oXaOaP%)AQJ5!^(ndFjkOlC4tah%(&Y*JgG#d#p0`I(0G`Glp&=g} zpW$xu!W<9NpT_>Z{Vd7&UF`|p!D%P)?()g`CnZAcH#=??>X zXuDgRd&43uW#9aB-_No2y@J^n_^(#F{h;4$B6)l}Ft?9Kk3B9sq>Ui+BF?flVZul$a6hCmFORb^99h=?~fr3`~agAY4BT`!AM zab40!-JW;l`4>uibgBq7Q2UM+~6R#WAX^XI-C-(W+EQtdnDo*>V zK-TGpiIyue(K?t5(J)W>PxBvVoMM~1wYmaH1@DOqbu8+bbPRR!Dk^3+SZBa?D(Xf4RdY$va$2U@ID}6qv?IJD(D9Wmy5o>_lugu&E`c% z@;zIOy&b>~Lmn~5z}T$D(hqG|v%r@W4QRuOaE=2i@x-t`(>T+>|NB`Z3LyIv`^5dl ztw}4<`yc;lCHNB$RAM8*o!gvrgZ*K-o{iLIn3wYX8 zwhef2KXY#e=rB%Ys@nNGhE&1skqjU2ijXn%U3K?P^~ZDf(%_3c(pj@Wk>Ue8S( zxSIm!*)I~J4XGs1+ab;oE)tqv3+Q)}r$>``c^^j&p=;m7pDRQ$O^i71hDcp~SAzaA zAKyv>mq8-f6)O{W-}||M_-{e=_D|W!;lDNK)W41M|CioQVS9TQXP3V{5^{!?b}BB0 zPA>mbaMse@UiT_;8tf6%<-^-_!k`UIL}V^8h^dd*)st51QMFQIckVA zn344`7^;iYoS1A4^~C&5E*eUOK{8=aY3>hwdGYQgg+FViBBe8u6(d`tteV;ws0>0r zOFD4Gzcq}6k3GLBj!L{~4pKfVzB}oNV}gZQXq75-WR;Vrxi19BXdWde?6nlYg1 zoMvxcUAE07`_9NzeTH9IeCs1ZyZ%8(Lxjgt>%wYVNtG*>uYK{&-(2J_w=}!aqNUD8 zYFC{$QzHeuL#q#ShG;wTvJA>rRV~hq(@r-dsnCTo6Ekbco$Yd0p`Jz3vdoA<)J=Rk z183Ozx9?amxcY}Gop3%Yd^Y|DOIOy+s4UxvB$k5$)^uE5{iw9+Z-+2N9unXg@kBce zvNPBdKg_sHyoAv`t4!!`EaY8Pr!FWVb=16au}hFJz?Lmr5)RE~rJJ};RSVSjNw$K6 zi0Y_3Alt!QbQ8FNr7Oh;5EfC~&@I-J??eORVnBisg)&fH(0yQJgfLtvz0PpNwyMOQ zKn}bgkISgFQCCzRQ6j){rw5;#-m1{h5-|Kjr(!0dtn;C3t+sIou;BU! zG~jc0Z1+w>@fbt#;$Z}+o-%_RFnuHLs#lLd)m%fX%vUuAAZF&%Ie9QRW%$dLSM0DG z-Lz-QP#C@tn71_$Y{dY1%M@E%o-sZ!NXVvOWbnCrzVMgefPp{nEoZSgpfo~9tuxPR z)GjIjU9W9SiYb~_#fBI)tHnpI!OzNy6?PKt3`ZDctb@E7vdt*Y z*UtW|B7Q##?$O1LUbaLp(#~JubBEmpVYr?ZFPuX0%qtWh;1~eaFUiKE5;q-$|DoWC zJees>G+wUF8B9j<56`%ZIoY2X!W0Nhk@#Z5p%_LT2WE<211ZvwjMtN!4^Wz+J)qlS?Ymd9Nu=W)wPak zlFOOPd?u-5p-E>eg*gw7e{N?H3Ev?ovpK)m`%1su!EtqPut(zT5q}!{NW{ zq2PBl0Z9PjP=^9@xXP%9K2Tj;FYxlljGm2$y6shRIf&3?qtj=3aMcHUjUGV^VWMG09G}R2cwS&6 zh&k}Vi`gU2B#hfLM)u(ik|22#1Lo2U zhB5l;ZrRp0SD%t|DYKaxm#fieXxN-ax1lq)UuhEiF%Sg<{3BbrmmgZD{T2RJG8Q5B zNj+b+3Em#3mp7yKf-I|jy2tKUn4V(8aBIBjk_#@Nc03r8uqq~c(F{F!IMy8o@=$8b!(o0#j=53a6y7<7^i#9s#((+uAHhG(6 zL0z(1n!c;c%tL*mwp>)K;O!BK#--;Qs#2()A5POs?%uvwyJpLjE}QX?1AFpf7}OTl zzT8x}tN7!Q+iJBM_&TpbNgpMMCe4B7KgukZ_~`@+A|uk`;R089{Jl|HICLnS8Bcd&Gw3@RMwzx^6JXs zyOrq8&T_48?K~VzuX0laj4_Wq6I9 zGFh%W`qJNb21FUAaB$MoFh&toeM-_h2D$XyK;hO%e;dFNy z1)6@y;dH0NWdU`T5mK>9YsP{Ax2SdC4T97>O$FJAFtG1VE$evjO7e#IRvaZTv6kN$ z-Ak&nAlZB{6WA$whf@~SlR#f9zg$<8I3rmY8m;aY;#zvZ@J7?^YmSa$#|Mz|I@;Z- z(g7bUCjZ{PsTqCRv5eSLge+9L=iuds6gMqbyBmjo3~g_nVP+U+Da9aIb5<3r!k9Zt zd-0HIZCvrrE2VR!ORwam(%D=@Cd^%i_40{NoEaT^?kH8r?5=Du$m)!Hb5J*5KO6}% z&w66lW5zc>CezP{I=l_q5m4PCd1H9SEUMp^;rvs1p#SEM^+)Mmzp}=69ep&J`g=?e z5LLAdcto?oVLg;zE8u!D`EBK!U)`3lwq#@%1_5R^i|0mLr}8D0upt3>{a9=$bRmR) zcbnt=t~RUNZ@iwfPIc^4838x%>@7Q(t?)*)J;BanAbwv@1qz;4F)Q`5d8<+grjr5jT9QHfZ`ydhBCwe%NA!|Wu zYD>i{YDGzwny*quj6TIXF1|A7`sH&Gx9T^u9d%;)*0fY|AaG@?9LX@0<*bZ?&_jux zRK2O9!!Y}4QO~|5_-jVHy77Fo$^e&N<#uvb>S8_BMQ4kiq58^HL3-RR)doDky7+H()lP)w zcjbp5-#_byoZt)+s)_5Y5{|sq+x14DQ~RFJb>rVwXLQSbF4ZC?Os8%$w%TW>Y1T45 zQJwW9bLR$}C+>OcAei!Xe@1BmjGHU4Wrj~?h*+aH8nLJCvxVLoNZldF-j9H_?|kB9 zbm=YP5Z+PfYCvMrO>m)jR40a6N!$&7(O!%iEzAdNGO{xyb|GHCVer#>p$1-DFvT0= zhPEutAmne9oM!oSS`p6?Y1B5Q;k9mc@-PK^Md^tyl;aH?h<+juqu5H!CrA2rOt7YL=Qo-%%Nf7JsmmU!y4U~O);Yh*J-Nxfxf#jrW!dUgyV=Q{ z-MJ94(8F}%71(_4k>k}T$P$_wdYwOLK1v;0cScnS6Br5g-?)SrSvKQOZ%(cLgHa1KJ^z>+3BCO=7nk@2%6czqkeE$Wdx zQu)vaI_mLlh67syS})AUsV%FcjP}IhvhYQ( zq9f*f{WN;hYA#B_z-|GSCl-FnKQt}!uiTr z%U#c{22tr0k;!>bq51z0y`d$X zypY^I*egh0I4cJ}82NfYF>-2qNBF3p5%InbSM&}ONRMYh?2F!L{}duIH^4cGOGl*m zVnK9}VzjjqEd(75RaI?_w#wYcIK~0>)T{~>^bld0My9oUaYDcnJC@ZQv2;4KHQnFG z$J6$RcNS$bLPx`Q1-^0*)_vGnZJ^a7aBTPdehtQ-?Xi{rWCP_9HnJ*ODotF5C9<`9 zqh1qJx{c0!L*O#6>dKp`aVvhrL#h&}6z^n`e)RDxE)9!H?_!udEPbE*LEQ4?8H`*N zMDSoPA2tv4GItSdFp@n~u5=^x(gz)bo(k>|f^wNn-ro@%dKAUL(t-)YVa(tGV3i!c z$<;ZZRyR2T~g zi26SR(SO{z{3jg!uh{&bWp7PL5417#Z%Fx#B`Y;f=#rrnP}t>!*?`!_pGaCLLTgqU5g7DCOO~ZfDMWdEU+4UAedE zg!TInXRdoZzj{4y;T8BF?}~v|qhqPt_UX}a@0dG#bm{9A@1)VeQFH?|s5lSDs=qv9 zw|f5?Ifr(_*SC8waC=21ipI%1aZiu>D31LZn4O}cMc{t55riJO2cK@;9pZHNst&|k zq)isOd_ zU4j?m$@ut+yF=tof7Jmlbixs1YJ#ybRUf>3#d|51{raM_j~k-vuZydxq-D(I`@fVT)!=P|Nir_c2ytTU8TDp0)3Q` z{q+ZsZ-u&kB?n_~kx}^v<}iMBMTq@K6&s!ft-aNU4*vFIfkWM1T|5Y{SC^Mpzi5!o zxXbeAhnV>IQEpmM7T(4&0+ZNT@>-rc*b2s!!vq2GJ-x;CtVu@sF#Jc+8_{3w{i ziKPHvb<2!Qypt3rjKkhfhW7Q@k_>U**c38ftCcupo#YtR4XsiXA})r^;ujP{HelKb)?1#O#?;0@N*yh<$%^d>IO#w){mm=7;S|<<7NM6n zZ774u^-@}6LCXu8?#A8oQF%r09OH&DI-Q7Ic_pT&bk>9@rEwz6Esvd;Vv5o~3hVE{ zp622`RvE!$D<8_wn{x>onCjYG%;Zf8TFq^Q7prkpuy#7?lvpj-7W2@>%POQdg>SIc zF!%+@?X56I_oXUsc<^Q{tMi^Kg^j7!wTRAQK$gTVe%un1Q|&P*?`3I-m!}KmcLs6%b@OA5q z!_8Du59}r_xK#(lnibXn9gf|o98TOmg?cgU4>I`v;UyQfIv#Ac?^K==IVvOeSY|5L z-!T2^cewEVBexOGx&?b4)K>H6xPRhlD)wLBg2Mz36kxt<_WxqGWUCY5>&4{a?T?PI z{{35=znAi@Bo7ea%kORAF>X}v7~ubm`h%r;b=0e@9&5&6&K@>w^J2$melS`GI6M6> z#@;DB@@`%CPDdTvwr$(Cla6htW81cEI~`jct73Jmj??+-opY|e-!M;J+6>^3Z&YlT&`p*$i9u&4zWp;5${7P2gxGI`an7VazB5B_AvuPRQoJm#hdr8vUk zbj!oyD&KaLvnnIaj63_=IQR)TYv&t;Jz|)VMG`aenPJUMDlIvphj(uP^92-lKd=IHsL~x%@6l)COKnM zjpf`&kj`Rus9aoM5Mgn!d{+UX%WGfWfoZGa{zq zkZ?(i!K(N;<`8j@^B~6=o7MID!nQ54xcuZicWa1%!N2I{8rQURz`{tdoLn23xRin1 z&QPKgR-XeMCn2c}ZyLPTDg;dSy^h*toXU?We zD5IWo>BTZ66TvfX_b|n)Oq#rcDp}t+!0eJQhZ_@Dv~7`UU@yz=v$Xkrzb41%lUU~> zoa`%IM0GOb368g?vnJiHr;WKCr@U9qd5pqHD(GicapL7zT6N;05gwbeOcWQRQrBZHucW_Og7&JKMHGnsi{MJRvdfd z5||D<;L+IRg!l}L@s4#Y!8CWj*JTBR;7dO1hCqcyiW@tH?MFd-`=G#f;ZQavMJ>*o_miXO(F_EuQjwZ@$qF|JEik~m z;w(V5peYm;i9^$bU?>zOQAICmB}u3!P%hK|DfnT9BHXFHq0+*j#TFT@vsAFb6lx|q zP()34f}_P8nTiS}Z?vp5FBrIt+TjVqe%MM8+sc}DEfH{z!}FcquC{dOOgR*iPLh;i zgy%wp^>NWo(}cgb85y#$yaBr1nAKhq)*z^sE132cOULdymY0BJTbb7<{*IelCLUvt zSnP#d^p1!ytyoKn`{@93IHHwsj5&;}*N?x~K1r6CTTj*!6vnL8i3&e7e}UunXBtU6 z>(V*60t-pGEjK9O{kVD--Zi8L$vMioPN1{ysA0Bhu(n-uF+8Y+m=BSCfpD!L9ls|Zy@2b}xVaNB6;i5G#>nAn1 zV%^?tVA#G6TIsO_{_ec!YF<+}Tf6;z)zqC{m;C*@u0M>8qs++)C%v@MYR;GHSJvQh z;V878Qyhy9sP4krcf=}kCdbliWLsRFwRzsiOH|JlZq3XUXg#-;G*Q~r~2 zU-Gv3frSaXN5+QSiJh5iz+=719ONtNJ5A9sIo%g^xsp`55u7p?QeWJ%^m@akb|yOy zR--2-?b2BIlzAyxhw{rNnbv&>PvSjVXkX-HEu`iQ0?$VLVzMj8%WaEthL1HQDjAa< zK!s~kYW9Z}UV=cr*tOhY?nMg~acHUBXC|DM(Kp-)z+f)J(+tDY0`)_p6*ReAfgoqR z{q(-dnKN>aHOhJE=fBZL_Ujx?5rLO=AK?DqT$O*uJpT(=l&kSe6IB!Klb?l*IR?jx z7A;j{Bg_ygY6HenT&Pq+4N0lGR+J^|rx8W2oRHn6v5gI8x5JumYc~CNnc?qom+g6r z^?n!Me)<<&_GW@hMLf*sB)@HUpI-yKcf9Y%c7AMuH(+R<6k@z(KCt{US-2KO`pU<3 z8jKsx=ehQk5#eT^X)ez57AiiT<%9|~bOI!~0ud15Rd~0L#kg+(*VJ}AYElDig*xSBR zU~%3I)@dpeE}${ixpmx9G48@4XiO0kX&ua!SkQ3I{jI|$+T0H13Tdu7J*H-x3ah_K zNz|IjyfHBtVP2tMS@>mnqaN;Ndy=$gSzu(rGuKQ8P8|f)x!kBiBfE|)nZ`+DHmJg! zJ}`Y8+ish%f_^%4jzC7vdVni98Ec=Bcu31zd8tkS? zSxv>6t-yOYRRhmK7qh;yh_Acov*nKCcV{ zp;6d1x&|K@Geq_}cQo>({&bQEAnv+_mP4*IqY$G0J)=w_gMvc1f`b4^Xl5_gS&?4`31dQf|@v z9(R*s9Mg+h|#54;n+)WVGsp*i4!>@q*Jh5Qg7K(5p8tyIZpa%8SRl{a|g&9A&1@ zD^e9Q$hN>E(F{PmfA6rqR>w+PBqq@Dpcb_@^5+RXq7C)Mb#)X8%-qk!Sl1vDt+(T$ z3tSE~_K?dX4bmth-*j1?>@Q6|TS-Eg4Gn2_BeFW9)&*3r1*c$<FqUUYrCiVW3J(d-5g6_FS0FJ=(5Uchs`V#M-N zh49EX@;cAoa+HS+lp#HL+utMYv3D#>su0r z7u_#Pe|zKH?k`URyK_|1LoQ(3!K+Mj+Aj-KwCRy0%%3>ET*#}bql3yd6|zHuQD(zP z)2`sr6iNceTCa?Qr20XJ8+znQtAqX+0I2C86=xZ%r7S?=QLPi9 zm!fu5e=Z3Az_8r8B%*P8n9}5x)hy($=CZUdD~)_~LM*M6o)k--z&^MW^b> zU_h9LVkZ=^VTj5u5)$Q>A>)-I6?aT*9V}Sc+g5~*(k|Mj4!RH3mZ-Md zP$8~c_Qhe3hNl6a;jRaYSBl2SqHO|CoASjsf(ymT{Y4krWY~(++CI^0WWf+8uu=Pa zD;uog0{l+^_6NhoM2vSMBk8#WB01Piq6R(75C4C=j%Q6|ozU_H1VjT21cd8fgGz@bHK7|wNq=`hHi^jgw6TJzOJk=3OI2~ zC!Qs3gF+0lX*3aPrnfv z<8SrzS{C0Q`Q>)okjQ&R%zD&|P_61NKBV{T;a2+RgzbI8?n+Y|86BG%jUc?YeB}>l zNR&Z|6_km>`N_kBBAXZ#47>W-$5v|um(aq{TKO z1v$H$Qc+>lnv z9=?Z&JeY$&#hfEx(1m9zPcNA*A<_{GN79;^o6upr1jojtnUEISw-6Ya)u7+Y`^<@* zQ04p~eX>>79o+qHC@1CVL%G%qEzk*eu^Y*+xlaFlIh>36j?xAC-z~Ky6B%4=C=d`? z;2jd+6_S6z82<%Y{4aXqf9JJ@YDW5_Sz!B_H+Qr0!f|7uXi+7U!P{Puz$CRSktMiq zvJKEd>nk}m@vhSWrfn_Eq1EhqtA5+J5~!CLpzFq`wb@e5@2jiv>C|fIzGJ>)E}dip zE|4{*8DHX_-nI|C^H01_rc(X${UQ3@-&M^_LL0!ie{M12=$ai+IjSEz$&D7lK#Zy9 z^n=j|gdj#AlN!$j(+~_wn)%3$j;XU9pweXBNTVYjs2aa4!Vo9}%`FYKeAQboAK?+q zTk@ZLI7OFZXg=B_nl~LW^)$~}Q8UlqLAK|_x`P}lJVAHVZs~K>8dT-_=wotFl2l>x z)Nb%0cGPe9A$Bxxz#tSSo(rQEpA%!s&G<+U#!!faqch8l;?3R0nDLYV?Du3 zPvuON+_yEd3~WQ=6b&{f(NIgRq0mEG;9T`TsMVlZkK$lWnZh&5X)Bi64i#RHZq$kq zn{nBX(yiOqETEw{fXN5tkudBbIq152 z8U-0y`qWaGO}cWa`Gg}i*zn6kzSxo4o?JGuDlf@2?0Lou%e81H`1S*SoG|7hBQ-V; zlbpz04}hM(f|4jW<3Tx&Uzi2?MJGb7{hv<{%?=-hQEd3R0|;zJYp&>^F!G#5rdVif zMk}s(*uxWN1xY@kST%Nz;gT$oW!b?2@t-|(2k7wWH!kqhH>XuxlKJ65G2bko$^AizQycD<<50V$c*N*^@OdG*H91fYg5#Pj5}j& zV7is}$~1lx6J@XbHk!}=4&gBVTn%)}*tpQvISkpoe!jph2$(V=}62#;K-r z=px{4V=SM&*G=uJvW$W==2-~S-Tw&1LunP`!S#K40}R=1o4hY>&d8@W=iojNb`+A|?nq)n}Z!cpU>tUAAOR^O1p%&9v1;e~Mr!?1a_tMZAv zG7he;E(v{J#iFLmvATrZjIn8ek0^#1?>b^l^(ZZA24gorKzagWWvhaQugIcXO zdv?~F|8oVpSVr!Xo4HtnUjoMP&&f$19Fl4>gF~eTLGJ2hhg3}_o3#}G#U%!zn?!RP z!4{mw&)JT{?CF+aW0C;KK6@%fbNaE0UTuSf7~|O{OjiOUk6cnbf^XVbX8_i%@uvg# zKEQS)2!|mjBsal+_k6f6_m5iZzOP2NzI$AB0?Y=2XTQH(tw;OXj&ZqkuFm=SKB1Ic z`judhBRFQ^Vxk)&K_F!Gdf#ou14?8X#gV$8aQC5b!&aX#wKA5qk{RwO!ly zj9#S3fpfT#SU6nAV|8c)SSQA-8;&=4hf|h4AmqgK#I6X|Bi^JQUvhn%9ZFX#PLyfS zQu$;$zM^i?+bX!Uuk9@9_E&+n1OxbcWwm-2^nejN=dF`W8^)>>#Cc$L@=1?vuQ#K} zJjXsYEEOT{m5D-P)P}ys7UNH36m!HX{b7{zuY4R~4pfGV5Vi^- z?R147D%l%2-?es1+bV6G4n$6GRV^?5ko#`rA+~(xQE|GL`XUzQacBzeAN=zkHQF&6 z=utZ0$Wf?>HaxHaz7Vdtqw>KzA8y(;k}a|po=YGKccCDE^dDZ0NeGE>hyCRQSXcu* zjL_YUN!=4suPJ1@J6XnmB6T|AChiP{Y{!9n6(*xTCBh?gJ`=4!L#e({8F5LQ^NHK@ ziL&LBgD@%`@R`-CxQ8~aQh5hAwL^!2&`ZWw-(Z4`t~Sf4PcwYnqZbg3OF+Q)geEkt@yolEpC*~;%L4b=P0^y0Dri{E zl=}4S$X4s4+!}Hx*_v{nC%i({C)#4{GV~O3b$(7WKQgmbWK*gp&bxUUMh%oA%7c;! zx(&fgJb*6c%(FyzY$UeZKe>rJnXJ6N!JD1G?UfS-rRUrJPT&TM*qJ(ZaX>5z8WWQ`6I%l)iK;Aw#p*5+1Sy!PYF$v#d(F~e zlJVw4(QrzR8sIQTuC8dICuw?1O_$+skzN@fn3j6>>((^zdtd`qFYxpb#MsTs)|B4a z%*4#f(e-a%f?bi>euxQf>m`*Wh>X{X&2mDcV0@v-Mp(6_xIYO_n&b6-LtaF|W2_tO zZA9^^Dc1Ci7wWD=a55)8vNT%E`L&C86`b5`mbh@Gr4j_ zJ65U{1#E6h7CTW#*-{BOTl{*N7;L~W$q};8OAJ@KZk2m~CDWGEh{Nnixn=5U$a^A= zO6S!vB4PRte9wb~B{5?86_fMf1@v*wmE5ub4AJ5}vlh(B=O394d`*aR(u1JTT8v9r zL3rHzzfocS`UikN`u_mIfnx9PO3%dB>c26v|9U)O{2`4G2$4|*LS&f#^KoJ0ztYbp zuA&Zhc0k;goRz&95EbVRskd*QXR>sT$RK2|atttr;E?nmr)Gj75#sc3S% zg{HQMpgQRV8-`_my7Aa2dgk3ABO8PM>4BZE%xJx*DXG{s)S>6xfo)V)rc4IDjb7in z`Z(ts#~iDF@#K+*2i08|T5%Ljesv|JsXb_jvc~EXk*k1}SR{nW{^71p*sS^6?%T5T zV8311wA*T`81$QT2A9-60RnauX9iN(QV&JgCAnDW)U?=g28yZX9h1 z4vh|wH(>=d56jrEhB&k>6k}hs#G@_%vQk-e#j~}_c|~s$8l>GXu!-@Q5qW4bq?Vy7 zP9baCP`B5MFtnz^UeGm*exwy@SSJcJ)DF4Z4gKAUiXla+o&n)0)w7AvTpW}qSYv`& zqk?76l!rDUd?U?5-^216(?>K6+y4%a`Kv3kd^3wL19rhv;OpP=r+@X_zjZ++BWECO z`M)gC&=}#rnC;@9maRIl?nhk_HllM%XyD=lsKf3R^j4tKza1I)0>V*L^|~Ad?ga_W zx6eO3LC2B8p+v<(PHpYmcI|328ph=}W%RFXW+<)jH{D3DlYo0s5p2!#vwpyG3bA=e zX=7?d4IO&4$nyS)S1PhlgojS^OsZ=fKJl+a5o!I%gVMbs(vnXp=`(IHAB$6n9ncsb zNG$LC*VuRX-}IS2|29vlh(P040EgWZ(Cp>=&tdnUzg6DK#l_0rLecTBUAeHc1@JC{ ztJ%Lo52^Z!i-u@ppK}~twdbY;TmTj2*_F z+fm#PA_J)+(%V7A-EbD*%_SFH+0itLOKwFV^KP}}AAF~R5Oj3rL-k?hh-5bMKQR++!1!jkqtL^Suy4@riZoUe8XE7$ z+A@PJ=Ggr#^=c<&YFv@04~jUUH0sGHVz?)aA(1vhA^T+FCUbSFd||7OKF!UQ%W|L1 zlH|Rn)}a}Bdt4Pn1kx+m;01gyQ?5ATDuKH;efTP!i#%~jMH+JT1BZ6E1>04BN#&-a z^mlZ|EIqYo+&X#tsZRPZruJ%=FcPFOTQS$38cIz12< zafr+!DU!R3L|QFevX%8LK!)!7!nOhBhx8JsGci4>SQK#wg9Y|l-j8v9a|zKb--pe0 z9z}#+pcP>7@e3)(&HZUtOuf2*HNL10U-S_rOb3-W zA_>?co@&@>0BiVYGd18;U)yS!GB_x8g-A9K*PdgQWCz0*v*aSTM1Db~H3GlG)EE?B zV0{pydHh@2{IAj8QzOrk2pj>yz=enZe=`F9+4WU{)|9;kaC|r#0b!;8Rk0vfZB7vt zXi%AVnHkv?-W40R2I&+knNkx0(;Ov{(2dBbaFN?(mt}C;?h{vO&-MKi*Zm0W^j^VMae>N7F{0s;qZ_VIIQ_r$h z9*c@o4-2IKHEx(qoR%+WI6r9*FvhBs8vDM?SEsX$tK3S>qT^&UD1elw_C{3!5x!s{ zb)5^o;Pwcn$P?S-?L)$c+(95}yy`?(ZwtHA4%M#h)El;bBL--j&Z3teB!Dfi%j(6* zbMWfiPL+ZCPQRtR*y(d5l>@Vgp)h1iDho(_(dRh`TaJqI#VklRAVz){U4?}j+y2M`Cz>QTWQY@ShknOmmvx?1yyXUGYQ`F`W9!lr`sLpz}*LTSh>tk zu;`0abx;gWkzg*Re=^hHG-TDKQbUh101Z*ryRlq z#^aZ+M`Rsa@7rrYR~mmXb73y&tnRwYQ66z!YoCbs6az9N()WU8E1qWzN0(_;xo z2N_4Gv)^7HXss5i+d}`v13>Y(7sNySYaci579qrj5@O6fN8)SIAws85Ec`7NbpZfOv2}_eoGW zf6!~8zan8JrZV#P4>c!b_xLdIP+4wsaP@px_v{hUGDuf6tJ34C0145mj)@av;@q2% z-Qjea2NCfx9N-W&*P?+Y7$cHm-LqzKIBH7(hI%!MG${%`2E$Nj?4wxMbf`Z(ZNgmrq%lEI&U{$r`9UJq$r1&h=dm0$7>>A_|5#75}Pz>>kxzW z`hYb*5}F3b*U$a!nzz`!cqJ!naPbipM_$e0c7&kuyOOzj;Wew2i^@cw6|S1a0&t4$ z)!ThJdyCeY-@p%OaWMMY+ypV5J2YJx1#jcD=)NlOH+TH6RuROs{2T+q>cWBLWd2t( zkgPqhTFgJEp?@lnzb(Q5EgMg?BXqwXrpekAU}2#kfg0sm38pTHU!vz*h>J?XgmC3z zS~iS4$YB#}#Yo@Xc^TLm z;2G$ZDN17@nurV{W3TR3z(II0KZG*%X$3OwP06{o%kBRd-1H{%Q6K&8!yn^qW;^7| z(iiA(H_>hi4Ez}lUWeWCk8XVnygvBa^R6@)|NP8FC`fdGMUZl1g6-BY_zdk&>E%Tg zlYjSQgdM+YA@_C<^A7qX`%GT#r8Za(w91ugN^G=_18i`QBSMlx*3&}^?dq-0+!aM! z@Bqk`m(3T6E6BP)TFr{qpyg%b=qMZOwnfIP-;BF!H$}F8xKL-k@b1}E!z-VdK617s zhT*N+a5Gk9>9iBOX1Zfkhc7B57V*5w)(YKs4mUm7lIOHk-|$waTJ|HH$Q6Mhr(d=s z0nEnM_LCF??67ejuWupdaV?NfSH@0P6?;o9`hSl5Amn-%nc&-HcSU@i?#v_#J5Hi` zzkAKvVxd9()^fUAL6=*|$Kfs6{MsT4Jt+2ClaYqCWE=eSg=KgfMav`ENo{^C6U_owA?QYOko)Cc&$(R8bTXW8G>m{#{J^N$~iv2 zv((|Tgn2B`9DwggETjZqnGSE-Y-=svvUomSg>f&G9MG`Ubi{Y3T8oUQJ{4&X5{83j zW3X4{Np>fU{3ZO{4n8&m&7=9DQM z(t2Wu!ps^=4W{(B6*27Ca3Pqb=5xCq75J;64>!*&lC|!<5{1!Z3~)m?!_1l}47hko z4Bo>S^hd+^jSZY`WXp6wE?Y}<6)T*!^_jjf?meOWDcFs_2o~HEiM#%|Q@&y8{+RO= z9}w@MY49T+sY^+WIOq7i23FivwafkC3hqId8MnIZBylhVL9jso;Q*}U> z?%nQPeQ*bS$vCxY7iAl{;}Pu9IxvpBEe@}28NzX9>P#3^e#(mIp$wDJH?V8Jm&KB8 zX~T-X+!kxGV$p%|MgsprSIh0e7TxoE6-=)K9baKK=~YE}b-F?N7IxUY4qsmYZ*7=C zE)>56AToqK(JTJ6F%8aw6Z6Fkb?8TV{{T4`>F2FM6&P)cmYhdU*5fRP^*X=oN-8!8 zjHmNn>74;S4(x>0ukwdB&^X3FEl05s(fs{teQ{2hzqWeVAX(y!Ij~|{5?{mK3*Aj9 zDt-y1qHi@I#~?je9x++OVkG*|nT=E&-)xCOW^Y^A`HK3fIF0Y$zU-An*>(z83Y&f; zm}eX4AG25(Cr3VM#63Nd!;uGK4Os&eS+vu^K2eXL#!H_Hvg7vTkJeF!E%`Ii#A^r z%`Fy3RC0$*j!3O1UhF>f1F}5jq?W*=G2yPTtw-e7#-mb#;kIzTh+5!*>f?bbHZFO5 zpCC_cRCt3G!la|A*{N3z4nu5SD4QdK=5)c`$f#9~0-@wxJT!wt&PWytTw+0MIcxjc zI02HPFp6UG@A5|N9N~0NjNbhkk6^dH$7%T2TPwH(JJ7F=E`|q4+KLAp*3z<`z#u_| zxo@);B~xUoi7k_GsfmXQW?5Rk{+s2zKIOMxTUeOlSfUT1I)=> zID_!EpNj5I@9iaYgzpH{qKVXZe#eJ+P3R6Kx}h5-y))Zy@$KwqLcX34VqDP2 zg?z%Pz_X&vvbNUHul*ipv>Y86OQhP#aj-p*XmB5ui{l5gw>jumH9txZ0j-Ac?AoYJ zi{`aVaSdvET8HB%d!NNuocf91`U|`4wH^-lR(pfYy3?97H>=O&rfu9kB>!XyhUHZA z22vNL4O`=S4MjL@Gn*FIZueakWt)a-58v%*MugdRB#h3g&Y(>X;0!;<^^?~meuM}u zW|x1+Q*VXKKBds{y0gQ*vA`KlRJpVmBi;d)MqmFah={G?qtizhSIuoZseOyw&`3cRn3FoyWJZ&~K8Id5KHmp7G~%1IVgSgcnvPXn zLXJTAO)&VE;D@Vy8TU})q*RaqBR=qaAsXe=_uTQMmb&R2Vy7>+u)LCYlwAzOm$U8_ zDTcDaARxB8#*7)?2XROd+n-&!{;z&sNjV=X3<~Ji=abs?<#>>zFMh$t1Bdf=$Y=!j)Phr{Df>uHdf` za%j9vxd$8}_COu|S9Qt1iah=+SMWc3cIx&v|350aSA9waxR2-OpCB`05rRUx4UM3h zK!VyUB#9s?EmcR;32ic5B~v{(H4V#>OZj&5O-~9vo(9t|;B$9$bubo}v#X(pKNAL7 zgxqQGc>8MeDW}i(YUc3cy8RmD&`DPq?f`~|>8EgY4pZ{r;mANrkkz!96MK{mob&oY z9>EBn=sU83{l3K6 z?mZmw6%O1)s>M6Roc0!nvrV4O1|}zi&<>x3Kq! z#R~S|ltNO$F-z;SjOgTWzMN9(M<>P4{Onzwb56qw@0N!$H`U&m2q+(&v2 zeTpMWM&6Fu>9((dfpe^kbUVKaXYP7IgNZ8eEc|S9J1N1NCD*E5G0KE+VcV*}elv#I z;DFS5a=Xcu*_acn|K?1Pt-;HE+o7q2pIXi!gW9MJTSDi{;?zn`lX3Oo4$LSc zHh?v2SQh*jQA$RPYkO~oZzmd|j~}t4tzVWKX_>_c2N7Pi!V=Kn3)NLx#-EnR?~tX6 zeAya5T4;YV$n||Q`I^wu$RE;jK`^-SOmK+LlaN4?9VEy42btv!Jk(c$^DRi=5xx9W zt{TMhoWb;uj2`t1t+HH1k%bdO2al|Qsr24zt2YVBU>~sR)^E05Gp_gnkWAQw zrndO;Y|`CpH^WZIKA}mq0hhzlC|v z%QcaD$&x&~;hVK>Cw{HPtAN0yn%zKonqtx`hFnQlbRaE+iFDA}v}V z-l#6AmZ+zFyztih0o(IXdsK?pqB>YI?fN<_YVk_>D!Sn(sbRX_BwLmoIh(hf2XOHC z!GA~S|M`j=kbY~2$IC=+!V||K=Vr*eecBIa9{Nz`IZf^eb`QNZOn>VsJGu$I6-Hws zEFlm#dsZ2gz((9lT2kamH(D^}C`q*wJAhP0?zDo2C@Ud7>WyMreR!Itoi@+zC)rzl zOcQ5+SjJ|dB{G&`z@}bqY=iQ+@&mup9)6kbxC~F1GkS>9OGNq7*i4!=_t#f)f(@hw z9QGyWOp0tAH&SdT7UlU#FI|rTDXB1ks`k80TbgF*M2&U!l1#+8d0&%I?wS-QRF|c0 z>O##Goeb9&)J9WuXHhK%9DO?H!&XIWOG#F!6JUt~Fm8|X69`1iO-51q1roz7*}M!P zic64@h=kn=lSPHCsGydH!RD>ggW6x)V?ABb#_*WOV(n$s`s>5*i=I-Q>R1yt`##;- z#b6$$NlkrWysU_#uVY(3*gRc42L5#2y2cW*!BWnII;fo#VhB}Bz49uFt+6tF{$mHJ z5fwhkY`@N#GoPzMf{nc7+oBDNDkxW`Gv&P?F4LkIob5Nm)Jxwg zX4aHChHSE$OuGW3;?K?6c$bSdVIGZs z1S#HB27!sZ!sSO_Vm>f`vk}=bBxG#Wg;~Hd+&i)Hz<2v*tTv$etTVt#;=U72qaN<# zycd_|p{Fukv+w?GT8qb8YKzm1kdg~ZV5e5nYPxaU@9(>VcV4NIg3JtyJ8X*kH=9FM@Z zC+l3~VHjTBwf#oPQM?lFh^_r3c}esb&GJMh`9wFjR9ggv$?jQK_=Q`_5}Rowq&u7) zA@ETMjB!IdhVLUIrx_#Q>V&L@E{gsCyhd(sBp$dR8v9(8e4=&DM-v=3Wov~+9`Thj z>-304!_kK&?p|kp@MRunYdU5;N5Dujfp;t@;E~^%q@dTS&o~LzYf|SHq+4rnUxm!@ ze7S72NpOj#N_pEVP^Uca0a2$UUFr=>&P%q@gMi{rMo;y;I6?PV2II?d(*LbC<5SbL znu()P`0J@L&v~e4wj9bO2FGYIaXn(#x}Z&{K$I^J*6`{ERGJI0H1TS#fYAM%#myb8 zJU5YVFu1|$+Vo5RpvK_Ig-W}T!DNVT_0XlHd1~z$e}Da|&&)P!hJrKNW02|>%ml$4 z$8V(G*tXuf36{1ckUS#t0gchMVTP;k>*4xz^M3Be3D^WidG*N0+JE#%x%DW$jvW(! zh%iD-)_XyZI7Yjl=z->pK`^$e4j8zHSFsKlD72lHX3*?iki6))xewC1bGpPhEA)lq zd4)*5#lwqb!z^`g)<2aV`>nMT>O5!Kot-$}A0`zZ9%pXNU`*iOB+0(X;oJ#LWR9bj zh|JnAX5#ddzIl%N5w`dW5d_)ylvQacBS0%HeGNj@m#8696+oOFWBe4`h3xY}Hd*+Z1 zyBs&yFsCH{EdEiV7%K1#_F5d}!SMwd*2{;qCjx&8_VM;ZrTP<{$cCgM85eM(__MH@bcJ6=dm=#ccqr7-8Jw6o!Zdbfw_ zsnb4ExXMSWWHC1lLm***GtB`VO z%U5+KGz0yvOTH)u_!l>vbgao_Nh2zGl1}pPgA5nxp(Yk2n*3c5A*RgckNyKM(t*M2 zDW<-kfrw})65!9zP#rBCbR``Tiqs57+#^LZm~<{?bbcbIF(d0gMxsdvrTAhs8q?Bh z%irOx5hu+~ZH;DsCsNWO`B8`&J^q{3uj^@_kpdLMW61yGlKzhtH~pL8|1W=EbKM_T z6aA0G=Ju0zj_CQ=_SD~{|+2QwopFktb-d*Wl!xd5!dIwlDA z%(SgofEotJ8i*8waj2Z;L>*Ys-7s8CGNe#20;r^D44IPF8))(b24A(Y^JNRrB|tZC z^-%JGF^)OPThKnFv1pdQjNL{?^7*)QQy=a?dn_j(@t$vS2k5tc>Xtne3V!U7^?OZP ze)=FjqNC?dJ&8hyeVN1Ap0cMtvV48?1P&9=aUqxH>nrlb&Zb@~ZLY=Rxs}mpNjzGu zzZZ5}bO;jXS*kJNm+N%0LXu;@NdnBI*`tCP`o~kO(7#5f=}=h(-;?{^I4xIMhC;hI zDYL_JO_e&#G zXMsC$z2F9v*41^YEAUSnT}7%6|K&J`&BM>^6^P~P&PDt3L?QxQ&NLg!?j|<~UZXUb zjh>-)uHIf#jPe%p+QTOc$%dv7z1?tmP(r9SY`oV_croDG{{3q!I{VvcSZ7k5y5fiF z`f5w3G|1+X$bc|kaaz>|#Y3}RvFz0o#@Q;AKabGU)zPPaNOgy3t9gC7)e3mQ;_7gX zcI$DgNtfkK9L4j;pcO>;EeEtd<*yDM?cLBKLy)&@0mmEK9tT7!t`IPkEA3And+oC( zBCP?*8)a-w^qyc3GatR z;-d`X9c8;b8t6UYoM#Da3q=knShMX%;!?BH?XZ8XSZxfb6X+pv4QDCdLMAQpAhBALYJ-~;FpllJdO5l2^PS-G9si>ya4%QC5 z6zKLm3z-aPlpSRW5pOiDDgDJH6EN@*p@a28Z;0#GPyf6Ut%h^d{PlsD>_s4kcycI! zEr7}Nswb%%g4zSOuu~UmM<~QN#rOj9(2ZH4G1Pb;GU>xciA?TfwLyMRJ*Olg=| zqa|;c|BPjj?{mc=IV3%!dZxG&436d26AOQd+sE3Kibob7gr0=ixtc9e+?STg!ShKH z@d?rhQSk2~eWY}q4Rwi;?F-Fqc0nelz-Oiz?m+qssIx(cfm-0-IN-Xc}mg#q#!w}_a~e*h(CN?ROBur_UilBNT1if>@_!z{O!x0t|GVUo3+W@ zA14m`e{2K*Z@H7FqIle7r{Zbo=@zy4rt?E&zBz90IcN&b7Fp~Rd>G&sjbGzcqnZ{Z z@K{I(Rr9A8OSBTOPbL=SL?TYdZo#c!SCQ#jW}m_HONWIokbQ!9Nrde>|74HnpkJ`O zeihOBZ6(JAGngxhH^#FC)`x00{e-ngmh%R(=E-zHW~8_c@hHuAbaW=)2La{_zNxxO z3}{8L%AaUtCFqH=G<5?u!cesz43AV%MY+97V>sDGX?^d5R>mxHOEv;@aFH3SAK>xj z>S0f{=IONyoj3o{>I074z}?^-y(lC!&Qg@8n^WvWr~KZ3Xm;~7Q}#NVYk7+i<`Luj zXVSO&jTTg+K>0G|J|Rj>JW5su!(34YLF%>|%U-0T`;4ay9M=r6q9SRIHnGY&@*;u) zT=77~SP1|X!SALDC?ttQv)_6<3H>axZz}qr=sUs?;$y;0AOKOe9`GysT{DRk{q0Ok zUpD53D~CyF9l0Eu@`a>)dXi^%ciu%Q=Mw0#6Eq!snc?;5=NgMQ__;?Ve>?Zr-^sPr zgk3BRVR{jp)XMF858=b$A1B{W?V0(9h+pUcUUBXH_c?Ej&sUfGRK9D}W#HaFG~`74 zrbOe4NkqxNy4?EzccUv>nBCR~DC%H=qK@Z3jV>i;2WvAESKyl?FdJ!Q=JK~C{@((V zxk<8$gFK!Y}6IP!1b~{ZcLS=4!^{6hgwHPhVhk<(zNjikyGu; zY1l#`{y_k#UuUnq$~mhe%QOAML`Lj>ZTd713n@-V#jCA6y7qU!#Pp-~={kO`*lFhJZ2T$ts@(Gy zc?#+ZWE{$ETxc8~P58ISilbh^-zyP3R3zbifg2&l{xZw4kIfMp0ERGU#<@L|g^%D)sxqxwKkG3&+eJ?NY{LDKt*E`B?e0nN%2 zpNc%S2F=P8r-iO~@t~~y{cjN@7F*3W8K8Ly4zyq-{Y_$2X23E#X7(;t zu2$}5|8o|pRP~>MSXLjpUE{>IXYG-wG{)}IS7V}B8DkMLYmvpLFOWIr>vrzxz_N7y zyCdmY&xZeBXI}wS$Fg-zaCdiig1fr~2*EYz!QEYh6WpC3!3pl}1cF0wcL~8Ef&b*) zDfKAd-vL&my$Rq^mxzUAkjpVJ$6PLcSiYLE_W(yR-UkZ z;sXOyV3FFR@Z)cdM^JWbFweGLE%NgUGLq${cY{$J5ywaG8{T>E54f zqeQ;q1l1*gk~wiljg2Hgo3$pabzQY_J#ng%J!;JODW283IgWKLwBrIOy1OA&VFkC6 z6#uE|z}?W|Ff@mu%&&~TOFocwN<|R*Lz1o;f^l3Yb|7z4pKhZE?dU6GI1|f}n2{~1 zd{ORWjco10oI4Fr`qxNB)j7D4*y=m5cX#(i_~0X3A%LAM#HVPICbxO|9R@;D^>sHA zN*{918HIuz6(R{xp4Fn3wd*+HQZL++y|ie&Bg-8+Uo7H`wuvXS)-PIYlV^$PWJiNC zP38ipNokfbHbB#Y%w%r)vcmk*Ad9o7vbLBkXz9Y7*-|2Ed+sQLU^cEvp!+fmDi11E zHybDHU{@M7K!9^77l{e6+$lFhnm3#tfhcre?Gxjst&y4BKC!|&&&@WzFT!R{7K}7D zMHDmvRa(U~BQo#&O+?S=v%Axe{xlURe6PqA$hujX8gZ&rcT!MFF6$Jb>9*|R_~c!f z?BMEAhFfz}U2;=xP~H$lm(6$+D;7RL#8xL@F^>9$qiQVnwpNN^@@}5uONAPUeetJ{ ziq|Vipnm@Zt_vJRAny#@S@a88yvQ9kXO{ripswiaWA7|_`=XU!Ezqm{8Y~l35Rg8g zBo^hr7_Hx(g&J_K%G0&FbZ1;~abV;zAOU=&NP~v4AR@k>Sj3d$!I_|gf?cKLWBmr7 zC8vNWzRjJYy-+O4)$>v-DpM7g4pA&EJ29{-@mdnFJUO~p)>`ne@mO%T(AsOiOi6kF z43YA3W8;wDqoQ?Y{^0ba)@Aw2bt9S>Te!mZ1mdmF%@=V2qQRXC+^-Bt_wqysn>k86 zM|u-Qp&A?b8IEQ;JUE9lAG>u^X4o#x($o5RcJ`Dzg5+=bL^fi0Fizj{jqdpKJ>6v8 zWYydt%|QHwO%ye4#uqg?S20OWc(TE|bp?L&3_VPmN2fc^OPij|WY8om;@QP1FrI(X z%d@VJ)e)8{d=oWN)~VRw(k`WD>od$i80?KQYyj;VuaZEum_n_!GhtS@!=_U9sdfgY zLv7!gqvp^VyKc5!r2MdJj(ly4R0yU;i&)`VFRZLn({ljkStIW3zT-P4?LJ_(9V%6B z1wi7RX`vMNO98B1Pm+r0WpUh>>5>Po`B4Y#*3rkbD2?;|7Gfu|o{QA&v*w;f@@mi< zPTIt+7wciZ=b*SRw>Kz1&O&Bry1hB)xN)sk-?7iA|AfJl)-v5ck_+=?Jh!^HOu#yB z&^a>TS&vaEba0ue&Ok(ODfVQtO2(-k`66}{WVe-5%xig8^FA`g$a-eEa#q8cFx&UA z{r;z`@^on-G%LCpZPvV#4YJ(}-7z})9`?03ks9ND4LJ2|h{Ef=g((Mmw6@rYtQgZ! zhRh*#CKhk3%wau>tRl4(J=hBD0?lf0xdpK!d-0m zbpTUC(cydp!`L0(k&YJ38Sl(5<}pfe>)57d7+0#AoR8+WlGvDT)T~)uQdM+L_1@B& z*J?DEsHWMOV(1RA(HhV-m+}r8D&sn}euPO~?95p~L;h{EUleH=G50V$1 zVlZVn;A(N3cBvR^rWrU0Lnl4iyvu}vxJm;0HgzUqp3*WEfik3wf*#R> zlQgo)+Xvw_N*5am1J z8OCP_Ce~>XT3_H0~$ijnyU%D6Sjpj2~Bgmf@dKA=EqoG&>1y)x=jEK*7rD}S^DB}hQ zF=|0<%7!ooW4^G}szMs(7Fje;Bh1a21vL>*8NS+3ylGvu4rhsROT|r8i79UY&wdj$ zAe1gju+KGMWan*<%|^x=A7r12TAu|7@l#h$DXK+ud&isIb31v|!?p-`xm2n3KGo8wS zYrS)AU6?{20&2~(k&p&e8X}etS5Jb%hl~tmGhE2yx)-MkM|YKJ_W=&o7~yhhybhF; z=dn4$+2{~LqsJ*=bUVXC4nfuS&&Okp-U+F1Qh2|AQB035&@J5i$_8ckNJPXY!cja; zu^Z-f6i!d>3v6shtR<^4;ik!K#xX0%C1DqqNQKY3(-xU9#J8iupG zThNHyp9@@pAVYDu=HOWLQ`)Wb?oz|Kn6)gdTDMJP2k$W#tmnKA5I&6Q!+mM|iExC|`#Q_7`G7qfgzQ1FMXa{E&iOQRbdKs}<1omQaX8905cd6_jA4Xzdi< zZ5eB;wTi?30Vx24YG1qt`B0~J%B+3_Z~ykpMHA4e?uD{MW!q6a%Cke+^iGA(N;q0Y zkrE@;+$?O~xPBarNOuvU@A;w)>G%lu3Zi*QJo4H|r2^ zl`6gBGH3KS=w&VF2cSb4_5z@x$0l?Z{Yi-}Yn8(=8ADUr%|6wWSd(`DC0W9Eft>*L$-HSn14w%>bZD^7d-fm3l-4` zi&L`8juks7H{%F^y$}kS7M`}S_6`uJ4u48hrCe<+u|)-0dgK}TlJgot(MV*lAm4+- zNmm6AbfpzfsWprtZCD1uI}W8qDJX(M8*!8%)^uPe07A5iYe}}tc75q4!_Vxpuw4=X zDoo)_g4xB@mS=a+py4L{t8FLxHCs~t+N#&~8_Ao!J%SgEUt9KG_m;gDMuNGtYq8BP z{lN29MMKbijKL?MY1)s_P~_LO4b%84=<0CW#%V;qH3{F;mPc@((iXJFhC|pYNirLha=m ziWUV2_($N^6X{6+NVBcR&PvrC*pfYu4&tdIZV)+e3KCit%B+nuW5D7r3e@|_p1`zU zPg#WJo(g~Axr^)#FDDSVq#Nvj6LyD&e{!(LNQ0Kn;z2yeSC&(bU4wgMB!{2Z9kJAN z*Ws^_ZvlADn@gr$Ub4>u2v*fR%{p~?gQLg9pj2EN-BI1^#3Qh%l(BogoA?PJgXr&x+lH>C92l?8SlWFcWC)kZ+?5RUbt!(Sq zryv_5Qk0rOC!m!jZ(tlVQJMMxvB<=&&ATKabCO7tNz5h|8E@X&4-Z964iMsAD2J7) z?bXvps#u4qJmnXOGPsAntvae$eds>NZVW6sAU^*9hUX%<#d)D5tn{&ZbN`J_iE?47R1)`oW+`S8I#;$P{Uad@unh>s2eaY;C;b%KV z-nyF1qtxJOT!UT-Ut1^SIY5qt%3lFnr{QO-?K`--9AiU1eA4MC{(SFhlkqsGx}=rE z7=;=DUA8^@<$9}4q>Q067q0THG6Rq7coRR&i^>a+7Mi9($)ZCh48JD)sbHFlEYMHN zz2WMhxwsXU3nxc!hVaGSW3O$=Nh!~dH^VHmr{+$f#^2H27QsdUFh}=uK8o-)2am=$ zn@4^)ImqD-emiy|YmHSr_5>$$VYO(KVF)8mMNsVQ9o?5$uaURotQz|;iSA)ri$TCR zsLiQiNmClfL1{HkW}mZ>+}ECb)w#jjP~@4~w3)A8fUHEaz2+EK?r~+% zk;fXx)Ra|=4)s|uqjOSX)sbUxMAMLZrz)m_$1i(yjta5YTodUHS$st;M)U$IBbO;E z8#*dqK2wUfAvsrD#x7G*XHkmRjqGUMYHB3Ik>Vu3}g3& z)=B~1HCR)Oj{@fz(Vpr(-BKUX|vI^z;|Im8utLdU7P7>7q=#mOqAbxsYt{Rm3BqNETPDs6;sC1)9QN< z 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 diff --git a/example/Sample1/android/gradle/wrapper/gradle-wrapper.properties b/example/Sample1/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b9fbfab..0000000 --- a/example/Sample1/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip diff --git a/example/Sample1/android/gradlew b/example/Sample1/android/gradlew deleted file mode 100755 index 91a7e26..0000000 --- a/example/Sample1/android/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# 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 -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# 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\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -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" ] ; 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"` - - # 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 - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/example/Sample1/android/gradlew.bat b/example/Sample1/android/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/example/Sample1/android/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@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 - -@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= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@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 Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_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=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -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/example/Sample1/android/settings.gradle b/example/Sample1/android/settings.gradle deleted file mode 100644 index 8200536..0000000 --- a/example/Sample1/android/settings.gradle +++ /dev/null @@ -1,3 +0,0 @@ -rootProject.name = 'Sample1' - -include ':app' diff --git a/example/Sample1/iOS/Sample1.xcodeproj/project.pbxproj b/example/Sample1/iOS/Sample1.xcodeproj/project.pbxproj deleted file mode 100644 index 131a880..0000000 --- a/example/Sample1/iOS/Sample1.xcodeproj/project.pbxproj +++ /dev/null @@ -1,776 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 008F07F31AC5B25A0029DE68 /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 008F07F21AC5B25A0029DE68 /* main.jsbundle */; }; - 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; - 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; - 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; - 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; - 00E356F31AD99517003FC87E /* Sample1Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* Sample1Tests.m */; }; - 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; - 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; - 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 415EA5581BEB154F000C8125 /* libReact-Native-WebView-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 415EA5561BEB1546000C8125 /* libReact-Native-WebView-Bridge.a */; }; - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTActionSheet; - }; - 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTGeolocation; - }; - 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; - 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; - 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; - remoteInfo = RCTVibration; - }; - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = Sample1; - }; - 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTSettings; - }; - 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3C86DF461ADF2C930047B81A; - remoteInfo = RCTWebSocket; - }; - 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 415EA5551BEB1546000C8125 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 415EA5481BEB1546000C8125 /* React-Native-WebView-Bridge.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 415125421BEB04C40042928F; - remoteInfo = "React-Native-WebView-Bridge"; - }; - 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTLinking; - }; - 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; - 00E356EE1AD99517003FC87E /* Sample1Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Sample1Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* Sample1Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Sample1Tests.m; sourceTree = ""; }; - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* Sample1.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sample1.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Sample1/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Sample1/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Sample1/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sample1/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sample1/main.m; sourceTree = ""; }; - 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 415EA5481BEB1546000C8125 /* React-Native-WebView-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-WebView-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/lib/ios/React-Native-WebView-Bridge.xcodeproj"; sourceTree = ""; }; - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 415EA5581BEB154F000C8125 /* libReact-Native-WebView-Bridge.a in Frameworks */, - 146834051AC3E58100842450 /* libReact.a in Frameworks */, - 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, - 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, - 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, - 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, - 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, - 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, - 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00C302A81ABCB8CE00DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302B61ABCB90400DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302BC1ABCB91800DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302D41ABCB9D200DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302E01ABCB9EE00DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, - ); - name = Products; - sourceTree = ""; - }; - 00E356EF1AD99517003FC87E /* Sample1Tests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* Sample1Tests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = Sample1Tests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 139105B71AF99BAD00B5F7CC /* Products */ = { - isa = PBXGroup; - children = ( - 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, - ); - name = Products; - sourceTree = ""; - }; - 139FDEE71B06529A00C62182 /* Products */ = { - isa = PBXGroup; - children = ( - 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, - ); - name = Products; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* Sample1 */ = { - isa = PBXGroup; - children = ( - 008F07F21AC5B25A0029DE68 /* main.jsbundle */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = Sample1; - sourceTree = ""; - }; - 146834001AC3E56700842450 /* Products */ = { - isa = PBXGroup; - children = ( - 146834041AC3E56700842450 /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 415EA5491BEB1546000C8125 /* Products */ = { - isa = PBXGroup; - children = ( - 415EA5561BEB1546000C8125 /* libReact-Native-WebView-Bridge.a */, - ); - name = Products; - sourceTree = ""; - }; - 78C398B11ACF4ADC00677621 /* Products */ = { - isa = PBXGroup; - children = ( - 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, - ); - name = Products; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - 415EA5481BEB1546000C8125 /* React-Native-WebView-Bridge.xcodeproj */, - 146833FF1AC3E56700842450 /* React.xcodeproj */, - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 832341B11AAA6A8300B99B32 /* Products */ = { - isa = PBXGroup; - children = ( - 832341B51AAA6A8300B99B32 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* Sample1 */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* Sample1Tests */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* Sample1.app */, - 00E356EE1AD99517003FC87E /* Sample1Tests.xctest */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* Sample1Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "Sample1Tests" */; - buildPhases = ( - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = Sample1Tests; - productName = Sample1Tests; - productReference = 00E356EE1AD99517003FC87E /* Sample1Tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* Sample1 */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Sample1" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Sample1; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* Sample1.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0610; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Sample1" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; - ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; - }, - { - ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; - ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; - }, - { - ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; - ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; - }, - { - ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; - ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; - }, - { - ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; - ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; - ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; - }, - { - ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; - ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - }, - { - ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; - ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; - }, - { - ProductGroup = 139FDEE71B06529A00C62182 /* Products */; - ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - }, - { - ProductGroup = 415EA5491BEB1546000C8125 /* Products */; - ProjectRef = 415EA5481BEB1546000C8125 /* React-Native-WebView-Bridge.xcodeproj */; - }, - { - ProductGroup = 146834001AC3E56700842450 /* Products */; - ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* Sample1 */, - 00E356ED1AD99517003FC87E /* Sample1Tests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTActionSheet.a; - remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTGeolocation.a; - remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTVibration.a; - remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTSettings.a; - remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTWebSocket.a; - remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 146834041AC3E56700842450 /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 415EA5561BEB1546000C8125 /* libReact-Native-WebView-Bridge.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libReact-Native-WebView-Bridge.a"; - remoteRef = 415EA5551BEB1546000C8125 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTLinking.a; - remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 008F07F31AC5B25A0029DE68 /* main.jsbundle in Resources */, - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* Sample1Tests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* Sample1 */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = Sample1; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = Sample1Tests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sample1.app/Sample1"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - INFOPLIST_FILE = Sample1Tests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sample1.app/Sample1"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEAD_CODE_STRIPPING = NO; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - INFOPLIST_FILE = Sample1/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = Sample1; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - INFOPLIST_FILE = Sample1/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = Sample1; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "Sample1Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Sample1" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Sample1" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/example/Sample1/iOS/Sample1.xcodeproj/xcshareddata/xcschemes/Sample1.xcscheme b/example/Sample1/iOS/Sample1.xcodeproj/xcshareddata/xcschemes/Sample1.xcscheme deleted file mode 100644 index 345f20c..0000000 --- a/example/Sample1/iOS/Sample1.xcodeproj/xcshareddata/xcschemes/Sample1.xcscheme +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/example/Sample1/iOS/Sample1/AppDelegate.h b/example/Sample1/iOS/Sample1/AppDelegate.h deleted file mode 100644 index a9654d5..0000000 --- a/example/Sample1/iOS/Sample1/AppDelegate.h +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end diff --git a/example/Sample1/iOS/Sample1/AppDelegate.m b/example/Sample1/iOS/Sample1/AppDelegate.m deleted file mode 100644 index 298c9db..0000000 --- a/example/Sample1/iOS/Sample1/AppDelegate.m +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "AppDelegate.h" - -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation; - - /** - * Loading JavaScript code - uncomment the one you want. - * - * OPTION 1 - * Load from development server. Start the server from the repository root: - * - * $ npm start - * - * To run on device, change `localhost` to the IP address of your computer - * (you can get this by typing `ifconfig` into the terminal and selecting the - * `inet` value under `en0:`) and make sure your computer and iOS device are - * on the same Wi-Fi network. - */ - - jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; - - /** - * OPTION 2 - * Load from pre-bundled file on disk. To re-generate the static bundle - * from the root of your project directory, run - * - * $ react-native bundle --minify - * - * see http://facebook.github.io/react-native/docs/runningondevice.html - */ - -// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"Sample1" - initialProperties:nil - launchOptions:launchOptions]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [[UIViewController alloc] init]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/example/Sample1/iOS/Sample1/Base.lproj/LaunchScreen.xib b/example/Sample1/iOS/Sample1/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 1da109d..0000000 --- a/example/Sample1/iOS/Sample1/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/example/Sample1/iOS/Sample1/Images.xcassets/AppIcon.appiconset/Contents.json b/example/Sample1/iOS/Sample1/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f..0000000 --- a/example/Sample1/iOS/Sample1/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/example/Sample1/iOS/Sample1/Info.plist b/example/Sample1/iOS/Sample1/Info.plist deleted file mode 100644 index cddf076..0000000 --- a/example/Sample1/iOS/Sample1/Info.plist +++ /dev/null @@ -1,48 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - NSLocationWhenInUseUsageDescription - - NSAppTransportSecurity - - - NSAllowsArbitraryLoads - - - - diff --git a/example/Sample1/iOS/Sample1/main.m b/example/Sample1/iOS/Sample1/main.m deleted file mode 100644 index 3d767fc..0000000 --- a/example/Sample1/iOS/Sample1/main.m +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/example/Sample1/iOS/Sample1Tests/Info.plist b/example/Sample1/iOS/Sample1Tests/Info.plist deleted file mode 100644 index 886825c..0000000 --- a/example/Sample1/iOS/Sample1Tests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/example/Sample1/iOS/Sample1Tests/Sample1Tests.m b/example/Sample1/iOS/Sample1Tests/Sample1Tests.m deleted file mode 100644 index b3dcfe1..0000000 --- a/example/Sample1/iOS/Sample1Tests/Sample1Tests.m +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import -#import - -#import "RCTLog.h" -#import "RCTRootView.h" - -#define TIMEOUT_SECONDS 240 -#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" - -@interface Sample1Tests : XCTestCase - -@end - -@implementation Sample1Tests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; - RCTSetLogFunction(^(RCTLogLevel level, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - - RCTSetLogFunction(RCTDefaultLogFunction); - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - - -@end diff --git a/example/Sample1/iOS/main.jsbundle b/example/Sample1/iOS/main.jsbundle deleted file mode 100644 index b702b30..0000000 --- a/example/Sample1/iOS/main.jsbundle +++ /dev/null @@ -1,8 +0,0 @@ -// Offline JS -// To re-generate the offline bundle, run this from the root of your project: -// -// $ react-native bundle --minify -// -// See http://facebook.github.io/react-native/docs/runningondevice.html for more details. - -throw new Error('Offline JS file is empty. See iOS/main.jsbundle for instructions'); diff --git a/example/Sample1/index.android.js b/example/Sample1/index.android.js deleted file mode 100644 index cd21ea3..0000000 --- a/example/Sample1/index.android.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - */ -'use strict'; - -var React = require('react-native'); -var { - AppRegistry, - StyleSheet, - Text, - View, -} = React; - -var Sample1 = React.createClass({ - render: function() { - return ( - - - Welcome to React Native! - - - To get started, edit index.android.js - - - Shake or press menu button for dev menu - - - ); - } -}); - -var styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#F5FCFF', - }, - welcome: { - fontSize: 20, - textAlign: 'center', - margin: 10, - }, - instructions: { - textAlign: 'center', - color: '#333333', - marginBottom: 5, - }, -}); - -AppRegistry.registerComponent('Sample1', () => Sample1); diff --git a/example/Sample1/index.ios.js b/example/Sample1/index.ios.js deleted file mode 100644 index d94ddbc..0000000 --- a/example/Sample1/index.ios.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - */ -'use strict'; - -var React = require('react-native'); -var WebViewBridgeNative = require('react-native-webview-bridge'); - -var myPageScripts = function() { - function WebViewBridgeReady(cb) { - if (window.WebViewBridge) { - cb(window.WebViewBridge); - return; - } - function handler() { - document.removeEventListener('WebViewBridge', handler, false); - cb(window.WebViewBridge); - } - document.addEventListener('WebViewBridge', handler, false); - } - WebViewBridgeReady(function (WebViewBridge) { - WebViewBridge.send("Hello this is me calling from web page"); - }); -}; - -//convert function definition into string -myPageScripts = `(${myPageScripts.toString()}());`; - -var { - AppRegistry, - Component -} = React; - -class Sample1 extends Component { - constructor(props) { - super(props); - this.once = true; - } - - componentDidMount() { - var myWebViewBridgeRef = this.refs.myWebViewBridge; - - var onMessage = function(message) { - console.log("Received message", message); - }; - myWebViewBridgeRef.onMessage(onMessage); - - myWebViewBridgeRef.injectBridgeScript(); - - //this opens up the printer window dialoge - setTimeout(() => { - myWebViewBridgeRef.print(); - }, 5000); - } - - onNavigationStateChange(navState) { - var myWebViewBridgeRef = this.refs.myWebViewBridge; - if (this.once) { - this.once = false; - setTimeout(() => { - myWebViewBridgeRef.evalScript(myPageScripts); - }, 1000); - } - - console.log(navState.url); - } - - render() { - var url = 'http://google.com'; - - return ( - - ); - } -} - - -AppRegistry.registerComponent('Sample1', () => Sample1); diff --git a/example/Sample1/package.json b/example/Sample1/package.json deleted file mode 100644 index 7478aa4..0000000 --- a/example/Sample1/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "Sample1", - "version": "0.0.1", - "private": true, - "scripts": { - "start": "node_modules/react-native/packager/packager.sh" - }, - "dependencies": { - "react-native": "^0.13.2", - "react-native-webview-bridge": "../.." - } -} diff --git a/example/Sample2/index.ios.js b/example/Sample2/index.ios.js index b8f2430..7118b09 100644 --- a/example/Sample2/index.ios.js +++ b/example/Sample2/index.ios.js @@ -33,23 +33,4 @@ var Sample2 = React.createClass({ } }); -var styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#F5FCFF', - }, - welcome: { - fontSize: 20, - textAlign: 'center', - margin: 10, - }, - instructions: { - textAlign: 'center', - color: '#333333', - marginBottom: 5, - }, -}); - AppRegistry.registerComponent('Sample2', () => Sample2); diff --git a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj index 54b612b..0d90846 100644 --- a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj +++ b/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj @@ -21,9 +21,6 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 4134EF261C17548C00CA8394 /* RCTWebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */; }; - 4134EF271C17548C00CA8394 /* RCTWebViewBridgeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */; }; - 4134EF331C1767B200CA8394 /* webviewbridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 4134EF321C1767B200CA8394 /* webviewbridge.js */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -127,11 +124,6 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sample2/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sample2/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 4134EF221C17548C00CA8394 /* RCTWebViewBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridge.h; sourceTree = ""; }; - 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridge.m; sourceTree = ""; }; - 4134EF241C17548C00CA8394 /* RCTWebViewBridgeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridgeManager.h; sourceTree = ""; }; - 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridgeManager.m; sourceTree = ""; }; - 4134EF321C1767B200CA8394 /* webviewbridge.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = webviewbridge.js; path = ../scripts/webviewbridge.js; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -259,19 +251,6 @@ name = Products; sourceTree = ""; }; - 4134EF211C17548C00CA8394 /* ios */ = { - isa = PBXGroup; - children = ( - 4134EF321C1767B200CA8394 /* webviewbridge.js */, - 4134EF221C17548C00CA8394 /* RCTWebViewBridge.h */, - 4134EF231C17548C00CA8394 /* RCTWebViewBridge.m */, - 4134EF241C17548C00CA8394 /* RCTWebViewBridgeManager.h */, - 4134EF251C17548C00CA8394 /* RCTWebViewBridgeManager.m */, - ); - name = ios; - path = "../node_modules/react-native-webview-bridge/ios"; - sourceTree = ""; - }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( @@ -283,7 +262,6 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 4134EF211C17548C00CA8394 /* ios */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -527,7 +505,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4134EF331C1767B200CA8394 /* webviewbridge.js in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, ); @@ -565,9 +542,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4134EF261C17548C00CA8394 /* RCTWebViewBridge.m in Sources */, 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 4134EF271C17548C00CA8394 /* RCTWebViewBridgeManager.m in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/example/Sample2/lib/package.json b/example/Sample2/lib/package.json deleted file mode 100644 index 8f4543c..0000000 --- a/example/Sample2/lib/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "react-native-webview-bridge", - "version": "0.4.0", - "description": "React Native WebView Javascript Bridge", - "main": "webview-bridge", - "directories": { - "example": "example", - "lib": "lib" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git@github.com:alinz/react-native-webview-bridge.git" - }, - "keywords": [ - "react-native", - "react-component", - "ios", - "webview-bridge" - ], - "author": "Ali Najafizadeh", - "license": "MIT", - "bugs": { - "url": "https://github.com/alinz/react-native-webview-bridge/issues" - }, - "homepage": "https://github.com/alinz/react-native-webview-bridge" -} diff --git a/example/Sample2/package.json b/example/Sample2/package.json index d57ec26..962b1bc 100644 --- a/example/Sample2/package.json +++ b/example/Sample2/package.json @@ -7,6 +7,6 @@ }, "dependencies": { "react-native": "^0.16.0", - "react-native-webview-bridge": "./lib" + "react-native-webview-bridge": "../.." } } diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.h b/ios/RCTWebViewBridge.h similarity index 100% rename from example/Sample2/lib/ios/RCTWebViewBridge.h rename to ios/RCTWebViewBridge.h diff --git a/example/Sample2/lib/ios/RCTWebViewBridge.m b/ios/RCTWebViewBridge.m similarity index 100% rename from example/Sample2/lib/ios/RCTWebViewBridge.m rename to ios/RCTWebViewBridge.m diff --git a/example/Sample2/lib/ios/RCTWebViewBridgeManager.h b/ios/RCTWebViewBridgeManager.h similarity index 100% rename from example/Sample2/lib/ios/RCTWebViewBridgeManager.h rename to ios/RCTWebViewBridgeManager.h diff --git a/example/Sample2/lib/ios/RCTWebViewBridgeManager.m b/ios/RCTWebViewBridgeManager.m similarity index 100% rename from example/Sample2/lib/ios/RCTWebViewBridgeManager.m rename to ios/RCTWebViewBridgeManager.m diff --git a/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.pbxproj b/ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj similarity index 50% rename from lib/ios/React-Native-WebView-Bridge.xcodeproj/project.pbxproj rename to ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj index e81b999..7f3e07c 100644 --- a/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.pbxproj +++ b/ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj @@ -7,39 +7,35 @@ objects = { /* Begin PBXBuildFile section */ - 413672491BEB069E00E9FCEB /* RCTWebView+WebViewBridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4151254E1BEB05360042928F /* RCTWebView+WebViewBridge.h */; }; - 4136724A1BEB069E00E9FCEB /* RCTWebViewManager+WebViewManager.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 415125501BEB05360042928F /* RCTWebViewManager+WebViewManager.h */; }; - 4136724B1BEB069E00E9FCEB /* webview-bridge-script.js in CopyFiles */ = {isa = PBXBuildFile; fileRef = 415125521BEB05360042928F /* webview-bridge-script.js */; }; - 415125531BEB05360042928F /* RCTWebView+WebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 4151254F1BEB05360042928F /* RCTWebView+WebViewBridge.m */; }; - 415125541BEB05360042928F /* RCTWebViewManager+WebViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 415125511BEB05360042928F /* RCTWebViewManager+WebViewManager.m */; }; + 41C393BC1C1875C80094CF58 /* RCTWebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 41C393B91C1875C80094CF58 /* RCTWebViewBridge.m */; }; + 41C393BD1C1875C80094CF58 /* RCTWebViewBridgeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 41C393BB1C1875C80094CF58 /* RCTWebViewBridgeManager.m */; }; + 41C393BF1C18761A0094CF58 /* webviewbridge.js in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41C393BE1C18761A0094CF58 /* webviewbridge.js */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - 415125401BEB04C40042928F /* CopyFiles */ = { + 41C393AA1C1875330094CF58 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; dstSubfolderSpec = 16; files = ( - 413672491BEB069E00E9FCEB /* RCTWebView+WebViewBridge.h in CopyFiles */, - 4136724A1BEB069E00E9FCEB /* RCTWebViewManager+WebViewManager.h in CopyFiles */, - 4136724B1BEB069E00E9FCEB /* webview-bridge-script.js in CopyFiles */, + 41C393BF1C18761A0094CF58 /* webviewbridge.js in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 415125421BEB04C40042928F /* libReact-Native-WebView-Bridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libReact-Native-WebView-Bridge.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4151254E1BEB05360042928F /* RCTWebView+WebViewBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTWebView+WebViewBridge.h"; sourceTree = SOURCE_ROOT; }; - 4151254F1BEB05360042928F /* RCTWebView+WebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTWebView+WebViewBridge.m"; sourceTree = SOURCE_ROOT; }; - 415125501BEB05360042928F /* RCTWebViewManager+WebViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTWebViewManager+WebViewManager.h"; sourceTree = SOURCE_ROOT; }; - 415125511BEB05360042928F /* RCTWebViewManager+WebViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTWebViewManager+WebViewManager.m"; sourceTree = SOURCE_ROOT; }; - 415125521BEB05360042928F /* webview-bridge-script.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "webview-bridge-script.js"; sourceTree = SOURCE_ROOT; }; + 41C393AC1C1875330094CF58 /* libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 41C393B81C1875C80094CF58 /* RCTWebViewBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridge.h; sourceTree = SOURCE_ROOT; }; + 41C393B91C1875C80094CF58 /* RCTWebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridge.m; sourceTree = SOURCE_ROOT; }; + 41C393BA1C1875C80094CF58 /* RCTWebViewBridgeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridgeManager.h; sourceTree = SOURCE_ROOT; }; + 41C393BB1C1875C80094CF58 /* RCTWebViewBridgeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridgeManager.m; sourceTree = SOURCE_ROOT; }; + 41C393BE1C18761A0094CF58 /* webviewbridge.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = webviewbridge.js; path = ../scripts/webviewbridge.js; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4151253F1BEB04C40042928F /* Frameworks */ = { + 41C393A91C1875330094CF58 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -49,99 +45,108 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 415125391BEB04C40042928F = { + 41C393A31C1875330094CF58 = { isa = PBXGroup; children = ( - 415125441BEB04C40042928F /* React-Native-WebView-Bridge */, - 415125431BEB04C40042928F /* Products */, + 41C393AE1C1875330094CF58 /* React-Native-Webview-Bridge */, + 41C393C01C18765D0094CF58 /* scripts */, + 41C393AD1C1875330094CF58 /* Products */, ); sourceTree = ""; }; - 415125431BEB04C40042928F /* Products */ = { + 41C393AD1C1875330094CF58 /* Products */ = { isa = PBXGroup; children = ( - 415125421BEB04C40042928F /* libReact-Native-WebView-Bridge.a */, + 41C393AC1C1875330094CF58 /* libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a */, ); name = Products; sourceTree = ""; }; - 415125441BEB04C40042928F /* React-Native-WebView-Bridge */ = { + 41C393AE1C1875330094CF58 /* React-Native-Webview-Bridge */ = { isa = PBXGroup; children = ( - 4151254E1BEB05360042928F /* RCTWebView+WebViewBridge.h */, - 4151254F1BEB05360042928F /* RCTWebView+WebViewBridge.m */, - 415125501BEB05360042928F /* RCTWebViewManager+WebViewManager.h */, - 415125511BEB05360042928F /* RCTWebViewManager+WebViewManager.m */, - 415125521BEB05360042928F /* webview-bridge-script.js */, + 41C393B81C1875C80094CF58 /* RCTWebViewBridge.h */, + 41C393B91C1875C80094CF58 /* RCTWebViewBridge.m */, + 41C393BA1C1875C80094CF58 /* RCTWebViewBridgeManager.h */, + 41C393BB1C1875C80094CF58 /* RCTWebViewBridgeManager.m */, ); - path = "React-Native-WebView-Bridge"; + name = "React-Native-Webview-Bridge"; + path = "react-native-webview-bridge"; + sourceTree = ""; + }; + 41C393C01C18765D0094CF58 /* scripts */ = { + isa = PBXGroup; + children = ( + 41C393BE1C18761A0094CF58 /* webviewbridge.js */, + ); + name = scripts; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 415125411BEB04C40042928F /* React-Native-WebView-Bridge */ = { + 41C393AB1C1875330094CF58 /* React-Native-Webview-Bridge.temp_caseinsensitive_rename */ = { isa = PBXNativeTarget; - buildConfigurationList = 4151254B1BEB04C40042928F /* Build configuration list for PBXNativeTarget "React-Native-WebView-Bridge" */; + buildConfigurationList = 41C393B51C1875330094CF58 /* Build configuration list for PBXNativeTarget "React-Native-Webview-Bridge.temp_caseinsensitive_rename" */; buildPhases = ( - 4151253E1BEB04C40042928F /* Sources */, - 4151253F1BEB04C40042928F /* Frameworks */, - 415125401BEB04C40042928F /* CopyFiles */, + 41C393A81C1875330094CF58 /* Sources */, + 41C393A91C1875330094CF58 /* Frameworks */, + 41C393AA1C1875330094CF58 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "React-Native-WebView-Bridge"; - productName = "React-Native-WebView-Bridge"; - productReference = 415125421BEB04C40042928F /* libReact-Native-WebView-Bridge.a */; + name = "React-Native-Webview-Bridge.temp_caseinsensitive_rename"; + productName = "react-native-webview-bridge"; + productReference = 41C393AC1C1875330094CF58 /* libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 4151253A1BEB04C40042928F /* Project object */ = { + 41C393A41C1875330094CF58 /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0710; - ORGANIZATIONNAME = "Ali Najafizadeh"; + ORGANIZATIONNAME = alinz; TargetAttributes = { - 415125411BEB04C40042928F = { - CreatedOnToolsVersion = 7.1; + 41C393AB1C1875330094CF58 = { + CreatedOnToolsVersion = 7.1.1; }; }; }; - buildConfigurationList = 4151253D1BEB04C40042928F /* Build configuration list for PBXProject "React-Native-WebView-Bridge" */; + buildConfigurationList = 41C393A71C1875330094CF58 /* Build configuration list for PBXProject "React-Native-Webview-Bridge" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 415125391BEB04C40042928F; - productRefGroup = 415125431BEB04C40042928F /* Products */; + mainGroup = 41C393A31C1875330094CF58; + productRefGroup = 41C393AD1C1875330094CF58 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 415125411BEB04C40042928F /* React-Native-WebView-Bridge */, + 41C393AB1C1875330094CF58 /* React-Native-Webview-Bridge.temp_caseinsensitive_rename */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 4151253E1BEB04C40042928F /* Sources */ = { + 41C393A81C1875330094CF58 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 415125531BEB05360042928F /* RCTWebView+WebViewBridge.m in Sources */, - 415125541BEB05360042928F /* RCTWebViewManager+WebViewManager.m in Sources */, + 41C393BD1C1875C80094CF58 /* RCTWebViewBridgeManager.m in Sources */, + 41C393BC1C1875C80094CF58 /* RCTWebViewBridge.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - 415125491BEB04C40042928F /* Debug */ = { + 41C393B31C1875330094CF58 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -184,7 +189,7 @@ }; name = Debug; }; - 4151254A1BEB04C40042928F /* Release */ = { + 41C393B41C1875330094CF58 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -221,30 +226,30 @@ }; name = Release; }; - 4151254C1BEB04C40042928F /* Debug */ = { + 41C393B61C1875330094CF58 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { HEADER_SEARCH_PATHS = ( "$(inherited)", - "$(SRCROOT)/../../../React/**", - "$(SRCROOT)/../../../react-native/React/**", + "$(SRCROOT)/../../../node_modules/React/**", + "$(SRCROOT)/../../../node_modules/react-native/React/**", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "React-Native-Webview-Bridge.temp_caseinsensitive_rename"; SKIP_INSTALL = YES; }; name = Debug; }; - 4151254D1BEB04C40042928F /* Release */ = { + 41C393B71C1875330094CF58 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { HEADER_SEARCH_PATHS = ( "$(inherited)", - "$(SRCROOT)/../../../React/**", - "$(SRCROOT)/../../../react-native/React/**", + "$(SRCROOT)/../../../node_modules/React/**", + "$(SRCROOT)/../../../node_modules/react-native/React/**", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "React-Native-Webview-Bridge.temp_caseinsensitive_rename"; SKIP_INSTALL = YES; }; name = Release; @@ -252,25 +257,25 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 4151253D1BEB04C40042928F /* Build configuration list for PBXProject "React-Native-WebView-Bridge" */ = { + 41C393A71C1875330094CF58 /* Build configuration list for PBXProject "React-Native-Webview-Bridge" */ = { isa = XCConfigurationList; buildConfigurations = ( - 415125491BEB04C40042928F /* Debug */, - 4151254A1BEB04C40042928F /* Release */, + 41C393B31C1875330094CF58 /* Debug */, + 41C393B41C1875330094CF58 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4151254B1BEB04C40042928F /* Build configuration list for PBXNativeTarget "React-Native-WebView-Bridge" */ = { + 41C393B51C1875330094CF58 /* Build configuration list for PBXNativeTarget "React-Native-Webview-Bridge.temp_caseinsensitive_rename" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4151254C1BEB04C40042928F /* Debug */, - 4151254D1BEB04C40042928F /* Release */, + 41C393B61C1875330094CF58 /* Debug */, + 41C393B71C1875330094CF58 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 4151253A1BEB04C40042928F /* Project object */; + rootObject = 41C393A41C1875330094CF58 /* Project object */; } diff --git a/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..7584951 --- /dev/null +++ b/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate b/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..db9baaa0efcfafc19967a373f4df64cc6b6d641e GIT binary patch literal 19058 zcmdUW34BvU*Z$0%xlNmHNt$#|+NS%GrD>Bk-Jly#X`ytZWeaJWmOyDslCmRnMG-|= z1VvPomL0(bH*m#$S5)*x1Vjbgam5XlZ*FeWg_ouJ`M&?}Z~c+v&YA7Znddy`%-qJ# zHoMcM*B=BBFaQAzSm4F(V;`-Ln{9JA?H%p)aUG4*ZA~s`L!8yoG|f&Q*TlIxI%NPZ z-FUAQ-UCFy8w3G4P=G{`1d>4tNCjy?1GGQ~GJqM31(jeNr~=iX2GoK&Fdo!{1~36k z1Xj=pT0sZs1haqxIKgaiC0Gou0@r{W!3wYvtO6TBH|PPIz-F)oYz4c(Ztwtj5Ih7P z29JYhz)Rp|@CrBp4uZqrIQR^F4!!{2gCD?;;CJu`_!G*Z0tUkn7z)E+IE;XiPzmFq z9_GMYI1HA;5%3B)8jgciuntau7T5$^;S4wnI^bM54=#aM!)xGDcs;xWZh&{fyWmFH z4SV1wxEbCD?}vNf1MorkD0~d=hcCgG;VbZM_zpY>55Z&bL-;xT0)7d13SD9A++aHFFKKl)08!#;j#-W^Q5DF}E_eGu_Nq<{su==00XGvyXX{ z+0Q)9JkPw!9AFMH?=y#)kC{)H6U>jy8RjSEXXY2?SLQe7PsAWG@Xa;ISGf_M0KwW4yT7Z_I ztI;)RDO!P6qE%=uT90l+x1%j+E82#(qaA1`x(7Xpo zWw;zy;u>6!C*i5M8Qbx6JOg*(*?10~ix=V>@Qru{UWr%X)%YfSGv181;hlIlz7Icu zAIAIe@IdUdk=drdmnp0yN7*%eUN>KeVBcO-CG;i-qqIj4)6hD;0ydfAdrn8 zQ>~q0o9CQBKYMp(U0hR})#>a3{vd!b1oZ$3kP=M(MdB=yxT4I`jM8FrsV3c=k)feK z%$mZY;&jc3^z3YXW@brgQDKoqA}=c`9pB-Y;q0_F*-AQ^x@OwiU7n7EfeIvS10f(3 zgn@7n0V08tu*8dqh&S;eV&c0EM1g1!Lq`w>;y^s{BmN|ijzvVmNdZZk!nba3Z|;~g z!eO0hvq)m-gRzcgo5R-J*K3WnvACn%<>+W@qtIiK6bu~Fph8QDDWfFIkXfQBGMkDt znZ`_m##~Zt))>v%g(XHqp?*YRiA9n&umPd_{tjx}?X$XUWzBS&_7=O%VUa{p@xmq- zMYszO$s!5k8+1>jrlX^+(dsC3*4dr*#x^>m(Ec)OW6_|ZumuY;O_^!Y>FI_=Y0(SP zGxhqkXtObU(W1BA>#7HaZV*Ow74SC51V&&2SrddMZKukr7rxq@bma>j4(q%gDv(`2 zrh2R!mpyBg14=-`4v-7-Kt3n{!@zJ*2#P>4kq{}7ksu-`3KC30NazkwO4n#47zN6} z74%y`e?wVKVuvx3A=W*59ZF7X?`kLa) z&Re=cO_bQ2_SW_bw7?HYXy0yg@&-q%jj*@bDy^<*lj%=k4tzxk@UckZt8CULmu8HW zUvSNMTjOjx7EO`E-rQ=_&TZ;wwskr>rhBwI2}}VA-C#0Nb^{Ah@!FA=)YbG&qReHR z=@eG83AFTpW?&;xB%UOC8kh!V09g;PgXtui#PonRFq5cBEQy;;n;B?@68f80ONF(y z-R|mYwpGRsza|v${|VON0$r2FRF~MPrFOJi9n>6LAluW;95Da9ZWhvR5=dO^@b--Z z8X$a**fbe!D^sxk7ZIJ}^3G{ci2`m}d-BNHJNaz9Af@LIyr1pU8 z!E%yDG;Z}&+uA5?ur>FstVI%C&+Ao77h|;DrR^)wR=XTsO|C8n-A0!c@yv8JxD_O9 z1vh~;U@f>A+yd4SEzuD@Nhb!9u@$Tbw}IP1JlH_dD3h2;4#lBiJQfL9S30-T+TLty zb}w9w!)D_xrgt+}(Q#WOf%JiA4!nRx63IU)uBdidU0qIUS}vQz-ric;&g-yQu-U#j z4Qjv0*3#jy_0IV0dY<{*8moW57s*D8-C>rT`U@{oZY0=rHj75t)%{>D4_4WKH z$t7`~f+xUJef{hwc_hhG@GN+qFL;jR4`~42o_eo>*ZX>UgADKQ=`CvZ2^%-|_wX+G zSKn4VM2bj~u)(1GffIxF#7S_9l#o(hjXaR`Eg26DvBNuu zySIsFTwj9IgDQUmz9l2cD7tTH)qY5c9lo3ls&@wbGN|6Kw9_m4JM9B10qz=fwNC2u zbk;Vzj)xtdZ|mrAC_uFf05zur(rL%W9b(dJze+RI0(1*GQ2q1(EL=Zz3dO;EN zCKY518A~e3I8sHbNe!vp0maalx`k3u3Im}8O6dlwBdydegwel!xhSCK~L1y>V%j=_+8!AIFm|G5PrEUN`h#O5?hP4tIbtn zYwT(j)DzwNsFJVlbkQwSMbX*jq+h6ZI@&2&kh;ZNZH_)jrmM^M?Rn0(bP%dw6pRMG zFb1k&ETk47b98jL1i!{lWeh)jNl2@$-QMLC2F6nc+gz7W658po&!nLHZ$+eu05YDm zyay9tBJCgvCc_lkNet9LE!2VfdKx>mH9KtWb)8oFuWMox-)_6BW?m-`d(FL+tI!=| z@rW{biW55=cF%NaPff%ofu#Ojm<|oJw+xsGjnD+MU^X<7$OO_z8psrjMArx5!oHycyPZm_ z-O&TfK=x&1f)<|>{(A?O(?M0hF>owYPxLHCZB==L%RbXaInc~bGL={fut=;elvL#C zbpNp}s}p8e4Qr?mrfk5oAfCnSfwla^E>tAc91rU)k|es51}#y)q6S-54{YF@8?yXh z3!g}BTm$N%8q||!YM3@c@tOuJa4Ns#v2;raq!uf<3T>AJb69 zg=tTNc8er-2tD+`>3r)$5$$yYuno3Trvqn_Y2C1c*m=JiFJM3~C%zaoc^YuSF1`U5 zncfX&lNltbrh;x5Pw9MkC6H}`3*bVyh_sQJq6E25qXw(O9fH%Sw za3x#?SHqjgEaD(e;v!vSHkq>xu7x+lTi`nSw;tX`=8}12H+g{mJxCrRNs}m{v6Wa| zRvzOf3S)AQmPSh#vqp;KgRFLpJ6sI&?12lEMR>|e=Tbc7Q&#<`GSO2;cQS?brjD6f zYiDO$FTvOLx?0bKx4@l1wi#}P+u(M%gUlxj$U?GcGrSw_g1g~8ZJC#iNkp@B~QM1V4fw!%xU^as#<>6Fdn|!B5EwvXZPKNp->+*9j|Tk*F^^ zoB@k-@iAK@S(l=3R9&5xCacqCZ>J>3Y3E~93uO&-GYGT&hM(=XWOe^;{Q>?)<01GX zJOh7%Kf_<(ujD4OhO8wwlUvBTt?(@T9sc1ab$^gs$yT!6P3N}rOCMWIQ!ds{r>!~K zZ8Oo-tUGNE*SzRriZZP{^PrX%=CQ)TLhiD-i)y39PPc+}p1|&62Z(w4a7QtNq?7}s z2Ai+Y%0Sh7TH#@0KqGD?F+QMW7b9kT89&CK319*l2_t1>Ob{by6l6WQo!mh-kUPm; zWFzS&J!BKvOtz53w}CGc%7iiD4K%~%baM)F8wC&OhAbDQ<}^@sE?ih$GP-K)*c!L* zVImnN4a)igW`T-qqK{SXRE_Z4({c>oUJNX^x6hzkbK%1B5=&L>n99PMQI_h`!m8p? z7XEv+M?8)fPlVMrE9HjKJb$CT7nYANY^e6g*H)KS4X%{PSBgKc(uk_Uiqi38t44e3 z4eBR_ucAJ$%Ba#p8m3-QUc<}Bo+n>kR#a73)o{TIdcH!`c@?TkCtOfCgBQ*_Pq?(c zxV)A|2$rhS;@Ya}vbxfNbuHDkMI~jlsAghlXg(HiLEp*^j zrG>Q5N;=W86_sV>R2`m1M-^6;jTtFee<5h;W{SwRev2N#w?Cu>rddd46jNrA^zOx8 zKX<p*D2Si8&#X&`&ZJ?^08enA}*DPl5{$i00b2xH+x5OUw;BaRD437&Z1Qu!4M z^KLNH3Xs;T#_F!l&JKr5E4UPoQU}Yt!_1&K)CSc|I~>F3{2Qq^m`Fbzwl;T0fO74J z$y5P-W-*T1G1Zjg^f0sd6dvW@jEkRd7uib!2IY8Y&Y$L<4f?(u4>OOs5+rP9<}(YJ zh0G%ID0z%LPM+AzEM^G&gSm=4NuHz5;x&>~Uv6vZ&Dbg^%kFdTeS!J}feZ5}-B4w3 zo#qzyEc12D3cj1`ndQt4%#GwJvY$Lnp4m(@bfwH{5JyuAVdPnwWT49*QD=47`4E_9 z*KKq7Al_MJog<{XERyiSrM={~x{10h8b=Q*bXTXEra9v#hrN?eVbiSkAQ5-#JUBQTj8?vxAan%nQs*9^%KmOb&Qv^cp{-*O@oSTjXH>jNW1n4jSIO%zNZ* z@(vvyU4FrMV~5+P4jSGE%&|drK4gxQcgcG^G30ZW1G6!)!zb+@RQDwF6{RrDDdtn= zGv;&V3+795h`dh@lMl!da&#;6HFKKz2E;MnG2fG8C>|w% zc$7rGCZ{RPedD&)N+FNvvCJAzmWdwNo>$a+C{aAk>Yz%qIjSffuuUFiZ?+Y-wUs%Y z^bCM9z4I!0xccB)eAv^K`)o^NJ)iS8m<)^Rgyg?x1_qSH&maS3A|o=9@5uM$2lC@) zl#R@E2D#)6`H9Zp=l{1en0@<>C4~*{8Kh^K7S%5>nGO62hG!C`=n8%kBhW~A8!98e zlCyL({;?U2M&+mijUneasOMlC2d^1y?bU9Z`R#v~;k$(O_9x|a15LHw-R}W@^k7eA+q96h5s)QzLLXdVYe9Q5sXI1ABY z>XgwUbR`G9Iq1`a2z-HqVm@JW+4JY2WOO`R?^<;Ic^xf>2RP`*=W^&-<-eE{8d{3# z(wQScThD`*jlI+iy+jj4=w#&Iy7g9#i= zNSzS2LC_whj0S@Z|*Gk)iw?ysa&daGjwdxL~67-5WA?1iZ-N#~$}gBcvm0i|Ez8t%0c&in~OMS97&xsR$>ahW{#ePd!j)cgX5^r#A-~zCWnK$Jvg3s z&Uyc|bH-^{H@G9z@0>j|%EY%D#9};l+#0|6Y_ZLom938(MV}fA6%C5Bll2+^zy& zfk$uT;0Sk)4OieX^x9qTjX9c>+(e&@1=%$3Mt^wJHx5?~%D3QJTsQbZ1D-JW!DLKt z7V`I-gg&j*nd3$dmJgsn*oIqhD^G#Oa&Qa>D|iaj_21*@0|FPG7R}!GD<12aaU1UJ zrA4^ILyIam;aS*$DO(-K!72_`^T05WPYllK4)MV3vP1~a<8?QmgEf6b2rt4{^Y(lt zUW^Im@KtyT2WvT4$HDO&tmj|@2PbR=rFbb%gz$Cn51s){6o}9y`auVNX;Sfjjsp$U z^F?@@U}Sc%!zL&4`mxvJF!&ezP5yB7g z@_&H{;k|r?Arc|{7%%)!5Fz~JgFY=ZCIUgU(!$lAOX>JCO!MXLOAGi*{?Y;m9h>mi@D%=rgHE!NqqmLz z_rNQF#gF_5&v3A-A6kFG=P0yZ^uhrPSm?QMz`@xZT*9L&{iC4jZj<$6oX0^5=nFWwkb{djNVU3{gM@<|2e0Y_9X6D=o6CR> z8^H?=8FX0Hg$(#Ipu@UP_Wu&-uYpu@V4^@j*Ltouy=p8y@!eb|3~ zOMeG+SockUp@0tSKI#99pu@Tk_5T6T5sW&Qp7yYL9He)pdhY_T!+A>@!V3373tPmF zq|m|^vn6aPJA#8tIe0AxmvQjA&Fm<)jJ<-T@z(VmT+Kn6D_hU+@&7YPPV2>EI{Gq^ z%~fOdTt%bTnJ#(;bg43rma5nqitX;RS(Y-o*%#9pe(ZgE#Fl*&M9cHo9SpH3)0UZqpv*;B}K|$v!L$IA$6l7Tk2iFX618f&N zo1MeEfm=9uGY8l5+<*0dkNXcTKd?f`Kdy^2a- zqU7LC4&KedT^!s^f5$br+;>OmEwl-CXK9b>m~`I2K_QeT_JWrZfuha9l)RCLTdwBp#0&@I*Wr zTd);3(eS&KzCwH({(y3oGz!5@>|%BqyPUqnyOO@VyNSNO`yhQ~{u%a7_G9)0dy4&x z{eu09Jv^w3UY~lM z@%q{87g4lGBhrfuBBLlvWENG3>O>PolSLMhRn#tWin>H|L<>b%iiqec(JIj<(Pq(Z z(Zix=MK6io6&)5G5gikKB04GhRP?#%d(l~MvA5Ja+*|LR%iQ*~Zsp3X45p&`d;??3c;#O)r_Zr`id{6s9Kjg>yiTr&0eEt0W0{x_ZL4FB-Nq#AQ zX?|Kiy`RA^)6e9W?U&Nmx&&2Nd{3ct;MFZzApciQiqzuaHzU*9X0f)v_(Jr)3|?z6@f6WI+)@%AlyA zn4s98v>Mcueu6V!z@U#hZ#Fierl7ijNg1 z6sHuQDb6TOFny?jNtHRz5I~Mj)*e78p z!%l~N8?Fdfg%^aEhTFmygf9zU9)4r^s_>h_*M{#4e?I(h_>u5q;m5;24nGn8b@;d8 z--rJg0V7ZZ8zG8_kI+WsM&w5fiztk+M68e48gWm=qY;lsJQ=Y+;^l}pBMwF!jW{0h zam0y;vytAB(#W7lMPx{1Sfn~KE;1o9DKaH8Ez%fS5m_JE7}*gyH*$XD!pJKlN#u2r z%Oh`$Tp77Ka!us@k#9tPrxYuLlyYUTGFF+OOj4#QHA`<;}`<%5LROM`USQV&}s)AGsm0FdkN>-(+^eTfYQ)N;OSCy&iR1;N`RTfpV zszo(THC?q(b&cvK)m^G?)h5*z)i%`*)!nMSsz+6itDaQtS3RqGLG_aA6V;h0SyXbA zDXJo>E~+7FV$|fQmMDAFjHsDW^P?6=aZyX6mPK73bwkvOs7Io{i~2JfMYGYOXus%y zXi2mzIx0FQIyO2!`nBlyqd$l~8vS8RX-rkj#F)u3mKbYHQ%qY-drW7HBgPdoJ7#sv z-k29+PRIPL25OO7u2!m})G_K@P z{{8qP@yFu7jQ=+Nhxni3&&L0m01}u4NkVMG$b_1NhJ;B8mW1Yn)&zUPjD)s?WeKYj z)+Ve=Sf8*nVRyoP2@fPZlo*z%PShou63vNuiNg{{B$g$XCyq@Vmsp=@NxV97W8#yE zFDAZ{_8GS$l3{XqvNAb3IW{>VIXO8kS(j``HYR5$=Oz~<4^J*j9-VAUZcpw^UYooj z`L5)bliyB0nEZPRn<7d{OEIQorA$s~Ntu>%eaf1Yn^O*^98LK!Rh62Unw&Z+bzEw7 z>Y~)8smoGdPd%J^H1&AuC#fe>KTY#X3rmYjOH4~i)1>LsGSUjt3e!r`My6enR*^O~ zZGPJJw0~(t8k442GeT3QDc6kEjMLaO?HZ?Mwq~AYfo7TJM$IbC8qKYm+cg_BcWHKO z_G?aPzSI1q`Bn3~7HYB9OY5ywXw}+yZIU)stJS7!Gqr`<675Ls71|1IrM602qrFPI zLAzJ`j`p-JL>H}#(Z%UBx*T1hZltb8SF5Yj)$44!7G0~(uA8l!qnoRnue(;aOn04b zxo)j)o$fZ>9lG7R`*aWJ9@g#E({mC12z`aVQeUmF(@)k<)i>!|^wab=>UZd0)F05l zqkm6-NPklQz5a~;7yViNpXo3ir%Tg=(u31O)5Fu1=~3x1>4oW&)2~k7nSLPsO!}Yc z=M2ywHpChd49SKxgU( zxW%~LxYM}H_>l1#H8(D;$b%cM4?nzW{LQ-*1{slqhYG|p6Q zsx^%_HJDmVc2k?F-PCDvm|UjWrp2aPO}CrwG*tE~|xampL zi>8-NpP0Tfoz9YFMPwgZ^_=4{X+Je*>7c^HDj}vd9=C4Jl;IPJjrY`x0-J-uQ&IYx0tt^?>66Ke#HE! z`3duW^RwpX&EMuk<&4SMlk-&0Gda)YyqNP!&TBdE<{ZvBnsYqoBD*`TG2V{7L!t{Q3Ed@=5-Z{H6KV<=>FMGXJLhP5E2%x99K7-<^M7{sZ|B=kLvb zH2=B$H}gNsKUW|xNG>QWm{8DC&{MFz;NF6L1+NwyD0t6(qZcrY@X0 + BlueprintIdentifier = "41C393AB1C1875330094CF58" + BuildableName = "libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a" + BlueprintName = "React-Native-Webview-Bridge.temp_caseinsensitive_rename" + ReferencedContainer = "container:React-Native-Webview-Bridge.xcodeproj"> @@ -45,10 +45,10 @@ + BlueprintIdentifier = "41C393AB1C1875330094CF58" + BuildableName = "libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a" + BlueprintName = "React-Native-Webview-Bridge.temp_caseinsensitive_rename" + ReferencedContainer = "container:React-Native-Webview-Bridge.xcodeproj"> @@ -63,10 +63,10 @@ + BlueprintIdentifier = "41C393AB1C1875330094CF58" + BuildableName = "libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a" + BlueprintName = "React-Native-Webview-Bridge.temp_caseinsensitive_rename" + ReferencedContainer = "container:React-Native-Webview-Bridge.xcodeproj"> diff --git a/lib/ios/React-Native-WebView-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 82% rename from lib/ios/React-Native-WebView-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist rename to ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist index 9f55810..37f67f5 100644 --- a/lib/ios/React-Native-WebView-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,7 +4,7 @@ SchemeUserState - React-Native-WebView-Bridge.xcscheme + react-native-webview-bridge.xcscheme orderHint 0 @@ -12,7 +12,7 @@ SuppressBuildableAutocreation - 415125411BEB04C40042928F + 41C393AB1C1875330094CF58 primary diff --git a/jsx/WebViewBridge.js b/jsx/WebViewBridge.js deleted file mode 100644 index 6fdd0b8..0000000 --- a/jsx/WebViewBridge.js +++ /dev/null @@ -1,106 +0,0 @@ -'use strict'; - -var React = require('react-native'); - -var { - WebView, - NativeModules: { - WebViewManager - } -} = React; - -class WebViewBridge extends WebView { - constructor(props) { - super(props); - this.handlerId = 0; - } - - /* - * call the callback with handler id - */ - getWebViewBridgeHandler(fn) { - //this method defines in WebView component. - //in react-native 0.6 and below, getWebWiewHandle - //in react-native 0.7 and above getWebViewHandle - var handler = this.getWebWiewHandle || this.getWebViewHandle; - - if (this.handlerId) { - fn(this.handlerId); - } else { - // this is a hack to get the handleId correctly and - // also avoid race condition. - setTimeout(() => { - this.handlerId = handler(); - fn(this.handlerId); - }, 0); - } - } - - /* - * inject script into webView - */ - injectBridgeScript() { - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.injectBridgeScript(handlerId); - }); - } - - onMessage(cb) { - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.onMessage(handlerId, (messages) => { - messages.forEach((message) => { - cb(message); - }); - - //re-register the callback again - this.onMessage(cb); - }); - }); - } - - evalScript(value) { - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.eval(handlerId, value); - }); - } - - send(message) { - if (typeof message !== 'string') { - message = JSON.stringify(message); - } - - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.send(handlerId, message); - }); - } - - print() { - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.print(handlerId); - }); - } - - componentDidMount() { - if (super.componentDidMount) { - super.componentDidMount(); - } - //setup the internal variables of webview bridge - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.bridgeSetup(handlerId); - }); - } - - componentWillUnmount() { - if (super.componentWillUnmount) { - super.componentWillMount(); - } - //removed the internal variables from objective-c side related to - //handler id - this.getWebViewBridgeHandler((handlerId) => { - WebViewManager.callbackCleanup(handlerId); - this.handlerId = 0; - }); - } -} - -module.exports = WebViewBridge; diff --git a/lib/ios/RCTWebView+WebViewBridge.h b/lib/ios/RCTWebView+WebViewBridge.h deleted file mode 100644 index 208884a..0000000 --- a/lib/ios/RCTWebView+WebViewBridge.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// RCTWebView+WebViewBridge.h -// Sample2 -// -// Created by Ali Najafizadeh on 2015-07-10. -// Copyright (c) 2015 Facebook. All rights reserved. -// - -#import "RCTWebView.h" -#import "RCTBridgeModule.h" -#import "RCTEventDispatcher.h" - -@interface RCTWebView (WebViewBridge) - -- (void)setEvetnDispatcher:(RCTEventDispatcher *)eventDispatcher; -- (void)injectBridgeScript:(NSNumber*)reactTag; -- (void)print; -- (void)eval:(NSString *) value; -- (void)bridgeSetup; -- (void)send:(NSString*)message; -- (void)callbackCleanup:(NSNumber *)reactTag; -- (void)onMessageCallback:(RCTResponseSenderBlock)callback withReactTag:(NSNumber *)reactTag; - -//we are making this method visible to public. [Can't find any other way] -- (NSMutableDictionary *)baseEvent; - -@end diff --git a/lib/ios/RCTWebView+WebViewBridge.m b/lib/ios/RCTWebView+WebViewBridge.m deleted file mode 100644 index 2ce1ed9..0000000 --- a/lib/ios/RCTWebView+WebViewBridge.m +++ /dev/null @@ -1,165 +0,0 @@ -// -// RCTWebView+WebViewBridge.m -// Sample2 -// -// Created by Ali Najafizadeh on 2015-07-10. -// Copyright (c) 2015 Facebook. All rights reserved. -// - -#import "RCTWebView+WebViewBridge.h" -#import "RCTEventDispatcher.h" -#import "UIView+React.h" - -static NSString *const RCTJSAJAXScheme = @"react-ajax"; -static NSString *const RNWBSchema = @"rnwb"; - -//since category won't let us add variables to class, we need a static map -//to store information about our callbacks. These callbacks can be refereced by reactTag ids. -static NSMutableDictionary * callbackMap; -static dispatch_queue_t serialQueue; - -@implementation RCTWebView (WebViewBridge) - -RCTEventDispatcher *_eventDispatcher; -- (void)setEvetnDispatcher:(RCTEventDispatcher *)eventDispatcher{ - _eventDispatcher = eventDispatcher; -} - -- (void) bridgeSetup { - static dispatch_once_t onceQueue; - - dispatch_once(&onceQueue, ^{ - callbackMap = [[NSMutableDictionary alloc] init]; - serialQueue = dispatch_queue_create("react-native-webview-bridge", NULL); - }); -} - -//ref http://stackoverflow.com/questions/6544733/ios-air-print-for-uiwebview -- (void) print { - UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; - //pic.delegate = self; - UIPrintInfo *printInfo = [UIPrintInfo printInfo]; - printInfo.outputType = UIPrintInfoOutputGeneral; - printInfo.jobName = @"print-job"; - printInfo.duplex = UIPrintInfoDuplexLongEdge; - pic.printInfo = printInfo; - pic.showsPageRange = YES; - - UIWebView *webview = [self valueForKey:@"_webView"]; - UIViewPrintFormatter *formatter = [webview viewPrintFormatter]; - pic.printFormatter = formatter; - - void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = - ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { - if (!completed && error) { - NSLog(@"Printing could not complete because of error: %@", error); - } - }; - - [pic presentAnimated:YES completionHandler:completionHandler]; -} - -- (void)send:(NSString*)message { - UIWebView* _webView = [self valueForKey:@"_webView"]; - NSString *command = [NSString stringWithFormat: @"WebViewBridge.onMessage('%@');", message]; - [_webView stringByEvaluatingJavaScriptFromString:command]; -} - -- (void) callbackCleanup:(NSNumber *)reactTag { - [callbackMap removeObjectForKey:reactTag]; -} - -- (void)onMessageCallback:(RCTResponseSenderBlock)callback withReactTag:(NSNumber *)reactTag { - dispatch_sync(serialQueue, ^{ - [callbackMap setObject:callback forKeyedSubscript:reactTag]; - }); -} - -- (void)eval:(NSString *) value { - //access to provate variable - UIWebView* _webView = [self valueForKey:@"_webView"]; - [_webView stringByEvaluatingJavaScriptFromString:value]; - //NSLog(@"Called Eval %@", value); -} - -- (BOOL) isSignalTriggered:(UIWebView *)webView withRequest:(NSURLRequest *)request { - NSURL *URL = [request URL]; - if ([[URL scheme] isEqualToString:RNWBSchema]) { - // parse the rest of the URL object and execute functions - - NSString* message = [webView stringByEvaluatingJavaScriptFromString:@"WebViewBridge._fetch()"]; - - NSArray* temp = [self __jsonParseArray: message]; - RCTResponseSenderBlock callbackHandler = (RCTResponseSenderBlock)[callbackMap objectForKey:temp[0]]; - NSArray* messageArray = [self removeObjectFromArray:temp withIndex:0]; - - callbackHandler(@[messageArray]); - - return YES; - } - - return NO; -} - -- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType -{ - - //we need to check whether it's coming from our request schema - if ([self isSignalTriggered:webView withRequest:request]) { - return NO; - } - - // We have this check to filter out iframe requests and whatnot - BOOL isTopFrame = [request.URL isEqual:request.mainDocumentURL]; - if (isTopFrame) { - NSMutableDictionary *event = [self baseEvent]; - [event addEntriesFromDictionary: @{ - @"target": self.reactTag, - @"url": [request.URL absoluteString], - @"navigationType": @(navigationType) - }]; - [_eventDispatcher sendInputEventWithName:@"topLoadingStart" body:event]; - } - - // AJAX handler - return ![request.URL.scheme isEqualToString:RCTJSAJAXScheme]; -} - -- (BOOL)isWebViewBridgeInstantiated:(UIWebView *)webView { - return [[webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewBridge == 'object'"] isEqualToString:@"true"]; -} - -- (void)injectBridgeScript:(NSNumber*)reactTag { - UIWebView* _webView = [self valueForKey:@"_webView"]; - - if (![self isWebViewBridgeInstantiated:_webView]) { - NSBundle *bundle = [NSBundle mainBundle]; - NSString *filePath = [bundle pathForResource:@"webview-bridge-script" ofType:@"js"]; - NSString *handlerId = [NSString stringWithFormat: @"var webViewBridgeHandlerId = %@;", reactTag]; - NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; - js = [js stringByReplacingOccurrencesOfString:@"var webViewBridgeHandlerId = 0;" - withString:handlerId]; - [_webView stringByEvaluatingJavaScriptFromString:js]; - } -} - -- (NSArray*)__jsonParseArray:(NSString *)messageJSON { - return [NSJSONSerialization JSONObjectWithData:[messageJSON dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingAllowFragments - error:nil]; -} - -- (NSString *)__jsonStringify:(id)message { - return [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:message - options:0 - error:nil] - encoding:NSUTF8StringEncoding]; -} - --(NSArray *) removeObjectFromArray:(NSArray *) array withIndex:(NSInteger) index { - NSMutableArray *modifyableArray = [[NSMutableArray alloc] initWithArray:array]; - [modifyableArray removeObjectAtIndex:index]; - return [[NSArray alloc] initWithArray:modifyableArray]; -} - -@end diff --git a/lib/ios/RCTWebViewManager+WebViewManager.h b/lib/ios/RCTWebViewManager+WebViewManager.h deleted file mode 100644 index f12aed8..0000000 --- a/lib/ios/RCTWebViewManager+WebViewManager.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// RCTWebViewManager+WebViewManager.h -// Sample2 -// -// Created by Ali Najafizadeh on 2015-07-10. -// Copyright (c) 2015 Facebook. All rights reserved. -// - -#import "RCTWebViewManager.h" - -@interface RCTWebViewManager (WebViewManager) - -@end diff --git a/lib/ios/RCTWebViewManager+WebViewManager.m b/lib/ios/RCTWebViewManager+WebViewManager.m deleted file mode 100644 index 2d856e2..0000000 --- a/lib/ios/RCTWebViewManager+WebViewManager.m +++ /dev/null @@ -1,105 +0,0 @@ -// -// RCTWebViewManager+WebViewManager.m -// Sample2 -// -// Created by Ali Najafizadeh on 2015-07-10. - -#import "RCTWebViewManager+WebViewManager.h" -#import "RCTBridge.h" -#import "RCTSparseArray.h" -#import "RCTUIManager.h" -#import "RCTWebView.h" -#import "RCTWebView+WebViewBridge.h" - -@implementation RCTWebViewManager (WebViewManager) - -//NOTE -//DO not include RCT_EXPORT_MODULE() here because RCTWebViewManager already has it and -//we are using category feature in objective-c - -RCT_EXPORT_METHOD(bridgeSetup:(nonnull NSNumber *)reactTag) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - [view setEvetnDispatcher:self.bridge.eventDispatcher]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - - [view bridgeSetup]; - }]; -} - -RCT_EXPORT_METHOD(callbackCleanup:(nonnull NSNumber *)reactTag) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - - [view callbackCleanup:reactTag]; - }]; -} - -RCT_EXPORT_METHOD(onMessage:(nonnull NSNumber *)reactTag - withCallback:(RCTResponseSenderBlock)callback) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - - [view onMessageCallback:callback withReactTag:reactTag]; - }]; -} - -RCT_EXPORT_METHOD(send:(nonnull NSNumber *)reactTag - value:(NSString*)message) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - [view send:message]; - }]; -} - -RCT_EXPORT_METHOD(eval:(nonnull NSNumber *)reactTag - value:(NSString*)value) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - [view eval:value]; - }]; -} - -RCT_EXPORT_METHOD(injectBridgeScript:(nonnull NSNumber *)reactTag) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - [view injectBridgeScript: reactTag]; - }]; -} - -RCT_EXPORT_METHOD(print:(nonnull NSNumber *)reactTag) -{ - [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - RCTWebView *view = viewRegistry[reactTag]; - if (![view isKindOfClass:[RCTWebView class]]) { - RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view); - } - - [view print]; - }]; -} - -@end diff --git a/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 69aad0d..0000000 --- a/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate b/lib/ios/React-Native-WebView-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 712c291edbf6e2577387b4788472f0333804ada0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17648 zcmd6O30%}g|NqQ<=gTgzz{29P+`BB-F0cnI0%pdkl8DIV?Y6*ztH9#!qT)H<%u2H| zwaiWhv$V`KGds-8?%Oo8Lo2&Wv%4&_|IB__V7=;je$VrI{`eAh=lINLKJ%H+@t&E6 zj#h`;V=^5C5Fo$-40sU0SMg)VC(p9G+zw~^_+)3pbbF)6Jt5iVYMkbv#kI*EXGa8p zSFhU|4sQVxAO#8#2?l{QkPdV}4>CX|$N~mn1UaApi~&_(ET{%Gpcd4DdN2-*2NS?V zFbUW|184zG&;e!w7jT1FU?Erpt^`ZKjbH`139JP7flXjDxF0+Kwtxr0R`3wm2DXDo zz+>P^um?N?o&(Q=L*N~77`zMK1Mh74VFt{B7MKf1!3sDUR>Co`3XX-&W8)20I!7C!lm$fcoVz@ z-Ujc2-S9rR32ucC!N=hf@JYBE?u7^7LHIU21mA&&;k)oX_&)pw9)~C3x9}wV4t@`R zfWN_0@C*t-5+p@(6pl0~329L>Nt=(KqNg`VE~zzoS3UY4jJzb3t4Lr{E&FI4+(` z;F7r%PRAKJ3pbRzlpDqk=SFZNxry8)ZZbE8o61?aD>xhH;HGmkxY^u1Zazmifm^~| z%`M}u8GQAP&S6o&*pHk&-|XM1t=Hi9k)qj|Ezg3{r@UgiuZbNf=hec~PT>8l3Y}w91DKB|Zr+p4ptA zskWFFWUA+x2Nzf})djiv3l_ZPT~-swUJqiautMJg7LW@DgS?62indc(jTb-K-E`rL zTrOKzH*JtVzOrVF*Ub8sXb30;shhwhU?{j03 zn?M;z0VBXjP!2AqpDMs;5=|E=mc$VqsivPMlPM(KDpwY{-PG9I+C61W4v*92uCR4E zJ3UspoKCf7nsaugZI+|OMr$U~0xHi6TZ6sTD$in)@TroYnCm=_R)?pn$Yr?Dz-kTf5GXv5c?u;nP>bdC zJ7Z1?uBX$zOA0Q(WO!vi`eSJsp|sHQvHZ7!+~9+2-FW;U36)-dzwFsUS2 zTiCvC01*O&sg*UOJ3Th4yI!s80fgz5IL2adl~u0jYtTPf4_G{KxU0c3klF*T0oQ`1 zL{BnEW)HXyEC<(5mqp2^Zc7hsgbW9VCEL%G}CX{Vb!yvE*2qXm0YUzJs^ zzCfQEkE^rM)9JGNrn?H<$&`LIxEb66)__~VT5ub<9o#_-#7IoUOtMK1v5;IccoS9h zyTLlJp8o9t8|d$iRMGQDJ{dy)UP6Y_--yS{a5+0WXotvo^Gum)ubIitEyz^o=U9AJ=3%g79Vrmk zcPDt1>QL|U*VsKhU?{LXIBypE)awOF)1OXq--O21H1|L)3rH3J;-n}npDzNsiObsx-kFLCt0@J zYF&2wIcpL&K)9@dRUXGmN=DasY@SZ{xl&|4rcd+y=oj0Yoi2M{50M&kTjGNFTx4H^ zUN!Nl<`M8Ah*%Gfk`e2{M`R@P#EiLmTPs!jA}{y8rk{e(nQ{4yl&=S0kjvR@V=rQz zeBHhQ--6U`a2%W_A%v<6u0gBlS#@%mMYS8Z+tI!j3|(dGqm=1XKJvr@}Nco=l+jmUiuT1=_+} zrup^Dghs!9COYV({z3a3jOeDO80*|LR599G9Y*FZSlVNx>`=$jE;^Rk_J&!^u{3xc zi?P+wV01X$#)~ZPInDUArXQ$;obAl=d7HP`U48D9t}q+hSI#IMgmthUjswAPJe&Y0!b#Kux|~jr7?ZH6 zR5JGEQ7!g%N2gn4jD?H#IUcb_)!}lqQHOa>74Z;2rjgl);1oEO4q$~>KpP!oJZyq? z*bK&xr)g|!lgr*--(jP_J(C(4-FA;?(A7=7(Q=VD-DS?ge~OcwE{AWrbR-X%C5OcE zHk<|>bhPPk25g0GupK&K2c5Xjuv9o3y#kurA04nz#@nLJ=4kIPW`2S?oH=8feSQ1u zNC%lg++;d&TII$*w<_)($|#FlN}Y_Hp)X?V^RnUwb<^k+dPpk?JpgCJIh5lrs$KIY z_K#8L9i6mM6>Gn^>G66WxDYN9?Q*}s=$O>gdg)Zz9IkFiK>pvfQ7rmP{5b#@Q>Lzh zOW@UT!X)2f)KynZ@HpD+G=6RCATx=J0IS^IOx^Slqw&AGZH?kAm%;033`L_k-=g>y zv>PsGlRICP*z*Q>qg9?xcaz^T^$W{iySm{DM(!WC_t)~3RL`3L-BMsY>7>dzi_kEW z`h2*CE&D{eEySb*-VX1u%F`%QeR|>-miuqRZg?l->7OZt%n=QT;^g^L_5%%(_F|r`3P)=4=@7vlX>gm7BZit*N&!}##g%y zJ^~_o;CA>h+(8zQg=A3=+(~!IE<)(0IK*6*&Tlvtj@WBx`qbXy{n!^_)7*uIi2iMR zgT=GUN7$Whc8{w|T(76tdhHzZZ_$4T$U%}mnZ`EuQk%!d?A#=gCoi`&O1_Xb zQfuy~wUyp%Kiank&Qllbt1FvBZ7M?$`z^~PUme}e)U-D`+YGjjj@I4;&Cu&|eG~ow zegYyk!Xxk~{1AQwKZeK1b!0iYp4>ogBr7(;PvK|qbNB`P5`IN)A}h&l)GC%0 zcT%@fHO=O>_xdZE_@1Y=FI(^l!)Hh+ALrwHAaNSbd#H|Gl)P`AwKi9ay*JhGoo19D zH|6ckPEj;IiT?H=vo{GF!7@DF&J+)QrmkMaIOXkfU7IE2Y9 zWDQ#qO}{w%;sWNb`n5w_==2NvP#}^Gqy}11D9wJ?vh4SkWxrc0I6YO2jbJniZ;cjeo(o~SC zynB?rE8AeA8^vPIHD~AMl$ndmicJ=Z#F;GF1=;z-`>HIa3s;#hSd}yU+^W17-R}>&S>q{slS6;$M)5^2LIBG36A=4y9%YT}tjF zp$AbRb;{H=qasucm!Q%KZm%Ju8=Pz=o2W~EL0k01H<7n?¬@F#?UEcmf)U%F*TI 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 diff --git a/lib/ios/webview-bridge-script.js b/lib/ios/webview-bridge-script.js deleted file mode 100644 index 4f898e8..0000000 --- a/lib/ios/webview-bridge-script.js +++ /dev/null @@ -1,42 +0,0 @@ -(function() { - 'use strict'; - - //this variable will be set during the injection by objective-c - //we need to know the handlerId in order to locate the callback properly. - var webViewBridgeHandlerId = 0; - - var doc = document; - var WebViewBridge = {}; - var RNWBSchema = "rnwb"; - var queue = []; - var inProcess = false; - var customEvent = doc.createEvent('Event'); - - function noop() {} - - WebViewBridge = { - //do not call _fetch directly. this is for internal use - _fetch: function () { - var message; - queue.unshift(webViewBridgeHandlerId); - message = JSON.stringify(queue); - queue = []; - inProcess = false; - return message; - }, - send: function (value) { - queue.push(value); - if (!inProcess) { - inProcess = true; - //signal the objective-c that there is a message in the queue - window.location = RNWBSchema + '://message' + new Date().getTime(); - } - }, - onMessage: noop - }; - - window.WebViewBridge = WebViewBridge; - - customEvent.initEvent('WebViewBridge', true, true); - doc.dispatchEvent(customEvent); -}()); diff --git a/package.json b/package.json index 45e3099..8f4543c 100644 --- a/package.json +++ b/package.json @@ -2,14 +2,11 @@ "name": "react-native-webview-bridge", "version": "0.4.0", "description": "React Native WebView Javascript Bridge", - "main": "jsx/WebViewBridge.js", + "main": "webview-bridge", "directories": { "example": "example", "lib": "lib" }, - "peerDependencies": { - "react-native": ">= 0.10.0" - }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/example/Sample2/lib/scripts/webviewbridge.js b/scripts/webviewbridge.js similarity index 100% rename from example/Sample2/lib/scripts/webviewbridge.js rename to scripts/webviewbridge.js diff --git a/example/Sample2/lib/webview-bridge/index.ios.js b/webview-bridge/index.ios.js similarity index 100% rename from example/Sample2/lib/webview-bridge/index.ios.js rename to webview-bridge/index.ios.js From a38bedcc55fae0c8079bfce19eef948c2cf825a7 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 10:07:21 -0500 Subject: [PATCH 11/20] renaming --- {example => examples}/Sample2/.flowconfig | 0 {example => examples}/Sample2/.gitignore | 0 {example => examples}/Sample2/.watchmanconfig | 0 .../Sample2/android/app/build.gradle | 0 .../Sample2/android/app/proguard-rules.pro | 0 .../Sample2/android/app/react.gradle | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../app/src/main/java/com/sample2/MainActivity.java | 0 .../app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../android/app/src/main/res/values/strings.xml | 0 .../android/app/src/main/res/values/styles.xml | 0 {example => examples}/Sample2/android/build.gradle | 0 .../Sample2/android/gradle.properties | 0 .../android/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 {example => examples}/Sample2/android/gradlew | 0 {example => examples}/Sample2/android/gradlew.bat | 0 .../Sample2/android/settings.gradle | 0 {example => examples}/Sample2/index.android.js | 0 {example => examples}/Sample2/index.ios.js | 0 .../Sample2/ios/Sample2.xcodeproj/project.pbxproj | 0 .../xcshareddata/xcschemes/Sample2.xcscheme | 0 .../Sample2/ios/Sample2/AppDelegate.h | 0 .../Sample2/ios/Sample2/AppDelegate.m | 0 .../Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib | 0 .../AppIcon.appiconset/Contents.json | 0 .../Sample2/ios/Sample2/Info.plist | 0 {example => examples}/Sample2/ios/Sample2/main.m | 0 .../Sample2/ios/Sample2Tests/Info.plist | 0 .../Sample2/ios/Sample2Tests/Sample2Tests.m | 0 {example => examples}/Sample2/package.json | 0 34 files changed, 0 insertions(+), 0 deletions(-) rename {example => examples}/Sample2/.flowconfig (100%) rename {example => examples}/Sample2/.gitignore (100%) rename {example => examples}/Sample2/.watchmanconfig (100%) rename {example => examples}/Sample2/android/app/build.gradle (100%) rename {example => examples}/Sample2/android/app/proguard-rules.pro (100%) rename {example => examples}/Sample2/android/app/react.gradle (100%) rename {example => examples}/Sample2/android/app/src/main/AndroidManifest.xml (100%) rename {example => examples}/Sample2/android/app/src/main/java/com/sample2/MainActivity.java (100%) rename {example => examples}/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {example => examples}/Sample2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {example => examples}/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {example => examples}/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {example => examples}/Sample2/android/app/src/main/res/values/strings.xml (100%) rename {example => examples}/Sample2/android/app/src/main/res/values/styles.xml (100%) rename {example => examples}/Sample2/android/build.gradle (100%) rename {example => examples}/Sample2/android/gradle.properties (100%) rename {example => examples}/Sample2/android/gradle/wrapper/gradle-wrapper.jar (100%) rename {example => examples}/Sample2/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {example => examples}/Sample2/android/gradlew (100%) rename {example => examples}/Sample2/android/gradlew.bat (100%) rename {example => examples}/Sample2/android/settings.gradle (100%) rename {example => examples}/Sample2/index.android.js (100%) rename {example => examples}/Sample2/index.ios.js (100%) rename {example => examples}/Sample2/ios/Sample2.xcodeproj/project.pbxproj (100%) rename {example => examples}/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme (100%) rename {example => examples}/Sample2/ios/Sample2/AppDelegate.h (100%) rename {example => examples}/Sample2/ios/Sample2/AppDelegate.m (100%) rename {example => examples}/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib (100%) rename {example => examples}/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename {example => examples}/Sample2/ios/Sample2/Info.plist (100%) rename {example => examples}/Sample2/ios/Sample2/main.m (100%) rename {example => examples}/Sample2/ios/Sample2Tests/Info.plist (100%) rename {example => examples}/Sample2/ios/Sample2Tests/Sample2Tests.m (100%) rename {example => examples}/Sample2/package.json (100%) diff --git a/example/Sample2/.flowconfig b/examples/Sample2/.flowconfig similarity index 100% rename from example/Sample2/.flowconfig rename to examples/Sample2/.flowconfig diff --git a/example/Sample2/.gitignore b/examples/Sample2/.gitignore similarity index 100% rename from example/Sample2/.gitignore rename to examples/Sample2/.gitignore diff --git a/example/Sample2/.watchmanconfig b/examples/Sample2/.watchmanconfig similarity index 100% rename from example/Sample2/.watchmanconfig rename to examples/Sample2/.watchmanconfig diff --git a/example/Sample2/android/app/build.gradle b/examples/Sample2/android/app/build.gradle similarity index 100% rename from example/Sample2/android/app/build.gradle rename to examples/Sample2/android/app/build.gradle diff --git a/example/Sample2/android/app/proguard-rules.pro b/examples/Sample2/android/app/proguard-rules.pro similarity index 100% rename from example/Sample2/android/app/proguard-rules.pro rename to examples/Sample2/android/app/proguard-rules.pro diff --git a/example/Sample2/android/app/react.gradle b/examples/Sample2/android/app/react.gradle similarity index 100% rename from example/Sample2/android/app/react.gradle rename to examples/Sample2/android/app/react.gradle diff --git a/example/Sample2/android/app/src/main/AndroidManifest.xml b/examples/Sample2/android/app/src/main/AndroidManifest.xml similarity index 100% rename from example/Sample2/android/app/src/main/AndroidManifest.xml rename to examples/Sample2/android/app/src/main/AndroidManifest.xml diff --git a/example/Sample2/android/app/src/main/java/com/sample2/MainActivity.java b/examples/Sample2/android/app/src/main/java/com/sample2/MainActivity.java similarity index 100% rename from example/Sample2/android/app/src/main/java/com/sample2/MainActivity.java rename to examples/Sample2/android/app/src/main/java/com/sample2/MainActivity.java diff --git a/example/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from example/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to examples/Sample2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/example/Sample2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/Sample2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from example/Sample2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to examples/Sample2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/example/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from example/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to examples/Sample2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/example/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from example/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to examples/Sample2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/example/Sample2/android/app/src/main/res/values/strings.xml b/examples/Sample2/android/app/src/main/res/values/strings.xml similarity index 100% rename from example/Sample2/android/app/src/main/res/values/strings.xml rename to examples/Sample2/android/app/src/main/res/values/strings.xml diff --git a/example/Sample2/android/app/src/main/res/values/styles.xml b/examples/Sample2/android/app/src/main/res/values/styles.xml similarity index 100% rename from example/Sample2/android/app/src/main/res/values/styles.xml rename to examples/Sample2/android/app/src/main/res/values/styles.xml diff --git a/example/Sample2/android/build.gradle b/examples/Sample2/android/build.gradle similarity index 100% rename from example/Sample2/android/build.gradle rename to examples/Sample2/android/build.gradle diff --git a/example/Sample2/android/gradle.properties b/examples/Sample2/android/gradle.properties similarity index 100% rename from example/Sample2/android/gradle.properties rename to examples/Sample2/android/gradle.properties diff --git a/example/Sample2/android/gradle/wrapper/gradle-wrapper.jar b/examples/Sample2/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from example/Sample2/android/gradle/wrapper/gradle-wrapper.jar rename to examples/Sample2/android/gradle/wrapper/gradle-wrapper.jar diff --git a/example/Sample2/android/gradle/wrapper/gradle-wrapper.properties b/examples/Sample2/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from example/Sample2/android/gradle/wrapper/gradle-wrapper.properties rename to examples/Sample2/android/gradle/wrapper/gradle-wrapper.properties diff --git a/example/Sample2/android/gradlew b/examples/Sample2/android/gradlew similarity index 100% rename from example/Sample2/android/gradlew rename to examples/Sample2/android/gradlew diff --git a/example/Sample2/android/gradlew.bat b/examples/Sample2/android/gradlew.bat similarity index 100% rename from example/Sample2/android/gradlew.bat rename to examples/Sample2/android/gradlew.bat diff --git a/example/Sample2/android/settings.gradle b/examples/Sample2/android/settings.gradle similarity index 100% rename from example/Sample2/android/settings.gradle rename to examples/Sample2/android/settings.gradle diff --git a/example/Sample2/index.android.js b/examples/Sample2/index.android.js similarity index 100% rename from example/Sample2/index.android.js rename to examples/Sample2/index.android.js diff --git a/example/Sample2/index.ios.js b/examples/Sample2/index.ios.js similarity index 100% rename from example/Sample2/index.ios.js rename to examples/Sample2/index.ios.js diff --git a/example/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj similarity index 100% rename from example/Sample2/ios/Sample2.xcodeproj/project.pbxproj rename to examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj diff --git a/example/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme b/examples/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme similarity index 100% rename from example/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme rename to examples/Sample2/ios/Sample2.xcodeproj/xcshareddata/xcschemes/Sample2.xcscheme diff --git a/example/Sample2/ios/Sample2/AppDelegate.h b/examples/Sample2/ios/Sample2/AppDelegate.h similarity index 100% rename from example/Sample2/ios/Sample2/AppDelegate.h rename to examples/Sample2/ios/Sample2/AppDelegate.h diff --git a/example/Sample2/ios/Sample2/AppDelegate.m b/examples/Sample2/ios/Sample2/AppDelegate.m similarity index 100% rename from example/Sample2/ios/Sample2/AppDelegate.m rename to examples/Sample2/ios/Sample2/AppDelegate.m diff --git a/example/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib b/examples/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib similarity index 100% rename from example/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib rename to examples/Sample2/ios/Sample2/Base.lproj/LaunchScreen.xib diff --git a/example/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from example/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json rename to examples/Sample2/ios/Sample2/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/example/Sample2/ios/Sample2/Info.plist b/examples/Sample2/ios/Sample2/Info.plist similarity index 100% rename from example/Sample2/ios/Sample2/Info.plist rename to examples/Sample2/ios/Sample2/Info.plist diff --git a/example/Sample2/ios/Sample2/main.m b/examples/Sample2/ios/Sample2/main.m similarity index 100% rename from example/Sample2/ios/Sample2/main.m rename to examples/Sample2/ios/Sample2/main.m diff --git a/example/Sample2/ios/Sample2Tests/Info.plist b/examples/Sample2/ios/Sample2Tests/Info.plist similarity index 100% rename from example/Sample2/ios/Sample2Tests/Info.plist rename to examples/Sample2/ios/Sample2Tests/Info.plist diff --git a/example/Sample2/ios/Sample2Tests/Sample2Tests.m b/examples/Sample2/ios/Sample2Tests/Sample2Tests.m similarity index 100% rename from example/Sample2/ios/Sample2Tests/Sample2Tests.m rename to examples/Sample2/ios/Sample2Tests/Sample2Tests.m diff --git a/example/Sample2/package.json b/examples/Sample2/package.json similarity index 100% rename from example/Sample2/package.json rename to examples/Sample2/package.json From 0ae6239b0f22ee51b585edbb61789d252ddef427 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 10:17:12 -0500 Subject: [PATCH 12/20] updated lib --- .../project.pbxproj | 120 +++++++++--------- .../contents.xcworkspacedata | 2 +- .../UserInterfaceState.xcuserstate | Bin 19058 -> 14277 bytes .../react-native-webview-bridge.xcscheme | 18 +-- .../xcschemes/xcschememanagement.plist | 4 +- 5 files changed, 71 insertions(+), 73 deletions(-) diff --git a/ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj b/ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj index 7f3e07c..c4c381d 100644 --- a/ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj +++ b/ios/React-Native-Webview-Bridge.xcodeproj/project.pbxproj @@ -7,35 +7,33 @@ objects = { /* Begin PBXBuildFile section */ - 41C393BC1C1875C80094CF58 /* RCTWebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 41C393B91C1875C80094CF58 /* RCTWebViewBridge.m */; }; - 41C393BD1C1875C80094CF58 /* RCTWebViewBridgeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 41C393BB1C1875C80094CF58 /* RCTWebViewBridgeManager.m */; }; - 41C393BF1C18761A0094CF58 /* webviewbridge.js in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41C393BE1C18761A0094CF58 /* webviewbridge.js */; }; + 4114DC5C1C187CCB003CD988 /* RCTWebViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 4114DC591C187CCB003CD988 /* RCTWebViewBridge.m */; }; + 4114DC5D1C187CCB003CD988 /* RCTWebViewBridgeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4114DC5B1C187CCB003CD988 /* RCTWebViewBridgeManager.m */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - 41C393AA1C1875330094CF58 /* CopyFiles */ = { + 4114DC4A1C187C3A003CD988 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; dstSubfolderSpec = 16; files = ( - 41C393BF1C18761A0094CF58 /* webviewbridge.js in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 41C393AC1C1875330094CF58 /* libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 41C393B81C1875C80094CF58 /* RCTWebViewBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridge.h; sourceTree = SOURCE_ROOT; }; - 41C393B91C1875C80094CF58 /* RCTWebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridge.m; sourceTree = SOURCE_ROOT; }; - 41C393BA1C1875C80094CF58 /* RCTWebViewBridgeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridgeManager.h; sourceTree = SOURCE_ROOT; }; - 41C393BB1C1875C80094CF58 /* RCTWebViewBridgeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridgeManager.m; sourceTree = SOURCE_ROOT; }; - 41C393BE1C18761A0094CF58 /* webviewbridge.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = webviewbridge.js; path = ../scripts/webviewbridge.js; sourceTree = ""; }; + 4114DC4C1C187C3A003CD988 /* libReact-Native-Webview-Bridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libReact-Native-Webview-Bridge.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4114DC581C187CCB003CD988 /* RCTWebViewBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridge.h; sourceTree = SOURCE_ROOT; }; + 4114DC591C187CCB003CD988 /* RCTWebViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridge.m; sourceTree = SOURCE_ROOT; }; + 4114DC5A1C187CCB003CD988 /* RCTWebViewBridgeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewBridgeManager.h; sourceTree = SOURCE_ROOT; }; + 4114DC5B1C187CCB003CD988 /* RCTWebViewBridgeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewBridgeManager.m; sourceTree = SOURCE_ROOT; }; + 4114DC5F1C187CE4003CD988 /* webviewbridge.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = webviewbridge.js; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 41C393A91C1875330094CF58 /* Frameworks */ = { + 4114DC491C187C3A003CD988 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -45,108 +43,108 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 41C393A31C1875330094CF58 = { + 4114DC431C187C3A003CD988 = { isa = PBXGroup; children = ( - 41C393AE1C1875330094CF58 /* React-Native-Webview-Bridge */, - 41C393C01C18765D0094CF58 /* scripts */, - 41C393AD1C1875330094CF58 /* Products */, + 4114DC4E1C187C3A003CD988 /* React-Native-Webview-Bridge */, + 4114DC5E1C187CE4003CD988 /* scripts */, + 4114DC4D1C187C3A003CD988 /* Products */, ); sourceTree = ""; }; - 41C393AD1C1875330094CF58 /* Products */ = { + 4114DC4D1C187C3A003CD988 /* Products */ = { isa = PBXGroup; children = ( - 41C393AC1C1875330094CF58 /* libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a */, + 4114DC4C1C187C3A003CD988 /* libReact-Native-Webview-Bridge.a */, ); name = Products; sourceTree = ""; }; - 41C393AE1C1875330094CF58 /* React-Native-Webview-Bridge */ = { + 4114DC4E1C187C3A003CD988 /* React-Native-Webview-Bridge */ = { isa = PBXGroup; children = ( - 41C393B81C1875C80094CF58 /* RCTWebViewBridge.h */, - 41C393B91C1875C80094CF58 /* RCTWebViewBridge.m */, - 41C393BA1C1875C80094CF58 /* RCTWebViewBridgeManager.h */, - 41C393BB1C1875C80094CF58 /* RCTWebViewBridgeManager.m */, + 4114DC581C187CCB003CD988 /* RCTWebViewBridge.h */, + 4114DC591C187CCB003CD988 /* RCTWebViewBridge.m */, + 4114DC5A1C187CCB003CD988 /* RCTWebViewBridgeManager.h */, + 4114DC5B1C187CCB003CD988 /* RCTWebViewBridgeManager.m */, ); - name = "React-Native-Webview-Bridge"; - path = "react-native-webview-bridge"; + path = "React-Native-Webview-Bridge"; sourceTree = ""; }; - 41C393C01C18765D0094CF58 /* scripts */ = { + 4114DC5E1C187CE4003CD988 /* scripts */ = { isa = PBXGroup; children = ( - 41C393BE1C18761A0094CF58 /* webviewbridge.js */, + 4114DC5F1C187CE4003CD988 /* webviewbridge.js */, ); name = scripts; + path = ../scripts; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 41C393AB1C1875330094CF58 /* React-Native-Webview-Bridge.temp_caseinsensitive_rename */ = { + 4114DC4B1C187C3A003CD988 /* React-Native-Webview-Bridge */ = { isa = PBXNativeTarget; - buildConfigurationList = 41C393B51C1875330094CF58 /* Build configuration list for PBXNativeTarget "React-Native-Webview-Bridge.temp_caseinsensitive_rename" */; + buildConfigurationList = 4114DC551C187C3A003CD988 /* Build configuration list for PBXNativeTarget "React-Native-Webview-Bridge" */; buildPhases = ( - 41C393A81C1875330094CF58 /* Sources */, - 41C393A91C1875330094CF58 /* Frameworks */, - 41C393AA1C1875330094CF58 /* CopyFiles */, + 4114DC481C187C3A003CD988 /* Sources */, + 4114DC491C187C3A003CD988 /* Frameworks */, + 4114DC4A1C187C3A003CD988 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "React-Native-Webview-Bridge.temp_caseinsensitive_rename"; - productName = "react-native-webview-bridge"; - productReference = 41C393AC1C1875330094CF58 /* libReact-Native-Webview-Bridge.temp_caseinsensitive_rename.a */; + name = "React-Native-Webview-Bridge"; + productName = "React-Native-Webview-Bridge"; + productReference = 4114DC4C1C187C3A003CD988 /* libReact-Native-Webview-Bridge.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 41C393A41C1875330094CF58 /* Project object */ = { + 4114DC441C187C3A003CD988 /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0710; ORGANIZATIONNAME = alinz; TargetAttributes = { - 41C393AB1C1875330094CF58 = { + 4114DC4B1C187C3A003CD988 = { CreatedOnToolsVersion = 7.1.1; }; }; }; - buildConfigurationList = 41C393A71C1875330094CF58 /* Build configuration list for PBXProject "React-Native-Webview-Bridge" */; + buildConfigurationList = 4114DC471C187C3A003CD988 /* Build configuration list for PBXProject "React-Native-Webview-Bridge" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 41C393A31C1875330094CF58; - productRefGroup = 41C393AD1C1875330094CF58 /* Products */; + mainGroup = 4114DC431C187C3A003CD988; + productRefGroup = 4114DC4D1C187C3A003CD988 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 41C393AB1C1875330094CF58 /* React-Native-Webview-Bridge.temp_caseinsensitive_rename */, + 4114DC4B1C187C3A003CD988 /* React-Native-Webview-Bridge */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 41C393A81C1875330094CF58 /* Sources */ = { + 4114DC481C187C3A003CD988 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 41C393BD1C1875C80094CF58 /* RCTWebViewBridgeManager.m in Sources */, - 41C393BC1C1875C80094CF58 /* RCTWebViewBridge.m in Sources */, + 4114DC5D1C187CCB003CD988 /* RCTWebViewBridgeManager.m in Sources */, + 4114DC5C1C187CCB003CD988 /* RCTWebViewBridge.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - 41C393B31C1875330094CF58 /* Debug */ = { + 4114DC531C187C3A003CD988 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -189,7 +187,7 @@ }; name = Debug; }; - 41C393B41C1875330094CF58 /* Release */ = { + 4114DC541C187C3A003CD988 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -226,30 +224,30 @@ }; name = Release; }; - 41C393B61C1875330094CF58 /* Debug */ = { + 4114DC561C187C3A003CD988 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../../../node_modules/React/**", + "$(inhereted)", + "$(SRCROOT)/../../../node_module/React/**", "$(SRCROOT)/../../../node_modules/react-native/React/**", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "React-Native-Webview-Bridge.temp_caseinsensitive_rename"; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; name = Debug; }; - 41C393B71C1875330094CF58 /* Release */ = { + 4114DC571C187C3A003CD988 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../../../node_modules/React/**", + "$(inhereted)", + "$(SRCROOT)/../../../node_module/React/**", "$(SRCROOT)/../../../node_modules/react-native/React/**", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "React-Native-Webview-Bridge.temp_caseinsensitive_rename"; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; name = Release; @@ -257,25 +255,25 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 41C393A71C1875330094CF58 /* Build configuration list for PBXProject "React-Native-Webview-Bridge" */ = { + 4114DC471C187C3A003CD988 /* Build configuration list for PBXProject "React-Native-Webview-Bridge" */ = { isa = XCConfigurationList; buildConfigurations = ( - 41C393B31C1875330094CF58 /* Debug */, - 41C393B41C1875330094CF58 /* Release */, + 4114DC531C187C3A003CD988 /* Debug */, + 4114DC541C187C3A003CD988 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 41C393B51C1875330094CF58 /* Build configuration list for PBXNativeTarget "React-Native-Webview-Bridge.temp_caseinsensitive_rename" */ = { + 4114DC551C187C3A003CD988 /* Build configuration list for PBXNativeTarget "React-Native-Webview-Bridge" */ = { isa = XCConfigurationList; buildConfigurations = ( - 41C393B61C1875330094CF58 /* Debug */, - 41C393B71C1875330094CF58 /* Release */, + 4114DC561C187C3A003CD988 /* Debug */, + 4114DC571C187C3A003CD988 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 41C393A41C1875330094CF58 /* Project object */; + rootObject = 4114DC441C187C3A003CD988 /* Project object */; } diff --git a/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 7584951..74cbe5b 100644 --- a/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:React-Native-Webview-Bridge.xcodeproj"> diff --git a/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate b/ios/React-Native-Webview-Bridge.xcodeproj/project.xcworkspace/xcuserdata/ali.xcuserdatad/UserInterfaceState.xcuserstate index db9baaa0efcfafc19967a373f4df64cc6b6d641e..5e877a8b54e9efaca6162f067b8426ee6ffe6884 100644 GIT binary patch delta 8026 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 @@ -45,9 +45,9 @@ @@ -63,9 +63,9 @@ diff --git a/ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist index 37f67f5..2f988c4 100644 --- a/ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/ios/React-Native-Webview-Bridge.xcodeproj/xcuserdata/ali.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,7 +4,7 @@ SchemeUserState - react-native-webview-bridge.xcscheme + React-Native-Webview-Bridge.xcscheme orderHint 0 @@ -12,7 +12,7 @@ SuppressBuildableAutocreation - 41C393AB1C1875330094CF58 + 4114DC4B1C187C3A003CD988 primary From 5255212b4e2e5347b66684309e64f24fbfaa8a54 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 11:43:59 -0500 Subject: [PATCH 13/20] fixing couple of bugs --- package.json | 6 ++++- webview-bridge/index.ios.js | 49 ++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 8f4543c..0604a53 100644 --- a/package.json +++ b/package.json @@ -25,5 +25,9 @@ "bugs": { "url": "https://github.com/alinz/react-native-webview-bridge/issues" }, - "homepage": "https://github.com/alinz/react-native-webview-bridge" + "homepage": "https://github.com/alinz/react-native-webview-bridge", + "dependencies": { + "invariant": "2.2.0", + "keymirror": "0.1.1" + } } diff --git a/webview-bridge/index.ios.js b/webview-bridge/index.ios.js index 8b28b9c..8d74d55 100644 --- a/webview-bridge/index.ios.js +++ b/webview-bridge/index.ios.js @@ -14,19 +14,22 @@ */ 'use strict'; -var ActivityIndicatorIOS = require('ActivityIndicatorIOS'); -var EdgeInsetsPropType = require('EdgeInsetsPropType'); -var React = require('React'); -var StyleSheet = require('StyleSheet'); -var Text = require('Text'); -var View = require('View'); - +var React = require('react-native'); var invariant = require('invariant'); -var keyMirror = require('keyMirror'); -var requireNativeComponent = require('requireNativeComponent'); +var keyMirror = require('keymirror'); -var PropTypes = React.PropTypes; -var RCTWebViewBridgeManager = require('NativeModules').WebViewBridgeManager; +var { + ActivityIndicatorIOS, + EdgeInsetsPropType, + StyleSheet, + Text, + View, + requireNativeComponent, + PropTypes, + NativeModules: { + WebViewBridgeManager + } +} = React; var BGWASH = 'rgba(255,255,255,0.8)'; var RCT_WEBVIEW_BRIDGE_REF = 'webviewbridge'; @@ -38,15 +41,15 @@ var WebViewBridgeState = keyMirror({ }); var NavigationType = { - click: RCTWebViewBridgeManager.NavigationType.LinkClicked, - formsubmit: RCTWebViewBridgeManager.NavigationType.FormSubmitted, - backforward: RCTWebViewBridgeManager.NavigationType.BackForward, - reload: RCTWebViewBridgeManager.NavigationType.Reload, - formresubmit: RCTWebViewBridgeManager.NavigationType.FormResubmitted, - other: RCTWebViewBridgeManager.NavigationType.Other, + click: WebViewBridgeManager.NavigationType.LinkClicked, + formsubmit: WebViewBridgeManager.NavigationType.FormSubmitted, + backforward: WebViewBridgeManager.NavigationType.BackForward, + reload: WebViewBridgeManager.NavigationType.Reload, + formresubmit: WebViewBridgeManager.NavigationType.FormResubmitted, + other: WebViewBridgeManager.NavigationType.Other, }; -var JSNavigationScheme = RCTWebViewBridgeManager.JSNavigationScheme; +var JSNavigationScheme = WebViewBridgeManager.JSNavigationScheme; type ErrorEvent = { domain: any; @@ -191,7 +194,7 @@ var WebViewBridge = React.createClass({ var onShouldStartLoadWithRequest = this.props.onShouldStartLoadWithRequest && ((event: Event) => { var shouldStart = this.props.onShouldStartLoadWithRequest && this.props.onShouldStartLoadWithRequest(event.nativeEvent); - RCTWebViewBridgeManager.startLoadWithResult(!!shouldStart, event.nativeEvent.lockIdentifier); + WebViewBridgeManager.startLoadWithResult(!!shouldStart, event.nativeEvent.lockIdentifier); }); var onBridgeMessage = (event: Event) => { @@ -234,19 +237,19 @@ var WebViewBridge = React.createClass({ }, goForward: function() { - RCTWebViewBridgeManager.goForward(this.getWebViewBridgeHandle()); + WebViewBridgeManager.goForward(this.getWebViewBridgeHandle()); }, goBack: function() { - RCTWebViewBridgeManager.goBack(this.getWebViewBridgeHandle()); + WebViewBridgeManager.goBack(this.getWebViewBridgeHandle()); }, reload: function() { - RCTWebViewBridgeManager.reload(this.getWebViewBridgeHandle()); + WebViewBridgeManager.reload(this.getWebViewBridgeHandle()); }, sendToBridge: function (message) { - RCTWebViewBridgeManager.sendToBridge(this.getWebViewBridgeHandle(), message); + WebViewBridgeManager.sendToBridge(this.getWebViewBridgeHandle(), message); }, /** From 7be4672270e535a92bcee89f555e7396830f7f99 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 12:09:56 -0500 Subject: [PATCH 14/20] load script from obj instead --- ios/RCTWebViewBridge.m | 87 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 6 deletions(-) diff --git a/ios/RCTWebViewBridge.m b/ios/RCTWebViewBridge.m index 115ba34..78f5e21 100644 --- a/ios/RCTWebViewBridge.m +++ b/ios/RCTWebViewBridge.m @@ -239,12 +239,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) - (void)webViewDidFinishLoad:(UIWebView *)webView { //injecting WebViewBridge Script - NSBundle *bundle = [NSBundle mainBundle]; - NSString *webViewBridgeScriptFile = [bundle pathForResource:@"webviewbridge" - ofType:@"js"]; - NSString *webViewBridgeScriptContent = [NSString stringWithContentsOfFile:webViewBridgeScriptFile - encoding:NSUTF8StringEncoding - error:nil]; + NSString *webViewBridgeScriptContent = [self webViewBridgeScript]; [webView stringByEvaluatingJavaScriptFromString:webViewBridgeScriptContent]; ////////////////////////////////////////////////////////////////////////////// @@ -269,4 +264,84 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) error:nil]; } +//since there is no easy way to load the static lib resource in ios, +//we are loading the script from this method. +- (NSString *)webViewBridgeScript { + // NSBundle *bundle = [NSBundle mainBundle]; + // NSString *webViewBridgeScriptFile = [bundle pathForResource:@"webviewbridge" + // ofType:@"js"]; + // NSString *webViewBridgeScriptContent = [NSString stringWithContentsOfFile:webViewBridgeScriptFile + // encoding:NSUTF8StringEncoding + // error:nil]; + + return NSStringMultiline( + (function (window) { + 'use strict'; + + //Make sure that if WebViewBridge already in scope we don't override it. + if (window.WebViewBridge) { + return; + } + + var RNWBSchema = 'wvb'; + var sendQueue = []; + var receiveQueue = []; + + function callFunc(func, message) { + if ('function' === typeof func) { + func(message); + } + } + + function signalNative() { + window.location = RNWBSchema + '://message' + new Date().getTime(); + } + + //I made the private function ugly signiture so user doesn't called them accidently. + //if you do, then I have nothing to say. :( + var WebViewBridge = { + //this function will be called by native side to push a new message + //to webview. + __push__: function (message) { + receiveQueue.push(message); + //reason I need this setTmeout is to return this function as fast as + //possible to release the native side thread. + setTimeout(function () { + var message = receiveQueue.pop(); + callFunc(WebViewBridge.onMessage, message); + }, 15); //this magic number is just a random small value. I don't like 0. + }, + __fetch__: function () { + //since our sendQueue array only contains string, and our connection to native + //can only accept string, we need to convert array of strings into single string. + var messages = JSON.stringify(sendQueue); + + //we make sure that sendQueue is resets + sendQueue = []; + + //return the messages back to native side. + return messages; + }, + //make sure message is string. because only string can be sent to native, + //if you don't pass it as string, onError function will be called. + send: function (message) { + if ('string' !== typeof message) { + callFunc(WebViewBridge.onError, "message is type '" + typeof message + "', and it needs to be string"); + return; + } + + //we queue the messages to make sure that native can collects all of them in one shot. + sendQueue.push(message); + //signal the objective-c that there is a message in the queue + signalNative(); + }, + onMessage: null, + onError: null + }; + + window.WebViewBridge = WebViewBridge; + }(window)); + ); +} + @end From 87a19570db2f5ea31e2f46b4706b9760d44dc43a Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 12:20:33 -0500 Subject: [PATCH 15/20] fixed a bug --- ios/RCTWebViewBridge.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTWebViewBridge.m b/ios/RCTWebViewBridge.m index 78f5e21..802d6a3 100644 --- a/ios/RCTWebViewBridge.m +++ b/ios/RCTWebViewBridge.m @@ -173,7 +173,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder) BOOL isJSNavigation = [request.URL.scheme isEqualToString:RCTJSNavigationScheme]; if (!isJSNavigation && [request.URL.scheme isEqualToString:RCTWebViewBridgeSchema]) { - NSString* message = [webView stringByEvaluatingJavaScriptFromString:@"WebViewBridge._fetch()"]; + NSString* message = [webView stringByEvaluatingJavaScriptFromString:@"WebViewBridge.__fetch__()"]; NSMutableDictionary *onBridgeMessageEvent = [[NSMutableDictionary alloc] initWithDictionary:@{ @"messages": [self stringArrayJsonToArray: message] From d1cef32656e96e63a7d5bf0a60506dc7f675908a Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 12:20:54 -0500 Subject: [PATCH 16/20] added more engaging example --- examples/Sample2/index.ios.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/examples/Sample2/index.ios.js b/examples/Sample2/index.ios.js index 7118b09..96a4515 100644 --- a/examples/Sample2/index.ios.js +++ b/examples/Sample2/index.ios.js @@ -13,7 +13,22 @@ var { } = React; var WebViewBridge = require('react-native-webview-bridge'); -console.log(WebViewBridge); + +const injectScript = ` + (function () { + if (WebViewBridge) { + + WebViewBridge.onMessage = function (message) { + alert('got a message from Native: ' + message); + + WebViewBridge.send("message from webview"); + }; + + + + } + }()); +`; var Sample2 = React.createClass({ componentDidMount() { @@ -21,10 +36,15 @@ var Sample2 = React.createClass({ this.refs.webviewbridge.sendToBridge("hahaha"); }, 5000); }, + onBridgeMessage: function (message) { + console.log(message); + }, render: function() { return ( { console.log(message); }} From 995f64f6c10cfab649551b1b04efeee2130c88e1 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 12:21:07 -0500 Subject: [PATCH 17/20] added lib to sample project --- .../ios/Sample2.xcodeproj/project.pbxproj | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj index 0d90846..d4c0da5 100644 --- a/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj +++ b/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 4115A1F81C1898390020D542 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4115A1F61C1898160020D542 /* libReact-Native-Webview-Bridge.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -88,6 +89,13 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 4115A1F51C1898160020D542 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4114DC4C1C187C3A003CD988; + remoteInfo = "React-Native-Webview-Bridge"; + }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -124,6 +132,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sample2/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sample2/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -140,6 +149,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4115A1F81C1898390020D542 /* libReact-Native-Webview-Bridge.a in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, @@ -251,6 +261,14 @@ name = Products; sourceTree = ""; }; + 4115A1E91C1898160020D542 /* Products */ = { + isa = PBXGroup; + children = ( + 4115A1F61C1898160020D542 /* libReact-Native-Webview-Bridge.a */, + ); + name = Products; + sourceTree = ""; + }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( @@ -262,6 +280,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -407,6 +426,10 @@ ProductGroup = 139FDEE71B06529A00C62182 /* Products */; ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; }, + { + ProductGroup = 4115A1E91C1898160020D542 /* Products */; + ProjectRef = 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */; + }, { ProductGroup = 146834001AC3E56700842450 /* Products */; ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; @@ -477,6 +500,13 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4115A1F61C1898160020D542 /* libReact-Native-Webview-Bridge.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libReact-Native-Webview-Bridge.a"; + remoteRef = 4115A1F51C1898160020D542 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From fb43da19565caf4f8b8ba8c5337313f9b9d18360 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 13:31:58 -0500 Subject: [PATCH 18/20] added new doc --- README.md | 185 +++++++++++++++++++++++----------------------- doc/assets/01.png | Bin 0 -> 70525 bytes doc/assets/02.png | Bin 0 -> 71508 bytes doc/assets/03.png | Bin 0 -> 103478 bytes doc/assets/04.png | Bin 0 -> 167927 bytes doc/assets/05.png | Bin 0 -> 49498 bytes 6 files changed, 94 insertions(+), 91 deletions(-) create mode 100644 doc/assets/01.png create mode 100644 doc/assets/02.png create mode 100644 doc/assets/03.png create mode 100644 doc/assets/04.png create mode 100644 doc/assets/05.png diff --git a/README.md b/README.md index c222ce7..41eb646 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # React Native WebView Javascript Bridge -This project is inspired by [WebViewJavascriptBridge](https://github.com/marcuswestin/WebViewJavascriptBridge). +I have been testing and reading a lot of way to safely create a bridge between react-native and webview. I'm happy to announced that the wait is over and from React-Native 0.16 and above, the bridge is fully functional. + -> In order for me to extend React-Native's WebView, I had to use `Category` feature objective-c, that would be the simplest and most elegant way by far. ## Installation @@ -9,113 +9,116 @@ In order to use this extension, you have to do the following steps: 1. in your react-native project, run `npm install react-native-webview-bridge` 2. go to xcode's `Project Navigator` tab +

+ +

3. right click on `Libraries` 4. select `Add Files to ...` option -5. navigate to `node_modules/react-native-webview-bridge` and add `WebViewBridge` folder -6. clean compile to make sure your project can compile and build. +

+ +

+5. navigate to `node_modules/react-native-webview-bridge/ios` and add `React-Native-Webview-Bridge.xcodeproj` folder +

+ +

+6. on project `Project Navigator` tab, click on your project's name and select Target's name and from there click on `Build Phases` +

+ +

+7. expand `Link Binary With Libraries` and click `+` sign to add a new one. +8. select `libReact-Native-Webviwe-Bridge.a` and click `Add` button. +

+ +

+9. clean compile to make sure your project can compile and build. ## Usage -There is a script which will be injected by this extension to the first page that you load. In order for your webpage to get access to the injected script, you have to use the following function. +just import the module with one of your choices way: + +** CommonJS style ** ```js -function WebViewBridgeReady(cb) { - //checks whether WebViewBirdge exists in global scope. - if (window.WebViewBridge) { - cb(window.WebViewBridge); - return; - } - - function handler() { - //remove the handler from listener since we don't need it anymore - document.removeEventListener('WebViewBridge', handler, false); - //pass the WebViewBridge object to the callback - cb(window.WebViewBridge); - } - - //if WebViewBridge doesn't exist in global scope attach itself to document - //event system. Once the code is being injected by extension, the handler will - //be called. - document.addEventListener('WebViewBridge', handler, false); -} -``` - -so now, anywhere in your script in webpage, you can call - -```js -WebViewBridgeReady(function (WebViewBridge) { - //at this time, you should be able to use the injected code here. -}); -``` - -`WebViewBridge` exposes 2 methods, `send` and `onMessage`; - -if you want to send a message to `React-Native` component, call the `send` method. - -if you want to receive message from `React-Native`, attach a function to `onMessage`. - -For Example: - -```js -WebViewBridgeReady(function (WebViewBridge) { - WebViewBridge.onMessage = function(message) { - console.log('got a message from react-native', message); - }; - - //sending a message to react-native - WebViewBridge.send("Hello this is me calling from web page"); -}); -``` - - -On React-Native side, you just have to load the `WebViewBridge` component. - -```js -var React = require('react-native'); var WebViewBridge = require('react-native-webview-bridge'); ``` -Since `WebViewBridge` is extending `WebView` component, it behaves exactly as WebView. -What it means that `WebViewBridge` has all the methods and props of `WebView` component. - -So here's an example of using `WebViewBridge`, +** ES6/ES2015 style ** ```js -var React = require('react-native'); -var WebViewBridge = require('react-native-webview-bridge'); +import WebViewBridge from 'react-native-webview-bridge'; +``` -var { - Component -} = React; +`WebViewBridge` is an extension of `WebView`. It injects special script into any pages once it loads. Also it extends the functionality of `WebView` by adding 1 new method and 1 new props. -var WEBVIEW_REF = 'my_webview'; +#### sendToBridge(message) +the message must be in string. because this is the only way to send data back and forth between native and webview. -class MyAwesomeView extends Component { - constructor(props) { - super(props); - } +#### onBridgeMessage +this is a prop that needs to be a function. it will be called once a message is received from webview. The type of received message is also in string. + + +## Bridge Script + +bridge script is a special script which injects into all the webview. It automatically register a global variable called `WebViewBridge`. It has 2 optional methods to implement and one method to send message to native side. + +#### send(message) + +this method sends a message to native side. the message must be in string type or `onError` method will be called. + +#### onMessage + +this method needs to be implemented. it will be called once a message arrives from native side. The type of message is in string. + +#### onError + +this is an error reporting method. It will be called if there is an error happens during sending a message. It receives a error message in string type. + +## Notes + +> a special bridge script will be injected once the page is going to different URL. So you don't have to manage when it needs to be injected. + +> You can still pass your own javascript to be injected into webview. However, Bridge script will be injected first and then your custom script. + + +## Simple Example +This example can be found in `examples` folder. + +```js +const injectScript = ` + (function () { + if (WebViewBridge) { + + WebViewBridge.onMessage = function (message) { + alert('got a message from Native: ' + message); + + WebViewBridge.send("message from webview"); + }; + + } + }()); +`; + +var Sample2 = React.createClass({ componentDidMount() { - var webviewRef = this.refs[WEBVIEW_REF]; - - webviewRef.onMessage(function (message) { - console.log("This message coming from web view", message); - webviewRef.send("Hello from react-native"); - }); - } - - render() { + setTimeout(() => { + this.refs.webviewbridge.sendToBridge("hahaha"); + }, 5000); + }, + onBridgeMessage: function (message) { + console.log(message); + }, + render: function() { return ( + ref="webviewbridge" + onBridgeMessage={this.onBridgeMessage} + injectedJavaScript={injectScript} + onBridgeMessage={(message) => { + console.log(message); + }} + url={"http://google.com"}/> ); } -} - -Added feature - -- 0.3.4 - - added `print` feature [exampl ecode](https://github.com/alinz/react-native-webview-bridge/blob/v0.3.4/example/Sample1/index.ios.js#L53) +}); +``` diff --git a/doc/assets/01.png b/doc/assets/01.png new file mode 100644 index 0000000000000000000000000000000000000000..465b57cb60cc564e79eb77fe934b2e70bd39373e GIT binary patch literal 70525 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 literal 0 HcmV?d00001 diff --git a/doc/assets/02.png b/doc/assets/02.png new file mode 100644 index 0000000000000000000000000000000000000000..7b599c5c4aeb8a15bd4879a5905fcba022bb4397 GIT binary patch literal 71508 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

=6@?><;h2QiDbP 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®2PP#+rZ;m+b^9(DoM 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�fd%eA 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 IDVPNP59%vzvj6}9 literal 0 HcmV?d00001 diff --git a/doc/assets/05.png b/doc/assets/05.png new file mode 100644 index 0000000000000000000000000000000000000000..05bf20d3a37aa5d046a08fb4d59e162973607aec GIT binary patch literal 49498 zcmcG$Wl$bL(=Lp=-MG8E1$Wor?(XjH9^Bm>f(LhZhXBDLxVs;cJg-!JRj2Cvaj3eh zcBi{%c4l_w>h5cn2>Gw#@G#ggKtMq7k`f|{KtRB8pT9{ch|dzn8oK?@8*d9?VR=bm zVM2LFJ5vj56CfbUcq4s%YDrqk5d#B#{gFu;Di}vM#qjWNiu&FCJ(E5Cgai76ggI&2 z+FO`NTmAkh-t9v@Pz4MpffG_UuO9OyP2TV5Y&GeQs$^U(cLBg|QkD+Ppr9m>aoJgl zSy`~g2S6)aqu`=s0{3u)TFo6rKm&Zh#!;xicu>Zhz;*LPr-+2E$Z3-UAgURLBn*AZv!o9g8%sH`1eDKGD~%;eTrbPi8qDB^gNdt$2ymW#tKl?Ho-AztFSNGZOQ`5E2sd zI2xOBDT;{w$Nck-m)P9d*`AAm!OhK$-i?Lc&e4p4iIbC)fsvVknVIfWgU-pr*4e~?_ z@JGVHM9;|Z-*tbQ^86{~lDBX-u~rwcuraZ9`fP)bm64I>um1l>@;@#9FH4R8Wy!|$ zzb*flCJs*s0^b;)*kN}XRh@i4N@M$)rK=R_t zaJO5(32flbKmZBKT-H8ivef*{LZf!M#nhPJ6OFiKadHORgrjl>i`(xd+*bA$`yefW zINpm#{)0~KmLBjGVm@((2cK!LAt%0rUpHA-T^A(nu4frcR8-KXX+S9YATs{Ydtv?w zxC@ppzB~5n0g?6stR<6SVtX*zB zzMcv}V;`F6XXgv*4%PD9DQ&uOa>MN#eZADkfec}gKpi!bM<3e6*+FE*7pnr($%;$+ zvoO478N9~#V`f%e`N)Z{49nM>u zE?fr<-3f~$f@?d9+rwI&ZD}g+h8Ug(oc17MSV7W*vJ{#6P->g* zsH*ELPLx_w`A5AB6HD}AW)0ML?@~_kA>Rm+C z%-9S0Z%}gI)?=wYLbg+zE&2HbVbUAs%DJrZQ!OxX=sJ!~rhl0$Cw3<)*L#8rJ5X37 zo$3e2ElO%NmVhlxe-rtc-DzI7gpojstu7C35yJ1eEss9kS5 zeIS!p28EglBH8%^jo?*{AQK~2$c6&`jZu5nbD)lfS!=cgpl~cT1;QJtutV z-`0}Wn}lf}ZpgP$dxzxs?$XZUPRK(>$8SUEob$+0YZuVr3zs2F%G7Nsedd^) zq+8-@OcZ2-C7RRjJ2f(|twt>KwQ4}XYME9EuT8OS`~k8zz!$r3w2(o6J+d==24ih{ zAqntd0s>AdZ%wC^OUTvec2#9Gl+n?97%ABO8fg3F5TiiR=%XOH?8`azxh{Vov>AVI zvzDC#E}mYzM-c~H+zds@wA0WNSg2S2xIGhTWkAD-i;T?=f5~(i)~S6A3N_P z;)jidKQ>eB;Fo92v2~qY;pgA4qyOWjs( zBB!U-j9PQ#G@QQZ)%*Ev@}N)h{N?B4x-ZYkS*RB`zxct&iqS!cRtsJuE!?_)R=3OQK#TE8b=#TST6)}7WJWDA#vd#c zTV|-W5c1jDg>PXyk>wZ(Dt0w)uxGao-RODW)SfMz{n&<~GLueqbV5WYD35+yCfM1o zeyc5P)AWr{S8AV(SnQP5+o~?tRqpPE;+sb_dvC_9W0Rs<8F+!b+8BvwNleh$*7`j@ zEVJbRU~F308O!z!;^dr7->P;v)Lsq=Y{@%`Q#JQyN4`lYtb0V%pIu>>?~S4Vau}*| z(G@l+_%KUsi#DhcVhjJP$e24;6KsJu#_M@mz7DIl;^M&l_d)Z_^P(M7Wde!f_wPVt zAr9;a`iqVviiP8#7)x{59v?E}xG>QyxRR zxO{CW<8s5qd-z+HMU1Q(;i5jT7iSpxO|yl*ovLLYgA%Nci$dG-u+>y0_C&)!W;V?n zPG(GLOA9gGkauHA!toZ;9ghN(3>p+1tbjuOm~hQL_(BFkAribmhFU3%mJf}EAF44d7O-~_#h z&JEbhslFP^8Z0|aYTacSvC?8780-gCtZLX0bYY5ezV8qA)QT5k35k2NaM{*U2o~Bz z{JjObDN=qzu7H1}sAM>M{K9Z$sG{_S_-4gnSpzGi*gU2&2JZa0DOYB{hpAe{5fQv~ z;;%)b#Fqp??k#CEGM|*|EEh_LB_Z86dlyw+Ez`5z{ZU{=MY#8Pv-Jh8`pq2QP=5RO zVdS%=8i$gXM5|}o@vaV7*Awn39E4?pFq2^%BK^h(a1$>}N~W?3_wIq+)YeG%xIH;N zh(VHB_QC?L#?hYS;{}7$8<*nY??-c6@mo**wsjGu1K!}!F4*GwOKHa>4sLS!Juv16 zQqi;yAuGAgJ>6dtKX7@E?05I5f<-b-$*Ob8Q*w+z?uPH87f31_=VEmVrydPf6*fKI zeBqMri+~!jPEN%_W*E%?*~U?>EF|`>7f2j@P(9(Hx~zTt!u&i50c{S`6)IcX+W}*I zymcN2sLCqF6Oj`jP|3hW8FEK!p`yB4d-vg*i_*m$wa2660Mse4O ziRy7=ym;>_^9)tm;{Er`e;UEMPFaXvWzD#Hil4rEfi9h1_2u;j&0HR;R&BPxR}VFl zkeT=gQ3is;CWnrB-{Q+Sg@5aieVVPB&c{lA1W8Fq08A0q#4wQ9>R-e`g!43@@_iYb zwRYAorbt~)(EG@V1xI04DiFnN<1{e2>mU%X$#p+pxKDq%*QxIRq# zkb(K*9OjfpS?~++hhU^Kd%=(6%JNBd2TMzqI~uP7M-xOtUGQ~wyP@eb>Vt?diK%+B zGV8&N1oW{+Pd4miB$0D*Q(N)bu&yAren3msPB`_K&SF>Exv^-KrRNYaW%p2$C_5|) z?*T9=tN=qL!s85I*0v29yltspatV@!eOuX^1@U^2nyGS1AfqYl_ZcIYXlOHyU!p%! zU!y2BE9HuKzuEbf^zKP-l*!jXUk=l1g2o2OV1$9v_=0i43+S}lzjB(w#gzHX+U>bd zymX=6+qH!!Q8&#%e-M4uf@J7^WyaV+H0$|#WvEzMy)=FDdwm$tb{TAh3D zeq~F@(+_)a`WbzpQxCeAP1?reJ3z^Zdqe#1q@h zU4!q~4pwsjjF{m<*Kt?#oRV-oIF9RSHBLubaLgFr=pXiAy_sqX;8tFn!!dr7xTvQLskb` ztsS!-#ggK|}kJiL;FDU!ogBP7O&j%HbBMN@U?hn2(l|zDS(6lDhHE&*2<*M@?GM zNE$3G;>24PDEPAL9lfr^DEX%onQQ1ce}z~$yyNxdzla@DA(vV{iG9Sw@m%z0I@0!h zo&&$h9Z)~);NHFF-`!gO&T_1`8jNnMm#30kUV>Cjq3?Hq?VQErIaTgW9LO6%TMd_P zSo)!|Sai9B z$g#N|^+RXMj5<|t4av#$VR#&VO!BGmTtv@yz1S!}nAQVU&PmtQcDlunIHa0?%d3jK zM9d^w{2B>h`QroXPV2dFu8zRo$w$vp9JUPaNk4- zB3Jn)myJ+~kZo1R26?e>+G>h&_Z^e3w_F-U3)RC{qlr?S+EPTi1F7*O#ow=C&`H=J z%&Tb=*G>$cD+58nhHzFFr?k;+HyJ^?xguBA28AQU#5O79v%^E=g+>W;q}`82%0E}k z@UbGJpNd+PHKl4N)!sGs7bwUSAdQ8kjWlZZ&a}n$B}tK1_NIiL@sedr6D7S^J)m;v z!sB>H%L21)rsiuvlI1F*0>{Y~;V0z>Haco3K|@JY{Xe+m3YF4<-d4fUH1RT+&Dj^)H-7{oJ3{K&hCa zIf?#-z?8{g>H$e(mInEMX|-{*y-&{0Ra*6czr&p!DKQ7t5B&V zmqf+D2m^;jCnP6_uvGCQQe^FbIBKb}+TP=8FF=6d@r8%M!0!|o=F#dQ+T_-WZ_Oq`$t4LD zbf^jQsIB2Kr-Mkq^k4Z1x~IuR{7ex~H2rk)V&|DvkaCl-Kz`Ma%c!J82No3-37mTD z?F}^T8P9SboLc{)?iID|S$X@|nTcS5YJCB6%}G|6`Wmq}LQ}-kx3%6v#?`Ta{GH0p zo^p#Gu1x|4Bg~SIZYE!tMp+2#YfiU#I%Zr#+P4-CaPN#C15wke1IfF?0Qv`kh93-t zl0I(1kdRxhxHj^0a3UBVNK-DEg=bOI{bZcD2Q{Gww3K=VAaWd^D@o2BJmt$(c2-uA zPt4<^d!;B!L#+7vIDIO2zU0e~%W^doO<`R6T<(xg?)zO=YZ&|u#A0U)Hh?FJpqj0a zxRbr`0O&J)*pMu?5S|-`px`o6qSUiMMwGmLhIz}8 zR}X}GEUh89U2Mn(dABa^(~YCvjY5aVeCa8al6{=3`h0g%?1hMhYWu~Ri=7YmkfZ}SD!W76(xN_eT=3Sp4ilWQVeyAWeX{ z{nH*16fa@cP%-wgnoD5y1mKR>$bS1!R~rdq&$VoG0Qx@0^|HkmYS`@pIY)jDEa=Ao z8AS{Wey?J|`3+wRoDtom z90UY}P%Q2=O~3(wB(+zX>pP|rA>nbN7#CL%BvTwvJywMfZn$DRe>e4DmouhnY}k_T^L>#524;$4h`HC?GosMa(mJ~9E%wKXk`ILr=S5;? zZ)VmOqQ^#|80iKP5JQ zv%a4h;s1*yZ)7tB4HHS7P>=)pKM0HnOrV!*DB1D}5pne`!F1>#S(Jal77m4SN|2Yq zAbC5qU)1Oi;G$A|uCGDK)Opjt@N4i1zhn0Mj&{)xVDYV;VOGLCraVy+kRvf1pVRrq^$5U23c=|XE`-MlPx+B#r|IoP>N zh~<074SjqvI;b9yxpL%==&Z#RP6gXT53c!}tskQeK+X=RQm+G1tI?eVm{w~x&9u8+ z+@4Su%cDwRI(qs`YHk`hGApbB*n4Joes<`dUnCr?lGQY z>k6u5)PbFG3#InkUt6+bKPCykMkhiE3NMrw)qP7jsgp4QbyJBTo>0N>`sWQvf{<~6 zUftXT(fVLfJ28cHx7Z#fDBej(ewoAy-eIIc1c(KzRT$62B>-SVW${{>Wj(^JAnM*t zwi~}-7b3)L_341>v`4+Q_Z3x!#b_sX+2QkovD(p5rP6qz_v9J_t{N0N@WvXUtTR&f3cfgZB1ZD&O>qs8Rf_Fgb{>3X6__zUK=&bTn!@(E=T>Iml;mF zpTWvR$}Bmgw@y#YDfRQr@h2j}?2chB-H+we`Yxe?9bNb6wsF|V^Llw#fpXM9(;)LY z`Pa|;3PM&Ppsk~G)d$OLPzvnt4%qZ$mR!8P_!l$UepP;W*0I6?-6>dVyJSE z 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 literal 0 HcmV?d00001 From eb1627d6b699e50724528865d53739ed1f9164ac Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 13:32:17 -0500 Subject: [PATCH 19/20] make the example more intresting --- examples/Sample2/index.ios.js | 2 -- .../ios/Sample2.xcodeproj/project.pbxproj | 24 +++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/examples/Sample2/index.ios.js b/examples/Sample2/index.ios.js index 96a4515..860d2b7 100644 --- a/examples/Sample2/index.ios.js +++ b/examples/Sample2/index.ios.js @@ -24,8 +24,6 @@ const injectScript = ` WebViewBridge.send("message from webview"); }; - - } }()); `; diff --git a/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj b/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj index d4c0da5..051c047 100644 --- a/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj +++ b/examples/Sample2/ios/Sample2.xcodeproj/project.pbxproj @@ -21,7 +21,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 4115A1F81C1898390020D542 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4115A1F61C1898160020D542 /* libReact-Native-Webview-Bridge.a */; }; + 4115A2051C189D3C0020D542 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4115A2041C189C290020D542 /* libReact-Native-Webview-Bridge.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -89,9 +89,9 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; - 4115A1F51C1898160020D542 /* PBXContainerItemProxy */ = { + 4115A2031C189C290020D542 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */; + containerPortal = 4115A1FF1C189C290020D542 /* React-Native-Webview-Bridge.xcodeproj */; proxyType = 2; remoteGlobalIDString = 4114DC4C1C187C3A003CD988; remoteInfo = "React-Native-Webview-Bridge"; @@ -132,7 +132,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sample2/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sample2/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = ""; }; + 4115A1FF1C189C290020D542 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -149,7 +149,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4115A1F81C1898390020D542 /* libReact-Native-Webview-Bridge.a in Frameworks */, + 4115A2051C189D3C0020D542 /* libReact-Native-Webview-Bridge.a in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, @@ -261,10 +261,10 @@ name = Products; sourceTree = ""; }; - 4115A1E91C1898160020D542 /* Products */ = { + 4115A2001C189C290020D542 /* Products */ = { isa = PBXGroup; children = ( - 4115A1F61C1898160020D542 /* libReact-Native-Webview-Bridge.a */, + 4115A2041C189C290020D542 /* libReact-Native-Webview-Bridge.a */, ); name = Products; sourceTree = ""; @@ -280,7 +280,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */, + 4115A1FF1C189C290020D542 /* React-Native-Webview-Bridge.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -427,8 +427,8 @@ ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; }, { - ProductGroup = 4115A1E91C1898160020D542 /* Products */; - ProjectRef = 4115A1E81C1898160020D542 /* React-Native-Webview-Bridge.xcodeproj */; + ProductGroup = 4115A2001C189C290020D542 /* Products */; + ProjectRef = 4115A1FF1C189C290020D542 /* React-Native-Webview-Bridge.xcodeproj */; }, { ProductGroup = 146834001AC3E56700842450 /* Products */; @@ -500,11 +500,11 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 4115A1F61C1898160020D542 /* libReact-Native-Webview-Bridge.a */ = { + 4115A2041C189C290020D542 /* libReact-Native-Webview-Bridge.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = "libReact-Native-Webview-Bridge.a"; - remoteRef = 4115A1F51C1898160020D542 /* PBXContainerItemProxy */; + remoteRef = 4115A2031C189C290020D542 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { From a432ba6bbbcfbc6ea16995238553e92b43ef0a22 Mon Sep 17 00:00:00 2001 From: Ali Najafizadeh Date: Wed, 9 Dec 2015 13:34:00 -0500 Subject: [PATCH 20/20] update the version --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 41eb646..1628aa3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # React Native WebView Javascript Bridge -I have been testing and reading a lot of way to safely create a bridge between react-native and webview. I'm happy to announced that the wait is over and from React-Native 0.16 and above, the bridge is fully functional. +I have been testing and reading a lot of way to safely create a bridge between react-native and webview. I'm happy to announced that the wait is over and from **React-Native 0.16 and above**, the bridge is fully functional. diff --git a/package.json b/package.json index 0604a53..cf1bb36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-webview-bridge", - "version": "0.4.0", + "version": "0.16.0", "description": "React Native WebView Javascript Bridge", "main": "webview-bridge", "directories": {