From 77d52fecbe6b7bbb602dd0a4983fd26dd56bc693 Mon Sep 17 00:00:00 2001 From: Eric Vicenti Date: Fri, 24 Mar 2017 14:09:17 -0700 Subject: [PATCH] Remove old examples from RN repo Summary: React Native originally shipped with these examples, which have gotten super old and unmaintained. Cruft like this in the core repo only slows us down with extra issues and pull requests. Eventually we may create a different repo for samples that will be maintained into the future. We are doing some spring cleaning in the repo, so now is a good time to remove these and let the community share their own examples. Closes https://github.com/facebook/react-native/pull/13064 Differential Revision: D4770699 Pulled By: ericvicenti fbshipit-source-id: bbcdec336b28e5a9330afbdb6b166e94e15fa485 --- Examples/2048/2048.xcodeproj/project.pbxproj | 489 ---------------- Examples/2048/2048/AppDelegate.h | 21 - Examples/2048/2048/AppDelegate.m | 39 -- .../2048/2048/Base.lproj/LaunchScreen.xib | 41 -- .../AppIcon.appiconset/Contents.json | 38 -- Examples/2048/2048/Info.plist | 43 -- Examples/2048/2048/main.m | 23 - Examples/2048/Game2048.js | 325 ----------- Examples/2048/GameBoard.js | 201 ------- Examples/Movies/MovieCell.js | 105 ---- Examples/Movies/MovieScreen.js | 165 ------ .../Movies/Movies.xcodeproj/project.pbxproj | 520 ------------------ .../xcshareddata/xcschemes/Movies.xcscheme | 105 ---- Examples/Movies/Movies/AppDelegate.h | 22 - Examples/Movies/Movies/AppDelegate.m | 51 -- .../Movies/Movies/Base.lproj/LaunchScreen.xib | 41 -- .../AppIcon.appiconset/Contents.json | 38 -- Examples/Movies/Movies/Info.plist | 56 -- Examples/Movies/Movies/main.m | 22 - Examples/Movies/MoviesApp.android.js | 108 ---- Examples/Movies/MoviesApp.ios.js | 52 -- Examples/Movies/README.md | 57 -- Examples/Movies/SearchBar.android.js | 113 ---- Examples/Movies/SearchBar.ios.js | 67 --- Examples/Movies/SearchScreen.js | 370 ------------- .../Movies/__tests__/getImageSource-test.js | 36 -- Examples/Movies/android/app/BUCK | 31 -- Examples/Movies/android/app/build.gradle | 31 -- Examples/Movies/android/app/gradle.properties | 1 - .../Movies/android/app/proguard-rules.pro | 17 - .../android/app/src/main/AndroidManifest.xml | 30 - .../facebook/react/movies/MoviesActivity.java | 23 - .../react/movies/MoviesApplication.java | 58 -- .../res/drawable-hdpi/android_back_white.png | Bin 237 -> 0 bytes .../drawable-hdpi/android_search_white.png | Bin 575 -> 0 bytes .../res/drawable-mdpi/android_back_white.png | Bin 190 -> 0 bytes .../drawable-mdpi/android_search_white.png | Bin 337 -> 0 bytes .../res/drawable-xhdpi/android_back_white.png | Bin 266 -> 0 bytes .../drawable-xhdpi/android_search_white.png | Bin 581 -> 0 bytes .../drawable-xxhdpi/android_back_white.png | Bin 337 -> 0 bytes .../drawable-xxhdpi/android_search_white.png | Bin 930 -> 0 bytes .../res/drawable/rotten_tomatoes_icon.png | Bin 58467 -> 0 bytes .../app/src/main/res/layout/activity_main.xml | 12 - .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/styles.xml | 8 - Examples/Movies/getImageSource.js | 27 - Examples/Movies/getStyleFromScore.js | 49 -- Examples/Movies/getTextFromScore.js | 23 - .../TicTacToe.xcodeproj/project.pbxproj | 518 ----------------- .../xcshareddata/xcschemes/TicTacToe.xcscheme | 105 ---- Examples/TicTacToe/TicTacToe/AppDelegate.h | 21 - Examples/TicTacToe/TicTacToe/AppDelegate.m | 39 -- .../TicTacToe/Base.lproj/LaunchScreen.xib | 41 -- .../AppIcon.appiconset/Contents.json | 38 -- Examples/TicTacToe/TicTacToe/Info.plist | 46 -- Examples/TicTacToe/TicTacToe/main.m | 22 - Examples/TicTacToe/TicTacToeApp.js | 327 ----------- Examples/TicTacToe/android/app/BUCK | 31 -- Examples/TicTacToe/android/app/build.gradle | 31 -- .../TicTacToe/android/app/gradle.properties | 1 - .../TicTacToe/android/app/proguard-rules.pro | 17 - .../android/app/src/main/AndroidManifest.xml | 30 - .../react/tictactoe/TicTacToeActivity.java | 23 - .../react/tictactoe/TicTacToeApplication.java | 58 -- .../src/main/res/drawable/launcher_icon.png | Bin 9578 -> 0 bytes .../app/src/main/res/layout/activity_main.xml | 12 - .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/styles.xml | 8 - 68 files changed, 4832 deletions(-) delete mode 100644 Examples/2048/2048.xcodeproj/project.pbxproj delete mode 100644 Examples/2048/2048/AppDelegate.h delete mode 100644 Examples/2048/2048/AppDelegate.m delete mode 100644 Examples/2048/2048/Base.lproj/LaunchScreen.xib delete mode 100644 Examples/2048/2048/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 Examples/2048/2048/Info.plist delete mode 100644 Examples/2048/2048/main.m delete mode 100644 Examples/2048/Game2048.js delete mode 100644 Examples/2048/GameBoard.js delete mode 100644 Examples/Movies/MovieCell.js delete mode 100644 Examples/Movies/MovieScreen.js delete mode 100644 Examples/Movies/Movies.xcodeproj/project.pbxproj delete mode 100644 Examples/Movies/Movies.xcodeproj/xcshareddata/xcschemes/Movies.xcscheme delete mode 100644 Examples/Movies/Movies/AppDelegate.h delete mode 100644 Examples/Movies/Movies/AppDelegate.m delete mode 100644 Examples/Movies/Movies/Base.lproj/LaunchScreen.xib delete mode 100644 Examples/Movies/Movies/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 Examples/Movies/Movies/Info.plist delete mode 100644 Examples/Movies/Movies/main.m delete mode 100644 Examples/Movies/MoviesApp.android.js delete mode 100644 Examples/Movies/MoviesApp.ios.js delete mode 100644 Examples/Movies/README.md delete mode 100644 Examples/Movies/SearchBar.android.js delete mode 100644 Examples/Movies/SearchBar.ios.js delete mode 100644 Examples/Movies/SearchScreen.js delete mode 100644 Examples/Movies/__tests__/getImageSource-test.js delete mode 100644 Examples/Movies/android/app/BUCK delete mode 100644 Examples/Movies/android/app/build.gradle delete mode 100644 Examples/Movies/android/app/gradle.properties delete mode 100644 Examples/Movies/android/app/proguard-rules.pro delete mode 100644 Examples/Movies/android/app/src/main/AndroidManifest.xml delete mode 100644 Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesActivity.java delete mode 100644 Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesApplication.java delete mode 100644 Examples/Movies/android/app/src/main/res/drawable-hdpi/android_back_white.png delete mode 100755 Examples/Movies/android/app/src/main/res/drawable-hdpi/android_search_white.png delete mode 100644 Examples/Movies/android/app/src/main/res/drawable-mdpi/android_back_white.png delete mode 100755 Examples/Movies/android/app/src/main/res/drawable-mdpi/android_search_white.png delete mode 100644 Examples/Movies/android/app/src/main/res/drawable-xhdpi/android_back_white.png delete mode 100755 Examples/Movies/android/app/src/main/res/drawable-xhdpi/android_search_white.png delete mode 100644 Examples/Movies/android/app/src/main/res/drawable-xxhdpi/android_back_white.png delete mode 100755 Examples/Movies/android/app/src/main/res/drawable-xxhdpi/android_search_white.png delete mode 100644 Examples/Movies/android/app/src/main/res/drawable/rotten_tomatoes_icon.png delete mode 100644 Examples/Movies/android/app/src/main/res/layout/activity_main.xml delete mode 100644 Examples/Movies/android/app/src/main/res/values/strings.xml delete mode 100644 Examples/Movies/android/app/src/main/res/values/styles.xml delete mode 100644 Examples/Movies/getImageSource.js delete mode 100644 Examples/Movies/getStyleFromScore.js delete mode 100644 Examples/Movies/getTextFromScore.js delete mode 100644 Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj delete mode 100644 Examples/TicTacToe/TicTacToe.xcodeproj/xcshareddata/xcschemes/TicTacToe.xcscheme delete mode 100644 Examples/TicTacToe/TicTacToe/AppDelegate.h delete mode 100644 Examples/TicTacToe/TicTacToe/AppDelegate.m delete mode 100644 Examples/TicTacToe/TicTacToe/Base.lproj/LaunchScreen.xib delete mode 100644 Examples/TicTacToe/TicTacToe/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 Examples/TicTacToe/TicTacToe/Info.plist delete mode 100644 Examples/TicTacToe/TicTacToe/main.m delete mode 100755 Examples/TicTacToe/TicTacToeApp.js delete mode 100644 Examples/TicTacToe/android/app/BUCK delete mode 100644 Examples/TicTacToe/android/app/build.gradle delete mode 100644 Examples/TicTacToe/android/app/gradle.properties delete mode 100644 Examples/TicTacToe/android/app/proguard-rules.pro delete mode 100644 Examples/TicTacToe/android/app/src/main/AndroidManifest.xml delete mode 100644 Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeActivity.java delete mode 100644 Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeApplication.java delete mode 100644 Examples/TicTacToe/android/app/src/main/res/drawable/launcher_icon.png delete mode 100644 Examples/TicTacToe/android/app/src/main/res/layout/activity_main.xml delete mode 100644 Examples/TicTacToe/android/app/src/main/res/values/strings.xml delete mode 100644 Examples/TicTacToe/android/app/src/main/res/values/styles.xml diff --git a/Examples/2048/2048.xcodeproj/project.pbxproj b/Examples/2048/2048.xcodeproj/project.pbxproj deleted file mode 100644 index e463eeae8f1..00000000000 --- a/Examples/2048/2048.xcodeproj/project.pbxproj +++ /dev/null @@ -1,489 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 1461632D1AC3E23900C2F5AD /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1461632C1AC3E22900C2F5AD /* libReact.a */; }; - 5F82F1781B85785200FAE87E /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F82F1771B85784500FAE87E /* libRCTWebSocket.a */; }; - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; - E730D7501D4EE4E2000B7DA8 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E730D74C1D4EE4D0000B7DA8 /* libRCTNetwork.a */; }; - E730D7571D4EE538000B7DA8 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E730D7561D4EE534000B7DA8 /* libRCTImage.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 1461632B1AC3E22900C2F5AD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146163271AC3E22900C2F5AD /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 5F82F1761B85784500FAE87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 5F82F1721B85784500FAE87E /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3C86DF461ADF2C930047B81A; - remoteInfo = RCTWebSocket; - }; - 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; - E730D74B1D4EE4D0000B7DA8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E730D7471D4EE4D0000B7DA8 /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; - E730D7551D4EE534000B7DA8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E730D7511D4EE534000B7DA8 /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 13B07F961A680F5B00A75B9A /* 2048.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = 2048.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = 2048/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = 2048/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = 2048/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = 2048/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = 2048/main.m; sourceTree = ""; }; - 146163271AC3E22900C2F5AD /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; - 5F82F1721B85784500FAE87E /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../../Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - E730D7471D4EE4D0000B7DA8 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; - E730D7511D4EE534000B7DA8 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E730D7571D4EE538000B7DA8 /* libRCTImage.a in Frameworks */, - E730D7501D4EE4E2000B7DA8 /* libRCTNetwork.a in Frameworks */, - 5F82F1781B85785200FAE87E /* libRCTWebSocket.a in Frameworks */, - 1461632D1AC3E23900C2F5AD /* libReact.a in Frameworks */, - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 13B07FAE1A68108700A75B9A /* 2048 */ = { - isa = PBXGroup; - children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = 2048; - sourceTree = ""; - }; - 146163281AC3E22900C2F5AD /* Products */ = { - isa = PBXGroup; - children = ( - 1461632C1AC3E22900C2F5AD /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 5F82F1731B85784500FAE87E /* Products */ = { - isa = PBXGroup; - children = ( - 5F82F1771B85784500FAE87E /* libRCTWebSocket.a */, - ); - name = Products; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - E730D7511D4EE534000B7DA8 /* RCTImage.xcodeproj */, - E730D7471D4EE4D0000B7DA8 /* RCTNetwork.xcodeproj */, - 5F82F1721B85784500FAE87E /* RCTWebSocket.xcodeproj */, - 146163271AC3E22900C2F5AD /* React.xcodeproj */, - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 832341B11AAA6A8300B99B32 /* Products */ = { - isa = PBXGroup; - children = ( - 832341B51AAA6A8300B99B32 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* 2048 */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* 2048.app */, - ); - name = Products; - sourceTree = ""; - }; - E730D7481D4EE4D0000B7DA8 /* Products */ = { - isa = PBXGroup; - children = ( - E730D74C1D4EE4D0000B7DA8 /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; - E730D7521D4EE534000B7DA8 /* Products */ = { - isa = PBXGroup; - children = ( - E730D7561D4EE534000B7DA8 /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 13B07F861A680F5B00A75B9A /* 2048 */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "2048" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 68ACCCD51D2BE2D2008E368A /* Run Script */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = 2048; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* 2048.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0700; - ORGANIZATIONNAME = Facebook; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "2048" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E730D7521D4EE534000B7DA8 /* Products */; - ProjectRef = E730D7511D4EE534000B7DA8 /* RCTImage.xcodeproj */; - }, - { - ProductGroup = E730D7481D4EE4D0000B7DA8 /* Products */; - ProjectRef = E730D7471D4EE4D0000B7DA8 /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; - ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - }, - { - ProductGroup = 5F82F1731B85784500FAE87E /* Products */; - ProjectRef = 5F82F1721B85784500FAE87E /* RCTWebSocket.xcodeproj */; - }, - { - ProductGroup = 146163281AC3E22900C2F5AD /* Products */; - ProjectRef = 146163271AC3E22900C2F5AD /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* 2048 */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 1461632C1AC3E22900C2F5AD /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 1461632B1AC3E22900C2F5AD /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 5F82F1771B85784500FAE87E /* libRCTWebSocket.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTWebSocket.a; - remoteRef = 5F82F1761B85784500FAE87E /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E730D74C1D4EE4D0000B7DA8 /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = E730D74B1D4EE4D0000B7DA8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E730D7561D4EE534000B7DA8 /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = E730D7551D4EE534000B7DA8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 68ACCCD51D2BE2D2008E368A /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n$SRCROOT/../../packager/react-native-xcode.sh Examples/2048/Game2048.js\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = 2048; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/2048/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = 2048; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/2048/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = 2048; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "2048" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "2048" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/Examples/2048/2048/AppDelegate.h b/Examples/2048/2048/AppDelegate.h deleted file mode 100644 index 1a4317567ce..00000000000 --- a/Examples/2048/2048/AppDelegate.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end diff --git a/Examples/2048/2048/AppDelegate.m b/Examples/2048/2048/AppDelegate.m deleted file mode 100644 index 9e3c01b8111..00000000000 --- a/Examples/2048/2048/AppDelegate.m +++ /dev/null @@ -1,39 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import "AppDelegate.h" - -#import "RCTBundleURLProvider.h" -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"Examples/2048/Game2048" fallbackResource:nil]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"Game2048" - initialProperties:nil - launchOptions:launchOptions]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/Examples/2048/2048/Base.lproj/LaunchScreen.xib b/Examples/2048/2048/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 351e21c59cc..00000000000 --- a/Examples/2048/2048/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Examples/2048/2048/Images.xcassets/AppIcon.appiconset/Contents.json b/Examples/2048/2048/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f7461..00000000000 --- a/Examples/2048/2048/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Examples/2048/2048/Info.plist b/Examples/2048/2048/Info.plist deleted file mode 100644 index 6105445463d..00000000000 --- a/Examples/2048/2048/Info.plist +++ /dev/null @@ -1,43 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Examples/2048/2048/main.m b/Examples/2048/2048/main.m deleted file mode 100644 index b2a6473023a..00000000000 --- a/Examples/2048/2048/main.m +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/Examples/2048/Game2048.js b/Examples/2048/Game2048.js deleted file mode 100644 index c19e7cf2deb..00000000000 --- a/Examples/2048/Game2048.js +++ /dev/null @@ -1,325 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule Game2048 - * @flow - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - AppRegistry, - StyleSheet, - Text, - View, -} = ReactNative; - -var Animated = require('Animated'); -var GameBoard = require('GameBoard'); -var TouchableBounce = require('TouchableBounce'); - -var BOARD_PADDING = 3; -var CELL_MARGIN = 4; -var CELL_SIZE = 60; - -class Cell extends React.Component { - render() { - return ; - } -} - -class Board extends React.Component { - render() { - return ( - - - - - - {this.props.children} - - ); - } -} - -class Tile extends React.Component { - state: any; - - static _getPosition(index): number { - return BOARD_PADDING + (index * (CELL_SIZE + CELL_MARGIN * 2) + CELL_MARGIN); - } - - constructor(props: {}) { - super(props); - - var tile = this.props.tile; - - this.state = { - opacity: new Animated.Value(0), - top: new Animated.Value(Tile._getPosition(tile.toRow())), - left: new Animated.Value(Tile._getPosition(tile.toColumn())), - }; - } - - calculateOffset(): {top: number; left: number; opacity: number} { - var tile = this.props.tile; - - var offset = { - top: this.state.top, - left: this.state.left, - opacity: this.state.opacity, - }; - - if (tile.isNew()) { - Animated.timing(this.state.opacity, { - duration: 100, - toValue: 1, - }).start(); - } else { - Animated.parallel([ - Animated.timing(offset.top, { - duration: 100, - toValue: Tile._getPosition(tile.toRow()), - }), - Animated.timing(offset.left, { - duration: 100, - toValue: Tile._getPosition(tile.toColumn()), - }), - ]).start(); - } - return offset; - } - - render() { - var tile = this.props.tile; - - var tileStyles = [ - styles.tile, - styles['tile' + tile.value], - this.calculateOffset(), - ]; - - var textStyles = [ - styles.value, - tile.value > 4 && styles.whiteText, - tile.value > 100 && styles.threeDigits, - tile.value > 1000 && styles.fourDigits, - ]; - - return ( - - {tile.value} - - ); - } -} - -class GameEndOverlay extends React.Component { - render() { - var board = this.props.board; - - if (!board.hasWon() && !board.hasLost()) { - return ; - } - - var message = board.hasWon() ? - 'Good Job!' : 'Game Over'; - - return ( - - {message} - - Try Again? - - - ); - } -} - -class Game2048 extends React.Component { - startX: number; - startY: number; - state: any; - - constructor(props: {}) { - super(props); - this.state = { - board: new GameBoard(), - }; - this.startX = 0; - this.startY = 0; - } - - restartGame() { - this.setState({board: new GameBoard()}); - } - - handleTouchStart(event: Object) { - if (this.state.board.hasWon()) { - return; - } - - this.startX = event.nativeEvent.pageX; - this.startY = event.nativeEvent.pageY; - } - - handleTouchEnd(event: Object) { - if (this.state.board.hasWon()) { - return; - } - - var deltaX = event.nativeEvent.pageX - this.startX; - var deltaY = event.nativeEvent.pageY - this.startY; - - var direction = -1; - if (Math.abs(deltaX) > 3 * Math.abs(deltaY) && Math.abs(deltaX) > 30) { - direction = deltaX > 0 ? 2 : 0; - } else if (Math.abs(deltaY) > 3 * Math.abs(deltaX) && Math.abs(deltaY) > 30) { - direction = deltaY > 0 ? 3 : 1; - } - - if (direction !== -1) { - this.setState({board: this.state.board.move(direction)}); - } - } - - render() { - var tiles = this.state.board.tiles - .filter((tile) => tile.value) - .map((tile) => ); - - return ( - this.handleTouchStart(event)} - onTouchEnd={(event) => this.handleTouchEnd(event)}> - - {tiles} - - this.restartGame()} /> - - ); - } -} - -var styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - board: { - padding: BOARD_PADDING, - backgroundColor: '#bbaaaa', - borderRadius: 5, - }, - overlay: { - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: 0, - backgroundColor: 'rgba(221, 221, 221, 0.5)', - flex: 1, - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - }, - overlayMessage: { - fontSize: 40, - marginBottom: 20, - }, - tryAgain: { - backgroundColor: '#887761', - padding: 20, - borderRadius: 5, - }, - tryAgainText: { - color: '#ffffff', - fontSize: 20, - fontWeight: '500', - }, - cell: { - width: CELL_SIZE, - height: CELL_SIZE, - borderRadius: 5, - backgroundColor: '#ddccbb', - margin: CELL_MARGIN, - }, - row: { - flexDirection: 'row', - }, - tile: { - position: 'absolute', - width: CELL_SIZE, - height: CELL_SIZE, - backgroundColor: '#ddccbb', - borderRadius: 5, - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - value: { - fontSize: 24, - color: '#776666', - fontFamily: 'Verdana', - fontWeight: '500', - }, - tile2: { - backgroundColor: '#eeeeee', - }, - tile4: { - backgroundColor: '#eeeecc', - }, - tile8: { - backgroundColor: '#ffbb87', - }, - tile16: { - backgroundColor: '#ff9966', - }, - tile32: { - backgroundColor: '#ff7755', - }, - tile64: { - backgroundColor: '#ff5533', - }, - tile128: { - backgroundColor: '#eecc77', - }, - tile256: { - backgroundColor: '#eecc66', - }, - tile512: { - backgroundColor: '#eecc55', - }, - tile1024: { - backgroundColor: '#eecc33', - }, - tile2048: { - backgroundColor: '#eecc22', - }, - whiteText: { - color: '#ffffff', - }, - threeDigits: { - fontSize: 20, - }, - fourDigits: { - fontSize: 18, - }, -}); - -AppRegistry.registerComponent('Game2048', () => Game2048); - -module.exports = Game2048; diff --git a/Examples/2048/GameBoard.js b/Examples/2048/GameBoard.js deleted file mode 100644 index 6ed92e6b578..00000000000 --- a/Examples/2048/GameBoard.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule GameBoard - * @flow - */ -'use strict'; - -// NB: Taken straight from: https://github.com/IvanVergiliev/2048-react/blob/master/src/board.js -// with no modification except to format it for CommonJS and fix lint/flow errors - -var rotateLeft = function (matrix) { - var rows = matrix.length; - var columns = matrix[0].length; - var res = []; - for (var row = 0; row < rows; ++row) { - res.push([]); - for (var column = 0; column < columns; ++column) { - res[row][column] = matrix[column][columns - row - 1]; - } - } - return res; -}; - -var Tile = function (value?: number, row?: number, column?: number) { - this.value = value || 0; - this.row = row || -1; - - this.column = column || -1; - this.oldRow = -1; - this.oldColumn = -1; - this.markForDeletion = false; - this.mergedInto = null; - this.id = Tile.id++; -}; - -Tile.id = 0; - -Tile.prototype.moveTo = function (row, column) { - this.oldRow = this.row; - this.oldColumn = this.column; - this.row = row; - this.column = column; -}; - -Tile.prototype.isNew = function () { - return this.oldRow === -1 && !this.mergedInto; -}; - -Tile.prototype.hasMoved = function () { - return (this.fromRow() !== -1 && (this.fromRow() !== this.toRow() || this.fromColumn() !== this.toColumn())) || - this.mergedInto; -}; - -Tile.prototype.fromRow = function () { - return this.mergedInto ? this.row : this.oldRow; -}; - -Tile.prototype.fromColumn = function () { - return this.mergedInto ? this.column : this.oldColumn; -}; - -Tile.prototype.toRow = function () { - return this.mergedInto ? this.mergedInto.row : this.row; -}; - -Tile.prototype.toColumn = function () { - return this.mergedInto ? this.mergedInto.column : this.column; -}; - -var Board = function () { - this.tiles = []; - this.cells = []; - for (var i = 0; i < Board.size; ++i) { - this.cells[i] = [this.addTile(), this.addTile(), this.addTile(), this.addTile()]; - } - this.addRandomTile(); - this.setPositions(); - this.won = false; -}; - -Board.prototype.addTile = function () { - var res = new Tile(); - Tile.apply(res, arguments); - this.tiles.push(res); - return res; -}; - -Board.size = 4; - -Board.prototype.moveLeft = function () { - var hasChanged = false; - for (var row = 0; row < Board.size; ++row) { - var currentRow = this.cells[row].filter(function (tile) { return tile.value !== 0; }); - var resultRow = []; - for (var target = 0; target < Board.size; ++target) { - var targetTile = currentRow.length ? currentRow.shift() : this.addTile(); - if (currentRow.length > 0 && currentRow[0].value === targetTile.value) { - var tile1 = targetTile; - targetTile = this.addTile(targetTile.value); - tile1.mergedInto = targetTile; - var tile2 = currentRow.shift(); - tile2.mergedInto = targetTile; - targetTile.value += tile2.value; - } - resultRow[target] = targetTile; - this.won = this.won || (targetTile.value === 2048); - hasChanged = hasChanged || (targetTile.value !== this.cells[row][target].value); - } - this.cells[row] = resultRow; - } - return hasChanged; -}; - -Board.prototype.setPositions = function () { - this.cells.forEach(function (row, rowIndex) { - row.forEach(function (tile, columnIndex) { - tile.oldRow = tile.row; - tile.oldColumn = tile.column; - tile.row = rowIndex; - tile.column = columnIndex; - tile.markForDeletion = false; - }); - }); -}; - -Board.fourProbability = 0.1; - -Board.prototype.addRandomTile = function () { - var emptyCells = []; - for (var r = 0; r < Board.size; ++r) { - for (var c = 0; c < Board.size; ++c) { - if (this.cells[r][c].value === 0) { - emptyCells.push({r: r, c: c}); - } - } - } - var index = Math.floor(Math.random() * emptyCells.length); - var cell = emptyCells[index]; - var newValue = Math.random() < Board.fourProbability ? 4 : 2; - this.cells[cell.r][cell.c] = this.addTile(newValue); -}; - -Board.prototype.move = function (direction) { - // 0 -> left, 1 -> up, 2 -> right, 3 -> down - this.clearOldTiles(); - for (var i = 0; i < direction; ++i) { - this.cells = rotateLeft(this.cells); - } - var hasChanged = this.moveLeft(); - for (var i = direction; i < 4; ++i) { - this.cells = rotateLeft(this.cells); - } - if (hasChanged) { - this.addRandomTile(); - } - this.setPositions(); - return this; -}; - -Board.prototype.clearOldTiles = function () { - this.tiles = this.tiles.filter(function (tile) { return tile.markForDeletion === false; }); - this.tiles.forEach(function (tile) { tile.markForDeletion = true; }); -}; - -Board.prototype.hasWon = function () { - return this.won; -}; - -Board.deltaX = [-1, 0, 1, 0]; -Board.deltaY = [0, -1, 0, 1]; - -Board.prototype.hasLost = function () { - var canMove = false; - for (var row = 0; row < Board.size; ++row) { - for (var column = 0; column < Board.size; ++column) { - canMove = canMove || (this.cells[row][column].value === 0); - for (var dir = 0; dir < 4; ++dir) { - var newRow = row + Board.deltaX[dir]; - var newColumn = column + Board.deltaY[dir]; - if (newRow < 0 || newRow >= Board.size || newColumn < 0 || newColumn >= Board.size) { - continue; - } - canMove = canMove || (this.cells[row][column].value === this.cells[newRow][newColumn].value); - } - } - } - return !canMove; -}; - -module.exports = Board; diff --git a/Examples/Movies/MovieCell.js b/Examples/Movies/MovieCell.js deleted file mode 100644 index d67c777eb56..00000000000 --- a/Examples/Movies/MovieCell.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule MovieCell - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - Image, - Platform, - StyleSheet, - Text, - TouchableHighlight, - TouchableNativeFeedback, - View -} = ReactNative; - -var getStyleFromScore = require('./getStyleFromScore'); -var getImageSource = require('./getImageSource'); -var getTextFromScore = require('./getTextFromScore'); - -class MovieCell extends React.Component { - render() { - var criticsScore = this.props.movie.ratings.critics_score; - var TouchableElement = TouchableHighlight; - if (Platform.OS === 'android') { - TouchableElement = TouchableNativeFeedback; - } - return ( - - - - - - - {this.props.movie.title} - - - {this.props.movie.year} - {' '}•{' '} - - Critics {getTextFromScore(criticsScore)} - - - - - - - ); - } -} - -var styles = StyleSheet.create({ - textContainer: { - flex: 1, - }, - movieTitle: { - flex: 1, - fontSize: 16, - fontWeight: '500', - marginBottom: 2, - }, - movieYear: { - color: '#999999', - fontSize: 12, - }, - row: { - alignItems: 'center', - backgroundColor: 'white', - flexDirection: 'row', - padding: 5, - }, - cellImage: { - backgroundColor: '#dddddd', - height: 93, - marginRight: 10, - width: 60, - }, - cellBorder: { - backgroundColor: 'rgba(0, 0, 0, 0.1)', - height: StyleSheet.hairlineWidth, - marginLeft: 4, - }, -}); - -module.exports = MovieCell; diff --git a/Examples/Movies/MovieScreen.js b/Examples/Movies/MovieScreen.js deleted file mode 100644 index 2f013f08ed8..00000000000 --- a/Examples/Movies/MovieScreen.js +++ /dev/null @@ -1,165 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule MovieScreen - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - Image, - ScrollView, - StyleSheet, - Text, - View, -} = ReactNative; - -var getImageSource = require('./getImageSource'); -var getStyleFromScore = require('./getStyleFromScore'); -var getTextFromScore = require('./getTextFromScore'); - -class MovieScreen extends React.Component { - render() { - return ( - - - - - {this.props.movie.title} - {this.props.movie.year} - - - {this.props.movie.mpaa_rating} - - - - - - - - {this.props.movie.synopsis} - - - - - ); - } -} - -class Ratings extends React.Component { - render() { - var criticsScore = this.props.ratings.critics_score; - var audienceScore = this.props.ratings.audience_score; - - return ( - - - Critics: - - {getTextFromScore(criticsScore)} - - - - Audience: - - {getTextFromScore(audienceScore)} - - - - ); - } -} - -class Cast extends React.Component { - render() { - if (!this.props.actors) { - return null; - } - - return ( - - Actors - {this.props.actors.map(actor => - - • {actor.name} - - )} - - ); - } -} - -var styles = StyleSheet.create({ - contentContainer: { - padding: 10, - }, - rightPane: { - justifyContent: 'space-between', - flex: 1, - }, - movieTitle: { - flex: 1, - fontSize: 16, - fontWeight: '500', - }, - rating: { - marginTop: 10, - }, - ratingTitle: { - fontSize: 14, - }, - ratingValue: { - fontSize: 28, - fontWeight: '500', - }, - mpaaWrapper: { - alignSelf: 'flex-start', - borderColor: 'black', - borderWidth: 1, - paddingHorizontal: 3, - marginVertical: 5, - }, - mpaaText: { - fontFamily: 'Palatino', - fontSize: 13, - fontWeight: '500', - }, - mainSection: { - flexDirection: 'row', - }, - detailsImage: { - width: 134, - height: 200, - backgroundColor: '#eaeaea', - marginRight: 10, - }, - separator: { - backgroundColor: 'rgba(0, 0, 0, 0.1)', - height: StyleSheet.hairlineWidth, - marginVertical: 10, - }, - castTitle: { - fontWeight: '500', - marginBottom: 3, - }, - castActor: { - marginLeft: 2, - }, -}); - -module.exports = MovieScreen; diff --git a/Examples/Movies/Movies.xcodeproj/project.pbxproj b/Examples/Movies/Movies.xcodeproj/project.pbxproj deleted file mode 100644 index 9087fa7ac65..00000000000 --- a/Examples/Movies/Movies.xcodeproj/project.pbxproj +++ /dev/null @@ -1,520 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1341801E1AA91750003F314A /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1341801B1AA91740003F314A /* libRCTNetwork.a */; }; - 13442C061AA90EA00037E5B0 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13442C051AA90E7D0037E5B0 /* libRCTImage.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 140D9B661AC36C42004F25EE /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14312D241AC3654D00CDC950 /* libRCTLinking.a */; }; - 14A2D4421AC3E43800CC738A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14A2D4411AC3E41A00CC738A /* libReact.a */; }; - 58C5726B1AA6239E00CDF9C8 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C5725B1AA6236500CDF9C8 /* libRCTText.a */; }; - 67C95F201B0E64A30040BCE2 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 67C95F1E1B0E647A0040BCE2 /* libRCTWebSocket.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 1341801A1AA91740003F314A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 134180151AA91740003F314A /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; - 13442C041AA90E7D0037E5B0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 13442C001AA90E7D0037E5B0 /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; - 14312D231AC3654D00CDC950 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 14312D1E1AC3654D00CDC950 /* RCTLinking.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTLinking; - }; - 14A2D4401AC3E41A00CC738A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 58C5725A1AA6236500CDF9C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; - 67C95F1D1B0E647A0040BCE2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 67C95F151B0E647A0040BCE2 /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3C86DF461ADF2C930047B81A; - remoteInfo = RCTWebSocket; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 134180151AA91740003F314A /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; - 13442C001AA90E7D0037E5B0 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* Movies.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Movies.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Movies/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Movies/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Movies/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Movies/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Movies/main.m; sourceTree = ""; }; - 14312D1E1AC3654D00CDC950 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../../Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; - 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; - 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = SOURCE_ROOT; }; - 67C95F151B0E647A0040BCE2 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../../Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 67C95F201B0E64A30040BCE2 /* libRCTWebSocket.a in Frameworks */, - 14A2D4421AC3E43800CC738A /* libReact.a in Frameworks */, - 140D9B661AC36C42004F25EE /* libRCTLinking.a in Frameworks */, - 1341801E1AA91750003F314A /* libRCTNetwork.a in Frameworks */, - 13442C061AA90EA00037E5B0 /* libRCTImage.a in Frameworks */, - 58C5726B1AA6239E00CDF9C8 /* libRCTText.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 134180161AA91740003F314A /* Products */ = { - isa = PBXGroup; - children = ( - 1341801B1AA91740003F314A /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; - 13442C011AA90E7D0037E5B0 /* Products */ = { - isa = PBXGroup; - children = ( - 13442C051AA90E7D0037E5B0 /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* Movies */ = { - isa = PBXGroup; - children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = Movies; - sourceTree = ""; - }; - 14312D1F1AC3654D00CDC950 /* Products */ = { - isa = PBXGroup; - children = ( - 14312D241AC3654D00CDC950 /* libRCTLinking.a */, - ); - name = Products; - sourceTree = ""; - }; - 14A2D43D1AC3E41A00CC738A /* Products */ = { - isa = PBXGroup; - children = ( - 14A2D4411AC3E41A00CC738A /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 58C571FC1AA6124500CDF9C8 /* Libraries */ = { - isa = PBXGroup; - children = ( - 67C95F151B0E647A0040BCE2 /* RCTWebSocket.xcodeproj */, - 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */, - 14312D1E1AC3654D00CDC950 /* RCTLinking.xcodeproj */, - 134180151AA91740003F314A /* RCTNetwork.xcodeproj */, - 13442C001AA90E7D0037E5B0 /* RCTImage.xcodeproj */, - 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 58C572571AA6236500CDF9C8 /* Products */ = { - isa = PBXGroup; - children = ( - 58C5725B1AA6236500CDF9C8 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 67C95F161B0E647A0040BCE2 /* Products */ = { - isa = PBXGroup; - children = ( - 67C95F1E1B0E647A0040BCE2 /* libRCTWebSocket.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* Movies */, - 58C571FC1AA6124500CDF9C8 /* Libraries */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* Movies.app */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 13B07F861A680F5B00A75B9A /* Movies */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Movies" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 68ACCCEE1D2BE57F008E368A /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Movies; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* Movies.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0700; - ORGANIZATIONNAME = Facebook; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Movies" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 13442C011AA90E7D0037E5B0 /* Products */; - ProjectRef = 13442C001AA90E7D0037E5B0 /* RCTImage.xcodeproj */; - }, - { - ProductGroup = 14312D1F1AC3654D00CDC950 /* Products */; - ProjectRef = 14312D1E1AC3654D00CDC950 /* RCTLinking.xcodeproj */; - }, - { - ProductGroup = 134180161AA91740003F314A /* Products */; - ProjectRef = 134180151AA91740003F314A /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 58C572571AA6236500CDF9C8 /* Products */; - ProjectRef = 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */; - }, - { - ProductGroup = 67C95F161B0E647A0040BCE2 /* Products */; - ProjectRef = 67C95F151B0E647A0040BCE2 /* RCTWebSocket.xcodeproj */; - }, - { - ProductGroup = 14A2D43D1AC3E41A00CC738A /* Products */; - ProjectRef = 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* Movies */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 1341801B1AA91740003F314A /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = 1341801A1AA91740003F314A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 13442C051AA90E7D0037E5B0 /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = 13442C041AA90E7D0037E5B0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 14312D241AC3654D00CDC950 /* libRCTLinking.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTLinking.a; - remoteRef = 14312D231AC3654D00CDC950 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 14A2D4411AC3E41A00CC738A /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 14A2D4401AC3E41A00CC738A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 58C5725B1AA6236500CDF9C8 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 58C5725A1AA6236500CDF9C8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 67C95F1E1B0E647A0040BCE2 /* libRCTWebSocket.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTWebSocket.a; - remoteRef = 67C95F1D1B0E647A0040BCE2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 68ACCCEE1D2BE57F008E368A /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n$SRCROOT/../../packager/react-native-xcode.sh Examples/Movies/MoviesApp.ios.js\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = Movies; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/Movies/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = Movies; - USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../Libraries/**"; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/Movies/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = Movies; - USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../Libraries/**"; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Movies" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Movies" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/Examples/Movies/Movies.xcodeproj/xcshareddata/xcschemes/Movies.xcscheme b/Examples/Movies/Movies.xcodeproj/xcshareddata/xcschemes/Movies.xcscheme deleted file mode 100644 index f1006908055..00000000000 --- a/Examples/Movies/Movies.xcodeproj/xcshareddata/xcschemes/Movies.xcscheme +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Examples/Movies/Movies/AppDelegate.h b/Examples/Movies/Movies/AppDelegate.h deleted file mode 100644 index 55c38cc0bb6..00000000000 --- a/Examples/Movies/Movies/AppDelegate.h +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end - diff --git a/Examples/Movies/Movies/AppDelegate.m b/Examples/Movies/Movies/AppDelegate.m deleted file mode 100644 index 94f5d2ae944..00000000000 --- a/Examples/Movies/Movies/AppDelegate.m +++ /dev/null @@ -1,51 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import "AppDelegate.h" - -#import "RCTBundleURLProvider.h" -#import "RCTLinkingManager.h" -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"Examples/Movies/MoviesApp.ios" fallbackResource:nil]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"MoviesApp" - initialProperties:nil - launchOptions:launchOptions]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -- (BOOL)application:(UIApplication *)application - openURL:(NSURL *)url - sourceApplication:(NSString *)sourceApplication - annotation:(id)annotation -{ - return [RCTLinkingManager application:application - openURL:url - sourceApplication:sourceApplication - annotation:annotation]; -} - -@end diff --git a/Examples/Movies/Movies/Base.lproj/LaunchScreen.xib b/Examples/Movies/Movies/Base.lproj/LaunchScreen.xib deleted file mode 100644 index d3f0b52a88a..00000000000 --- a/Examples/Movies/Movies/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Examples/Movies/Movies/Images.xcassets/AppIcon.appiconset/Contents.json b/Examples/Movies/Movies/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f7461..00000000000 --- a/Examples/Movies/Movies/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Examples/Movies/Movies/Info.plist b/Examples/Movies/Movies/Info.plist deleted file mode 100644 index 4ecf97f7044..00000000000 --- a/Examples/Movies/Movies/Info.plist +++ /dev/null @@ -1,56 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLSchemes - - movies - - - - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/Examples/Movies/Movies/main.m b/Examples/Movies/Movies/main.m deleted file mode 100644 index 9c58a39a483..00000000000 --- a/Examples/Movies/Movies/main.m +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/Examples/Movies/MoviesApp.android.js b/Examples/Movies/MoviesApp.android.js deleted file mode 100644 index c6f78a3d1fc..00000000000 --- a/Examples/Movies/MoviesApp.android.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule MoviesApp - * @flow - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); - -var nativeImageSource = require('nativeImageSource'); -var { - AppRegistry, - BackAndroid, - Navigator, - StyleSheet, - ToolbarAndroid, - View, -} = ReactNative; - -var MovieScreen = require('./MovieScreen'); -var SearchScreen = require('./SearchScreen'); - -var _navigator; -BackAndroid.addEventListener('hardwareBackPress', () => { - if (_navigator && _navigator.getCurrentRoutes().length > 1) { - _navigator.pop(); - return true; - } - return false; -}); - -var RouteMapper = function(route, navigationOperations, onComponentRef) { - _navigator = navigationOperations; - if (route.name === 'search') { - return ( - - ); - } else if (route.name === 'movie') { - return ( - - - - - ); - } -}; - -class MoviesApp extends React.Component { - render() { - var initialRoute = {name: 'search'}; - return ( - Navigator.SceneConfigs.FadeAndroid} - renderScene={RouteMapper} - /> - ); - } -} - -var styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: 'white', - }, - toolbar: { - backgroundColor: '#a9a9a9', - height: 56, - }, -}); - -AppRegistry.registerComponent('MoviesApp', () => MoviesApp); - -module.exports = MoviesApp; diff --git a/Examples/Movies/MoviesApp.ios.js b/Examples/Movies/MoviesApp.ios.js deleted file mode 100644 index 99ba1d3783b..00000000000 --- a/Examples/Movies/MoviesApp.ios.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule MoviesApp - * @flow - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - AppRegistry, - NavigatorIOS, - StyleSheet, -} = ReactNative; - -var SearchScreen = require('./SearchScreen'); - -class MoviesApp extends React.Component { - render() { - return ( - - ); - } -} - -var styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: 'white', - }, -}); - -AppRegistry.registerComponent('MoviesApp', () => MoviesApp); - -module.exports = MoviesApp; diff --git a/Examples/Movies/README.md b/Examples/Movies/README.md deleted file mode 100644 index f2ad9befac5..00000000000 --- a/Examples/Movies/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Movies app - -The Movies app is a demonstration of basic concepts, such as fetching data, rendering a list of data including images, and navigating between different screens. - -## Running this app - -Before running the app, make sure you ran: - - git clone https://github.com/facebook/react-native.git - cd react-native - npm install - -### Running on iOS - -Mac OS and Xcode are required. - -- Open `Examples/Movies/Movies.xcodeproj` in Xcode -- Hit the Run button - -See [Running on device](https://facebook.github.io/react-native/docs/running-on-device.html) if you want to use a physical device. - -### Running on Android - -You'll need to have all the [prerequisites](https://github.com/facebook/react-native/tree/master/ReactAndroid#prerequisites) (SDK, NDK) for Building React Native installed. - -Start an Android emulator ([Genymotion](https://www.genymotion.com) is recommended). - - cd react-native - ./gradlew :Examples:Movies:android:app:installDebug - ./packager/packager.sh - -_Note: Building for the first time can take a while._ - -Open the Movies app in your emulator. - -See [Running on Device](https://facebook.github.io/react-native/docs/running-on-device.html) in case you want to use a physical device. - -### Running with Buck - -Follow the same setup as running with gradle. - -Install Buck from [here](https://buckbuild.com/setup/install.html). - -Run the following commands from the react-native folder: - - ./gradlew :ReactAndroid:packageReactNdkLibsForBuck - buck fetch movies - buck install -r movies - ./packager/packager.sh - -_Note: The native libs are still built using gradle. Full build with buck is coming soon(tm)._ - -## Built from source - -Building the app on both iOS and Android means building the React Native framework from source. This way you're running the latest native and JS code the way you see it in your clone of the github repo. - -This is different from apps created using `react-native init` which have a dependency on a specific version of React Native JS and native code, declared in a `package.json` file (and `build.gradle` for Android apps). diff --git a/Examples/Movies/SearchBar.android.js b/Examples/Movies/SearchBar.android.js deleted file mode 100644 index 1a889d7fbeb..00000000000 --- a/Examples/Movies/SearchBar.android.js +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule SearchBar - * @flow - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); - -var nativeImageSource = require('nativeImageSource'); -var { - Image, - Platform, - ActivityIndicator, - TextInput, - StyleSheet, - TouchableNativeFeedback, - View, -} = ReactNative; - -var IS_RIPPLE_EFFECT_SUPPORTED = Platform.Version >= 21; - -class SearchBar extends React.Component { - render() { - var background = IS_RIPPLE_EFFECT_SUPPORTED ? - TouchableNativeFeedback.SelectableBackgroundBorderless() : - TouchableNativeFeedback.SelectableBackground(); - return ( - - this.refs.input && this.refs.input.focus()}> - - - - - - - - ); - } -} - -var styles = StyleSheet.create({ - searchBar: { - flexDirection: 'row', - alignItems: 'center', - backgroundColor: '#a9a9a9', - height: 56, - }, - searchBarInput: { - flex: 1, - fontSize: 20, - fontWeight: 'bold', - color: 'white', - height: 50, - padding: 0, - backgroundColor: 'transparent' - }, - spinner: { - width: 30, - height: 30, - marginRight: 16, - }, - icon: { - width: 24, - height: 24, - marginHorizontal: 8, - }, -}); - -module.exports = SearchBar; diff --git a/Examples/Movies/SearchBar.ios.js b/Examples/Movies/SearchBar.ios.js deleted file mode 100644 index c168d40184d..00000000000 --- a/Examples/Movies/SearchBar.ios.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule SearchBar - * @flow - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - ActivityIndicator, - TextInput, - StyleSheet, - View, -} = ReactNative; - -class SearchBar extends React.Component { - render() { - return ( - - - - - ); - } -} - -var styles = StyleSheet.create({ - searchBar: { - marginTop: 64, - padding: 3, - paddingLeft: 8, - flexDirection: 'row', - alignItems: 'center', - }, - searchBarInput: { - fontSize: 15, - flex: 1, - height: 30, - }, - spinner: { - width: 30, - }, -}); - -module.exports = SearchBar; diff --git a/Examples/Movies/SearchScreen.js b/Examples/Movies/SearchScreen.js deleted file mode 100644 index 57fa82885f7..00000000000 --- a/Examples/Movies/SearchScreen.js +++ /dev/null @@ -1,370 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule SearchScreen - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - ActivityIndicator, - ListView, - Platform, - StyleSheet, - Text, - View, -} = ReactNative; -var TimerMixin = require('react-timer-mixin'); - -var invariant = require('fbjs/lib/invariant'); -var dismissKeyboard = require('dismissKeyboard'); - -var MovieCell = require('./MovieCell'); -var MovieScreen = require('./MovieScreen'); -var SearchBar = require('SearchBar'); - -/** - * This is for demo purposes only, and rate limited. - * In case you want to use the Rotten Tomatoes' API on a real app you should - * create an account at http://developer.rottentomatoes.com/ - */ -var API_URL = 'http://api.rottentomatoes.com/api/public/v1.0/'; -var API_KEYS = [ - '7waqfqbprs7pajbz28mqf6vz', - // 'y4vwv8m33hed9ety83jmv52f', Fallback api_key -]; - -// Results should be cached keyed by the query -// with values of null meaning "being fetched" -// and anything besides null and undefined -// as the result of a valid query -var resultsCache = { - dataForQuery: {}, - nextPageNumberForQuery: {}, - totalForQuery: {}, -}; - -var LOADING = {}; - -var SearchScreen = React.createClass({ - mixins: [TimerMixin], - - timeoutID: (null: any), - - getInitialState: function() { - return { - isLoading: false, - isLoadingTail: false, - dataSource: new ListView.DataSource({ - rowHasChanged: (row1, row2) => row1 !== row2, - }), - filter: '', - queryNumber: 0, - }; - }, - - componentDidMount: function() { - this.searchMovies(''); - }, - - _urlForQueryAndPage: function(query: string, pageNumber: number): string { - var apiKey = API_KEYS[this.state.queryNumber % API_KEYS.length]; - if (query) { - return ( - API_URL + 'movies.json?apikey=' + apiKey + '&q=' + - encodeURIComponent(query) + '&page_limit=20&page=' + pageNumber - ); - } else { - // With no query, load latest movies - return ( - API_URL + 'lists/movies/in_theaters.json?apikey=' + apiKey + - '&page_limit=20&page=' + pageNumber - ); - } - }, - - searchMovies: function(query: string) { - this.timeoutID = null; - - this.setState({filter: query}); - - var cachedResultsForQuery = resultsCache.dataForQuery[query]; - if (cachedResultsForQuery) { - if (!LOADING[query]) { - this.setState({ - dataSource: this.getDataSource(cachedResultsForQuery), - isLoading: false - }); - } else { - this.setState({isLoading: true}); - } - return; - } - - LOADING[query] = true; - resultsCache.dataForQuery[query] = null; - this.setState({ - isLoading: true, - queryNumber: this.state.queryNumber + 1, - isLoadingTail: false, - }); - - fetch(this._urlForQueryAndPage(query, 1)) - .then((response) => response.json()) - .then((responseData) => { - LOADING[query] = false; - resultsCache.totalForQuery[query] = responseData.total; - resultsCache.dataForQuery[query] = responseData.movies; - resultsCache.nextPageNumberForQuery[query] = 2; - - if (this.state.filter !== query) { - // do not update state if the query is stale - return; - } - - this.setState({ - isLoading: false, - dataSource: this.getDataSource(responseData.movies), - }); - }) - .catch((error) => { - LOADING[query] = false; - resultsCache.dataForQuery[query] = undefined; - - this.setState({ - dataSource: this.getDataSource([]), - isLoading: false, - }); - }) - .done(); - }, - - hasMore: function(): boolean { - var query = this.state.filter; - if (!resultsCache.dataForQuery[query]) { - return true; - } - return ( - resultsCache.totalForQuery[query] !== - resultsCache.dataForQuery[query].length - ); - }, - - onEndReached: function() { - var query = this.state.filter; - if (!this.hasMore() || this.state.isLoadingTail) { - // We're already fetching or have all the elements so noop - return; - } - - if (LOADING[query]) { - return; - } - - LOADING[query] = true; - this.setState({ - queryNumber: this.state.queryNumber + 1, - isLoadingTail: true, - }); - - var page = resultsCache.nextPageNumberForQuery[query]; - invariant(page != null, 'Next page number for "%s" is missing', query); - fetch(this._urlForQueryAndPage(query, page)) - .then((response) => response.json()) - .catch((error) => { - console.error(error); - LOADING[query] = false; - this.setState({ - isLoadingTail: false, - }); - }) - .then((responseData) => { - var moviesForQuery = resultsCache.dataForQuery[query].slice(); - - LOADING[query] = false; - // We reached the end of the list before the expected number of results - if (!responseData.movies) { - resultsCache.totalForQuery[query] = moviesForQuery.length; - } else { - for (var i in responseData.movies) { - moviesForQuery.push(responseData.movies[i]); - } - resultsCache.dataForQuery[query] = moviesForQuery; - resultsCache.nextPageNumberForQuery[query] += 1; - } - - if (this.state.filter !== query) { - // do not update state if the query is stale - return; - } - - this.setState({ - isLoadingTail: false, - dataSource: this.getDataSource(resultsCache.dataForQuery[query]), - }); - }) - .done(); - }, - - getDataSource: function(movies: Array): ListView.DataSource { - return this.state.dataSource.cloneWithRows(movies); - }, - - selectMovie: function(movie: Object) { - if (Platform.OS === 'ios') { - this.props.navigator.push({ - title: movie.title, - component: MovieScreen, - passProps: {movie}, - }); - } else { - dismissKeyboard(); - this.props.navigator.push({ - title: movie.title, - name: 'movie', - movie: movie, - }); - } - }, - - onSearchChange: function(event: Object) { - var filter = event.nativeEvent.text.toLowerCase(); - - this.clearTimeout(this.timeoutID); - this.timeoutID = this.setTimeout(() => this.searchMovies(filter), 100); - }, - - renderFooter: function() { - if (!this.hasMore() || !this.state.isLoadingTail) { - return ; - } - - return ; - }, - - renderSeparator: function( - sectionID: number | string, - rowID: number | string, - adjacentRowHighlighted: boolean - ) { - var style = styles.rowSeparator; - if (adjacentRowHighlighted) { - style = [style, styles.rowSeparatorHide]; - } - return ( - - ); - }, - - renderRow: function( - movie: Object, - sectionID: number | string, - rowID: number | string, - highlightRowFunc: (sectionID: ?number | string, rowID: ?number | string) => void, - ) { - return ( - this.selectMovie(movie)} - onHighlight={() => highlightRowFunc(sectionID, rowID)} - onUnhighlight={() => highlightRowFunc(null, null)} - movie={movie} - /> - ); - }, - - render: function() { - var content = this.state.dataSource.getRowCount() === 0 ? - : - ; - - return ( - - - this.refs.listview && this.refs.listview.getScrollResponder().scrollTo({ x: 0, y: 0 })} - /> - - {content} - - ); - }, -}); - -class NoMovies extends React.Component { - render() { - var text = ''; - if (this.props.filter) { - text = `No results for "${this.props.filter}"`; - } else if (!this.props.isLoading) { - // If we're looking at the latest movies, aren't currently loading, and - // still have no results, show a message - text = 'No movies found'; - } - - return ( - - {text} - - ); - } -} - -var styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: 'white', - }, - centerText: { - alignItems: 'center', - }, - noMoviesText: { - marginTop: 80, - color: '#888888', - }, - separator: { - height: 1, - backgroundColor: '#eeeeee', - }, - scrollSpinner: { - marginVertical: 20, - }, - rowSeparator: { - backgroundColor: 'rgba(0, 0, 0, 0.1)', - height: 1, - marginLeft: 4, - }, - rowSeparatorHide: { - opacity: 0.0, - }, -}); - -module.exports = SearchScreen; diff --git a/Examples/Movies/__tests__/getImageSource-test.js b/Examples/Movies/__tests__/getImageSource-test.js deleted file mode 100644 index 2061312f020..00000000000 --- a/Examples/Movies/__tests__/getImageSource-test.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2004-present Facebook. All Rights Reserved. - */ -'use strict'; - -jest.unmock('../getImageSource'); - -var getImageSource = require('../getImageSource'); - -describe('getImageSource', () => { - it('returns null for invalid input', () => { - expect(getImageSource().uri).toBe(null); - }); - - it('returns a movie thumbnail', () => { - var uri = 'https://facebook.com'; - var source = { - posters: { - thumbnail: uri, - }, - }; - expect(getImageSource(source).uri).toBe(uri); - }); - - it('returns a movie thumbnail with kind', () => { - var uri = 'https://facebook.com?tmb'; - var source = { - posters: { - thumbnail: uri, - }, - }; - expect(getImageSource(source, 'kind').uri).toBe( - 'https://facebook.com?kind' - ); - }); -}); diff --git a/Examples/Movies/android/app/BUCK b/Examples/Movies/android/app/BUCK deleted file mode 100644 index bed62bb7a7e..00000000000 --- a/Examples/Movies/android/app/BUCK +++ /dev/null @@ -1,31 +0,0 @@ -include_defs("//ReactAndroid/DEFS") - -android_binary( - name = "app", - keystore = "//keystores:debug", - manifest = "src/main/AndroidManifest.xml", - deps = [ - ":movies-lib", - ], -) - -android_library( - name = "movies-lib", - srcs = glob(["src/main/java/**/*.java"]), - deps = [ - ":res", - react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react:react"), - react_native_target("java/com/facebook/react/modules/core:core"), - react_native_target("java/com/facebook/react/shell:shell"), - react_native_target("jni/prebuilt:android-jsc"), - # .so files are prebuilt by Gradle with `./gradlew :ReactAndroid:packageReactNdkLibsForBuck` - react_native_target("jni/prebuilt:reactnative-libs"), - ], -) - -android_resource( - name = "res", - package = "com.facebook.react.movies", - res = "src/main/res", -) diff --git a/Examples/Movies/android/app/build.gradle b/Examples/Movies/android/app/build.gradle deleted file mode 100644 index 6bc71ffda74..00000000000 --- a/Examples/Movies/android/app/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" - - defaultConfig { - applicationId "com.facebook.react.movies" - minSdkVersion 16 - targetSdkVersion 22 - versionCode 1 - versionName "1.0" - ndk { - abiFilters "armeabi-v7a", "x86" - } - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.0.1' - - // Build React Native from source - compile project(':ReactAndroid') -} diff --git a/Examples/Movies/android/app/gradle.properties b/Examples/Movies/android/app/gradle.properties deleted file mode 100644 index dfbe478748b..00000000000 --- a/Examples/Movies/android/app/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -android.useDeprecatedNdk=true diff --git a/Examples/Movies/android/app/proguard-rules.pro b/Examples/Movies/android/app/proguard-rules.pro deleted file mode 100644 index a92fa177ee4..00000000000 --- a/Examples/Movies/android/app/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/Examples/Movies/android/app/src/main/AndroidManifest.xml b/Examples/Movies/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 34f5b0bc47e..00000000000 --- a/Examples/Movies/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesActivity.java b/Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesActivity.java deleted file mode 100644 index da1d7fc5b8f..00000000000 --- a/Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesActivity.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -package com.facebook.react.movies; - -import com.facebook.react.ReactActivity; - -public class MoviesActivity extends ReactActivity { - @Override - protected String getMainComponentName() { - return "MoviesApp"; - } -} diff --git a/Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesApplication.java b/Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesApplication.java deleted file mode 100644 index ee57b9b595f..00000000000 --- a/Examples/Movies/android/app/src/main/java/com/facebook/react/movies/MoviesApplication.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package com.facebook.react.movies; - -import android.app.Application; - -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.shell.MainReactPackage; - -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Nullable; - -public class MoviesApplication extends Application implements ReactApplication { - private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { - @Override - public String getJSMainModuleName() { - return "Examples/Movies/MoviesApp.android"; - } - - @Override - public @Nullable String getBundleAssetName() { - return "MoviesApp.android.bundle"; - } - - @Override - public boolean getUseDeveloperSupport() { - return true; - } - - @Override - protected List getPackages() { - return Arrays.asList( - new MainReactPackage() - ); - } - }; - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } -} diff --git a/Examples/Movies/android/app/src/main/res/drawable-hdpi/android_back_white.png b/Examples/Movies/android/app/src/main/res/drawable-hdpi/android_back_white.png deleted file mode 100644 index a34f0dbb8fd520edb1d996294478110d3c085504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;V2Nu)NpOBzNqJ&XDnmhDdU8=| zafU;w=VzegbWaz@5Rc<;uX=Me81S%MXj(8`?2Xs?$Io-}j)w+p%w4vuspIUwi&N4b zJvcSx_rh{VxqU287#)^dut@|)E||Mg*IX#=(oB&lM~^5bruB6?-t>{!b+APtahl9C zF3!!1+QYTEI1kTzzA!nvdFj^A$>!H2cDgRLPhnfy%i;Ud**nOmCqP6zhvlf-+obMW kbF)sbS^O^k=KU74e(?n{ab}NOfKFuaboFyt=akR{0O5RHwEzGB diff --git a/Examples/Movies/android/app/src/main/res/drawable-hdpi/android_search_white.png b/Examples/Movies/android/app/src/main/res/drawable-hdpi/android_search_white.png deleted file mode 100755 index 861b40db0d4ddb6d7b7b6d68d174072fb691008c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB*pj^6U4S$Y{B+)352QE?JR*yM zvQ&rUPlPeufHm>3#+V##5dyjv*0;-%hjjmI)MTyC0df$#L?bC7tn^ zn{tC#!w)8LW=uVF%U(h7NZg}oo?EYmdCCW|n}}tySkFG&6tzZ7Ni)V#mxrs)M(o_7 zLZig=wD<3#&P2=VJ-7XC`TgF^>ZKtoqb7^1OIE05I$heZWX+OYOL9G>=RLn@n5DqK zhG}}sYyJ%!U$#mwVb@^3?sD1g!?vlG|97VzaQ3uU@tyfl+w=9LRg=!C@Oo6Kzid5e zIsMDM&wJw6g)f(R@z2^oXwr1XvR{J-1!SYp|?6C~CW*;M& z76c31mokRrFLk~f`;b}OVYZqc!^{;&YkX(zkh=VPJ;V9^v!!NrKCETPk$xX@+M(`Y z|FR5OiM|)VQ)=7~2!}iDJupvmANQWTO-A#X!_V#!mM}i4@!`5p0b|YA|HkJV-4AFd zh~3~ia7Ad&UXOsu2MUiYcXzf{`^T9Q>-_Z3p|d3{ItA6gFNbN!=kRDSiarpqc>c|C z8&Ay!c8evA-yDuMoL?588N$AxE0&q7@zpyn)&*VPnbbm8`MqRgud`g}emFT07{v^p Lu6{1-oD!M(}6TtKSPDj(q%x-9Zwg>5Rc<;rx@}zIf%H}s}yibcP=+DRGW8r z^#R>4JkqvpALW8F(z6@SZkFs(e6^{2s@2(+)PHA;ZXSKpAHiUJfYE({pml=T6$|ET zdyY$;NMa5%+Q}elz*tncw6q~KM|bVdFRf|61cbt-Td`@_?h3LJmnyiF@bIGOrMXVb zQoPUPV)bGlfA+CHpZ@WLvH7bP)$DJMc%P5?T_+zE_(F3QJL`!B?`?0e&DLIU-uGSy z{{aiL7a!wGt_qgr>Ke(5J-T_|hq==wkNeh>R92qNNlg2Cy!`(YZ@c)5-ygG`lV9OA U_x_2kKz}lLy85}Sb4q9e0DP-{=l}o! diff --git a/Examples/Movies/android/app/src/main/res/drawable-xhdpi/android_back_white.png b/Examples/Movies/android/app/src/main/res/drawable-xhdpi/android_back_white.png deleted file mode 100644 index 500892e105e98c5a84da959a6cf4eadc317582ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}t!4lVqlHmNblJdl&REC1Q^yH$_ z;tYpU&(A=~EuJopArXh)Ui9W-G8AZexN~ZS!NJ}c%H7!;V|X16Ub=@ac3L()^IyNG zS(9`jp@j(pZmp{DhwiC`&HNBCryC*{_Ks~F231r@tm7p|>*@R#tWV$vf|**%Orp6eAaXjpG& z5PiT=abDn`_xok}OV@npKA_=VuvTz`gw>xrEtz1G|xihP`RxLbau3P+%DdNO~jS0VAm|o;zELg|3@0?JaV~qCt;`-7J-o@sn= zed@>P&zu{Ui?3n!-@D;^SJgS6jO^9FZXEo-$oAIGm>{MrA+;|V9ICGr?OY=GVUb+< z)yDMD%6%eV=V)dH1Z=iroEN(HiNc0&6`wc@*1ytaXSntFocaNWtJZuBTaI67TprsP zm-6}^!e1{rR{;nxH*8kP$*}M$`YA3Yjr?)ZA=l*&%X1jy@4R$k~zgEG_fedy| zKCMbew!DaUo>IHyPuL_CSwYJ!rc>wYPQEhv#gw_rIgZ@tkrx#e{kr`N%5L>1~hVoEMWS}zasE7OO}g^nTmCv;K@nJPMe+z?9J$BIXlPu2^XV8+%D->wN_oS{l)WjiTfAb*PiEJlyiiz fYC$|<_?r2`s>aPtPE0w#U|{fc^>bP0l+XkKNSc6; diff --git a/Examples/Movies/android/app/src/main/res/drawable-xxhdpi/android_search_white.png b/Examples/Movies/android/app/src/main/res/drawable-xxhdpi/android_search_white.png deleted file mode 100755 index d9f75bc794e76f1e7057b35124cefe6c2fa9c5c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 930 zcmV;T16}-yP)mb5SFhNPR4CL}$ObYHF6EskADbz{t~4^dg< z45oOj_JAiqf6AEs(e-;N9=Ac?4w9N#NNC~(Fq|{?aP<2)7JNI1YoLyOwmJo#0_R$M z0w#(Rm#3Ud0AMZVKRaJ=uKAc;Yrb7{D|ja1u_|=i65UC0k6XD`+`zJ>(0yRYQO=<# zem9nVJ83U;1ZY|copYRf&XTuDYeVcGVAfJ(1IJqdT3eZhCI77J-Y=!RZpt#gVvIR< zSzr`@C1YKMkyg;8W&D-v0u%B~W{Q%7w1UPho>mq?GlA2u`Fvi)jv6TJ}I<$;mcUfGDJV&k*rxkQy8BaRyC<CLJnElPT9j5+D0q+HP3ck|u&1=M_dNRrfxuRAt?#VSj3^?lF@@C@h!E?4?a zibNIph1n_{Q+dMm)sPf5lJ^_MCa{EMg&axfxg=j-xgJSsNcySPk;O+zZ;dgHn0Pfw z?pr`9k3B| zCtd7Eteq~Bf}Bp;Bn3G(B1tvhbp!%|Kp+qZ1OgX}|BrB-B9PU+=Kufz07*qoM6N<$ Eg1Z%=^Z)<= diff --git a/Examples/Movies/android/app/src/main/res/drawable/rotten_tomatoes_icon.png b/Examples/Movies/android/app/src/main/res/drawable/rotten_tomatoes_icon.png deleted file mode 100644 index 395d7043130e5e1712052cf5722608b7f4315b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58467 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 - - - - diff --git a/Examples/Movies/android/app/src/main/res/values/strings.xml b/Examples/Movies/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 7c4632e0d0e..00000000000 --- a/Examples/Movies/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - MoviesApp - diff --git a/Examples/Movies/android/app/src/main/res/values/styles.xml b/Examples/Movies/android/app/src/main/res/values/styles.xml deleted file mode 100644 index 319eb0ca100..00000000000 --- a/Examples/Movies/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/Examples/Movies/getImageSource.js b/Examples/Movies/getImageSource.js deleted file mode 100644 index d2332625e6b..00000000000 --- a/Examples/Movies/getImageSource.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule getImageSource - */ -'use strict'; - -function getImageSource(movie: Object, kind: ?string): {uri: ?string} { - var uri = movie && movie.posters ? movie.posters.thumbnail : null; - if (uri && kind) { - uri = uri.replace('tmb', kind); - } - return { uri }; -} - -module.exports = getImageSource; diff --git a/Examples/Movies/getStyleFromScore.js b/Examples/Movies/getStyleFromScore.js deleted file mode 100644 index 553c0002b12..00000000000 --- a/Examples/Movies/getStyleFromScore.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule getStyleFromScore - */ -'use strict'; - -var ReactNative = require('react-native'); -var { - StyleSheet, -} = ReactNative; - -var MAX_VALUE = 200; - -import type { StyleObj } from 'StyleSheetTypes'; - -function getStyleFromScore(score: number): StyleObj { - if (score < 0) { - return styles.noScore; - } - - var normalizedScore = Math.round((score / 100) * MAX_VALUE); - return { - color: 'rgb(' + - (MAX_VALUE - normalizedScore) + ', ' + - normalizedScore + ', ' + - 0 + - ')' - }; -} - -var styles = StyleSheet.create({ - noScore: { - color: '#999999', - }, -}); - -module.exports = getStyleFromScore; diff --git a/Examples/Movies/getTextFromScore.js b/Examples/Movies/getTextFromScore.js deleted file mode 100644 index f36c22e3283..00000000000 --- a/Examples/Movies/getTextFromScore.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule getTextFromScore - */ -'use strict'; - -function getTextFromScore(score: number): string { - return score > 0 ? score + '%' : 'N/A'; -} - -module.exports = getTextFromScore; diff --git a/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj b/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj deleted file mode 100644 index f1f1514d32d..00000000000 --- a/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj +++ /dev/null @@ -1,518 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1341803E1AA91802003F314A /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1341803D1AA917ED003F314A /* libRCTImage.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 144C5F691AC3E5E300B004E7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 144C5F681AC3E5D800B004E7 /* libReact.a */; }; - 58C572511AA6229D00CDF9C8 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C5724D1AA6224400CDF9C8 /* libRCTText.a */; }; - 5FF8942E1B85571A007731BE /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF8942D1B8556F8007731BE /* libRCTWebSocket.a */; }; - 832044981B492C2500E297FC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832044951B492C1E00E297FC /* libRCTSettings.a */; }; - E730D7731D4EE604000B7DA8 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E730D76E1D4EE5FC000B7DA8 /* libRCTNetwork.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 1341803C1AA917ED003F314A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 134180381AA917ED003F314A /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; - 144C5F671AC3E5D800B004E7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 144C5F631AC3E5D800B004E7 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 58C5724C1AA6224400CDF9C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; - 5FF8942C1B8556F8007731BE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 5FF894281B8556F8007731BE /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3C86DF461ADF2C930047B81A; - remoteInfo = RCTWebSocket; - }; - 832044941B492C1E00E297FC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8320448F1B492C1E00E297FC /* RCTSettings.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTSettings; - }; - E730D76D1D4EE5FC000B7DA8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E730D7681D4EE5FC000B7DA8 /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 134180381AA917ED003F314A /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* TicTacToe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TicTacToe.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = TicTacToe/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = TicTacToe/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = TicTacToe/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = TicTacToe/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = TicTacToe/main.m; sourceTree = ""; }; - 144C5F631AC3E5D800B004E7 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; - 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 5FF894281B8556F8007731BE /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../../Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; - 8320448F1B492C1E00E297FC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../../Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; - E730D7681D4EE5FC000B7DA8 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E730D7731D4EE604000B7DA8 /* libRCTNetwork.a in Frameworks */, - 5FF8942E1B85571A007731BE /* libRCTWebSocket.a in Frameworks */, - 144C5F691AC3E5E300B004E7 /* libReact.a in Frameworks */, - 1341803E1AA91802003F314A /* libRCTImage.a in Frameworks */, - 58C572511AA6229D00CDF9C8 /* libRCTText.a in Frameworks */, - 832044981B492C2500E297FC /* libRCTSettings.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 134180391AA917ED003F314A /* Products */ = { - isa = PBXGroup; - children = ( - 1341803D1AA917ED003F314A /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* TicTacToe */ = { - isa = PBXGroup; - children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = TicTacToe; - sourceTree = ""; - }; - 144C5F641AC3E5D800B004E7 /* Products */ = { - isa = PBXGroup; - children = ( - 144C5F681AC3E5D800B004E7 /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 58C572071AA6126D00CDF9C8 /* Libraries */ = { - isa = PBXGroup; - children = ( - E730D7681D4EE5FC000B7DA8 /* RCTNetwork.xcodeproj */, - 5FF894281B8556F8007731BE /* RCTWebSocket.xcodeproj */, - 144C5F631AC3E5D800B004E7 /* React.xcodeproj */, - 134180381AA917ED003F314A /* RCTImage.xcodeproj */, - 8320448F1B492C1E00E297FC /* RCTSettings.xcodeproj */, - 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 58C572481AA6224300CDF9C8 /* Products */ = { - isa = PBXGroup; - children = ( - 58C5724D1AA6224400CDF9C8 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 5FF894291B8556F8007731BE /* Products */ = { - isa = PBXGroup; - children = ( - 5FF8942D1B8556F8007731BE /* libRCTWebSocket.a */, - ); - name = Products; - sourceTree = ""; - }; - 832044901B492C1E00E297FC /* Products */ = { - isa = PBXGroup; - children = ( - 832044951B492C1E00E297FC /* libRCTSettings.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* TicTacToe */, - 58C572071AA6126D00CDF9C8 /* Libraries */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* TicTacToe.app */, - ); - name = Products; - sourceTree = ""; - }; - E730D7691D4EE5FC000B7DA8 /* Products */ = { - isa = PBXGroup; - children = ( - E730D76E1D4EE5FC000B7DA8 /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 13B07F861A680F5B00A75B9A /* TicTacToe */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "TicTacToe" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 681C70ED1D2BE73C00E71791 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = TicTacToe; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* TicTacToe.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0700; - ORGANIZATIONNAME = Facebook; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "TicTacToe" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 134180391AA917ED003F314A /* Products */; - ProjectRef = 134180381AA917ED003F314A /* RCTImage.xcodeproj */; - }, - { - ProductGroup = E730D7691D4EE5FC000B7DA8 /* Products */; - ProjectRef = E730D7681D4EE5FC000B7DA8 /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 832044901B492C1E00E297FC /* Products */; - ProjectRef = 8320448F1B492C1E00E297FC /* RCTSettings.xcodeproj */; - }, - { - ProductGroup = 58C572481AA6224300CDF9C8 /* Products */; - ProjectRef = 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */; - }, - { - ProductGroup = 5FF894291B8556F8007731BE /* Products */; - ProjectRef = 5FF894281B8556F8007731BE /* RCTWebSocket.xcodeproj */; - }, - { - ProductGroup = 144C5F641AC3E5D800B004E7 /* Products */; - ProjectRef = 144C5F631AC3E5D800B004E7 /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* TicTacToe */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 1341803D1AA917ED003F314A /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = 1341803C1AA917ED003F314A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 144C5F681AC3E5D800B004E7 /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 144C5F671AC3E5D800B004E7 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 58C5724D1AA6224400CDF9C8 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 58C5724C1AA6224400CDF9C8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 5FF8942D1B8556F8007731BE /* libRCTWebSocket.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTWebSocket.a; - remoteRef = 5FF8942C1B8556F8007731BE /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 832044951B492C1E00E297FC /* libRCTSettings.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTSettings.a; - remoteRef = 832044941B492C1E00E297FC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E730D76E1D4EE5FC000B7DA8 /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = E730D76D1D4EE5FC000B7DA8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 681C70ED1D2BE73C00E71791 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n$SRCROOT/../../packager/react-native-xcode.sh Examples/TicTacToe/TicTacToeApp.js\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = TicTacToe; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/TicTacToe/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = TicTacToe; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/TicTacToe/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = TicTacToe; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "TicTacToe" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "TicTacToe" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/Examples/TicTacToe/TicTacToe.xcodeproj/xcshareddata/xcschemes/TicTacToe.xcscheme b/Examples/TicTacToe/TicTacToe.xcodeproj/xcshareddata/xcschemes/TicTacToe.xcscheme deleted file mode 100644 index 635a5380347..00000000000 --- a/Examples/TicTacToe/TicTacToe.xcodeproj/xcshareddata/xcschemes/TicTacToe.xcscheme +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Examples/TicTacToe/TicTacToe/AppDelegate.h b/Examples/TicTacToe/TicTacToe/AppDelegate.h deleted file mode 100644 index 1a4317567ce..00000000000 --- a/Examples/TicTacToe/TicTacToe/AppDelegate.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end diff --git a/Examples/TicTacToe/TicTacToe/AppDelegate.m b/Examples/TicTacToe/TicTacToe/AppDelegate.m deleted file mode 100644 index 3e7399917b5..00000000000 --- a/Examples/TicTacToe/TicTacToe/AppDelegate.m +++ /dev/null @@ -1,39 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import "AppDelegate.h" - -#import "RCTBundleURLProvider.h" -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"Examples/TicTacToe/TicTacToeApp" fallbackResource:nil]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"TicTacToeApp" - initialProperties:nil - launchOptions:launchOptions]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/Examples/TicTacToe/TicTacToe/Base.lproj/LaunchScreen.xib b/Examples/TicTacToe/TicTacToe/Base.lproj/LaunchScreen.xib deleted file mode 100644 index c2d4e907904..00000000000 --- a/Examples/TicTacToe/TicTacToe/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Examples/TicTacToe/TicTacToe/Images.xcassets/AppIcon.appiconset/Contents.json b/Examples/TicTacToe/TicTacToe/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f7461..00000000000 --- a/Examples/TicTacToe/TicTacToe/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Examples/TicTacToe/TicTacToe/Info.plist b/Examples/TicTacToe/TicTacToe/Info.plist deleted file mode 100644 index 25742279c9d..00000000000 --- a/Examples/TicTacToe/TicTacToe/Info.plist +++ /dev/null @@ -1,46 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - NSAppTransportSecurity - - - NSAllowsArbitraryLoads - - - - diff --git a/Examples/TicTacToe/TicTacToe/main.m b/Examples/TicTacToe/TicTacToe/main.m deleted file mode 100644 index 9c58a39a483..00000000000 --- a/Examples/TicTacToe/TicTacToe/main.m +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/Examples/TicTacToe/TicTacToeApp.js b/Examples/TicTacToe/TicTacToeApp.js deleted file mode 100755 index 17d41a7e675..00000000000 --- a/Examples/TicTacToe/TicTacToeApp.js +++ /dev/null @@ -1,327 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule TicTacToeApp - * @flow - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - AppRegistry, - StyleSheet, - Text, - TouchableHighlight, - View, -} = ReactNative; - -class Board { - grid: Array>; - turn: number; - - constructor() { - var size = 3; - var grid = Array(size); - for (var i = 0; i < size; i++) { - var row = Array(size); - for (var j = 0; j < size; j++) { - row[j] = 0; - } - grid[i] = row; - } - this.grid = grid; - - this.turn = 1; - } - - mark(row: number, col: number, player: number): Board { - this.grid[row][col] = player; - return this; - } - - hasMark(row: number, col: number): boolean { - return this.grid[row][col] !== 0; - } - - winner(): ?number { - for (var i = 0; i < 3; i++) { - if (this.grid[i][0] !== 0 && this.grid[i][0] === this.grid[i][1] && - this.grid[i][0] === this.grid[i][2]) { - return this.grid[i][0]; - } - } - - for (var i = 0; i < 3; i++) { - if (this.grid[0][i] !== 0 && this.grid[0][i] === this.grid[1][i] && - this.grid[0][i] === this.grid[2][i]) { - return this.grid[0][i]; - } - } - - if (this.grid[0][0] !== 0 && this.grid[0][0] === this.grid[1][1] && - this.grid[0][0] === this.grid[2][2]) { - return this.grid[0][0]; - } - - if (this.grid[0][2] !== 0 && this.grid[0][2] === this.grid[1][1] && - this.grid[0][2] === this.grid[2][0]) { - return this.grid[0][2]; - } - - return null; - } - - tie(): boolean { - for (var i = 0; i < 3; i++) { - for (var j = 0; j < 3; j++) { - if (this.grid[i][j] === 0) { - return false; - } - } - } - return this.winner() === null; - } -} - -class Cell extends React.Component { - cellStyle() { - switch (this.props.player) { - case 1: - return styles.cellX; - case 2: - return styles.cellO; - default: - return null; - } - } - - textStyle() { - switch (this.props.player) { - case 1: - return styles.cellTextX; - case 2: - return styles.cellTextO; - default: - return {}; - } - } - - textContents() { - switch (this.props.player) { - case 1: - return 'X'; - case 2: - return 'O'; - default: - return ''; - } - } - - render() { - return ( - - - - {this.textContents()} - - - - ); - } -} - -class GameEndOverlay extends React.Component { - render() { - var board = this.props.board; - - var tie = board.tie(); - var winner = board.winner(); - if (!winner && !tie) { - return null; - } - - var message; - if (tie) { - message = 'It\'s a tie!'; - } else { - message = (winner === 1 ? 'X' : 'O') + ' wins!'; - } - - return ( - - {message} - - - New Game - - - - ); - } -} - -var TicTacToeApp = React.createClass({ - getInitialState() { - return { board: new Board(), player: 1 }; - }, - - restartGame() { - this.setState(this.getInitialState()); - }, - - nextPlayer(): number { - return this.state.player === 1 ? 2 : 1; - }, - - handleCellPress(row: number, col: number) { - if (this.state.board.hasMark(row, col)) { - return; - } - - this.setState({ - board: this.state.board.mark(row, col, this.state.player), - player: this.nextPlayer(), - }); - }, - - render() { - var rows = this.state.board.grid.map((cells, row) => - - {cells.map((player, col) => - - )} - - ); - - return ( - - EXTREME T3 - - {rows} - - - - ); - } -}); - -var styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: 'white' - }, - title: { - fontFamily: 'Chalkduster', - fontSize: 39, - marginBottom: 20, - }, - board: { - padding: 5, - backgroundColor: '#47525d', - borderRadius: 10, - }, - row: { - flexDirection: 'row', - }, - - // CELL - - cell: { - width: 80, - height: 80, - borderRadius: 5, - backgroundColor: '#7b8994', - margin: 5, - justifyContent: 'center', - alignItems: 'center', - }, - cellX: { - backgroundColor: '#72d0eb', - }, - cellO: { - backgroundColor: '#7ebd26', - }, - - // CELL TEXT - - cellText: { - fontSize: 50, - fontFamily: 'AvenirNext-Bold', - }, - cellTextX: { - color: '#19a9e5', - }, - cellTextO: { - color: '#b9dc2f', - }, - - // GAME OVER - - overlay: { - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: 0, - backgroundColor: 'rgba(221, 221, 221, 0.5)', - flex: 1, - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - }, - overlayMessage: { - fontSize: 40, - marginBottom: 20, - marginLeft: 20, - marginRight: 20, - fontFamily: 'AvenirNext-DemiBold', - textAlign: 'center', - }, - newGame: { - backgroundColor: '#887765', - padding: 20, - borderRadius: 5, - }, - newGameText: { - color: 'white', - fontSize: 20, - fontFamily: 'AvenirNext-DemiBold', - }, -}); - -AppRegistry.registerComponent('TicTacToeApp', () => TicTacToeApp); - -module.exports = TicTacToeApp; diff --git a/Examples/TicTacToe/android/app/BUCK b/Examples/TicTacToe/android/app/BUCK deleted file mode 100644 index 3dae6c388d4..00000000000 --- a/Examples/TicTacToe/android/app/BUCK +++ /dev/null @@ -1,31 +0,0 @@ -include_defs("//ReactAndroid/DEFS") - -android_binary( - name = "app", - keystore = "//keystores:debug", - manifest = "src/main/AndroidManifest.xml", - deps = [ - ":tictactoe-lib", - ], -) - -android_library( - name = "tictactoe-lib", - srcs = glob(["src/main/java/**/*.java"]), - deps = [ - ":res", - react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react:react"), - react_native_target("java/com/facebook/react/modules/core:core"), - react_native_target("java/com/facebook/react/shell:shell"), - react_native_target("jni/prebuilt:android-jsc"), - # .so files are prebuilt by Gradle with `./gradlew :ReactAndroid:packageReactNdkLibsForBuck` - react_native_target("jni/prebuilt:reactnative-libs"), - ], -) - -android_resource( - name = "res", - package = "com.facebook.react.tictactoe", - res = "src/main/res", -) diff --git a/Examples/TicTacToe/android/app/build.gradle b/Examples/TicTacToe/android/app/build.gradle deleted file mode 100644 index 94509eca564..00000000000 --- a/Examples/TicTacToe/android/app/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" - - defaultConfig { - applicationId "com.facebook.react.tictactoe" - minSdkVersion 16 - targetSdkVersion 22 - versionCode 1 - versionName "1.0" - ndk { - abiFilters "armeabi-v7a", "x86" - } - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.0.1' - - // Build React Native from source - compile project(':ReactAndroid') -} diff --git a/Examples/TicTacToe/android/app/gradle.properties b/Examples/TicTacToe/android/app/gradle.properties deleted file mode 100644 index dfbe478748b..00000000000 --- a/Examples/TicTacToe/android/app/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -android.useDeprecatedNdk=true diff --git a/Examples/TicTacToe/android/app/proguard-rules.pro b/Examples/TicTacToe/android/app/proguard-rules.pro deleted file mode 100644 index a92fa177ee4..00000000000 --- a/Examples/TicTacToe/android/app/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/Examples/TicTacToe/android/app/src/main/AndroidManifest.xml b/Examples/TicTacToe/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index a6dbe21557a..00000000000 --- a/Examples/TicTacToe/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeActivity.java b/Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeActivity.java deleted file mode 100644 index 3589ea4e5a6..00000000000 --- a/Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeActivity.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -package com.facebook.react.tictactoe; - -import com.facebook.react.ReactActivity; - -public class TicTacToeActivity extends ReactActivity { - @Override - protected String getMainComponentName() { - return "TicTacToeApp"; - } -} diff --git a/Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeApplication.java b/Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeApplication.java deleted file mode 100644 index c765a847cf3..00000000000 --- a/Examples/TicTacToe/android/app/src/main/java/com/facebook/react/tictactoe/TicTacToeApplication.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package com.facebook.react.tictactoe; - -import android.app.Application; - -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.shell.MainReactPackage; - -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Nullable; - -public class TicTacToeApplication extends Application implements ReactApplication { - private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { - @Override - public String getJSMainModuleName() { - return "Examples/TicTacToe/TicTacToeApp"; - } - - @Override - public @Nullable String getBundleAssetName() { - return "TicTacToeApp.bundle"; - } - - @Override - public boolean getUseDeveloperSupport() { - return true; - } - - @Override - protected List getPackages() { - return Arrays.asList( - new MainReactPackage() - ); - } - }; - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } -} diff --git a/Examples/TicTacToe/android/app/src/main/res/drawable/launcher_icon.png b/Examples/TicTacToe/android/app/src/main/res/drawable/launcher_icon.png deleted file mode 100644 index a4aa3bd6d9acdc977bc945565d7722d84e0797c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9578 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

72ATT)w1$($I%NoWL(@b}2Wz(}4&;la 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 EKl*B@YybcN diff --git a/Examples/TicTacToe/android/app/src/main/res/layout/activity_main.xml b/Examples/TicTacToe/android/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 7d338d621d0..00000000000 --- a/Examples/TicTacToe/android/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/Examples/TicTacToe/android/app/src/main/res/values/strings.xml b/Examples/TicTacToe/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 26cdf63c684..00000000000 --- a/Examples/TicTacToe/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - TicTacToeApp - diff --git a/Examples/TicTacToe/android/app/src/main/res/values/styles.xml b/Examples/TicTacToe/android/app/src/main/res/values/styles.xml deleted file mode 100644 index 319eb0ca100..00000000000 --- a/Examples/TicTacToe/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - -