[
  {
    "path": "Example/.buckconfig",
    "content": "\n[android]\n  target = Google Inc.:Google APIs:23\n\n[maven_repositories]\n  central = https://repo1.maven.org/maven2\n"
  },
  {
    "path": "Example/.flowconfig",
    "content": "[ignore]\n; We fork some components by platform\n.*/*[.]android.js\n\n; Ignore \"BUCK\" generated dirs\n<PROJECT_ROOT>/\\.buckd/\n\n; Ignore unexpected extra \"@providesModule\"\n.*/node_modules/.*/node_modules/fbjs/.*\n\n; Ignore duplicate module providers\n; For RN Apps installed via npm, \"Libraries\" folder is inside\n; \"node_modules/react-native\" but in the source repo it is in the root\n.*/Libraries/react-native/React.js\n\n; Ignore polyfills\n.*/Libraries/polyfills/.*\n\n; Ignore metro\n.*/node_modules/metro/.*\n\n[include]\n\n[libs]\nnode_modules/react-native/Libraries/react-native/react-native-interface.js\nnode_modules/react-native/flow/\nnode_modules/react-native/flow-github/\n\n[options]\nemoji=true\n\nesproposal.optional_chaining=enable\nesproposal.nullish_coalescing=enable\n\nmodule.system=haste\nmodule.system.haste.use_name_reducers=true\n# get basename\nmodule.system.haste.name_reducers='^.*/\\([a-zA-Z0-9$_.-]+\\.js\\(\\.flow\\)?\\)$' -> '\\1'\n# strip .js or .js.flow suffix\nmodule.system.haste.name_reducers='^\\(.*\\)\\.js\\(\\.flow\\)?$' -> '\\1'\n# strip .ios suffix\nmodule.system.haste.name_reducers='^\\(.*\\)\\.ios$' -> '\\1'\nmodule.system.haste.name_reducers='^\\(.*\\)\\.android$' -> '\\1'\nmodule.system.haste.name_reducers='^\\(.*\\)\\.native$' -> '\\1'\nmodule.system.haste.paths.blacklist=.*/__tests__/.*\nmodule.system.haste.paths.blacklist=.*/__mocks__/.*\nmodule.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/Animated/src/polyfills/.*\nmodule.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/Libraries/.*\n\nmunge_underscores=true\n\nmodule.name_mapper='^[./a-zA-Z0-9$_-]+\\.\\(bmp\\|gif\\|jpg\\|jpeg\\|png\\|psd\\|svg\\|webp\\|m4v\\|mov\\|mp4\\|mpeg\\|mpg\\|webm\\|aac\\|aiff\\|caf\\|m4a\\|mp3\\|wav\\|html\\|pdf\\)$' -> 'RelativeImageStub'\n\nmodule.file_ext=.js\nmodule.file_ext=.jsx\nmodule.file_ext=.json\nmodule.file_ext=.native.js\n\nsuppress_type=$FlowIssue\nsuppress_type=$FlowFixMe\nsuppress_type=$FlowFixMeProps\nsuppress_type=$FlowFixMeState\n\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowFixMe\\\\($\\\\|[^(]\\\\|(\\\\(<VERSION>\\\\)? *\\\\(site=[a-z,_]*react_native[a-z,_]*\\\\)?)\\\\)\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowIssue\\\\((\\\\(<VERSION>\\\\)? *\\\\(site=[a-z,_]*react_native[a-z,_]*\\\\)?)\\\\)?:? #[0-9]+\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowFixedInNextDeploy\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowExpectedError\n\n[version]\n^0.86.0\n"
  },
  {
    "path": "Example/.gitattributes",
    "content": "*.pbxproj -text\n"
  },
  {
    "path": "Example/.gitignore",
    "content": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\nproject.xcworkspace\n\n# Android/IntelliJ\n#\nbuild/\n.idea\n.gradle\nlocal.properties\n*.iml\n\n# node.js\n#\nnode_modules/\nnpm-debug.log\nyarn-error.log\n\n# BUCK\nbuck-out/\n\\.buckd/\n*.keystore\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/\n\n*/fastlane/report.xml\n*/fastlane/Preview.html\n*/fastlane/screenshots\n\n# Bundle artifact\n*.jsbundle\n"
  },
  {
    "path": "Example/.watchmanconfig",
    "content": "{}"
  },
  {
    "path": "Example/App.js",
    "content": "import React from 'react';\nimport {createStackNavigator,createAppContainer} from 'react-navigation'\nimport MainPage from './src/pages/MainPage'\nimport SmartToastPage from './src/pages/SmartToastPage'\nimport ModalToastPage from './src/pages/ModalToastPage'\nimport SnackBarPage from './src/pages/SnackBarPage'\nimport ModalShowToastPage from './src/pages/ModalShowToastPage';\n\nconst App = createStackNavigator({\n    MainPage: {screen: MainPage},\n    SmartToastPage: {screen: SmartToastPage},\n    SnackBarPage: {screen: SnackBarPage},\n    ModalToastPage: {screen: ModalToastPage},\n    ModalShowToastPage: {screen: ModalShowToastPage}\n},{\n    navigationOptions: {\n        gesturesEnabled:  true\n    },\n    headerMode:  'none'\n})\n\nexport default createAppContainer(App)\n"
  },
  {
    "path": "Example/__tests__/App.js",
    "content": "/**\n * @format\n * @lint-ignore-every XPLATJSCOPYRIGHT1\n */\n\nimport 'react-native';\nimport React from 'react';\nimport App from '../App';\n\n// Note: test renderer must be required after react-native.\nimport renderer from 'react-test-renderer';\n\nit('renders correctly', () => {\n  renderer.create(<App />);\n});\n"
  },
  {
    "path": "Example/android/app/BUCK",
    "content": "# To learn about Buck see [Docs](https://buckbuild.com/).\n# To run your application with Buck:\n# - install Buck\n# - `npm start` - to start the packager\n# - `cd android`\n# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n# - `buck install -r android/app` - compile, install and run application\n#\n\nload(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n\nlib_deps = []\n\ncreate_aar_targets(glob([\"libs/*.aar\"]))\n\ncreate_jar_targets(glob([\"libs/*.jar\"]))\n\nandroid_library(\n    name = \"all-libs\",\n    exported_deps = lib_deps,\n)\n\nandroid_library(\n    name = \"app-code\",\n    srcs = glob([\n        \"src/main/java/**/*.java\",\n    ]),\n    deps = [\n        \":all-libs\",\n        \":build_config\",\n        \":res\",\n    ],\n)\n\nandroid_build_config(\n    name = \"build_config\",\n    package = \"com.example\",\n)\n\nandroid_resource(\n    name = \"res\",\n    package = \"com.example\",\n    res = \"src/main/res\",\n)\n\nandroid_binary(\n    name = \"app\",\n    keystore = \"//android/keystores:debug\",\n    manifest = \"src/main/AndroidManifest.xml\",\n    package_type = \"debug\",\n    deps = [\n        \":app-code\",\n    ],\n)\n"
  },
  {
    "path": "Example/android/app/build.gradle",
    "content": "apply plugin: \"com.android.application\"\n\nimport com.android.build.OutputFile\n\n/**\n * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n * and bundleReleaseJsAndAssets).\n * These basically call `react-native bundle` with the correct arguments during the Android build\n * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n * bundle directly from the development server. Below you can see all the possible configurations\n * and their defaults. If you decide to add a configuration block, make sure to add it before the\n * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n *\n * project.ext.react = [\n *   // the name of the generated asset file containing your JS bundle\n *   bundleAssetName: \"index.android.bundle\",\n *\n *   // the entry file for bundle generation\n *   entryFile: \"index.android.js\",\n *\n *   // whether to bundle JS and assets in debug mode\n *   bundleInDebug: false,\n *\n *   // whether to bundle JS and assets in release mode\n *   bundleInRelease: true,\n *\n *   // whether to bundle JS and assets in another build variant (if configured).\n *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n *   // The configuration property can be in the following formats\n *   //         'bundleIn${productFlavor}${buildType}'\n *   //         'bundleIn${buildType}'\n *   // bundleInFreeDebug: true,\n *   // bundleInPaidRelease: true,\n *   // bundleInBeta: true,\n *\n *   // whether to disable dev mode in custom build variants (by default only disabled in release)\n *   // for example: to disable dev mode in the staging build type (if configured)\n *   devDisabledInStaging: true,\n *   // The configuration property can be in the following formats\n *   //         'devDisabledIn${productFlavor}${buildType}'\n *   //         'devDisabledIn${buildType}'\n *\n *   // the root of your project, i.e. where \"package.json\" lives\n *   root: \"../../\",\n *\n *   // where to put the JS bundle asset in debug mode\n *   jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n *\n *   // where to put the JS bundle asset in release mode\n *   jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n *\n *   // where to put drawable resources / React Native assets, e.g. the ones you use via\n *   // require('./image.png')), in debug mode\n *   resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n *\n *   // where to put drawable resources / React Native assets, e.g. the ones you use via\n *   // require('./image.png')), in release mode\n *   resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n *\n *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n *   // date; if you have any other folders that you want to ignore for performance reasons (gradle\n *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n *   // for example, you might want to remove it from here.\n *   inputExcludes: [\"android/**\", \"ios/**\"],\n *\n *   // override which node gets called and with what additional arguments\n *   nodeExecutableAndArgs: [\"node\"],\n *\n *   // supply additional arguments to the packager\n *   extraPackagerArgs: []\n * ]\n */\n\nproject.ext.react = [\n    entryFile: \"index.js\"\n]\n\napply from: \"../../node_modules/react-native/react.gradle\"\n\n/**\n * Set this to true to create two separate APKs instead of one:\n *   - An APK that only works on ARM devices\n *   - An APK that only works on x86 devices\n * The advantage is the size of the APK is reduced by about 4MB.\n * Upload all the APKs to the Play Store and people will download\n * the correct one based on the CPU architecture of their device.\n */\ndef enableSeparateBuildPerCPUArchitecture = false\n\n/**\n * Run Proguard to shrink the Java bytecode in release builds.\n */\ndef enableProguardInReleaseBuilds = false\n\nandroid {\n    compileSdkVersion rootProject.ext.compileSdkVersion\n    buildToolsVersion rootProject.ext.buildToolsVersion\n\n    defaultConfig {\n        applicationId \"com.example\"\n        minSdkVersion rootProject.ext.minSdkVersion\n        targetSdkVersion rootProject.ext.targetSdkVersion\n        versionCode 1\n        versionName \"1.0\"\n    }\n    splits {\n        abi {\n            reset()\n            enable enableSeparateBuildPerCPUArchitecture\n            universalApk false  // If true, also generate a universal APK\n            include \"armeabi-v7a\", \"x86\", \"arm64-v8a\"\n        }\n    }\n    buildTypes {\n        release {\n            minifyEnabled enableProguardInReleaseBuilds\n            proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n        }\n    }\n    // applicationVariants are e.g. debug, release\n    applicationVariants.all { variant ->\n        variant.outputs.each { output ->\n            // For each separate APK per architecture, set a unique version code as described here:\n            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits\n            def versionCodes = [\"armeabi-v7a\":1, \"x86\":2, \"arm64-v8a\": 3]\n            def abi = output.getFilter(OutputFile.ABI)\n            if (abi != null) {  // null for the universal-debug, universal-release variants\n                output.versionCodeOverride =\n                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n            }\n        }\n    }\n}\n\ndependencies {\n    implementation project(':react-native-gesture-handler')\n    implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n    implementation \"com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}\"\n    implementation \"com.facebook.react:react-native:+\"  // From node_modules\n}\n\n// Run this once to be able to run the application with BUCK\n// puts all compile dependencies into folder libs for BUCK to use\ntask copyDownloadableDepsToLibs(type: Copy) {\n    from configurations.compile\n    into 'libs'\n}\n"
  },
  {
    "path": "Example/android/app/build_defs.bzl",
    "content": "\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n\ndef create_aar_targets(aarfiles):\n    for aarfile in aarfiles:\n        name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n        lib_deps.append(\":\" + name)\n        android_prebuilt_aar(\n            name = name,\n            aar = aarfile,\n        )\n\ndef create_jar_targets(jarfiles):\n    for jarfile in jarfiles:\n        name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n        lib_deps.append(\":\" + name)\n        prebuilt_jar(\n            name = name,\n            binary_jar = jarfile,\n        )\n"
  },
  {
    "path": "Example/android/app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt\n# You can edit the include path and order by changing the proguardFiles\n# directive in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# Add any project specific keep options here:\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n"
  },
  {
    "path": "Example/android/app/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n  package=\"com.example\">\n\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n    <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n\n    <application\n      android:name=\".MainApplication\"\n      android:label=\"@string/app_name\"\n      android:icon=\"@mipmap/ic_launcher\"\n      android:roundIcon=\"@mipmap/ic_launcher_round\"\n      android:allowBackup=\"false\"\n      android:theme=\"@style/AppTheme\">\n      <activity\n        android:name=\".MainActivity\"\n        android:label=\"@string/app_name\"\n        android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize\"\n        android:windowSoftInputMode=\"adjustPan\">\n        <intent-filter>\n            <action android:name=\"android.intent.action.MAIN\" />\n            <category android:name=\"android.intent.category.LAUNCHER\" />\n        </intent-filter>\n      </activity>\n      <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\" />\n    </application>\n\n</manifest>\n"
  },
  {
    "path": "Example/android/app/src/main/java/com/example/MainActivity.java",
    "content": "package com.example;\n\nimport com.facebook.react.ReactActivity;\n\npublic class MainActivity extends ReactActivity {\n\n    /**\n     * Returns the name of the main component registered from JavaScript.\n     * This is used to schedule rendering of the component.\n     */\n    @Override\n    protected String getMainComponentName() {\n        return \"Example\";\n    }\n}\n"
  },
  {
    "path": "Example/android/app/src/main/java/com/example/MainApplication.java",
    "content": "package com.example;\n\nimport android.app.Application;\n\nimport com.facebook.react.ReactApplication;\nimport com.swmansion.gesturehandler.react.RNGestureHandlerPackage;\nimport com.facebook.react.ReactNativeHost;\nimport com.facebook.react.ReactPackage;\nimport com.facebook.react.shell.MainReactPackage;\nimport com.facebook.soloader.SoLoader;\n\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class MainApplication extends Application implements ReactApplication {\n\n  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {\n    @Override\n    public boolean getUseDeveloperSupport() {\n      return BuildConfig.DEBUG;\n    }\n\n    @Override\n    protected List<ReactPackage> getPackages() {\n      return Arrays.<ReactPackage>asList(\n          new MainReactPackage(),\n            new RNGestureHandlerPackage()\n      );\n    }\n\n    @Override\n    protected String getJSMainModuleName() {\n      return \"index\";\n    }\n  };\n\n  @Override\n  public ReactNativeHost getReactNativeHost() {\n    return mReactNativeHost;\n  }\n\n  @Override\n  public void onCreate() {\n    super.onCreate();\n    SoLoader.init(this, /* native exopackage */ false);\n  }\n}\n"
  },
  {
    "path": "Example/android/app/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">Example</string>\n</resources>\n"
  },
  {
    "path": "Example/android/app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">\n        <!-- Customize your theme here. -->\n    </style>\n\n</resources>\n"
  },
  {
    "path": "Example/android/app/src/main/res/values-v19/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">\n        <!-- Customize your theme here. -->\n\n        <item name=\"android:windowTranslucentStatus\">true</item>\n    </style>\n\n</resources>\n"
  },
  {
    "path": "Example/android/build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    ext {\n        buildToolsVersion = \"28.0.2\"\n        minSdkVersion = 16\n        compileSdkVersion = 28\n        targetSdkVersion = 27\n        supportLibVersion = \"28.0.0\"\n    }\n    repositories {\n        google()\n        jcenter()\n    }\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.2.1'\n\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        mavenLocal()\n        google()\n        jcenter()\n        maven {\n            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n            url \"$rootDir/../node_modules/react-native/android\"\n        }\n    }\n}\n\n\ntask wrapper(type: Wrapper) {\n    gradleVersion = '4.7'\n    distributionUrl = distributionUrl.replace(\"bin\", \"all\")\n}\n"
  },
  {
    "path": "Example/android/gradle/wrapper/gradle-wrapper.properties",
    "content": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-4.7-all.zip\n"
  },
  {
    "path": "Example/android/gradle.properties",
    "content": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\n# Default value: -Xmx10248m -XX:MaxPermSize=256m\n# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8\n\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true\n"
  },
  {
    "path": "Example/android/gradlew",
    "content": "#!/usr/bin/env sh\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn () {\n    echo \"$*\"\n}\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\n  NONSTOP* )\n    nonstop=true\n    ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" -a \"$nonstop\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Escape application args\nsave () {\n    for i do printf %s\\\\n \"$i\" | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\$s/\\$/' \\\\\\\\/\" ; done\n    echo \" \"\n}\nAPP_ARGS=$(save \"$@\")\n\n# Collect all arguments for the java command, following the shell quoting and substitution rules\neval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS \"\\\"-Dorg.gradle.appname=$APP_BASE_NAME\\\"\" -classpath \"\\\"$CLASSPATH\\\"\" org.gradle.wrapper.GradleWrapperMain \"$APP_ARGS\"\n\n# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong\nif [ \"$(uname)\" = \"Darwin\" ] && [ \"$HOME\" = \"$PWD\" ]; then\n  cd \"$(dirname \"$0\")\"\nfi\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "Example/android/gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif \"%ERRORLEVEL%\" == \"0\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:init\r\n@rem Get command-line arguments, handling Windows variants\r\n\r\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\r\n\r\n:win9xME_args\r\n@rem Slurp the command line arguments.\r\nset CMD_LINE_ARGS=\r\nset _SKIP=2\r\n\r\n:win9xME_args_slurp\r\nif \"x%~1\" == \"x\" goto execute\r\n\r\nset CMD_LINE_ARGS=%*\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\nexit /b 1\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "Example/android/keystores/BUCK",
    "content": "keystore(\n    name = \"debug\",\n    properties = \"debug.keystore.properties\",\n    store = \"debug.keystore\",\n    visibility = [\n        \"PUBLIC\",\n    ],\n)\n"
  },
  {
    "path": "Example/android/keystores/debug.keystore.properties",
    "content": "key.store=debug.keystore\nkey.alias=androiddebugkey\nkey.store.password=android\nkey.alias.password=android\n"
  },
  {
    "path": "Example/android/settings.gradle",
    "content": "rootProject.name = 'Example'\ninclude ':react-native-gesture-handler'\nproject(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')\n\ninclude ':app'\n"
  },
  {
    "path": "Example/app.json",
    "content": "{\n  \"name\": \"Example\",\n  \"displayName\": \"Example\"\n}"
  },
  {
    "path": "Example/babel.config.js",
    "content": "module.exports = {\n  presets: [\"module:metro-react-native-babel-preset\"]\n}\n"
  },
  {
    "path": "Example/index.js",
    "content": "/**\n * @format\n * @lint-ignore-every XPLATJSCOPYRIGHT1\n */\n\nimport {AppRegistry} from 'react-native';\nimport App from './App';\nimport {name as appName} from './app.json';\n\nAppRegistry.registerComponent(appName, () => App);\n"
  },
  {
    "path": "Example/ios/Example/AppDelegate.h",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (nonatomic, strong) UIWindow *window;\n\n@end\n"
  },
  {
    "path": "Example/ios/Example/AppDelegate.m",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import \"AppDelegate.h\"\n\n#import <React/RCTBundleURLProvider.h>\n#import <React/RCTRootView.h>\n\n@implementation AppDelegate\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n{\n  NSURL *jsCodeLocation;\n\n  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\" fallbackResource:nil];\n\n  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation\n                                                      moduleName:@\"Example\"\n                                               initialProperties:nil\n                                                   launchOptions:launchOptions];\n  rootView.backgroundColor = [UIColor blackColor];\n\n  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n  UIViewController *rootViewController = [UIViewController new];\n  rootViewController.view = rootView;\n  self.window.rootViewController = rootViewController;\n  [self.window makeKeyAndVisible];\n  return YES;\n}\n\n@end\n"
  },
  {
    "path": "Example/ios/Example/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Powered by React Native\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Example\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "Example/ios/Example/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ios-marketing\",\n      \"size\" : \"1024x1024\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/ios/Example/Images.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "Example/ios/Example/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDisplayName</key>\n\t<string>Example</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSAllowsArbitraryLoads</key>\n\t\t<true/>\n\t\t<key>NSExceptionDomains</key>\n\t\t<dict>\n\t\t\t<key>localhost</key>\n\t\t\t<dict>\n\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string></string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/ios/Example/main.m",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import <UIKit/UIKit.h>\n\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n  @autoreleasepool {\n    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n  }\n}\n"
  },
  {
    "path": "Example/ios/Example-tvOS/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string></string>\n\t<key>NSAppTransportSecurity</key>\n\t<!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ -->\n\t<dict>\n\t\t<key>NSExceptionDomains</key>\n\t\t<dict>\n\t\t\t<key>localhost</key>\n\t\t\t<dict>\n\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/ios/Example-tvOSTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/ios/Example.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };\n\t\t00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };\n\t\t00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };\n\t\t00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };\n\t\t00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };\n\t\t00E356F31AD99517003FC87E /* ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExampleTests.m */; };\n\t\t11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };\n\t\t133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };\n\t\t139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };\n\t\t139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };\n\t\t13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };\n\t\t13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };\n\t\t13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };\n\t\t13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };\n\t\t140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };\n\t\t146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };\n\t\t2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };\n\t\t2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };\n\t\t2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };\n\t\t2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; };\n\t\t2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; };\n\t\t2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; };\n\t\t2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; };\n\t\t2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; };\n\t\t2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; };\n\t\t2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; };\n\t\t2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };\n\t\t2DCD954D1E0B4F2C00145EB5 /* ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExampleTests.m */; };\n\t\t2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };\n\t\t332E4B92FA6D4EE1B6991534 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CD5403AF72F4BEF925A5864 /* libRNGestureHandler.a */; };\n\t\t3AD07D60CD2546ABBD52B360 /* libRNGestureHandler-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B1F7CA55E184EA0ADED89BD /* libRNGestureHandler-tvOS.a */; };\n\t\t832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };\n\t\tADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };\n\t\tED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; };\n\t\tED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 134814201AA4EA6300B7C361;\n\t\t\tremoteInfo = RCTActionSheet;\n\t\t};\n\t\t00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 134814201AA4EA6300B7C361;\n\t\t\tremoteInfo = RCTGeolocation;\n\t\t};\n\t\t00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 58B5115D1A9E6B3D00147676;\n\t\t\tremoteInfo = RCTImage;\n\t\t};\n\t\t00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 58B511DB1A9E6C8500147676;\n\t\t\tremoteInfo = RCTNetwork;\n\t\t};\n\t\t00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 832C81801AAF6DEF007FA2F7;\n\t\t\tremoteInfo = RCTVibration;\n\t\t};\n\t\t00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 13B07F861A680F5B00A75B9A;\n\t\t\tremoteInfo = Example;\n\t\t};\n\t\t10AC6EEB222FBCEF00C75803 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = EDEBC6D6214B3E7000DD5AC8;\n\t\t\tremoteInfo = jsi;\n\t\t};\n\t\t10AC6EED222FBCEF00C75803 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = EDEBC73B214B45A300DD5AC8;\n\t\t\tremoteInfo = jsiexecutor;\n\t\t};\n\t\t10AC6EEF222FBCEF00C75803 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = ED296FB6214C9A0900B7C4FE;\n\t\t\tremoteInfo = \"jsi-tvOS\";\n\t\t};\n\t\t10AC6EF1222FBCEF00C75803 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = ED296FEE214C9CF800B7C4FE;\n\t\t\tremoteInfo = \"jsiexecutor-tvOS\";\n\t\t};\n\t\t10AC6EF7222FBCF200C75803 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 7722BC164BE5494E9E0B3C2A /* RNGestureHandler.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 134814201AA4EA6300B7C361;\n\t\t\tremoteInfo = RNGestureHandler;\n\t\t};\n\t\t10AC6EF9222FBCF200C75803 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 7722BC164BE5494E9E0B3C2A /* RNGestureHandler.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = B5C32A36220C603B000FFB8D;\n\t\t\tremoteInfo = \"RNGestureHandler-tvOS\";\n\t\t};\n\t\t139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 134814201AA4EA6300B7C361;\n\t\t\tremoteInfo = RCTSettings;\n\t\t};\n\t\t139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3C86DF461ADF2C930047B81A;\n\t\t\tremoteInfo = RCTWebSocket;\n\t\t};\n\t\t146834031AC3E56700842450 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;\n\t\t\tremoteInfo = React;\n\t\t};\n\t\t2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;\n\t\t\tremoteInfo = \"Example-tvOS\";\n\t\t};\n\t\t2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = ADD01A681E09402E00F6D226;\n\t\t\tremoteInfo = \"RCTBlob-tvOS\";\n\t\t};\n\t\t2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3DBE0D001F3B181A0099AA32;\n\t\t\tremoteInfo = fishhook;\n\t\t};\n\t\t2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32;\n\t\t\tremoteInfo = \"fishhook-tvOS\";\n\t\t};\n\t\t2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = EBF21BDC1FC498900052F4D5;\n\t\t\tremoteInfo = jsinspector;\n\t\t};\n\t\t2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = EBF21BFA1FC4989A0052F4D5;\n\t\t\tremoteInfo = \"jsinspector-tvOS\";\n\t\t};\n\t\t2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 139D7ECE1E25DB7D00323FB7;\n\t\t\tremoteInfo = \"third-party\";\n\t\t};\n\t\t2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3D383D3C1EBD27B6005632C8;\n\t\t\tremoteInfo = \"third-party-tvOS\";\n\t\t};\n\t\t2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 139D7E881E25C6D100323FB7;\n\t\t\tremoteInfo = \"double-conversion\";\n\t\t};\n\t\t2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3D383D621EBD27B9005632C8;\n\t\t\tremoteInfo = \"double-conversion-tvOS\";\n\t\t};\n\t\t3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A283A1D9B042B00D4039D;\n\t\t\tremoteInfo = \"RCTImage-tvOS\";\n\t\t};\n\t\t3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A28471D9B043800D4039D;\n\t\t\tremoteInfo = \"RCTLinking-tvOS\";\n\t\t};\n\t\t3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A28541D9B044C00D4039D;\n\t\t\tremoteInfo = \"RCTNetwork-tvOS\";\n\t\t};\n\t\t3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A28611D9B046600D4039D;\n\t\t\tremoteInfo = \"RCTSettings-tvOS\";\n\t\t};\n\t\t3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A287B1D9B048500D4039D;\n\t\t\tremoteInfo = \"RCTText-tvOS\";\n\t\t};\n\t\t3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A28881D9B049200D4039D;\n\t\t\tremoteInfo = \"RCTWebSocket-tvOS\";\n\t\t};\n\t\t3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A28131D9B038B00D4039D;\n\t\t\tremoteInfo = \"React-tvOS\";\n\t\t};\n\t\t3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3D3C059A1DE3340900C268FA;\n\t\t\tremoteInfo = yoga;\n\t\t};\n\t\t3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3D3C06751DE3340C00C268FA;\n\t\t\tremoteInfo = \"yoga-tvOS\";\n\t\t};\n\t\t3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4;\n\t\t\tremoteInfo = cxxreact;\n\t\t};\n\t\t3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4;\n\t\t\tremoteInfo = \"cxxreact-tvOS\";\n\t\t};\n\t\t5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 134814201AA4EA6300B7C361;\n\t\t\tremoteInfo = RCTAnimation;\n\t\t};\n\t\t5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 2D2A28201D9B03D100D4039D;\n\t\t\tremoteInfo = \"RCTAnimation-tvOS\";\n\t\t};\n\t\t78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 134814201AA4EA6300B7C361;\n\t\t\tremoteInfo = RCTLinking;\n\t\t};\n\t\t832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 58B5119B1A9E6C1200147676;\n\t\t\tremoteInfo = RCTText;\n\t\t};\n\t\tADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 358F4ED71D1E81A9004DF814;\n\t\t\tremoteInfo = RCTBlob;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = \"<group>\"; };\n\t\t00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTActionSheet.xcodeproj; path = \"../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTGeolocation.xcodeproj; path = \"../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTImage.xcodeproj; path = \"../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTNetwork.xcodeproj; path = \"../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTVibration.xcodeproj; path = \"../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t00E356EE1AD99517003FC87E /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t00E356F21AD99517003FC87E /* ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExampleTests.m; sourceTree = \"<group>\"; };\n\t\t139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTSettings.xcodeproj; path = \"../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTWebSocket.xcodeproj; path = \"../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t13B07F961A680F5B00A75B9A /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Example/AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Example/AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\t13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Example/Images.xcassets; sourceTree = \"<group>\"; };\n\t\t13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Example/Info.plist; sourceTree = \"<group>\"; };\n\t\t13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Example/main.m; sourceTree = \"<group>\"; };\n\t\t146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = React.xcodeproj; path = \"../node_modules/react-native/React/React.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t2D02E47B1E0B4A5D006451C7 /* Example-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"Example-tvOS.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t2D02E4901E0B4A5D006451C7 /* Example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"Example-tvOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTAnimation.xcodeproj; path = \"../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t6B1F7CA55E184EA0ADED89BD /* libRNGestureHandler-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = \"libRNGestureHandler-tvOS.a\"; sourceTree = \"<group>\"; };\n\t\t6CD5403AF72F4BEF925A5864 /* libRNGestureHandler.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNGestureHandler.a; sourceTree = \"<group>\"; };\n\t\t7722BC164BE5494E9E0B3C2A /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = \"wrapper.pb-project\"; name = RNGestureHandler.xcodeproj; path = \"../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTLinking.xcodeproj; path = \"../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\t832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTText.xcodeproj; path = \"../node_modules/react-native/Libraries/Text/RCTText.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\tADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = RCTBlob.xcodeproj; path = \"../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj\"; sourceTree = \"<group>\"; };\n\t\tED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };\n\t\tED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t00E356EB1AD99517003FC87E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F8C1A680F5B00A75B9A /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */,\n\t\t\t\tADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,\n\t\t\t\t11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */,\n\t\t\t\t146834051AC3E58100842450 /* libReact.a in Frameworks */,\n\t\t\t\t00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,\n\t\t\t\t00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,\n\t\t\t\t00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,\n\t\t\t\t133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,\n\t\t\t\t00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,\n\t\t\t\t139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,\n\t\t\t\t832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,\n\t\t\t\t00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,\n\t\t\t\t139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,\n\t\t\t\t332E4B92FA6D4EE1B6991534 /* libRNGestureHandler.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4781E0B4A5D006451C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */,\n\t\t\t\t2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */,\n\t\t\t\t2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */,\n\t\t\t\t2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */,\n\t\t\t\t2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */,\n\t\t\t\t2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */,\n\t\t\t\t2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,\n\t\t\t\t2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,\n\t\t\t\t2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,\n\t\t\t\t3AD07D60CD2546ABBD52B360 /* libRNGestureHandler-tvOS.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t00C302A81ABCB8CE00DB3ED1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00C302B61ABCB90400DB3ED1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00C302BC1ABCB91800DB3ED1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00C302C01ABCB91800DB3ED1 /* libRCTImage.a */,\n\t\t\t\t3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00C302D41ABCB9D200DB3ED1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */,\n\t\t\t\t3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00C302E01ABCB9EE00DB3ED1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00E356EF1AD99517003FC87E /* ExampleTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00E356F21AD99517003FC87E /* ExampleTests.m */,\n\t\t\t\t00E356F01AD99517003FC87E /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = ExampleTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00E356F01AD99517003FC87E /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00E356F11AD99517003FC87E /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t10AC6EC5222FBCED00C75803 /* Recovered References */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t6CD5403AF72F4BEF925A5864 /* libRNGestureHandler.a */,\n\t\t\t\t6B1F7CA55E184EA0ADED89BD /* libRNGestureHandler-tvOS.a */,\n\t\t\t);\n\t\t\tname = \"Recovered References\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t10AC6EF3222FBCF100C75803 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t10AC6EF8222FBCF200C75803 /* libRNGestureHandler.a */,\n\t\t\t\t10AC6EFA222FBCF200C75803 /* libRNGestureHandler-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t139105B71AF99BAD00B5F7CC /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t139105C11AF99BAD00B5F7CC /* libRCTSettings.a */,\n\t\t\t\t3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t139FDEE71B06529A00C62182 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t139FDEF41B06529B00C62182 /* libRCTWebSocket.a */,\n\t\t\t\t3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */,\n\t\t\t\t2D16E6841FA4F8DC00B85C8A /* libfishhook.a */,\n\t\t\t\t2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t13B07FAE1A68108700A75B9A /* Example */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t008F07F21AC5B25A0029DE68 /* main.jsbundle */,\n\t\t\t\t13B07FAF1A68108700A75B9A /* AppDelegate.h */,\n\t\t\t\t13B07FB01A68108700A75B9A /* AppDelegate.m */,\n\t\t\t\t13B07FB51A68108700A75B9A /* Images.xcassets */,\n\t\t\t\t13B07FB61A68108700A75B9A /* Info.plist */,\n\t\t\t\t13B07FB11A68108700A75B9A /* LaunchScreen.xib */,\n\t\t\t\t13B07FB71A68108700A75B9A /* main.m */,\n\t\t\t);\n\t\t\tname = Example;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t146834001AC3E56700842450 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t146834041AC3E56700842450 /* libReact.a */,\n\t\t\t\t3DAD3EA31DF850E9000B6D8A /* libReact.a */,\n\t\t\t\t3DAD3EA51DF850E9000B6D8A /* libyoga.a */,\n\t\t\t\t3DAD3EA71DF850E9000B6D8A /* libyoga.a */,\n\t\t\t\t3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */,\n\t\t\t\t3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,\n\t\t\t\t2DF0FFDF2056DD460020B375 /* libjsinspector.a */,\n\t\t\t\t2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */,\n\t\t\t\t2DF0FFE32056DD460020B375 /* libthird-party.a */,\n\t\t\t\t2DF0FFE52056DD460020B375 /* libthird-party.a */,\n\t\t\t\t2DF0FFE72056DD460020B375 /* libdouble-conversion.a */,\n\t\t\t\t2DF0FFE92056DD460020B375 /* libdouble-conversion.a */,\n\t\t\t\t10AC6EEC222FBCEF00C75803 /* libjsi.a */,\n\t\t\t\t10AC6EEE222FBCEF00C75803 /* libjsiexecutor.a */,\n\t\t\t\t10AC6EF0222FBCEF00C75803 /* libjsi-tvOS.a */,\n\t\t\t\t10AC6EF2222FBCEF00C75803 /* libjsiexecutor-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2D16E6871FA4F8E400B85C8A /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tED297162215061F000B7C4FE /* JavaScriptCore.framework */,\n\t\t\t\tED2971642150620600B7C4FE /* JavaScriptCore.framework */,\n\t\t\t\t2D16E6891FA4F8E400B85C8A /* libReact.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t5E91572E1DD0AC6500FF2AA8 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,\n\t\t\t\t5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t78C398B11ACF4ADC00677621 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t78C398B91ACF4ADC00677621 /* libRCTLinking.a */,\n\t\t\t\t3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t832341AE1AAA6A7D00B99B32 /* Libraries */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,\n\t\t\t\t146833FF1AC3E56700842450 /* React.xcodeproj */,\n\t\t\t\t00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,\n\t\t\t\tADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,\n\t\t\t\t00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,\n\t\t\t\t00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,\n\t\t\t\t78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,\n\t\t\t\t00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */,\n\t\t\t\t139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */,\n\t\t\t\t832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,\n\t\t\t\t00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,\n\t\t\t\t139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,\n\t\t\t\t7722BC164BE5494E9E0B3C2A /* RNGestureHandler.xcodeproj */,\n\t\t\t);\n\t\t\tname = Libraries;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t832341B11AAA6A8300B99B32 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t832341B51AAA6A8300B99B32 /* libRCTText.a */,\n\t\t\t\t3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t83CBB9F61A601CBA00E9B192 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07FAE1A68108700A75B9A /* Example */,\n\t\t\t\t832341AE1AAA6A7D00B99B32 /* Libraries */,\n\t\t\t\t00E356EF1AD99517003FC87E /* ExampleTests */,\n\t\t\t\t83CBBA001A601CBA00E9B192 /* Products */,\n\t\t\t\t2D16E6871FA4F8E400B85C8A /* Frameworks */,\n\t\t\t\t10AC6EC5222FBCED00C75803 /* Recovered References */,\n\t\t\t);\n\t\t\tindentWidth = 2;\n\t\t\tsourceTree = \"<group>\";\n\t\t\ttabWidth = 2;\n\t\t\tusesTabs = 0;\n\t\t};\n\t\t83CBBA001A601CBA00E9B192 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07F961A680F5B00A75B9A /* Example.app */,\n\t\t\t\t00E356EE1AD99517003FC87E /* ExampleTests.xctest */,\n\t\t\t\t2D02E47B1E0B4A5D006451C7 /* Example-tvOS.app */,\n\t\t\t\t2D02E4901E0B4A5D006451C7 /* Example-tvOSTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tADBDB9201DFEBF0600ED6528 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */,\n\t\t\t\t2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t00E356ED1AD99517003FC87E /* ExampleTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget \"ExampleTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t00E356EA1AD99517003FC87E /* Sources */,\n\t\t\t\t00E356EB1AD99517003FC87E /* Frameworks */,\n\t\t\t\t00E356EC1AD99517003FC87E /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t00E356F51AD99517003FC87E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ExampleTests;\n\t\t\tproductName = ExampleTests;\n\t\t\tproductReference = 00E356EE1AD99517003FC87E /* ExampleTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t13B07F861A680F5B00A75B9A /* Example */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget \"Example\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t13B07F871A680F5B00A75B9A /* Sources */,\n\t\t\t\t13B07F8C1A680F5B00A75B9A /* Frameworks */,\n\t\t\t\t13B07F8E1A680F5B00A75B9A /* Resources */,\n\t\t\t\t00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Example;\n\t\t\tproductName = \"Hello World\";\n\t\t\tproductReference = 13B07F961A680F5B00A75B9A /* Example.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t2D02E47A1E0B4A5D006451C7 /* Example-tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"Example-tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t2D02E4771E0B4A5D006451C7 /* Sources */,\n\t\t\t\t2D02E4781E0B4A5D006451C7 /* Frameworks */,\n\t\t\t\t2D02E4791E0B4A5D006451C7 /* Resources */,\n\t\t\t\t2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Example-tvOS\";\n\t\t\tproductName = \"Example-tvOS\";\n\t\t\tproductReference = 2D02E47B1E0B4A5D006451C7 /* Example-tvOS.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t2D02E48F1E0B4A5D006451C7 /* Example-tvOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"Example-tvOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t2D02E48C1E0B4A5D006451C7 /* Sources */,\n\t\t\t\t2D02E48D1E0B4A5D006451C7 /* Frameworks */,\n\t\t\t\t2D02E48E1E0B4A5D006451C7 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Example-tvOSTests\";\n\t\t\tproductName = \"Example-tvOSTests\";\n\t\t\tproductReference = 2D02E4901E0B4A5D006451C7 /* Example-tvOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t83CBB9F71A601CBA00E9B192 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 940;\n\t\t\t\tORGANIZATIONNAME = Facebook;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t00E356ED1AD99517003FC87E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.2;\n\t\t\t\t\t\tTestTargetID = 13B07F861A680F5B00A75B9A;\n\t\t\t\t\t};\n\t\t\t\t\t13B07F861A680F5B00A75B9A = {\n\t\t\t\t\t\tDevelopmentTeam = SSA23VCT7A;\n\t\t\t\t\t};\n\t\t\t\t\t2D02E47A1E0B4A5D006451C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t2D02E48F1E0B4A5D006451C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = 2D02E47A1E0B4A5D006451C7;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject \"Example\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 83CBB9F61A601CBA00E9B192;\n\t\t\tproductRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;\n\t\t\t\t\tProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;\n\t\t\t\t\tProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;\n\t\t\t\t\tProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;\n\t\t\t\t\tProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */;\n\t\t\t\t\tProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 78C398B11ACF4ADC00677621 /* Products */;\n\t\t\t\t\tProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */;\n\t\t\t\t\tProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 139105B71AF99BAD00B5F7CC /* Products */;\n\t\t\t\t\tProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 832341B11AAA6A8300B99B32 /* Products */;\n\t\t\t\t\tProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */;\n\t\t\t\t\tProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 139FDEE71B06529A00C62182 /* Products */;\n\t\t\t\t\tProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 146834001AC3E56700842450 /* Products */;\n\t\t\t\t\tProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 10AC6EF3222FBCF100C75803 /* Products */;\n\t\t\t\t\tProjectRef = 7722BC164BE5494E9E0B3C2A /* RNGestureHandler.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t13B07F861A680F5B00A75B9A /* Example */,\n\t\t\t\t00E356ED1AD99517003FC87E /* ExampleTests */,\n\t\t\t\t2D02E47A1E0B4A5D006451C7 /* Example-tvOS */,\n\t\t\t\t2D02E48F1E0B4A5D006451C7 /* Example-tvOSTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\t00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTActionSheet.a;\n\t\t\tremoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTGeolocation.a;\n\t\t\tremoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTImage.a;\n\t\t\tremoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTNetwork.a;\n\t\t\tremoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTVibration.a;\n\t\t\tremoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t10AC6EEC222FBCEF00C75803 /* libjsi.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libjsi.a;\n\t\t\tremoteRef = 10AC6EEB222FBCEF00C75803 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t10AC6EEE222FBCEF00C75803 /* libjsiexecutor.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libjsiexecutor.a;\n\t\t\tremoteRef = 10AC6EED222FBCEF00C75803 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t10AC6EF0222FBCEF00C75803 /* libjsi-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libjsi-tvOS.a\";\n\t\t\tremoteRef = 10AC6EEF222FBCEF00C75803 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t10AC6EF2222FBCEF00C75803 /* libjsiexecutor-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libjsiexecutor-tvOS.a\";\n\t\t\tremoteRef = 10AC6EF1222FBCEF00C75803 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t10AC6EF8222FBCF200C75803 /* libRNGestureHandler.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRNGestureHandler.a;\n\t\t\tremoteRef = 10AC6EF7222FBCF200C75803 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t10AC6EFA222FBCF200C75803 /* libRNGestureHandler-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRNGestureHandler-tvOS.a\";\n\t\t\tremoteRef = 10AC6EF9222FBCF200C75803 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTSettings.a;\n\t\t\tremoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTWebSocket.a;\n\t\t\tremoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t146834041AC3E56700842450 /* libReact.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libReact.a;\n\t\t\tremoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTBlob-tvOS.a\";\n\t\t\tremoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libfishhook.a;\n\t\t\tremoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libfishhook-tvOS.a\";\n\t\t\tremoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2DF0FFDF2056DD460020B375 /* libjsinspector.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libjsinspector.a;\n\t\t\tremoteRef = 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libjsinspector-tvOS.a\";\n\t\t\tremoteRef = 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2DF0FFE32056DD460020B375 /* libthird-party.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libthird-party.a\";\n\t\t\tremoteRef = 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2DF0FFE52056DD460020B375 /* libthird-party.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libthird-party.a\";\n\t\t\tremoteRef = 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2DF0FFE72056DD460020B375 /* libdouble-conversion.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libdouble-conversion.a\";\n\t\t\tremoteRef = 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t2DF0FFE92056DD460020B375 /* libdouble-conversion.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libdouble-conversion.a\";\n\t\t\tremoteRef = 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTImage-tvOS.a\";\n\t\t\tremoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTLinking-tvOS.a\";\n\t\t\tremoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTNetwork-tvOS.a\";\n\t\t\tremoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTSettings-tvOS.a\";\n\t\t\tremoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTText-tvOS.a\";\n\t\t\tremoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = \"libRCTWebSocket-tvOS.a\";\n\t\t\tremoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3EA31DF850E9000B6D8A /* libReact.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libReact.a;\n\t\t\tremoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libyoga.a;\n\t\t\tremoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libyoga.a;\n\t\t\tremoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libcxxreact.a;\n\t\t\tremoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libcxxreact.a;\n\t\t\tremoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTAnimation.a;\n\t\t\tremoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTAnimation.a;\n\t\t\tremoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTLinking.a;\n\t\t\tremoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t832341B51AAA6A8300B99B32 /* libRCTText.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTText.a;\n\t\t\tremoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libRCTBlob.a;\n\t\t\tremoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t00E356EC1AD99517003FC87E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F8E1A680F5B00A75B9A /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,\n\t\t\t\t13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4791E0B4A5D006451C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48E1E0B4A5D006451C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Bundle React Native code and images\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export NODE_BINARY=node\\n../node_modules/react-native/scripts/react-native-xcode.sh\";\n\t\t};\n\t\t2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Bundle React Native Code And Images\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export NODE_BINARY=node\\n../node_modules/react-native/scripts/react-native-xcode.sh\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t00E356EA1AD99517003FC87E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t00E356F31AD99517003FC87E /* ExampleTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F871A680F5B00A75B9A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,\n\t\t\t\t13B07FC11A68108700A75B9A /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4771E0B4A5D006451C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,\n\t\t\t\t2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48C1E0B4A5D006451C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2DCD954D1E0B4F2C00145EB5 /* ExampleTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t00E356F51AD99517003FC87E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 13B07F861A680F5B00A75B9A /* Example */;\n\t\t\ttargetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;\n\t\t};\n\t\t2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 2D02E47A1E0B4A5D006451C7 /* Example-tvOS */;\n\t\t\ttargetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07FB21A68108700A75B9A /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tpath = Example;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t00E356F61AD99517003FC87E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = ExampleTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/Example.app/Example\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t00E356F71AD99517003FC87E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = ExampleTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/Example.app/Example\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t13B07F941A680F5B00A75B9A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEAD_CODE_STRIPPING = NO;\n\t\t\t\tDEVELOPMENT_TEAM = SSA23VCT7A;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Example/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = org.drag.test;\n\t\t\t\tPRODUCT_NAME = Example;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t13B07F951A680F5B00A75B9A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = SSA23VCT7A;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Example/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = org.drag.test;\n\t\t\t\tPRODUCT_NAME = Example;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2D02E4971E0B4A5E006451C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"Example-tvOS/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.Example-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2D02E4981E0B4A5E006451C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"Example-tvOS/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.Example-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2D02E4991E0B4A5E006451C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"Example-tvOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.Example-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/Example-tvOS.app/Example-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 10.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2D02E49A1E0B4A5E006451C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"Example-tvOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/$(TARGET_NAME)\\\"\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.Example-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/Example-tvOS.app/Example-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 10.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t83CBBA201A601CBA00E9B192 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t83CBBA211A601CBA00E9B192 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget \"ExampleTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t00E356F61AD99517003FC87E /* Debug */,\n\t\t\t\t00E356F71AD99517003FC87E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget \"Example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t13B07F941A680F5B00A75B9A /* Debug */,\n\t\t\t\t13B07F951A680F5B00A75B9A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"Example-tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2D02E4971E0B4A5E006451C7 /* Debug */,\n\t\t\t\t2D02E4981E0B4A5E006451C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"Example-tvOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2D02E4991E0B4A5E006451C7 /* Debug */,\n\t\t\t\t2D02E49A1E0B4A5E006451C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject \"Example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t83CBBA201A601CBA00E9B192 /* Debug */,\n\t\t\t\t83CBBA211A601CBA00E9B192 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;\n}\n"
  },
  {
    "path": "Example/ios/Example.xcodeproj/xcshareddata/xcschemes/Example-tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"NO\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D2A28121D9B038B00D4039D\"\n               BuildableName = \"libReact.a\"\n               BlueprintName = \"React-tvOS\"\n               ReferencedContainer = \"container:../node_modules/react-native/React/React.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n               BuildableName = \"Example-tvOS.app\"\n               BlueprintName = \"Example-tvOS\"\n               ReferencedContainer = \"container:Example.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E48F1E0B4A5D006451C7\"\n               BuildableName = \"Example-tvOSTests.xctest\"\n               BlueprintName = \"Example-tvOSTests\"\n               ReferencedContainer = \"container:Example.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E48F1E0B4A5D006451C7\"\n               BuildableName = \"Example-tvOSTests.xctest\"\n               BlueprintName = \"Example-tvOSTests\"\n               ReferencedContainer = \"container:Example.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"Example-tvOS.app\"\n            BlueprintName = \"Example-tvOS\"\n            ReferencedContainer = \"container:Example.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"Example-tvOS.app\"\n            BlueprintName = \"Example-tvOS\"\n            ReferencedContainer = \"container:Example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"Example-tvOS.app\"\n            BlueprintName = \"Example-tvOS\"\n            ReferencedContainer = \"container:Example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/ios/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"NO\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"83CBBA2D1A601D0E00E9B192\"\n               BuildableName = \"libReact.a\"\n               BlueprintName = \"React\"\n               ReferencedContainer = \"container:../node_modules/react-native/React/React.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n               BuildableName = \"Example.app\"\n               BlueprintName = \"Example\"\n               ReferencedContainer = \"container:Example.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"00E356ED1AD99517003FC87E\"\n               BuildableName = \"ExampleTests.xctest\"\n               BlueprintName = \"ExampleTests\"\n               ReferencedContainer = \"container:Example.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"Example.app\"\n            BlueprintName = \"Example\"\n            ReferencedContainer = \"container:Example.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"00E356ED1AD99517003FC87E\"\n               BuildableName = \"ExampleTests.xctest\"\n               BlueprintName = \"ExampleTests\"\n               ReferencedContainer = \"container:Example.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"Example.app\"\n            BlueprintName = \"Example\"\n            ReferencedContainer = \"container:Example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"Example.app\"\n            BlueprintName = \"Example\"\n            ReferencedContainer = \"container:Example.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/ios/ExampleTests/ExampleTests.m",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import <UIKit/UIKit.h>\n#import <XCTest/XCTest.h>\n\n#import <React/RCTLog.h>\n#import <React/RCTRootView.h>\n\n#define TIMEOUT_SECONDS 600\n#define TEXT_TO_LOOK_FOR @\"Welcome to React Native!\"\n\n@interface ExampleTests : XCTestCase\n\n@end\n\n@implementation ExampleTests\n\n- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test\n{\n  if (test(view)) {\n    return YES;\n  }\n  for (UIView *subview in [view subviews]) {\n    if ([self findSubviewInView:subview matching:test]) {\n      return YES;\n    }\n  }\n  return NO;\n}\n\n- (void)testRendersWelcomeScreen\n{\n  UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];\n  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];\n  BOOL foundElement = NO;\n\n  __block NSString *redboxError = nil;\n  RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {\n    if (level >= RCTLogLevelError) {\n      redboxError = message;\n    }\n  });\n\n  while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {\n    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];\n    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];\n\n    foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {\n      if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {\n        return YES;\n      }\n      return NO;\n    }];\n  }\n\n  RCTSetLogFunction(RCTDefaultLogFunction);\n\n  XCTAssertNil(redboxError, @\"RedBox error: %@\", redboxError);\n  XCTAssertTrue(foundElement, @\"Couldn't find element with text '%@' in %d seconds\", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);\n}\n\n\n@end\n"
  },
  {
    "path": "Example/ios/ExampleTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/package.json",
    "content": "{\n  \"name\": \"Example\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"start\": \"node node_modules/react-native/local-cli/cli.js start\",\n    \"test\": \"jest\"\n  },\n  \"dependencies\": {\n    \"react\": \"16.6.3\",\n    \"react-native\": \"0.58.6\",\n    \"react-native-gesture-handler\": \"^1.1.0\",\n    \"react-native-root-siblings\": \"^4.1.0\",\n    \"react-navigation\": \"^3.3.2\"\n  },\n  \"devDependencies\": {\n    \"babel-core\": \"^7.0.0-bridge.0\",\n    \"babel-jest\": \"24.1.0\",\n    \"jest\": \"24.1.0\",\n    \"metro-react-native-babel-preset\": \"0.53.0\",\n    \"react-test-renderer\": \"16.6.3\"\n  },\n  \"jest\": {\n    \"preset\": \"react-native\"\n  }\n}\n"
  },
  {
    "path": "Example/src/components/StatusBarView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Dimensions,\n    StatusBar,\n    Platform\n} from 'react-native'\nconst PropTypes = require('prop-types')\n\nexport default class StatusBarView extends Component{\n\n    render() {\n        if (Platform.OS === 'ios') {\n            return (\n                <StatusBar\n                    barStyle={this.props.barStyle}\n                    backgroundColor={this.props.backgroundColor}\n                />\n            )\n        } else {\n            return (\n                <View style={{paddingTop: 20,backgroundColor: this.props.backgroundColor}}>\n                    <StatusBar\n                        barStyle={this.props.barStyle}\n                        backgroundColor={this.props.backgroundColor}\n                    />\n                </View>\n            )\n        }\n\n    }\n\n}\n\nStatusBarView.defaultProps = {\n    backgroundColor: 'white',\n    barStyle: 'dark-content', //'default', 'light-content', 'dark-content'\n}\n\nStatusBarView.propTypes = {\n    backgroundColor: PropTypes.string,\n    barStyle: PropTypes.string,\n}\n"
  },
  {
    "path": "Example/src/pages/MainPage.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    SafeAreaView,\n    TouchableOpacity,\n    Dimensions\n} from 'react-native'\nimport StatusBarView from \"../components/StatusBarView\";\nimport SmartToastPage from \"./SmartToastPage\";\nimport ModalToastPage from \"./ModalToastPage\";\nconst {width} = Dimensions.get('window')\n\nconst main_color = '#1ABc9c'\nexport default class MainPage extends Component{\n\n    render() {\n        return (\n            <SafeAreaView style={styles.safe_container}>\n                <StatusBarView backgroundColor={main_color}/>\n                <View style={styles.container}>\n                    <View style={styles.header}>\n                        <Text style={[styles.btn_text,{fontSize: 18}]}>{'SmartTip'}</Text>\n                    </View>\n                    <TouchableOpacity style={styles.btn_view} onPress={this.onJumpSmartToastPage}>\n                        <Text style={styles.btn_text}>{'Toast'}</Text>\n                    </TouchableOpacity>\n                    <TouchableOpacity style={styles.btn_view} onPress={this.onJumpSnackBarPage}>\n                        <Text style={styles.btn_text}>{'SnackBar'}</Text>\n                    </TouchableOpacity>\n                    <TouchableOpacity style={styles.btn_view} onPress={this.onJumpModalToastPage}>\n                        <Text style={styles.btn_text}>{'ModalToast'}</Text>\n                    </TouchableOpacity>\n                    <TouchableOpacity style={styles.btn_view} onPress={this.onJumpModalShowToastPage}>\n                        <Text style={styles.btn_text}>{'ModalShowToastPage'}</Text>\n                    </TouchableOpacity>\n                </View>\n            </SafeAreaView>\n        )\n    }\n\n    onJumpSmartToastPage = () => {\n        this.props.navigation.navigate('SmartToastPage')\n    }\n\n    onJumpSnackBarPage = () => {\n        this.props.navigation.navigate('SnackBarPage')\n    }\n\n    onJumpModalToastPage = () => {\n        this.props.navigation.navigate('ModalToastPage')\n    }\n\n    onJumpModalShowToastPage = () => {\n        this.props.navigation.navigate('ModalShowToastPage')\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    safe_container: {\n        flex: 1,\n        backgroundColor: main_color\n    },\n    container: {\n        flex: 1,\n        backgroundColor: '#e0e0e0'\n    },\n    header: {\n        height: 44,\n        backgroundColor: main_color,\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginBottom: 40\n    },\n    btn_view: {\n        height: 48,\n        backgroundColor: main_color,\n        borderRadius: 24,\n        width: width*0.6,\n        alignSelf: 'center',\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginTop: 20\n    },\n    btn_text: {\n        fontSize: 16,\n        color: '#fff',\n        fontWeight: 'bold'\n    }\n})\n"
  },
  {
    "path": "Example/src/pages/ModalShowToastPage.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    SafeAreaView,\n    TouchableOpacity,\n    Modal,\n    Image\n} from 'react-native'\nimport StatusBarView from \"../components/StatusBarView\";\nimport ModalShowToastView from '../widget/modaltoast/ModalShowToastView'\nimport Toast from '../widget/toast/Toast'\n\nconst main_color = '#3aafff'\n\nconst toastOpt1 = {\n    data: 'Sow nothing, reap nothing',\n    position: Toast.position.TOP,\n    textColor: '#fff',\n    backgroundColor: main_color,\n}\n\nconst toastOpt2 = {\n    data: 'Success',\n    textColor: '#ffffff',\n    backgroundColor: '#000',\n    position: Toast.position.CENTER,\n    icon: <Image source={require('../data/img/success.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>\n}\n\nexport default class ModalShowToastPage extends Component {\n\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            isShowModal: false,\n            tipData: null,\n        }\n    }\n\n    getToastInstance = (toastInstance) => {\n        this.toastInstance = toastInstance;\n    }\n\n    show1 = () => this.toastInstance(toastOpt1)\n    show2 = () => this.toastInstance(toastOpt2)\n\n    render() {\n        return (\n            <SafeAreaView style={styles.safe_container}>\n                <StatusBarView backgroundColor={main_color}/>\n                <Modal\n                    transparent={true}\n                    animationType={'slide'}\n                    visible={this.state.isShowModal}>\n                    <View style={styles.modal}>\n                        <TouchableOpacity style={styles.btn_view} onPress={()=>{ this.setState({isShowModal: false}) }}>\n                            <Text style={styles.btn_text}>Hide Modal</Text>\n                        </TouchableOpacity>\n                        <TouchableOpacity style={styles.btn_view} onPress={this.show1}>\n                            <Text style={styles.btn_text}>Toast1</Text>\n                        </TouchableOpacity>\n                        <TouchableOpacity style={styles.btn_view} onPress={this.show2}>\n                            <Text style={styles.btn_text}>Toast2</Text>\n                        </TouchableOpacity>\n                        <ModalShowToastView toastInstance={this.getToastInstance} />\n                    </View>\n                </Modal>\n                \n                <View style={styles.container}>\n                    <View style={styles.header} >\n                        <TouchableOpacity style={styles.header_back} onPress={()=>{this.props.navigation.goBack()}}>\n                            <Text style={[styles.btn_text,{fontSize: 18}]}>{'Back'}</Text>\n                        </TouchableOpacity>\n                        <Text style={[styles.btn_text,{fontSize: 18}]}>{'Toast'}</Text>\n                    </View>\n                     <TouchableOpacity\n                        style={styles.btn_view}\n                        onPress={()=>{ this.setState({isShowModal: true}) }}>\n                        <Text style={styles.btn_text}>Show Modal</Text>\n                    </TouchableOpacity>\n                </View>\n            </SafeAreaView>\n        )\n    }\n\n    _renderBtnView = (btnText,toastOpts) => {\n        return (\n            <TouchableOpacity\n                style={styles.btn_view}\n                onPress={()=>{this.show(toastOpts)}}\n            >\n                <Text style={styles.btn_text}>{btnText}</Text>\n            </TouchableOpacity>\n        )\n    }\n\n    show = (toastOpts) => {\n        Toast.show(toastOpts)\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    safe_container: {\n        flex: 1,\n        backgroundColor: main_color\n    },\n    container: {\n        flex: 1,\n        backgroundColor: '#e0e0e0'\n    },\n    header: {\n        height: 44,\n        backgroundColor: main_color,\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginBottom: 40\n    },\n    header_back: {\n        color: 14,\n        marginLeft: 5,\n        height: 44,\n        justifyContent: 'center',\n        paddingLeft: 5,\n        paddingRight: 5,\n        position: 'absolute',\n        top: 0,\n        left: 0\n    },\n    item: {\n        flexDirection: 'row',\n        justifyContent: 'center',\n        flexWrap: 'wrap'\n    },\n    btn_view: {\n        height: 36,\n        backgroundColor: main_color,\n        borderRadius: 2,\n        paddingLeft: 10,\n        paddingRight: 10,\n        justifyContent: 'center',\n        alignItems: 'center',\n        margin: 10\n    },\n    btn_text: {\n        fontSize: 14,\n        color: '#fff'\n    },\n    modal: {\n        flex: 1, \n        justifyContent: 'flex-end', \n        backgroundColor: 'rgba(0, 0, 0, .5)',\n        paddingBottom: 20\n    }\n})\n"
  },
  {
    "path": "Example/src/pages/ModalToastPage.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    SafeAreaView,\n    TouchableOpacity,\n    Image,\n    ActivityIndicator,\n    Modal\n} from 'react-native'\nimport StatusBarView from \"../components/StatusBarView\";\nimport ModalToast from '../widget/modaltoast/ModalToast'\n\nconst main_color = '#3aafff'\n\nconst toast1 = {\n    data: 'Sow nothing, reap nothing',\n    backgroundColor: '#666666',\n    position: ModalToast.position.TOP\n}\n\nconst toast2 = {\n    data: '1. Sow nothing, reap nothing。\\n2. Sow nothing, reap nothing。\\n 3. Sow nothing reap nothing。 \\n4. Sow nothing, reap nothing。 \\n5.Sow nothing, reap nothing。\\n6. Sow nothing, reap nothing。\\n7. Sow nothing, reap nothing。 \\n8. Sow nothing reap nothing。 \\n9. Sow nothing, reap nothing。 \\n10.Sow nothing, reap nothing。',\n    textColor: '#fff',\n    backgroundColor: main_color,\n    position: ModalToast.position.CENTER\n}\n\nconst toast3 = {\n    data: 'Hello World'\n}\n\nconst toast4 = {\n    data: 'Success',\n    textColor: '#ffffff',\n    backgroundColor: '#444444',\n    icon: <Image source={require('../data/img/success.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>\n}\n\nconst toast5 = {\n    data: 'Loading',\n    textColor: '#fff',\n    backgroundColor: '#444444',\n    position: ModalToast.position.CENTER,\n    icon: <ActivityIndicator color='#fff' size={'large'}/>\n}\n\nconst toast6 = {\n    data: 'Error',\n    textColor: '#fff',\n    backgroundColor: '#444444',\n    icon: <Image source={require('../data/img/error.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>\n}\n\nexport default class ModalToastPage extends Component{\n\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            showModal: false,\n            tip: 'start',\n            visibleModal: false\n        }\n    }\n\n    render() {\n        return (\n            <SafeAreaView style={styles.safe_container}>\n                <StatusBarView backgroundColor={main_color}/>\n                <View style={styles.container}>\n                    <View style={styles.header} >\n                        <TouchableOpacity style={styles.header_back} onPress={()=>{this.props.navigation.goBack()}}>\n                            <Text style={[styles.btn_text,{fontSize: 18}]}>{'Back'}</Text>\n                        </TouchableOpacity>\n                        <Text style={[styles.btn_text,{fontSize: 18}]}>{'ModalToast'}</Text>\n                    </View>\n                    <View style={styles.item}>\n                        {this._renderBtnView('Base Top',toast1)}\n                        {this._renderBtnView('Base Center',toast2)}\n                        {this._renderBtnView('Base Bottom',toast3)}\n                    </View>\n                    <View style={styles.item}>\n                        {this._renderBtnView('Icon Top',toast4)}\n                        {this._renderBtnView('Icon Center',toast5)}\n                        {this._renderBtnView('Icon Bottom',toast6)}\n                    </View>\n                    <View style={styles.item}>\n                        <TouchableOpacity\n                            style={styles.btn_view}\n                            onPress={this.analogNetworkRequest}\n                        >\n                            <Text style={styles.btn_text}>{'Analog network request'}</Text>\n                        </TouchableOpacity>\n                    </View>\n                    <Text style={{fontSize: 18,color: main_color}}>{this.state.tip}</Text>\n                    <TouchableOpacity\n                        style={styles.btn_view}\n                        onPress={()=>{\n                            this.setState({\n                                visibleModal: true\n                            })\n                        }}\n                    >\n                        <Text style={styles.btn_text}>{'Show Common Modal'}</Text>\n                    </TouchableOpacity>\n                    <Modal\n                        visible={this.state.visibleModal}\n                        animationType=\"slide\"\n                        transparent={true}\n                        onRequestClose={()=>{\n                            this.setState({\n                                visibleModal: false\n                            })\n                        }}\n                    >\n                        <View style={{justifyContent: 'center',flex: 1,backgroundColor: 'rgba(0, 0, 0, .5)'}}>\n                            <View style={{\n                                height: 300,\n                                backgroundColor: '#f00',\n                                justifyContent: 'center',\n                                alignItems: 'center',\n                                margin: 15,\n                                borderRadius: 10,\n                            }}>\n                                <TouchableOpacity style={styles.btn_view} onPress={()=>{this.setState({visibleModal: false})}}>\n                                    <Text style={styles.btn_text}>Close Modal</Text>\n                                </TouchableOpacity>\n                                <TouchableOpacity style={styles.btn_view} onPress={()=>{this.show(toast5)}}>\n                                    <Text style={styles.btn_text}>Show Tip</Text>\n                                </TouchableOpacity>\n                            </View>\n                        </View>\n                    </Modal>\n                </View>\n            </SafeAreaView>\n        )\n    }\n\n    _renderBtnView = (btnText,toastOpts) => {\n        return (\n            <TouchableOpacity\n                style={styles.btn_view}\n                onPress={()=>{this.show(toastOpts)}}\n            >\n                <Text style={styles.btn_text}>{btnText}</Text>\n            </TouchableOpacity>\n        )\n    }\n\n    show = (toastOpts) => {\n\n        if (this.testTimeOut) {\n            clearTimeout(this.testTimeOut)\n            this.testTimeOut = undefined\n            ModalToast.hide()\n        }\n\n        ModalToast.show(toastOpts)\n\n        this.testTimeOut = setTimeout(()=>{\n            ModalToast.hide()\n        },3000)\n    }\n\n    analogNetworkRequest = () => {\n        if (this.testInterval) {\n            clearInterval(this.testInterval)\n            this.testInterval = undefined\n            ModalToast.hide()\n        }\n\n        let tempIndex = 0\n\n        ModalToast.show(toast5)\n        this.setState({tip: 'Loading'})\n\n        this.testInterval =  setInterval(()=>{\n            if(tempIndex === 0) {\n                const tempToast4 = {...toast4}\n                tempToast4.position = ModalToast.position.CENTER\n                ModalToast.update(tempToast4)\n                this.setState({tip: 'Success'})\n            } else {\n                if (this.testInterval) {\n                    clearInterval(this.testInterval)\n                    this.testInterval = undefined\n                    ModalToast.hide()\n                }\n                this.setState({tip: 'end'})\n            }\n            tempIndex++;\n        },3000)\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    safe_container: {\n        flex: 1,\n        backgroundColor: main_color\n    },\n    container: {\n        flex: 1,\n        backgroundColor: '#e0e0e0'\n    },\n    header: {\n        height: 44,\n        backgroundColor: main_color,\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginBottom: 40\n    },\n    header_back: {\n        color: 14,\n        marginLeft: 5,\n        height: 44,\n        justifyContent: 'center',\n        paddingLeft: 5,\n        paddingRight: 5,\n        position: 'absolute',\n        top: 0,\n        left: 0\n    },\n    item: {\n        flexDirection: 'row',\n        justifyContent: 'center',\n        flexWrap: 'wrap'\n    },\n    btn_view: {\n        height: 36,\n        backgroundColor: main_color,\n        borderRadius: 2,\n        paddingLeft: 10,\n        paddingRight: 10,\n        justifyContent: 'center',\n        alignItems: 'center',\n        margin: 10\n    },\n    btn_text: {\n        fontSize: 14,\n        color: '#fff'\n    }\n})\n"
  },
  {
    "path": "Example/src/pages/SmartToastPage.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    SafeAreaView,\n    TouchableOpacity,\n    Image,\n    ActivityIndicator,\n    TextInput\n} from 'react-native'\nimport StatusBarView from \"../components/StatusBarView\";\nimport Toast from '../widget/toast/Toast'\n\nconst main_color = '#3aafff'\n\nconst toast1 = {\n    data: 'Sow nothing, reap nothing',\n    backgroundColor: '#666666',\n    position: Toast.position.TOP\n}\n\nconst toast2 = {\n    data: '1. Sow nothing, reap nothing。\\n2. Sow nothing, reap nothing。\\n 3. Sow nothing reap nothing。 \\n4. Sow nothing, reap nothing。 \\n5.Sow nothing, reap nothing。\\n6. Sow nothing, reap nothing。\\n7. Sow nothing, reap nothing。 \\n8. Sow nothing reap nothing。 \\n9. Sow nothing, reap nothing。 \\n10.Sow nothing, reap nothing。',\n    textColor: '#fff',\n    backgroundColor: main_color,\n    position: Toast.position.CENTER\n}\n\nconst toast3 = {\n    data: 'Hello World'\n}\n\nconst toast4 = {\n    data: 'Success',\n    textColor: '#ffffff',\n    backgroundColor: '#444444',\n    position: Toast.position.TOP,\n    icon: <Image source={require('../data/img/success.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>\n}\n\nconst toast5 = {\n    data: 'Loading',\n    textColor: '#fff',\n    backgroundColor: '#444444',\n    position: Toast.position.CENTER,\n    duration: Toast.duration.LONG,\n    icon: <ActivityIndicator color='#fff' size={'large'}/>\n}\n\nconst toast6 = {\n    data: 'Very Good',\n    textColor: '#E5ECFF',\n    backgroundColor: '#444',\n    position: Toast.position.BOTTOM,\n    icon: <Image source={require('../data/img/like.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>,\n}\n\nexport default class SmartToastPage extends Component{\n\n    render() {\n        return (\n            <SafeAreaView style={styles.safe_container}>\n                <StatusBarView backgroundColor={main_color}/>\n                <View style={styles.container}>\n                    <View style={styles.header} >\n                        <TouchableOpacity style={styles.header_back} onPress={()=>{this.props.navigation.goBack()}}>\n                            <Text style={[styles.btn_text,{fontSize: 18}]}>{'Back'}</Text>\n                        </TouchableOpacity>\n                        <Text style={[styles.btn_text,{fontSize: 18}]}>{'Toast'}</Text>\n                    </View>\n                    <View style={styles.item}>\n                        {this._renderBtnView('Base Top',toast1)}\n                        {this._renderBtnView('Base Center',toast2)}\n                        {this._renderBtnView('Base Bottom',toast3)}\n                    </View>\n                    <View style={styles.item}>\n                        {this._renderBtnView('Icon Top',toast4)}\n                        {this._renderBtnView('Icon Center',toast5)}\n                        {this._renderBtnView('Icon Bottom',toast6)}\n                    </View>\n                    <TextInput/>\n                </View>\n            </SafeAreaView>\n        )\n    }\n\n    _renderBtnView = (btnText,toastOpts) => {\n        return (\n            <TouchableOpacity\n                style={styles.btn_view}\n                onPress={()=>{this.show(toastOpts)}}\n            >\n                <Text style={styles.btn_text}>{btnText}</Text>\n            </TouchableOpacity>\n        )\n    }\n\n    show = (toastOpts) => {\n        Toast.show(toastOpts)\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    safe_container: {\n        flex: 1,\n        backgroundColor: main_color\n    },\n    container: {\n        flex: 1,\n        backgroundColor: '#e0e0e0'\n    },\n    header: {\n        height: 44,\n        backgroundColor: main_color,\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginBottom: 40\n    },\n    header_back: {\n        color: 14,\n        marginLeft: 5,\n        height: 44,\n        justifyContent: 'center',\n        paddingLeft: 5,\n        paddingRight: 5,\n        position: 'absolute',\n        top: 0,\n        left: 0\n    },\n    item: {\n        flexDirection: 'row',\n        justifyContent: 'center',\n        flexWrap: 'wrap'\n    },\n    btn_view: {\n        height: 36,\n        backgroundColor: main_color,\n        borderRadius: 2,\n        paddingLeft: 10,\n        paddingRight: 10,\n        justifyContent: 'center',\n        alignItems: 'center',\n        margin: 10\n    },\n    btn_text: {\n        fontSize: 14,\n        color: '#fff'\n    }\n})\n"
  },
  {
    "path": "Example/src/pages/SnackBarPage.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    SafeAreaView,\n    TouchableOpacity,\n} from 'react-native'\nimport StatusBarView from \"../components/StatusBarView\";\nimport SnackBar from \"../widget/snackbar/SnackBar\";\nimport Toast from \"../widget/toast/Toast\";\n\nconst main_color = '#3aafff'\n\nconst snackBar1 = {\n    data: 'Sow nothing, reap nothing',\n    position: SnackBar.position.TOP,\n    backgroundColor: '#ffcb06',\n    textColor: '#ffffff',\n}\n\nconst snackBar2 = {\n    data: 'Sow nothing, reap nothing',\n    position: SnackBar.position.TOP,\n    duration: SnackBar.duration.INDEFINITE,\n    backgroundColor: '#7a38ff',\n    textColor: '#1bffce',\n\n}\n\nconst snackBar3 = {\n    data: 'Sow nothing, reap nothing',\n    position: SnackBar.position.BOTTOM,\n    backgroundColor: '#ff8a14',\n    textColor: '#ffffff',\n}\n\nconst snackBar4 = {\n    data: 'Please check the network first.',\n    position: SnackBar.position.BOTTOM,\n    duration: SnackBar.duration.LONG,\n    textColor: '#ff490b',\n    backgroundColor: '#050405',\n    actionText: 'Sure',\n    height: 64,\n    actionTextColor: '#ff490b',\n    onActionHide: (isSlideHide) => {\n        Toast.show({data:isSlideHide ? 'Sliding hide' : 'Click to hide'})\n    },\n}\n\nconst snackBar5 = {\n    data: 'Hello World',\n    position: SnackBar.position.TOP,\n    duration: SnackBar.duration.INDEFINITE,\n    textColor: '#000',\n    backgroundColor: '#3aafff',\n    height: 48,\n    actionText: 'YES',\n    actionTextColor: '#000',\n    onActionHide: (isSlideHide) => {\n        Toast.show({data:isSlideHide ? 'Sliding hide' : 'Click to hide'})\n    },\n}\n\nexport default class SnackBarPage extends Component{\n\n    render() {\n        return (\n            <SafeAreaView style={styles.safe_container}>\n                <StatusBarView backgroundColor={main_color}/>\n                <View style={styles.container}>\n                    <View style={styles.header} >\n                        <TouchableOpacity style={styles.header_back} onPress={()=>{this.props.navigation.goBack()}}>\n                            <Text style={[styles.btn_text,{fontSize: 18}]}>{'Back'}</Text>\n                        </TouchableOpacity>\n                        <Text style={[styles.btn_text,{fontSize: 18}]}>{'SnackBar'}</Text>\n                    </View>\n                    <View style={styles.item}>\n                        {this._renderBtnView('Top SHORT', snackBar1)}\n                        {this._renderBtnView('Top INDEFINITE', snackBar2)}\n                        {this._renderBtnView('Bottom LONG',snackBar3)}\n                    </View>\n                    <View style={styles.item}>\n                        {this._renderBtnView('Button Top INDEFINITE',snackBar5)}\n                        {this._renderBtnView('Button Bottom LONG',snackBar4)}\n                    </View>\n                </View>\n            </SafeAreaView>\n        )\n    }\n\n    _renderBtnView = (btnText,snackBarOpts) => {\n        return (\n            <TouchableOpacity\n                style={styles.btn_view}\n                onPress={()=>{\n                    SnackBar.show(snackBarOpts)\n                }}\n            >\n                <Text style={styles.btn_text}>{btnText}</Text>\n            </TouchableOpacity>\n        )\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    safe_container: {\n        flex: 1,\n        backgroundColor: main_color\n    },\n    container: {\n        flex: 1,\n        backgroundColor: '#e0e0e0'\n    },\n    header: {\n        height: 44,\n        backgroundColor: main_color,\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginBottom: 40\n    },\n    header_back: {\n        color: 14,\n        marginLeft: 5,\n        height: 44,\n        justifyContent: 'center',\n        paddingLeft: 5,\n        paddingRight: 5,\n        position: 'absolute',\n        top: 0,\n        left: 0\n    },\n    item: {\n        flexDirection: 'row',\n        justifyContent: 'center',\n        flexWrap: 'wrap'\n    },\n    btn_view: {\n        height: 36,\n        backgroundColor: main_color,\n        borderRadius: 2,\n        paddingLeft: 10,\n        paddingRight: 10,\n        justifyContent: 'center',\n        alignItems: 'center',\n        margin: 10\n    },\n    btn_text: {\n        fontSize: 14,\n        color: '#fff'\n    }\n})\n"
  },
  {
    "path": "Example/src/styles/BaseStyle.js",
    "content": "import {StatusBar} from \"react-native\";\n\nexport const shadow_style_top = {\n    elevation: 2,\n\n    shadowOffset:{ width: 0, height: 1},\n    shadowColor:'black',\n    shadowOpacity:0.2,\n    shadowRadius:1,\n}\n\nexport const shadow_style_bottom = {\n    elevation: 2,\n\n    shadowOffset:{ width:0, height: -1 },\n    shadowColor:'black',\n    shadowOpacity:0.2,\n    shadowRadius:1,\n}\n\nexport const statusBarHeight = StatusBar.currentHeight || 0\n"
  },
  {
    "path": "Example/src/widget/data/Constants.js",
    "content": "import {Easing} from 'react-native'\n\nconst ToastDuration = {\n    LONG: 3500,\n    SHORT: 2000\n}\n\nconst ToastInHeight = 120\n\nconst ToastInOutDuration = 240\n\nconst ToastPosition = {\n    TOP: 1,\n    CENTER: 0,\n    BOTTOM: -1\n}\n\nconst ToastDefaultOpt = {\n    data: '',  //required\n    duration: ToastDuration.SHORT,\n    position: ToastPosition.BOTTOM,\n    inEasing: Easing.elastic(1),\n    textColor: 'white',\n    backgroundColor: 'black',\n    icon: undefined,\n    isShowShadow: true,\n}\n\n// ---------\n\nconst SnackBarDuration = {\n    LONG: 3500,\n    SHORT: 2000,\n    INDEFINITE: -1\n}\n\nconst SnackBarPosition = {\n    TOP: 1,\n    BOTTOM: -1\n}\n\n\nconst SnackBarDefaultOpt = {\n    data: '',  //required\n    statusBarHeight: -1,\n    height: 44,\n    duration: SnackBarDuration.SHORT,\n    position: SnackBarPosition.BOTTOM,\n    inEasing: Easing.linear,\n    textColor: 'white',\n    backgroundColor: 'black',\n    actionText: undefined,\n    actionTextColor: 'white',\n    isAllowSlideExit: true,\n    onActionHide: undefined,\n    isShowShadow: true,\n    numberOfLines: 1,\n}\n\nconst SnackBarInOutDuration = 200\n\n// --------\nconst ModalDefaultOpt = {\n    data: '',  //required\n    position: ToastPosition.BOTTOM,\n    inEasing: Easing.elastic(1),\n    textColor: 'white',\n    backgroundColor: 'black',\n    icon: undefined,\n    onRequestClose: undefined\n}\n\nexport {\n    ToastDuration,ToastInOutDuration,ToastInHeight,ToastPosition,ToastDefaultOpt,\n    SnackBarDuration,SnackBarPosition,SnackBarDefaultOpt,SnackBarInOutDuration,\n    ModalDefaultOpt\n}\n"
  },
  {
    "path": "Example/src/widget/index.js",
    "content": "import WToast from './toast/Toast'\nimport WSnackBar from './snackbar/SnackBar'\nimport WModal from './modaltoast/ModalToast'\n\nexport {WModal,WSnackBar,WToast}\n"
  },
  {
    "path": "Example/src/widget/modaltoast/ModalShowToastView.js",
    "content": "import React from 'react'\nimport ToastView from \"../toast/ToastView\"\nimport {ToastInOutDuration,ToastDefaultOpt} from '../data/Constants'\n\nexport default class ModalShowToastView extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        props.toastInstance(this.show)\n        this.toastTemp = null;\n        this.state = {\n            toastOpts: null,\n        }\n    }\n\n    render() {\n        const toastOpts = this.state.toastOpts;\n        if (toastOpts == null || toastOpts.data == null) return null;\n\n        return <ToastView {...toastOpts}/>\n    }\n\n    componentWillUnmount() {\n        if (this.liftCycleManage) {\n            clearTimeout(this.liftCycleManage)\n        }\n    }\n\n    show = (Opts) => {\n\n        const data = Opts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        if (this.state.toastOpts != null) {\n            this.toastTemp = Opts;\n            this.hide();\n            return;\n        }\n\n        const toastOpts = Object.assign({}, ToastDefaultOpt, Opts)\n\n        this.setState({\n            toastOpts\n        },() => {\n            this.liftCycleManage = setTimeout(() => {\n                this.hide()\n            }, toastOpts.duration + ToastInOutDuration * 2)\n        })\n    }\n\n    hide = () => {\n        if (this.liftCycleManage) {\n            clearTimeout(this.liftCycleManage);\n        }\n        if (this.state.toastOpts != null) {\n            this.setState({ toastOpts: null }, () => {\n                const toastTemp = this.toastTemp;\n                if (toastTemp != null) {\n                    this.toastTemp = null;\n                    this.show(toastTemp);\n                }\n            })\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "Example/src/widget/modaltoast/ModalToast.js",
    "content": "import React from 'react'\nimport RootSiblings from 'react-native-root-siblings'\nimport ModalToastView from \"./ModalToastView\"\nimport {ToastPosition,ModalDefaultOpt} from '../data/Constants'\n\nlet rootSiblings = undefined\nlet liftCycleManage = undefined\nexport default class ModalToast {\n\n    static position = ToastPosition\n\n    static show = (modalOpts) => {\n\n        const data = modalOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        modalOpts = Object.assign({},ModalDefaultOpt,modalOpts)\n\n        ModalToast.hide();\n\n        rootSiblings = new RootSiblings(\n            <ModalToastView {...modalOpts}/>\n        )\n    }\n\n    static update = (modalOpts) => {\n        const data = modalOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        modalOpts = Object.assign({},ModalDefaultOpt,modalOpts)\n\n        ModalToast.hide();\n\n        modalOpts.isUpdate = true\n\n        rootSiblings = new RootSiblings(\n            <ModalToastView {...modalOpts}/>\n        )\n    }\n\n    static hide = () => {\n        if (liftCycleManage) {\n            clearTimeout(liftCycleManage)\n            liftCycleManage = undefined\n        }\n        if (rootSiblings) {\n            rootSiblings.destroy()\n            rootSiblings = undefined\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "Example/src/widget/modaltoast/ModalToastView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    Dimensions,\n    Animated,\n    Modal\n} from 'react-native'\nimport {ToastInOutDuration, ToastInHeight} from '../data/Constants'\n\nconst MaxWidthRatio = 0.8\nexport default class ModalToastView extends Component{\n\n    constructor(props) {\n        super(props)\n\n        const {width,height} = Dimensions.get('window')\n\n        this.state = {\n            deviceWidth: width,\n            deviceHeight: height,\n            animatedValue1: new Animated.Value( props.isUpdate ? 1 : 0),\n            animatedValue2: new Animated.Value(props.isUpdate ? 1 : 0.2),\n        }\n\n        // React after 17\n        Dimensions.addEventListener('change', this.onWindowChange);\n    }\n\n    componentDidMount() {\n        this.onLifeCycleManage()\n    }\n\n    componentWillUnmount() {\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n        Dimensions.removeEventListener('change', this.onWindowChange);\n    }\n\n    render() {\n\n\n        const containerStyle = {}\n        const contentStyle = {\n            backgroundColor: this.props.backgroundColor,\n            opacity: this.state.animatedValue2.interpolate({\n                inputRange: [0, 1, 2],\n                outputRange: [0, 1, 0]\n            }),\n            minWidth: this.props.icon ? this.state.deviceWidth*0.4 : 0,\n            maxWidth: this.state.deviceWidth*MaxWidthRatio,\n        }\n\n        if (this.props.position > 0) {\n            containerStyle.justifyContent = 'flex-start';\n            containerStyle.top = 40\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight/2, 0]\n            });\n        } else if (this.props.position == 0) {\n            containerStyle.justifyContent = 'center';\n            containerStyle.top = 0\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight, 0]\n            });\n        } else if (this.props.position < 0) {\n            containerStyle.justifyContent = 'flex-end';\n            containerStyle.top = 0\n            containerStyle.bottom = 40;\n            contentStyle.marginBottom = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [0, ToastInHeight/2]\n            });\n        }\n\n\n\n        return (\n            <Modal\n                pointerEvents=\"none\"\n                transparent={true}\n                visible={true}\n                onRequestClose={this.props.onRequestClose}\n            >\n                <View style={[styles.container,containerStyle]}>\n                    <Animated.View style={[styles.content,contentStyle]}>\n                        {this.props.icon}\n                        <Text style={[styles.text,{color: this.props.textColor}]}>\n                            {this.props.data}\n                        </Text>\n                    </Animated.View>\n                </View>\n            </Modal>\n        )\n    }\n\n    onLifeCycleManage = () => {\n\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n\n        if (!this.props.isUpdate) {\n            this.liftCycleAnimated = Animated.parallel([\n                Animated.timing(\n                    this.state.animatedValue1,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        easing: this.props.inEasing,\n                        useNativeDriver: false,\n                    }\n                ),\n                Animated.timing(\n                    this.state.animatedValue2,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        useNativeDriver: false,\n                    }\n                ),\n            ])\n            this.liftCycleAnimated.start()\n        }\n\n\n    }\n\n    onWindowChange = ({ window }) => {\n        const {width,height} = window\n        if (width != this.state.deviceWidth && height != this.state.deviceHeight) {\n            this.setState({\n                deviceWidth: width,\n                deviceHeight: height\n            })\n        }\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        alignItems: 'center',\n        position: 'absolute',\n        left: 0,\n        right: 0\n    },\n    content: {\n        borderRadius: 4,\n        padding: 10,\n        alignItems: 'center',\n\n        elevation: 2,\n        shadowOffset:{ width: 0, height: 1},\n        shadowColor:'gray',\n        shadowOpacity:0.2,\n        shadowRadius:1,\n    },\n    icon: {\n\n    },\n    text: {\n        fontSize: 16\n    }\n})\n\n"
  },
  {
    "path": "Example/src/widget/snackbar/SnackBar.js",
    "content": "import React from 'react'\nimport RootSiblings from 'react-native-root-siblings'\nimport SnackView from \"./SnackView\"\nimport {SnackBarDefaultOpt, SnackBarDuration, SnackBarPosition,SnackBarInOutDuration} from \"../data/Constants\";\n\nlet rootSiblings = undefined\nlet liftCycleManage = undefined\nexport default class SnackBar {\n\n    static duration = SnackBarDuration\n    static position = SnackBarPosition\n\n    static show = (snackBarOpts) => {\n\n        const data = snackBarOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        snackBarOpts = Object.assign({},SnackBarDefaultOpt,snackBarOpts)\n\n        SnackBar.hide();\n\n        rootSiblings = new RootSiblings(\n            <SnackView {...snackBarOpts}/>\n        )\n\n        if (snackBarOpts.duration !== SnackBarDuration.INDEFINITE) {\n            liftCycleManage = setTimeout(()=>{\n                SnackBar.hide()\n            }, snackBarOpts.duration+SnackBarInOutDuration*2)\n        }\n    }\n\n    static hide = () => {\n        if (liftCycleManage) {\n            clearTimeout(liftCycleManage)\n            liftCycleManage = undefined\n        }\n        if (rootSiblings) {\n            rootSiblings.destroy()\n            rootSiblings = undefined\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "Example/src/widget/snackbar/SnackView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    Dimensions,\n    Animated,\n    TouchableOpacity,\n    PanResponder,\n} from 'react-native'\nimport {SnackBarDuration, SnackBarInOutDuration, SnackBarPosition} from '../data/Constants'\nimport {isIphoneX,iosStatusBarXHeight,iosBottomXHeight,defaultStatusBarHeight, shadowBlackstyleTop,shadowBlackStyleBottom} from \"../util/UiUtil\";\n\nclass SnackView extends Component{\n\n    constructor(props) {\n        super(props)\n\n        const {width,height} = Dimensions.get('window')\n        this.state = {\n            deviceWidth: width,\n            deviceHeight: height,\n            animatedValue1: new Animated.Value(0),\n            animatedValue2: new Animated.Value(1),\n        }\n\n        // React after 17\n        Dimensions.addEventListener('change', this.onWindowChange);\n\n        this._panResponder = PanResponder.create({\n            onStartShouldSetPanResponderCapture: (evt, gestureState) => false,\n            onMoveShouldSetPanResponderCapture: (evt, gestureState) => false,\n            onStartShouldSetPanResponder: (evt, gestureState) => true,\n            onMoveShouldSetPanResponder: (evt, gestureState) => {\n                let {dx,dy} = gestureState;\n                if((Math.abs(dx) > 5) || (Math.abs(dy) > 5)){\n                    return true\n                }else{\n                    return false\n                }\n            },\n            onPanResponderGrant: (evt, gestureState) => {},\n            onPanResponderMove: (evt, gestureState) => this.moveTouch(evt, gestureState),\n            // onPanResponderRelease: (evt, gestureState) => this.endTouch(evt),\n            onPanResponderTerminationRequest: (evt, gestureState) => false,\n            onShouldBlockNativeResponder: (evt, gestureState) => false,\n        })\n    }\n\n    componentDidMount() {\n        this.onLifeCycleManage()\n    }\n\n    componentWillUnmount() {\n        this.onRelease()\n    }\n\n    render() {\n\n        let contentHeight = this.props.height\n\n        const baseStyle = {}\n        const statusBarStyle = {}\n        const containerStyle = {\n            backgroundColor: this.props.backgroundColor,\n        }\n        const contentStyles = {\n            height: contentHeight,\n        }\n\n        let containerHeight = contentHeight\n        if (this.props.position === SnackBarPosition.TOP) {\n            baseStyle.top = 0\n\n            const statusBarHeight = this.getStatusBarHeight()\n            containerHeight = contentHeight + statusBarHeight\n            statusBarStyle.height = statusBarHeight\n            statusBarStyle.backgroundColor = this.props.backgroundColor\n\n            containerStyle.height = containerHeight\n            containerStyle.top = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [-containerHeight, 0]\n            })\n        } else {\n\n            if (isIphoneX()) {\n                containerHeight = containerHeight+iosBottomXHeight\n            }\n\n            containerStyle.height = containerHeight\n\n            baseStyle.bottom = 0\n\n            containerStyle.bottom = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [-containerHeight, 0]\n            })\n        }\n\n        let actionView = undefined\n        if (this.props.actionText) {\n            actionView = (\n                <TouchableOpacity style={[styles.content_btn,{\n                    maxWidth: (this.state.deviceWidth - 40)*0.2,\n                    height: contentHeight\n                }]} onPress={() => this.onHideAnimated(false)} activeOpacity={0.8}>\n                    <Text style={[styles.content_title,{color: this.props.actionTextColor}]} numberOfLines={1}>{this.props.actionText}</Text>\n                </TouchableOpacity>\n            )\n        }\n\n        let shadowStyle = {};\n        if (this.props.isShowShadow) {\n            if (this.props.position === SnackBarPosition.TOP) {\n                shadowStyle = shadowBlackStyleBottom;\n            } else {\n                shadowStyle = shadowBlackstyleTop;\n            }\n        }\n\n        return (\n            <View style={[styles.base,baseStyle]} pointerEvents=\"box-none\">\n                <Animated.View style={[styles.container,containerStyle,shadowStyle]} {...this._panResponder.panHandlers}>\n                    <View style={statusBarStyle}/>\n                    <View style={[styles.content,contentStyles]}>\n                        <Text style={[styles.content_title,{\n                            color: this.props.textColor,\n                            maxWidth: (this.state.deviceWidth - 40)*0.8\n                        }]} numberOfLines={this.props.numberOfLines}>\n                            {this.props.data}\n                        </Text>\n                        {actionView}\n                    </View>\n                </Animated.View>\n            </View>\n        )\n    }\n\n    moveTouch = (evt, gestureState) => {\n        if (this.props.isAllowSlideExit) {\n            if (this.props.position === SnackBarPosition.TOP && gestureState.vy < -0.2) {\n                this.onHideAnimated(true)\n            } else if (this.props.position === SnackBarPosition.BOTTOM && gestureState.vy > 0.2) {\n                this.onHideAnimated(true)\n            }\n        } \n    }\n\n    onLifeCycleManage = () => {\n        this.inAnimated = Animated.timing(\n            this.state.animatedValue1,\n            {\n                toValue: 1,\n                duration: SnackBarInOutDuration,\n                easing: this.props.inEasing,\n                useNativeDriver: false,\n            }\n        )\n\n        this.inAnimated.start(()=>{\n            if (this.props.duration !== SnackBarDuration.INDEFINITE) {\n                this.commonAnimated = Animated.sequence([\n                    Animated.timing(\n                        this.state.animatedValue2,\n                        {\n                            toValue: 1,\n                            duration: this.props.duration,\n                            useNativeDriver: false,\n                        }\n                    ),\n                    Animated.timing(\n                        this.state.animatedValue1,\n                        {\n                            toValue: 0,\n                            duration: SnackBarInOutDuration,\n                            useNativeDriver: false,\n                        }\n                    )\n                ])\n                this.commonAnimated.start()\n            }\n        })\n\n    }\n\n    onHideAnimated = (isSlideHide) => {\n        if (!this.isHasHide) {\n            this.isHasHide = true;\n        } else {\n            return;\n        }\n        if (this.props.onActionHide) this.props.onActionHide(isSlideHide)\n        this.hideAnimated = Animated.timing(\n            this.state.animatedValue1,\n            {\n                toValue: 0,\n                duration: SnackBarInOutDuration,\n                useNativeDriver: false,\n            }\n        )\n        this.hideAnimated.start(()=>{\n            this.onRelease()\n        })\n    }\n\n    onWindowChange = ({ window }) => {\n        const {width,height} = window\n        if (width != this.state.deviceWidth && height != this.state.deviceHeight) {\n            this.setState({\n                deviceWidth: width,\n                deviceHeight: height\n            })\n        }\n    }\n\n    onRelease = () => {\n        if (this.inAnimated) {\n            this.inAnimated.stop()\n            this.inAnimated = undefined\n        }\n        if (this.commonAnimated) {\n            this.commonAnimated.stop()\n            this.commonAnimated = undefined\n        }\n        if (this.hideAnimated) {\n            this.hideAnimated.stop()\n            this.hideAnimated = undefined\n        }\n        Dimensions.removeEventListener('change', this.onWindowChange);\n    }\n\n    getStatusBarHeight = () => {\n        if (this.props.statusBarHeight < 0) {\n            if (isIphoneX()) {\n                return iosStatusBarXHeight\n            } else {\n                return defaultStatusBarHeight\n            }\n        } else {\n            return this.props.statusBarHeight\n        }\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    base: {\n        position: 'absolute',\n        left: 0,\n        right: 0,\n    },\n    container: {\n        flexDirection: 'column'\n    },\n    content: {\n        flexDirection: 'row',\n        justifyContent: 'space-between',\n        alignItems: 'center',\n        paddingLeft: 15,\n        paddingRight: 15\n    },\n    content_title: {\n        fontSize: 16,\n        marginRight: 10\n    },\n    content_btn: {\n        justifyContent: 'center',\n        alignItems: 'center',\n    }\n})\n\nexport default SnackView\n\n\n"
  },
  {
    "path": "Example/src/widget/toast/Toast.js",
    "content": "import React from 'react'\nimport RootSiblings from 'react-native-root-siblings'\nimport ToastView from \"./ToastView\"\nimport {ToastDuration,ToastInOutDuration,ToastPosition,ToastDefaultOpt} from '../data/Constants'\n\nlet rootSiblings = undefined\nlet liftCycleManage = undefined\nexport default class Toast {\n\n    static duration = ToastDuration\n    static position = ToastPosition\n\n    static show = (toastOpts) => {\n\n        const data = toastOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        toastOpts = Object.assign({},ToastDefaultOpt,toastOpts)\n\n        Toast.hide();\n\n        rootSiblings = new RootSiblings(\n            <ToastView {...toastOpts}/>\n        )\n\n        liftCycleManage = setTimeout(()=>{\n            Toast.hide()\n        }, toastOpts.duration+ToastInOutDuration*2)\n    }\n\n    static hide = () => {\n        if (liftCycleManage) {\n            clearTimeout(liftCycleManage)\n            liftCycleManage = undefined\n        }\n        if (rootSiblings) {\n            rootSiblings.destroy()\n            rootSiblings = undefined\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "Example/src/widget/toast/ToastView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    Dimensions,\n    Animated\n} from 'react-native'\nimport {ToastInOutDuration, ToastInHeight} from '../data/Constants'\nimport { shadowBlackStyleBottom } from '../util/UiUtil'\n\nconst MaxWidthRatio = 0.8\nexport default class ToastView extends Component{\n\n    constructor(props) {\n        super(props)\n\n        const {width,height} = Dimensions.get('window')\n\n        this.state = {\n            deviceWidth: width,\n            deviceHeight: height,\n            animatedValue1: new Animated.Value(0),\n            animatedValue2: new Animated.Value(0.2),\n        }\n\n        // React after 17\n        Dimensions.addEventListener('change', this.onWindowChange);\n    }\n\n    componentDidMount() {\n        this.onLifeCycleManage()\n    }\n\n    componentWillUnmount() {\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n        Dimensions.removeEventListener('change', this.onWindowChange);\n    }\n\n    render() {\n\n        const containerStyle = {}\n        const contentStyle = {\n            backgroundColor: this.props.backgroundColor,\n            opacity: this.state.animatedValue2.interpolate({\n                inputRange: [0, 1, 2],\n                outputRange: [0, 1, 0]\n            }),\n            minWidth: this.props.icon ? this.state.deviceWidth*0.4 : 0,\n            maxWidth: this.state.deviceWidth*MaxWidthRatio,\n        }\n\n        if (this.props.position > 0) {\n            containerStyle.justifyContent = 'flex-start';\n            containerStyle.top = 40\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight/2, 0]\n            });\n        } else if (this.props.position == 0) {\n            containerStyle.justifyContent = 'center';\n            containerStyle.top = 0\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight, 0]\n            });\n        } else if (this.props.position < 0) {\n            containerStyle.justifyContent = 'flex-end';\n            containerStyle.top = 0\n            containerStyle.bottom = 40;\n            contentStyle.marginBottom = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [0, ToastInHeight/2]\n            });\n        }\n\n        let shadowStyle = {};\n        if (this.props.isShowShadow) shadowStyle = shadowBlackStyleBottom;\n        \n\n        return (\n            <View style={[styles.container,containerStyle]} pointerEvents=\"none\">\n                <Animated.View style={[styles.content,contentStyle,shadowStyle]}>\n                    {this.props.icon}\n                    <Text style={[styles.text,{color: this.props.textColor}]}>\n                        {this.props.data}\n                    </Text>\n                </Animated.View>\n            </View>\n        )\n    }\n\n    onLifeCycleManage = () => {\n\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n        this.liftCycleAnimated = Animated.sequence([\n            Animated.parallel([\n                Animated.timing(\n                    this.state.animatedValue1,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        easing: this.props.inEasing,\n                        useNativeDriver: false,\n                    }\n                ),\n                Animated.timing(\n                    this.state.animatedValue2,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        useNativeDriver: false,\n                    }\n                ),\n            ]),\n            Animated.timing(\n                this.state.animatedValue2,\n                {\n                    toValue: 1,\n                    duration: this.props.duration,\n                    useNativeDriver: false,\n                }\n            ),\n            Animated.timing(\n                this.state.animatedValue2,\n                {\n                    toValue: 2,\n                    duration: ToastInOutDuration,\n                    useNativeDriver: false,\n                }\n            )\n        ])\n        this.liftCycleAnimated.start()\n    }\n\n    onWindowChange = ({ window }) => {\n        const {width,height} = window\n        if (width != this.state.deviceWidth && height != this.state.deviceHeight) {\n            this.setState({\n                deviceWidth: width,\n                deviceHeight: height\n            })\n        }\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        alignItems: 'center',\n        position: 'absolute',\n        left: 0,\n        right: 0\n    },\n    content: {\n        borderRadius: 4,\n        padding: 10,\n        alignItems: 'center'\n    },\n    icon: {\n\n    },\n    text: {\n        fontSize: 16\n    }\n})\n\n"
  },
  {
    "path": "Example/src/widget/util/UiUtil.js",
    "content": "import {Platform,Dimensions} from 'react-native'\n\nconst screenW = Dimensions.get('window').width\nconst screenH = Dimensions.get('window').height\n\nexport const defaultStatusBarHeight = 20\nexport const iosStatusBarXHeight = 44\nexport const iosBottomXHeight = 34\n\nconst IPHONEX_WIDTH = 375\nconst IPHONEX_HEIGHT = 812\nconst IPHONEX_MAX_WIDTH = 414\nconst IPHONEX_MAX_HEIGHT = 896\n\nexport const isIphoneX = () => {\n    if (Platform.OS === 'ios') {\n        if (\n            ((screenH === IPHONEX_HEIGHT && screenW === IPHONEX_WIDTH) || (screenH === IPHONEX_WIDTH && screenW === IPHONEX_HEIGHT)) ||\n            ((screenH === IPHONEX_MAX_HEIGHT && screenW === IPHONEX_MAX_WIDTH) || (screenH === IPHONEX_MAX_WIDTH && screenW === IPHONEX_MAX_HEIGHT))\n        ) {\n            return true\n        }\n    }\n    return false\n}\n\nexport const shadowBlackStyleBottom = {\n    elevation: 4,\n\n    shadowOffset: {\n        width: 0,\n        height: -2\n    },\n    shadowColor: '#000',\n    shadowOpacity: 0.4,\n    shadowRadius: 2\n}\n\nexport const shadowBlackstyleTop = {\n    elevation: 4,\n\n    shadowOffset: {\n        width: 0,\n        height: 2\n    },\n    shadowColor: '#000',\n    shadowOpacity: 0.4,\n    shadowRadius: 2\n}"
  },
  {
    "path": "README.md",
    "content": "# react-native-smart-tip\nReact-native smart tip, including Toast、Modal、SnackBar\n\n![GitHub license](https://img.shields.io/badge/license-MIT-green.svg)\n[![npm](https://img.shields.io/npm/v/react-native-smart-tip.svg?style=flat)](https://npmjs.com/package/react-native-smart-tip)\n\n### 2021.4\nIn react native >= 0.62, the new LogBox component would impact this component's initialization. To make it work we have to explicitly insert a mount point in your app like this\n\n```\nimport { WRootToastApp } from 'react-native-smart-tip'\n\n// in your entry file like `App.js`\n\nreturn (\n  <WRootToastApp>  // <- use WRootToastApp to wrap your root component\n    <App />\n  </WRootToastApp>\n);\n\n```\n\n### 2020.5 \n1. Add property isShowShadow to WSnackBar and WToast\n2. Add sliding hide function for WSnackBar\n\n### 2020.3 Show Toast above Modal (Compatible with Android and iOS)\n\n![](https://user-gold-cdn.xitu.io/2020/3/8/170b855830588e41?w=300&h=500&f=gif&s=489177)\n\n```\nimport { ModalShowToastView } from 'react-native-smart-tip'\n\ngetToastInstance = (toastInstance) => {\n    this.toastInstance = toastInstance;\n}\n\n<Modal>\n\t<View>\n\t\t<ModalShowToastView toastInstance={this.getToastInstance} />\n\t</View>\n</Modal>\n\nthis.toastInstance({data: 'toast'})\n\n```\n\n### 2019.7 Remove the method in the componentWillMount method. Compatible with future React 17 versions, React-Native@0.6 version.\n\n### Installation\n```bash\nyarn add react-native-smart-tip\nor\nnpm i react-native-smart-tip --save \n```\n\n![](https://raw.githubusercontent.com/mochixuan/react-native-smart-tip/master/img/main.jpg)\n\n### Features\n\n##### Toast\n\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/toast.gif?raw=true)\n\n##### SnackBar\n![](https://user-gold-cdn.xitu.io/2020/4/30/171c959272abe458?w=320&h=533&f=gif&s=355190)\n\n##### Modal\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/modal.gif?raw=true)\n\n##### Show tips on Modal \n> Tip: Modal shows that modal can only be used on Android [issue](https://github.com/facebook/react-native/issues/3445)\n\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/modal1.gif?raw=true)\n\n### Usage\n\n##### WToast\n```\nimport {WToast} from 'react-native-smart-tip'\n\n// Base \nshow = () => {\n\tWToast.show({data: 'hello world'})\n}\n\n// Other\nshow = () => {\n\tconst toastOpts = {\n\t    data: 'Success',\n\t    textColor: '#ffffff',\n\t    backgroundColor: '#444444',\n\t    duration: WToast.duration.LONG, //1.SHORT 2.LONG\n\t    position: WToast.position.TOP, // 1.TOP 2.CENTER 3.BOTTOM\n\t    icon: <Image source={require('../data/img/success.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>\n\t}\n\t\n\tWToast.show(toastOpts)\n}\n\nWToast.hide(); // Can be hidden immediately\n\n```\n##### WToast API\n Props |\tType\t  | Required\t | Default    | Description\n-------| -------- | -------- | ----------- | -----------\ndata     | String  | true     | ' '| Displayed content\nduration | Number | false | WToast.duration.SHORT | The duration of the toast\nposition | Number   | false  | WToast.position.BOTTOM | Displayed position\ninEasing | Easing   | false  | Easing.elastic(1)| Admission animation\ntextColor| String | false |'white'| font color\nbackgroundColor| String | false | 'black' | background color\nicon | Component | fasse | undefined | Image to be displayed\nisShowShadow | boolean | false | true | Shadow effect\n---\n\n##### WSnackBar\n```\nimport {WSnackBar} from 'react-native-smart-tip'\n\n// Base \nshow = () => {\n\tWSnackBar.show({data: 'hello world'})\n}\n\n// Other\nshow = () => {\n\tconst snackBarOpts = {\n\t    data: 'Please check the network first.',\n\t    position: WSnackBar.position.BOTTOM, // 1.TOP 2.CENTER 3.BOTTOM\n\t    duration: WSnackBar.duration.LONG, //1.SHORT 2.LONG 3.INDEFINITE\n\t    textColor: '#ff490b',\n\t    backgroundColor: '#050405',\n\t    actionText: 'Sure',\n\t    actionTextColor: '#ff490b',\n\t    onActionHide: (isSlideHide)=>{\n\t    \t// Click Action\n\t    },\n\t}\n\t\n\tWSnackBar.show(snackBarOpts)\n}\n\n```\n\n##### WSnackBar API\n Props |\tType\t  | Required\t | Default    | Description\n-------| -------- | -------- | ----------- | -----------\ndata     | String  | true     | ' '| Displayed content\nstatusBarHeight | Number | false | -1 | Prevent Android statusBar\nheight | Number | false | 44 | Height to display\nduration | Number | false | WSnackBar.duration.SHORT | The duration of the toast\nposition | Number   | false  | WSnackBar.position.BOTTOM | Displayed position\ninEasing | Easing   | false  | Easing.linear| Admission animation\ntextColor| String | false |'white'| font color\nbackgroundColor| String | false | 'black' | background color\nactionText | String | false | undefined | action text\nactionTextColor | String | false | 'white' | action text color\nisAllowSlideExit|boolean | false | true | Whether to run sliding hide\nonActionHide | Function | false |  undefined | listener click\nisShowShadow | boolean | false | true | Shadow effect\nnumberOfLines|number| false | 1 | Maximum number of rows\n---\n\n##### WModal \n```\nimport {WModal} from 'react-native-smart-tip'\n\n// Base \nshow = () => {\n\tWModal.show({data: 'hello world'})\n}\n\n// Other\nshow = () => {\n\tconst modalOpts = {\n\t    data: 'Loading',\n\t    textColor: '#fff',\n\t    backgroundColor: '#444444',\n\t    position: WModal.position.CENTER,\n\t    icon: <ActivityIndicator color='#fff' size={'large'}/>\n\t}\n\t\n\tWModal.show(modalOpts)\n}\n\n```\n##### WToast API\n Props |\tType\t  | Required\t | Default    | Description\n-------| -------- | -------- | ----------- | -----------\ndata     | String  | true     | ' '| Displayed content\nposition | Number   | false  | WToast.position.BOTTOM | Displayed position\ninEasing | Easing   | false  | Easing.elastic(1)| Admission animation\ntextColor| String | false |'white'| font color\nbackgroundColor| String | false | 'black' | background color\nicon | Component | fasse | undefined | Image to be displayed\nonRequestClose|Function|false| undefined| Android Back\n\n##### MIT Licensed\n"
  },
  {
    "path": "lib/.idea/inspectionProfiles/Project_Default.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <profile version=\"1.0\">\n    <option name=\"myName\" value=\"Project Default\" />\n    <inspection_tool class=\"TsLint\" enabled=\"true\" level=\"ERROR\" enabled_by_default=\"true\" />\n  </profile>\n</component>"
  },
  {
    "path": "lib/.idea/jsLinters/tslint.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"TsLintConfiguration\" use-custom-config-file=\"true\" custom-config-file-path=\"$PROJECT_DIR$/../../../AX/AXD/AXD/tslint.json\" />\n</project>"
  },
  {
    "path": "lib/.idea/lib.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"WEB_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\">\n    <content url=\"file://$MODULE_DIR$\">\n      <excludeFolder url=\"file://$MODULE_DIR$/.tmp\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/temp\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/tmp\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>"
  },
  {
    "path": "lib/.idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"JavaScriptSettings\">\n    <option name=\"languageLevel\" value=\"JSX\" />\n  </component>\n</project>"
  },
  {
    "path": "lib/.idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/.idea/lib.iml\" filepath=\"$PROJECT_DIR$/.idea/lib.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": "lib/.idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"cd5a4215-2105-408c-acdf-114984a95bde\" name=\"Default\" comment=\"\" />\n    <ignored path=\"$PROJECT_DIR$/.tmp/\" />\n    <ignored path=\"$PROJECT_DIR$/temp/\" />\n    <ignored path=\"$PROJECT_DIR$/tmp/\" />\n    <option name=\"EXCLUDED_CONVERTED_TO_IGNORED\" value=\"true\" />\n    <option name=\"TRACKING_ENABLED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf SIDE_TABS_SIZE_LIMIT_KEY=\"375\">\n      <file leaf-file-name=\"Toast.js\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"133\">\n              <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n              <folding>\n                <element signature=\"e#0#25#0\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"package.json\" pinned=\"false\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/package.json\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"342\">\n              <caret line=\"18\" column=\"16\" selection-start-line=\"18\" selection-start-column=\"16\" selection-end-line=\"18\" selection-end-column=\"16\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"Constants.js\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"247\">\n              <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"index.js\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/index.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"38\">\n              <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n              <folding>\n                <element signature=\"e#0#34#0\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"SnackBar.js\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"399\">\n              <caret line=\"24\" column=\"18\" lean-forward=\"true\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n              <folding>\n                <element signature=\"e#0#25#0\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"SnackView.js\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"38\">\n              <caret line=\"12\" column=\"6\" selection-start-line=\"12\" selection-start-column=\"6\" selection-end-line=\"12\" selection-end-column=\"6\" />\n              <folding>\n                <element signature=\"e#0#37#0\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"FindInProjectRecents\">\n    <findStrings>\n      <find>positon</find>\n      <find>this.props</find>\n      <find>actionTextColor</find>\n      <find>height</find>\n    </findStrings>\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"CHANGED_PATHS\">\n      <list>\n        <option value=\"$PROJECT_DIR$/toast/ToastView.js\" />\n        <option value=\"$PROJECT_DIR$/snackbar/SnackView.js\" />\n        <option value=\"$PROJECT_DIR$/modaltoast/ModalToastView.js\" />\n        <option value=\"$PROJECT_DIR$/index.d.ts\" />\n        <option value=\"$PROJECT_DIR$/package.json\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"JsBuildToolGruntFileManager\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\" />\n  <component name=\"JsBuildToolPackageJson\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\">\n    <package-json value=\"$PROJECT_DIR$/package.json\" />\n  </component>\n  <component name=\"JsGulpfileManager\">\n    <detection-done>true</detection-done>\n    <sorting>DEFINITION_ORDER</sorting>\n  </component>\n  <component name=\"ProjectFrameBounds\">\n    <option name=\"x\" value=\"141\" />\n    <option name=\"y\" value=\"23\" />\n    <option name=\"width\" value=\"1299\" />\n    <option name=\"height\" value=\"781\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator proportions=\"\" version=\"1\">\n      <foldersAlwaysOnTop value=\"true\" />\n    </navigator>\n    <panes>\n      <pane id=\"ProjectPane\">\n        <subPane>\n          <expand>\n            <path>\n              <item name=\"lib\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"lib\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"lib\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"lib\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"data\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"lib\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"lib\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"modaltoast\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"lib\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"lib\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"snackbar\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"lib\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"lib\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"toast\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"lib\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"lib\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"util\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n          </expand>\n          <select />\n        </subPane>\n      </pane>\n      <pane id=\"Scope\" />\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"WebServerToolWindowFactoryState\" value=\"false\" />\n    <property name=\"last_opened_file_path\" value=\"$PROJECT_DIR$\" />\n    <property name=\"node.js.detected.package.prettier\" value=\"true\" />\n    <property name=\"node.js.detected.package.tslint\" value=\"true\" />\n    <property name=\"node.js.path.for.package.eslint\" value=\"project\" />\n    <property name=\"node.js.path.for.package.prettier\" value=\"project\" />\n    <property name=\"node.js.path.for.package.standard\" value=\"project\" />\n    <property name=\"node.js.path.for.package.tslint\" value=\"project\" />\n    <property name=\"node.js.selected.package.eslint\" value=\"\" />\n    <property name=\"node.js.selected.package.prettier\" value=\"\" />\n    <property name=\"node.js.selected.package.standard\" value=\"\" />\n    <property name=\"node.js.selected.package.tslint\" value=\"/usr/local/lib/node_modules/tslint\" />\n    <property name=\"nodejs_interpreter_path.stuck_in_default_project\" value=\"undefined stuck path\" />\n    <property name=\"nodejs_npm_path_reset_for_default_project\" value=\"true\" />\n    <property name=\"nodejs_package_manager_path\" value=\"npm\" />\n    <property name=\"settings.editor.selected.configurable\" value=\"settings.javascript.linters.tslint\" />\n  </component>\n  <component name=\"RecentsManager\">\n    <key name=\"MoveFile.RECENT_KEYS\">\n      <recent name=\"$PROJECT_DIR$\" />\n    </key>\n    <key name=\"CopyFile.RECENT_KEYS\">\n      <recent name=\"$PROJECT_DIR$\" />\n    </key>\n  </component>\n  <component name=\"RunDashboard\">\n    <option name=\"ruleStates\">\n      <list>\n        <RuleState>\n          <option name=\"name\" value=\"ConfigurationTypeDashboardGroupingRule\" />\n        </RuleState>\n        <RuleState>\n          <option name=\"name\" value=\"StatusDashboardGroupingRule\" />\n        </RuleState>\n      </list>\n    </option>\n  </component>\n  <component name=\"SvnConfiguration\">\n    <configuration />\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"cd5a4215-2105-408c-acdf-114984a95bde\" name=\"Default\" comment=\"\" />\n      <created>1552038986178</created>\n      <option name=\"number\" value=\"Default\" />\n      <option name=\"presentableId\" value=\"Default\" />\n      <updated>1552038986178</updated>\n      <workItem from=\"1552038987963\" duration=\"1083000\" />\n      <workItem from=\"1552265509500\" duration=\"2280000\" />\n      <workItem from=\"1562830657244\" duration=\"84000\" />\n      <workItem from=\"1563777984806\" duration=\"65000\" />\n      <workItem from=\"1563782432680\" duration=\"110000\" />\n      <workItem from=\"1563782691428\" duration=\"608000\" />\n      <workItem from=\"1563793328200\" duration=\"410000\" />\n      <workItem from=\"1563852021638\" duration=\"6000\" />\n      <workItem from=\"1563852643983\" duration=\"2000\" />\n      <workItem from=\"1569373745362\" duration=\"85000\" />\n      <workItem from=\"1571820726391\" duration=\"5000\" />\n    </task>\n    <servers />\n  </component>\n  <component name=\"TimeTrackingManager\">\n    <option name=\"totallyTimeSpent\" value=\"4738000\" />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"141\" y=\"23\" width=\"1299\" height=\"781\" extended-state=\"0\" />\n    <editor active=\"true\" />\n    <layout>\n      <window_info content_ui=\"combo\" id=\"Project\" order=\"0\" visible=\"true\" weight=\"0.24901807\" />\n      <window_info anchor=\"bottom\" id=\"TODO\" order=\"6\" />\n      <window_info anchor=\"bottom\" id=\"Docker\" order=\"7\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Event Log\" order=\"7\" side_tool=\"true\" />\n      <window_info anchor=\"bottom\" id=\"Run\" order=\"2\" />\n      <window_info anchor=\"bottom\" id=\"Version Control\" order=\"7\" show_stripe_button=\"false\" />\n      <window_info id=\"npm\" order=\"2\" side_tool=\"true\" />\n      <window_info id=\"Structure\" order=\"1\" side_tool=\"true\" weight=\"0.25\" />\n      <window_info active=\"true\" anchor=\"bottom\" id=\"Terminal\" order=\"7\" visible=\"true\" weight=\"0.32579187\" />\n      <window_info anchor=\"bottom\" id=\"Debug\" order=\"3\" weight=\"0.4\" />\n      <window_info id=\"Favorites\" order=\"2\" side_tool=\"true\" />\n      <window_info anchor=\"bottom\" id=\"TypeScript\" order=\"7\" />\n      <window_info anchor=\"right\" content_ui=\"combo\" id=\"Hierarchy\" order=\"2\" weight=\"0.25\" />\n      <window_info anchor=\"bottom\" id=\"Inspection\" order=\"5\" weight=\"0.4\" />\n      <window_info anchor=\"right\" id=\"Commander\" internal_type=\"SLIDING\" order=\"0\" type=\"SLIDING\" weight=\"0.4\" />\n      <window_info anchor=\"right\" id=\"Ant Build\" order=\"1\" weight=\"0.25\" />\n      <window_info anchor=\"bottom\" id=\"Message\" order=\"0\" />\n      <window_info anchor=\"bottom\" id=\"Cvs\" order=\"4\" weight=\"0.25\" />\n      <window_info anchor=\"bottom\" id=\"Find\" order=\"1\" />\n    </layout>\n  </component>\n  <component name=\"TypeScriptGeneratedFilesManager\">\n    <option name=\"version\" value=\"1\" />\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"247\">\n          <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#34#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"24\" column=\"18\" lean-forward=\"true\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"12\" column=\"6\" selection-start-line=\"12\" selection-start-column=\"6\" selection-end-line=\"12\" selection-end-column=\"6\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/package.json\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"342\">\n          <caret line=\"18\" column=\"16\" lean-forward=\"true\" selection-start-line=\"18\" selection-start-column=\"16\" selection-end-line=\"18\" selection-end-column=\"16\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"247\">\n          <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#34#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"24\" column=\"18\" lean-forward=\"true\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"12\" column=\"6\" selection-start-line=\"12\" selection-start-column=\"6\" selection-end-line=\"12\" selection-end-column=\"6\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"247\">\n          <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#34#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"24\" column=\"18\" lean-forward=\"true\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"12\" column=\"6\" selection-start-line=\"12\" selection-start-column=\"6\" selection-end-line=\"12\" selection-end-column=\"6\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.d.ts\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"190\">\n          <caret line=\"11\" column=\"1\" lean-forward=\"true\" selection-start-line=\"11\" selection-start-column=\"1\" selection-end-line=\"11\" selection-end-column=\"1\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"247\">\n          <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#34#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"24\" column=\"18\" lean-forward=\"true\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"12\" column=\"6\" selection-start-line=\"12\" selection-start-column=\"6\" selection-end-line=\"12\" selection-end-column=\"6\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.d.ts\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"1197\">\n          <caret line=\"64\" lean-forward=\"true\" selection-start-line=\"64\" selection-end-line=\"64\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"247\">\n          <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#34#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"24\" column=\"18\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"570\">\n          <caret line=\"40\" column=\"45\" selection-start-line=\"40\" selection-start-column=\"39\" selection-end-line=\"40\" selection-end-column=\"45\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/package.json\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"2\" column=\"14\" selection-start-line=\"2\" selection-start-column=\"14\" selection-end-line=\"2\" selection-end-column=\"19\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.d.ts\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"437\">\n          <caret line=\"24\" column=\"6\" selection-start-line=\"24\" selection-start-column=\"6\" selection-end-line=\"24\" selection-end-column=\"6\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"342\">\n          <caret line=\"28\" selection-start-line=\"28\" selection-end-line=\"28\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/modaltoast/ModalToastView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"361\">\n          <caret line=\"28\" column=\"5\" selection-start-line=\"28\" selection-start-column=\"5\" selection-end-line=\"28\" selection-end-column=\"5\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/package.json\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"2\" column=\"19\" selection-start-line=\"2\" selection-start-column=\"19\" selection-end-line=\"2\" selection-end-column=\"19\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/modaltoast/ModalToast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-440\" />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/toast/ToastView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"513\">\n          <caret line=\"27\" column=\"5\" selection-start-line=\"27\" selection-start-column=\"5\" selection-end-line=\"27\" selection-end-column=\"5\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/modaltoast/ModalToastView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"266\">\n          <caret line=\"14\" column=\"24\" lean-forward=\"true\" selection-start-line=\"14\" selection-start-column=\"24\" selection-end-line=\"14\" selection-end-column=\"24\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/data/Constants.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"247\">\n          <caret line=\"13\" column=\"10\" selection-start-line=\"13\" selection-start-column=\"4\" selection-end-line=\"13\" selection-end-column=\"10\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"4\" column=\"18\" lean-forward=\"true\" selection-start-line=\"4\" selection-start-column=\"18\" selection-end-line=\"4\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#34#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackBar.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"24\" column=\"18\" lean-forward=\"true\" selection-start-line=\"24\" selection-start-column=\"18\" selection-end-line=\"24\" selection-end-column=\"18\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/snackbar/SnackView.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"12\" column=\"6\" selection-start-line=\"12\" selection-start-column=\"6\" selection-end-line=\"12\" selection-end-column=\"6\" />\n          <folding>\n            <element signature=\"e#0#37#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/index.d.ts\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"19\">\n          <caret line=\"11\" column=\"1\" selection-start-line=\"11\" selection-start-column=\"1\" selection-end-line=\"11\" selection-end-column=\"1\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/toast/Toast.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"11\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding>\n            <element signature=\"e#0#25#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/package.json\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"342\">\n          <caret line=\"18\" column=\"16\" selection-start-line=\"18\" selection-start-column=\"16\" selection-end-line=\"18\" selection-end-column=\"16\" />\n        </state>\n      </provider>\n    </entry>\n  </component>\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ScopeChooserConfigurable.UI\">\n        <settings>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>"
  },
  {
    "path": "lib/README.md",
    "content": "# react-native-smart-tip\nReact-native smart tip, including Toast、Modal、SnackBar\n\n![GitHub license](https://img.shields.io/badge/license-MIT-green.svg)\n[![npm](https://img.shields.io/npm/v/react-native-smart-tip.svg?style=flat)](https://npmjs.com/package/react-native-smart-tip)\n\n### 2021.4\nIn react native >= 0.62, the new LogBox component would impact this component's initialization. To make it work we have to explicitly insert a mount point in your app like this\n\n```\nimport { WRootToastApp } from 'react-native-smart-tip'\n\n// in your entry file like `App.js`\n\nreturn (\n  <WRootToastApp>  // <- use WRootToastApp to wrap your root component\n    <App />\n  </WRootToastApp>\n);\n\n```\n\n### 2020.5 \n1. Add property isShowShadow to WSnackBar and WToast\n2. Add sliding hide function for WSnackBar\n\n### 2020.3 Show Toast above Modal (Compatible with Android and iOS)\n\n![](https://user-gold-cdn.xitu.io/2020/3/8/170b855830588e41?w=300&h=500&f=gif&s=489177)\n\n```\nimport { ModalShowToastView } from 'react-native-smart-tip'\n\ngetToastInstance = (toastInstance) => {\n    this.toastInstance = toastInstance;\n}\n\n<Modal>\n\t<View>\n\t\t<ModalShowToastView toastInstance={this.getToastInstance} />\n\t</View>\n</Modal>\n\nthis.toastInstance({data: 'toast'})\n\n```\n\n### 2019.7 Remove the method in the componentWillMount method. Compatible with future React 17 versions, React-Native@0.6 version.\n\n### Installation\n```bash\nyarn add react-native-smart-tip\nor\nnpm i react-native-smart-tip --save \n```\n\n![](https://raw.githubusercontent.com/mochixuan/react-native-smart-tip/master/img/main.jpg)\n\n### Features\n\n##### Toast\n\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/toast.gif?raw=true)\n\n##### SnackBar\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/snackbar.gif?raw=true)\n\n##### Modal\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/modal.gif?raw=true)\n\n##### Show tips on Modal \n> Tip: Modal shows that modal can only be used on Android [issue](https://github.com/facebook/react-native/issues/3445)\n\n![](https://github.com/mochixuan/react-native-smart-tip/blob/master/img/modal1.gif?raw=true)\n\n### Usage\n\n##### WToast\n```\nimport {WToast} from 'react-native-smart-tip'\n\n// Base \nshow = () => {\n\tWToast.show({data: 'hello world'})\n}\n\n// Other\nshow = () => {\n\tconst toastOpts = {\n\t    data: 'Success',\n\t    textColor: '#ffffff',\n\t    backgroundColor: '#444444',\n\t    duration: WToast.duration.LONG, //1.SHORT 2.LONG\n\t    position: WToast.position.TOP, // 1.TOP 2.CENTER 3.BOTTOM\n\t    icon: <Image source={require('../data/img/success.png')} style={{width: 32,height: 32,resizeMode: 'contain'}}/>\n\t}\n\t\n\tWToast.show(toastOpts)\n}\n\n```\n##### WToast API\n Props |\tType\t  | Required\t | Default    | Description\n-------| -------- | -------- | ----------- | -----------\ndata     | String  | true     | ' '| Displayed content\nduration | Number | false | WToast.duration.SHORT | The duration of the toast\nposition | Number   | false  | WToast.position.BOTTOM | Displayed position\ninEasing | Easing   | false  | Easing.elastic(1)| Admission animation\ntextColor| String | false |'white'| font color\nbackgroundColor| String | false | 'black' | background color\nicon | Component | fasse | undefined | Image to be displayed\nisShowShadow | boolean | false | true | Shadow effect\n---\n\n##### WSnackBar\n```\nimport {WSnackBar} from 'react-native-smart-tip'\n\n// Base \nshow = () => {\n\tWSnackBar.show({data: 'hello world'})\n}\n\n// Other\nshow = () => {\n\tconst snackBarOpts = {\n\t    data: 'Please check the network first.',\n\t    position: WSnackBar.position.BOTTOM, // 1.TOP 2.CENTER 3.BOTTOM\n\t    duration: WSnackBar.duration.LONG, //1.SHORT 2.LONG 3.INDEFINITE\n\t    textColor: '#ff490b',\n\t    backgroundColor: '#050405',\n\t    actionText: 'Sure',\n\t    actionTextColor: '#ff490b',\n\t    onActionHide: (isSlideHide)=>{\n\t    \t// Click Action\n\t    },\n\t}\n\t\n\tWSnackBar.show(snackBarOpts)\n}\n\n```\n\n##### WSnackBar API\n Props |\tType\t  | Required\t | Default    | Description\n-------| -------- | -------- | ----------- | -----------\ndata     | String  | true     | ' '| Displayed content\nstatusBarHeight | Number | false | -1 | Prevent Android statusBar\nheight | Number | false | 44 | Height to display\nduration | Number | false | WSnackBar.duration.SHORT | The duration of the toast\nposition | Number   | false  | WSnackBar.position.BOTTOM | Displayed position\ninEasing | Easing   | false  | Easing.linear| Admission animation\ntextColor| String | false |'white'| font color\nbackgroundColor| String | false | 'black' | background color\nactionText | String | false | undefined | action text\nactionTextColor | String | false | 'white' | action text color\nisAllowSlideExit|boolean | false | true | Whether to run sliding hide\nonActionHide | Function | false |  undefined | listener click\nisShowShadow | boolean | false | true | Shadow effect\nnumberOfLines|number| false | 1 | Maximum number of rows\n---\n\n##### WModal \n```\nimport {WModal} from 'react-native-smart-tip'\n\n// Base \nshow = () => {\n\tWModal.show({data: 'hello world'})\n}\n\n// Other\nshow = () => {\n\tconst modalOpts = {\n\t    data: 'Loading',\n\t    textColor: '#fff',\n\t    backgroundColor: '#444444',\n\t    position: WModal.position.CENTER,\n\t    icon: <ActivityIndicator color='#fff' size={'large'}/>\n\t}\n\t\n\tWModal.show(modalOpts)\n}\n\n```\n##### WToast API\n Props |\tType\t  | Required\t | Default    | Description\n-------| -------- | -------- | ----------- | -----------\ndata     | String  | true     | ' '| Displayed content\nposition | Number   | false  | WToast.position.BOTTOM | Displayed position\ninEasing | Easing   | false  | Easing.elastic(1)| Admission animation\ntextColor| String | false |'white'| font color\nbackgroundColor| String | false | 'black' | background color\nicon | Component | fasse | undefined | Image to be displayed\nonRequestClose|Function|false| undefined| Android Back\n\n##### MIT Licensed\n"
  },
  {
    "path": "lib/data/Constants.js",
    "content": "import {Easing} from 'react-native'\n\nconst ToastDuration = {\n    LONG: 3500,\n    SHORT: 2000\n}\n\nconst ToastInHeight = 120\n\nconst ToastInOutDuration = 240\n\nconst ToastPosition = {\n    TOP: 1,\n    CENTER: 0,\n    BOTTOM: -1\n}\n\nconst ToastDefaultOpt = {\n    data: '',  //required\n    duration: ToastDuration.SHORT,\n    position: ToastPosition.BOTTOM,\n    inEasing: Easing.elastic(1),\n    textColor: 'white',\n    backgroundColor: 'black',\n    icon: undefined,\n    isShowShadow: true,\n}\n\n// ---------\n\nconst SnackBarDuration = {\n    LONG: 3500,\n    SHORT: 2000,\n    INDEFINITE: -1\n}\n\nconst SnackBarPosition = {\n    TOP: 1,\n    BOTTOM: -1\n}\n\n\nconst SnackBarDefaultOpt = {\n    data: '',  //required\n    statusBarHeight: -1,\n    height: 44,\n    duration: SnackBarDuration.SHORT,\n    position: SnackBarPosition.BOTTOM,\n    inEasing: Easing.linear,\n    textColor: 'white',\n    backgroundColor: 'black',\n    actionText: undefined,\n    actionTextColor: 'white',\n    isAllowSlideExit: true,\n    onActionHide: undefined,\n    isShowShadow: true,\n    numberOfLines: 1,\n}\n\nconst SnackBarInOutDuration = 200\n\n// --------\nconst ModalDefaultOpt = {\n    data: '',  //required\n    position: ToastPosition.BOTTOM,\n    inEasing: Easing.elastic(1),\n    textColor: 'white',\n    backgroundColor: 'black',\n    icon: undefined,\n    onRequestClose: undefined\n}\n\nexport {\n    ToastDuration,ToastInOutDuration,ToastInHeight,ToastPosition,ToastDefaultOpt,\n    SnackBarDuration,SnackBarPosition,SnackBarDefaultOpt,SnackBarInOutDuration,\n    ModalDefaultOpt\n}\n"
  },
  {
    "path": "lib/index.d.ts",
    "content": "import { ReactNode,Component } from 'react';\nimport { Animated } from 'react-native';\n\nexport interface IToastOpts {\n  data: string;\n  duration?: number;\n  position?: number;\n  inEasing?: (value: number) => number;\n  textColor?: string;\n  backgroundColor?: string;\n  icon?: ReactNode;\n  isShowShadow?: boolean\n}\n\nexport class WToast {\n\tstatic show: (option: IToastOpts) => void;\n\tstatic hide: () => void;\n\tstatic duration: {\n\t\tLONG: number\n\t\tSHORT: number\n\t};\n\tstatic position: {\n\t\tTOP: number;\n\t\tCENTER: number;\n\t\tBOTTOM: number;\n\t};\n}\n\nexport interface ISnackBarOpts {\n  data: string;\n  statusBarHeight?: number;\n  height?: number;\n  duration?: number;\n  position?: number;\n  inEasing?: (value: number) => number;\n  textColor?: string;\n  backgroundColor?: string;\n  actionText?: string;\n  actionTextColor?: string;\n  isAllowSlideExit?: boolean;\n  onActionHide?: (isSlideHide: boolean) => void;\n  isShowShadow?: boolean;\n  numberOfLines?: number;\n}\n\nexport class WSnackBar {\n\tstatic show: (option: ISnackBarOpts) => void;\n\tstatic hide: () => void;\n\tstatic duration: {\n\t\tLONG: number\n\t\tSHORT: number\n\t\tINDEFINITE: number\n\t};\n\tstatic position: {\n\t\tTOP: number;\n\t\tBOTTOM: number;\n\t};\n}\n\nexport interface IModalOpts {\n\tdata: string;\n\tposition?: number;\n\tinEasing?: (value: number) => number;\n\ttextColor?: string;\n\tbackgroundColor?: string;\n\ticon?:ReactNode\n\tonRequestClose?: () => void;\n}\n\nexport class WModal {\n\tstatic show: (option: IModalOpts) => void;\n\tstatic hide: () => void;\n\n\tstatic position: {\n\t\tTOP: number;\n\t\tCENTER: number;\n\t\tBOTTOM: number;\n\t};\n}\n\nconst toastInstance = (opt: IToastOpts) => {}\n\nexport interface IModalShowToastProps {\n  toastInstance: (func: any) => toastInstance;\n}\n\nexport class WModalShowToastView extends Component<IModalShowToastProps> {} \n\nexport class WRootToastApp extends Component {}\n\nexport {WModal, WSnackBar, WToast, WModalShowToastView, WRootToastApp};\n\n"
  },
  {
    "path": "lib/index.js",
    "content": "import WToast from './toast/Toast'\nimport WSnackBar from './snackbar/SnackBar'\nimport WModal from './modaltoast/ModalToast'\nimport WModalShowToastView from './modaltoast/ModalShowToastView'\nimport { RootSiblingParent as WRootToastApp} from 'react-native-root-siblings'\n\nexport {WModal,WSnackBar,WToast,WModalShowToastView, WRootToastApp}\n"
  },
  {
    "path": "lib/modaltoast/ModalShowToastView.js",
    "content": "import React from 'react'\nimport ToastView from \"../toast/ToastView\"\nimport {ToastInOutDuration,ToastDefaultOpt} from '../data/Constants'\n\nexport default class ModalShowToastView extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        props.toastInstance(this.show)\n        this.toastTemp = null;\n        this.state = {\n            toastOpts: null,\n        }\n    }\n\n    render() {\n        const toastOpts = this.state.toastOpts;\n        if (toastOpts == null || toastOpts.data == null) return null;\n\n        return <ToastView {...toastOpts}/>\n    }\n\n    componentWillUnmount() {\n        if (this.liftCycleManage) {\n            clearTimeout(this.liftCycleManage)\n        }\n    }\n\n    show = (Opts) => {\n\n        const data = Opts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        if (this.state.toastOpts != null) {\n            this.toastTemp = Opts;\n            this.hide();\n            return;\n        }\n\n        const toastOpts = Object.assign({}, ToastDefaultOpt, Opts)\n\n        this.setState({\n            toastOpts\n        },() => {\n            this.liftCycleManage = setTimeout(() => {\n                this.hide()\n            }, toastOpts.duration + ToastInOutDuration * 2)\n        })\n    }\n\n    hide = () => {\n        if (this.liftCycleManage) {\n            clearTimeout(this.liftCycleManage);\n        }\n        if (this.state.toastOpts != null) {\n            this.setState({ toastOpts: null }, () => {\n                const toastTemp = this.toastTemp;\n                if (toastTemp != null) {\n                    this.toastTemp = null;\n                    this.show(toastTemp);\n                }\n            })\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "lib/modaltoast/ModalToast.js",
    "content": "import React from 'react'\nimport RootSiblings from 'react-native-root-siblings'\nimport ModalToastView from \"./ModalToastView\"\nimport {ToastPosition,ModalDefaultOpt} from '../data/Constants'\n\nlet rootSiblings = undefined\nlet liftCycleManage = undefined\nexport default class ModalToast {\n\n    static position = ToastPosition\n\n    static show = (modalOpts) => {\n\n        const data = modalOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        modalOpts = Object.assign({},ModalDefaultOpt,modalOpts)\n\n        ModalToast.hide();\n\n        rootSiblings = new RootSiblings(\n            <ModalToastView {...modalOpts}/>\n        )\n    }\n\n    static update = (modalOpts) => {\n        const data = modalOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        modalOpts = Object.assign({},ModalDefaultOpt,modalOpts)\n\n        ModalToast.hide();\n\n        modalOpts.isUpdate = true\n\n        rootSiblings = new RootSiblings(\n            <ModalToastView {...modalOpts}/>\n        )\n    }\n\n    static hide = () => {\n        if (liftCycleManage) {\n            clearTimeout(liftCycleManage)\n            liftCycleManage = undefined\n        }\n        if (rootSiblings) {\n            rootSiblings.destroy()\n            rootSiblings = undefined\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "lib/modaltoast/ModalToastView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    Dimensions,\n    Animated,\n    Modal\n} from 'react-native'\nimport {ToastInOutDuration, ToastInHeight} from '../data/Constants'\n\nconst MaxWidthRatio = 0.8\nexport default class ModalToastView extends Component{\n\n    constructor(props) {\n        super(props)\n\n        const {width,height} = Dimensions.get('window')\n\n        this.state = {\n            deviceWidth: width,\n            deviceHeight: height,\n            animatedValue1: new Animated.Value( props.isUpdate ? 1 : 0),\n            animatedValue2: new Animated.Value(props.isUpdate ? 1 : 0.2),\n        }\n\n        // React after 17\n        Dimensions.addEventListener('change', this.onWindowChange);\n    }\n\n    componentDidMount() {\n        this.onLifeCycleManage()\n    }\n\n    componentWillUnmount() {\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n        Dimensions.removeEventListener('change', this.onWindowChange);\n    }\n\n    render() {\n\n\n        const containerStyle = {}\n        const contentStyle = {\n            backgroundColor: this.props.backgroundColor,\n            opacity: this.state.animatedValue2.interpolate({\n                inputRange: [0, 1, 2],\n                outputRange: [0, 1, 0]\n            }),\n            minWidth: this.props.icon ? this.state.deviceWidth*0.4 : 0,\n            maxWidth: this.state.deviceWidth*MaxWidthRatio,\n        }\n\n        if (this.props.position > 0) {\n            containerStyle.justifyContent = 'flex-start';\n            containerStyle.top = 40\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight/2, 0]\n            });\n        } else if (this.props.position == 0) {\n            containerStyle.justifyContent = 'center';\n            containerStyle.top = 0\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight, 0]\n            });\n        } else if (this.props.position < 0) {\n            containerStyle.justifyContent = 'flex-end';\n            containerStyle.top = 0\n            containerStyle.bottom = 40;\n            contentStyle.marginBottom = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [0, ToastInHeight/2]\n            });\n        }\n\n\n\n        return (\n            <Modal\n                pointerEvents=\"none\"\n                transparent={true}\n                visible={true}\n                onRequestClose={this.props.onRequestClose}\n            >\n                <View style={[styles.container,containerStyle]}>\n                    <Animated.View style={[styles.content,contentStyle]}>\n                        {this.props.icon}\n                        <Text style={[styles.text,{color: this.props.textColor}]}>\n                            {this.props.data}\n                        </Text>\n                    </Animated.View>\n                </View>\n            </Modal>\n        )\n    }\n\n    onLifeCycleManage = () => {\n\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n\n        if (!this.props.isUpdate) {\n            this.liftCycleAnimated = Animated.parallel([\n                Animated.timing(\n                    this.state.animatedValue1,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        easing: this.props.inEasing,\n                        useNativeDriver: false,\n                    }\n                ),\n                Animated.timing(\n                    this.state.animatedValue2,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        useNativeDriver: false,\n                    }\n                ),\n            ])\n            this.liftCycleAnimated.start()\n        }\n\n\n    }\n\n    onWindowChange = ({ window }) => {\n        const {width,height} = window\n        if (width != this.state.deviceWidth && height != this.state.deviceHeight) {\n            this.setState({\n                deviceWidth: width,\n                deviceHeight: height\n            })\n        }\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        alignItems: 'center',\n        position: 'absolute',\n        left: 0,\n        right: 0\n    },\n    content: {\n        borderRadius: 4,\n        padding: 10,\n        alignItems: 'center',\n\n        elevation: 2,\n        shadowOffset:{ width: 0, height: 1},\n        shadowColor:'gray',\n        shadowOpacity:0.2,\n        shadowRadius:1,\n    },\n    icon: {\n\n    },\n    text: {\n        fontSize: 16\n    }\n})\n\n"
  },
  {
    "path": "lib/package.json",
    "content": "{\n  \"name\": \"react-native-smart-tip\",\n  \"version\": \"2.3.0\",\n  \"description\": \"react-native smart tip, including Toast、Modal、SnackBar\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mochixuan/react-native-smart-tip\"\n  },\n  \"types\": \"./index.d.ts\",\n  \"keywords\": [\n    \"react-native\",\n    \"Toast\",\n    \"SnackBar\",\n    \"Modal\",\n    \"Component\",\n    \"ios\",\n    \"android\",\n    \"tip\",\n    \"Notification\"\n  ],\n  \"author\": \"mochixuan\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"react-native-root-siblings\": \"^4.1.0\"\n  },\n  \"devDependencies\": {},\n  \"bugs\": {\n    \"url\": \"https://github.com/mochixuan/react-native-smart-tip/issues\"\n  },\n  \"homepage\": \"https://github.com/mochixuan/react-native-smart-tip#readme\"\n}\n"
  },
  {
    "path": "lib/snackbar/SnackBar.js",
    "content": "import React from 'react'\nimport RootSiblings from 'react-native-root-siblings'\nimport SnackView from \"./SnackView\"\nimport {SnackBarDefaultOpt, SnackBarDuration, SnackBarPosition,SnackBarInOutDuration} from \"../data/Constants\";\n\nlet rootSiblings = undefined\nlet liftCycleManage = undefined\nexport default class SnackBar {\n\n    static duration = SnackBarDuration\n    static position = SnackBarPosition\n\n    static show = (snackBarOpts) => {\n\n        const data = snackBarOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        snackBarOpts = Object.assign({},SnackBarDefaultOpt,snackBarOpts)\n\n        SnackBar.hide();\n\n        rootSiblings = new RootSiblings(\n            <SnackView {...snackBarOpts}/>\n        )\n\n        if (snackBarOpts.duration !== SnackBarDuration.INDEFINITE) {\n            liftCycleManage = setTimeout(()=>{\n                SnackBar.hide()\n            }, snackBarOpts.duration+SnackBarInOutDuration*2)\n        }\n    }\n\n    static hide = () => {\n        if (liftCycleManage) {\n            clearTimeout(liftCycleManage)\n            liftCycleManage = undefined\n        }\n        if (rootSiblings) {\n            rootSiblings.destroy()\n            rootSiblings = undefined\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "lib/snackbar/SnackView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    Dimensions,\n    Animated,\n    TouchableOpacity,\n    PanResponder,\n} from 'react-native'\nimport {SnackBarDuration, SnackBarInOutDuration, SnackBarPosition} from '../data/Constants'\nimport {isIphoneX,iosStatusBarXHeight,iosBottomXHeight,defaultStatusBarHeight, shadowBlackstyleTop,shadowBlackStyleBottom} from \"../util/UiUtil\";\n\nclass SnackView extends Component{\n\n    constructor(props) {\n        super(props)\n\n        const {width,height} = Dimensions.get('window')\n        this.state = {\n            deviceWidth: width,\n            deviceHeight: height,\n            animatedValue1: new Animated.Value(0),\n            animatedValue2: new Animated.Value(1),\n        }\n\n        // React after 17\n        Dimensions.addEventListener('change', this.onWindowChange);\n\n        this._panResponder = PanResponder.create({\n            onStartShouldSetPanResponderCapture: (evt, gestureState) => false,\n            onMoveShouldSetPanResponderCapture: (evt, gestureState) => false,\n            onStartShouldSetPanResponder: (evt, gestureState) => true,\n            onMoveShouldSetPanResponder: (evt, gestureState) => {\n                let {dx,dy} = gestureState;\n                if((Math.abs(dx) > 5) || (Math.abs(dy) > 5)){\n                    return true\n                }else{\n                    return false\n                }\n            },\n            onPanResponderGrant: (evt, gestureState) => {},\n            onPanResponderMove: (evt, gestureState) => this.moveTouch(evt, gestureState),\n            // onPanResponderRelease: (evt, gestureState) => this.endTouch(evt),\n            onPanResponderTerminationRequest: (evt, gestureState) => false,\n            onShouldBlockNativeResponder: (evt, gestureState) => false,\n        })\n    }\n\n    componentDidMount() {\n        this.onLifeCycleManage()\n    }\n\n    componentWillUnmount() {\n        this.onRelease()\n    }\n\n    render() {\n\n        let contentHeight = this.props.height\n\n        const baseStyle = {}\n        const statusBarStyle = {}\n        const containerStyle = {\n            backgroundColor: this.props.backgroundColor,\n        }\n        const contentStyles = {\n            height: contentHeight,\n        }\n\n        let containerHeight = contentHeight\n        if (this.props.position === SnackBarPosition.TOP) {\n            baseStyle.top = 0\n\n            const statusBarHeight = this.getStatusBarHeight()\n            containerHeight = contentHeight + statusBarHeight\n            statusBarStyle.height = statusBarHeight\n            statusBarStyle.backgroundColor = this.props.backgroundColor\n\n            containerStyle.height = containerHeight\n            containerStyle.top = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [-containerHeight, 0]\n            })\n        } else {\n\n            if (isIphoneX()) {\n                containerHeight = containerHeight+iosBottomXHeight\n            }\n\n            containerStyle.height = containerHeight\n\n            baseStyle.bottom = 0\n\n            containerStyle.bottom = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [-containerHeight, 0]\n            })\n        }\n\n        let actionView = undefined\n        if (this.props.actionText) {\n            actionView = (\n                <TouchableOpacity style={[styles.content_btn,{\n                    maxWidth: (this.state.deviceWidth - 40)*0.2,\n                    height: contentHeight\n                }]} onPress={() => this.onHideAnimated(false)} activeOpacity={0.8}>\n                    <Text style={[styles.content_title,{color: this.props.actionTextColor}]} numberOfLines={1}>{this.props.actionText}</Text>\n                </TouchableOpacity>\n            )\n        }\n\n        let shadowStyle = {};\n        if (this.props.isShowShadow) {\n            if (this.props.position === SnackBarPosition.TOP) {\n                shadowStyle = shadowBlackStyleBottom;\n            } else {\n                shadowStyle = shadowBlackstyleTop;\n            }\n        }\n\n        return (\n            <View style={[styles.base,baseStyle]} pointerEvents=\"box-none\">\n                <Animated.View style={[styles.container,containerStyle,shadowStyle]} {...this._panResponder.panHandlers}>\n                    <View style={statusBarStyle}/>\n                    <View style={[styles.content,contentStyles]}>\n                        <Text style={[styles.content_title,{\n                            color: this.props.textColor,\n                            maxWidth: (this.state.deviceWidth - 40)*0.8\n                        }]} numberOfLines={this.props.numberOfLines}>\n                            {this.props.data}\n                        </Text>\n                        {actionView}\n                    </View>\n                </Animated.View>\n            </View>\n        )\n    }\n\n    moveTouch = (evt, gestureState) => {\n        if (this.props.isAllowSlideExit) {\n            if (this.props.position === SnackBarPosition.TOP && gestureState.vy < -0.2) {\n                this.onHideAnimated(true)\n            } else if (this.props.position === SnackBarPosition.BOTTOM && gestureState.vy > 0.2) {\n                this.onHideAnimated(true)\n            }\n        } \n    }\n\n    onLifeCycleManage = () => {\n        this.inAnimated = Animated.timing(\n            this.state.animatedValue1,\n            {\n                toValue: 1,\n                duration: SnackBarInOutDuration,\n                easing: this.props.inEasing,\n                useNativeDriver: false,\n            }\n        )\n\n        this.inAnimated.start(()=>{\n            if (this.props.duration !== SnackBarDuration.INDEFINITE) {\n                this.commonAnimated = Animated.sequence([\n                    Animated.timing(\n                        this.state.animatedValue2,\n                        {\n                            toValue: 1,\n                            duration: this.props.duration,\n                            useNativeDriver: false,\n                        }\n                    ),\n                    Animated.timing(\n                        this.state.animatedValue1,\n                        {\n                            toValue: 0,\n                            duration: SnackBarInOutDuration,\n                            useNativeDriver: false,\n                        }\n                    )\n                ])\n                this.commonAnimated.start()\n            }\n        })\n\n    }\n\n    onHideAnimated = (isSlideHide) => {\n        if (!this.isHasHide) {\n            this.isHasHide = true;\n        } else {\n            return;\n        }\n        if (this.props.onActionHide) this.props.onActionHide(isSlideHide)\n        this.hideAnimated = Animated.timing(\n            this.state.animatedValue1,\n            {\n                toValue: 0,\n                duration: SnackBarInOutDuration,\n                useNativeDriver: false,\n            }\n        )\n        this.hideAnimated.start(()=>{\n            this.onRelease()\n        })\n    }\n\n    onWindowChange = ({ window }) => {\n        const {width,height} = window\n        if (width != this.state.deviceWidth && height != this.state.deviceHeight) {\n            this.setState({\n                deviceWidth: width,\n                deviceHeight: height\n            })\n        }\n    }\n\n    onRelease = () => {\n        if (this.inAnimated) {\n            this.inAnimated.stop()\n            this.inAnimated = undefined\n        }\n        if (this.commonAnimated) {\n            this.commonAnimated.stop()\n            this.commonAnimated = undefined\n        }\n        if (this.hideAnimated) {\n            this.hideAnimated.stop()\n            this.hideAnimated = undefined\n        }\n        Dimensions.removeEventListener('change', this.onWindowChange);\n    }\n\n    getStatusBarHeight = () => {\n        if (this.props.statusBarHeight < 0) {\n            if (isIphoneX()) {\n                return iosStatusBarXHeight\n            } else {\n                return defaultStatusBarHeight\n            }\n        } else {\n            return this.props.statusBarHeight\n        }\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    base: {\n        position: 'absolute',\n        left: 0,\n        right: 0,\n    },\n    container: {\n        flexDirection: 'column'\n    },\n    content: {\n        flexDirection: 'row',\n        justifyContent: 'space-between',\n        alignItems: 'center',\n        paddingLeft: 15,\n        paddingRight: 15\n    },\n    content_title: {\n        fontSize: 16,\n        marginRight: 10\n    },\n    content_btn: {\n        justifyContent: 'center',\n        alignItems: 'center',\n    }\n})\n\nexport default SnackView\n\n\n"
  },
  {
    "path": "lib/toast/Toast.js",
    "content": "import React from 'react'\nimport RootSiblings from 'react-native-root-siblings'\nimport ToastView from \"./ToastView\"\nimport {ToastDuration,ToastInOutDuration,ToastPosition,ToastDefaultOpt} from '../data/Constants'\n\nlet rootSiblings = undefined\nlet liftCycleManage = undefined\nexport default class Toast {\n\n    static duration = ToastDuration\n    static position = ToastPosition\n\n    static show = (toastOpts) => {\n\n        const data = toastOpts.data\n        if (typeof data !== 'string' || data.length <= 0) {\n            return\n        }\n\n        toastOpts = Object.assign({},ToastDefaultOpt,toastOpts)\n\n        Toast.hide();\n\n        rootSiblings = new RootSiblings(\n            <ToastView {...toastOpts}/>\n        )\n\n        liftCycleManage = setTimeout(()=>{\n            Toast.hide()\n        }, toastOpts.duration+ToastInOutDuration*2)\n    }\n\n    static hide = () => {\n        if (liftCycleManage) {\n            clearTimeout(liftCycleManage)\n            liftCycleManage = undefined\n        }\n        if (rootSiblings) {\n            rootSiblings.destroy()\n            rootSiblings = undefined\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "lib/toast/ToastView.js",
    "content": "import React,{Component} from 'react'\nimport {\n    View,\n    Text,\n    StyleSheet,\n    Dimensions,\n    Animated\n} from 'react-native'\nimport {ToastInOutDuration, ToastInHeight} from '../data/Constants'\nimport { shadowBlackStyleBottom } from '../util/UiUtil'\n\nconst MaxWidthRatio = 0.8\nexport default class ToastView extends Component{\n\n    constructor(props) {\n        super(props)\n\n        const {width,height} = Dimensions.get('window')\n\n        this.state = {\n            deviceWidth: width,\n            deviceHeight: height,\n            animatedValue1: new Animated.Value(0),\n            animatedValue2: new Animated.Value(0.2),\n        }\n\n        // React after 17\n        Dimensions.addEventListener('change', this.onWindowChange);\n    }\n\n    componentDidMount() {\n        this.onLifeCycleManage()\n    }\n\n    componentWillUnmount() {\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n        Dimensions.removeEventListener('change', this.onWindowChange);\n    }\n\n    render() {\n\n        const containerStyle = {}\n        const contentStyle = {\n            backgroundColor: this.props.backgroundColor,\n            opacity: this.state.animatedValue2.interpolate({\n                inputRange: [0, 1, 2],\n                outputRange: [0, 1, 0]\n            }),\n            minWidth: this.props.icon ? this.state.deviceWidth*0.4 : 0,\n            maxWidth: this.state.deviceWidth*MaxWidthRatio,\n        }\n\n        if (this.props.position > 0) {\n            containerStyle.justifyContent = 'flex-start';\n            containerStyle.top = 40\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight/2, 0]\n            });\n        } else if (this.props.position == 0) {\n            containerStyle.justifyContent = 'center';\n            containerStyle.top = 0\n            containerStyle.bottom = 0;\n            contentStyle.marginTop = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [ToastInHeight, 0]\n            });\n        } else if (this.props.position < 0) {\n            containerStyle.justifyContent = 'flex-end';\n            containerStyle.top = 0\n            containerStyle.bottom = 40;\n            contentStyle.marginBottom = this.state.animatedValue1.interpolate({\n                inputRange: [0, 1],\n                outputRange: [0, ToastInHeight/2]\n            });\n        }\n\n        let shadowStyle = {};\n        if (this.props.isShowShadow) shadowStyle = shadowBlackStyleBottom;\n        \n\n        return (\n            <View style={[styles.container,containerStyle]} pointerEvents=\"none\">\n                <Animated.View style={[styles.content,contentStyle,shadowStyle]}>\n                    {this.props.icon}\n                    <Text style={[styles.text,{color: this.props.textColor}]}>\n                        {this.props.data}\n                    </Text>\n                </Animated.View>\n            </View>\n        )\n    }\n\n    onLifeCycleManage = () => {\n\n        if (this.liftCycleAnimated) {\n            this.liftCycleAnimated.stop()\n            this.liftCycleAnimated = undefined\n        }\n        this.liftCycleAnimated = Animated.sequence([\n            Animated.parallel([\n                Animated.timing(\n                    this.state.animatedValue1,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        easing: this.props.inEasing,\n                        useNativeDriver: false,\n                    }\n                ),\n                Animated.timing(\n                    this.state.animatedValue2,\n                    {\n                        toValue: 1,\n                        duration: ToastInOutDuration,\n                        useNativeDriver: false,\n                    }\n                ),\n            ]),\n            Animated.timing(\n                this.state.animatedValue2,\n                {\n                    toValue: 1,\n                    duration: this.props.duration,\n                    useNativeDriver: false,\n                }\n            ),\n            Animated.timing(\n                this.state.animatedValue2,\n                {\n                    toValue: 2,\n                    duration: ToastInOutDuration,\n                    useNativeDriver: false,\n                }\n            )\n        ])\n        this.liftCycleAnimated.start()\n    }\n\n    onWindowChange = ({ window }) => {\n        const {width,height} = window\n        if (width != this.state.deviceWidth && height != this.state.deviceHeight) {\n            this.setState({\n                deviceWidth: width,\n                deviceHeight: height\n            })\n        }\n    }\n\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        alignItems: 'center',\n        position: 'absolute',\n        left: 0,\n        right: 0\n    },\n    content: {\n        borderRadius: 4,\n        padding: 10,\n        alignItems: 'center'\n    },\n    icon: {\n\n    },\n    text: {\n        fontSize: 16\n    }\n})\n\n"
  },
  {
    "path": "lib/util/UiUtil.js",
    "content": "import {Platform,Dimensions} from 'react-native'\n\nconst screenW = Dimensions.get('window').width\nconst screenH = Dimensions.get('window').height\n\nexport const defaultStatusBarHeight = 20\nexport const iosStatusBarXHeight = 44\nexport const iosBottomXHeight = 34\n\nconst IPHONEX_WIDTH = 375\nconst IPHONEX_HEIGHT = 812\nconst IPHONEX_MAX_WIDTH = 414\nconst IPHONEX_MAX_HEIGHT = 896\n\nexport const isIphoneX = () => {\n    if (Platform.OS === 'ios') {\n        if (\n            ((screenH === IPHONEX_HEIGHT && screenW === IPHONEX_WIDTH) || (screenH === IPHONEX_WIDTH && screenW === IPHONEX_HEIGHT)) ||\n            ((screenH === IPHONEX_MAX_HEIGHT && screenW === IPHONEX_MAX_WIDTH) || (screenH === IPHONEX_MAX_WIDTH && screenW === IPHONEX_MAX_HEIGHT))\n        ) {\n            return true\n        }\n    }\n    return false\n}\n\nexport const shadowBlackStyleBottom = {\n    elevation: 4,\n\n    shadowOffset: {\n        width: 0,\n        height: -2\n    },\n    shadowColor: '#000',\n    shadowOpacity: 0.4,\n    shadowRadius: 2\n}\n\nexport const shadowBlackstyleTop = {\n    elevation: 4,\n\n    shadowOffset: {\n        width: 0,\n        height: 2\n    },\n    shadowColor: '#000',\n    shadowOpacity: 0.4,\n    shadowRadius: 2\n}"
  }
]