├── .bundle └── config ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .husky └── pre-commit ├── .prettierignore ├── .prettierrc.js ├── .watchmanconfig ├── App.tsx ├── CODE_OF_CONDUCT.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── __tests__ └── App.test.tsx ├── android ├── app │ ├── build.gradle │ ├── debug.keystore │ ├── proguard-rules.pro │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── falwithreactnative │ │ │ ├── MainActivity.kt │ │ │ └── MainApplication.kt │ │ └── res │ │ ├── drawable │ │ └── rn_edit_text_material.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── babel.config.js ├── index.js ├── ios ├── .xcode.env ├── FalWithReactNative.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ └── FalWithReactNative.xcscheme ├── FalWithReactNative.xcworkspace │ └── contents.xcworkspacedata ├── FalWithReactNative │ ├── AppDelegate.h │ ├── AppDelegate.mm │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── LaunchScreen.storyboard │ └── main.m ├── FalWithReactNativeTests │ ├── FalWithReactNativeTests.m │ └── Info.plist ├── Podfile └── Podfile.lock ├── jest.config.js ├── metro.config.js ├── package-lock.json ├── package.json ├── react-native.config.js ├── src ├── components │ ├── core.tsx │ ├── screen.tsx │ └── theme.ts └── screens │ ├── drawing.tsx │ └── home.tsx ├── tailwind.config.js └── tsconfig.json /.bundle/config: -------------------------------------------------------------------------------- 1 | BUNDLE_PATH: "vendor/bundle" 2 | BUNDLE_FORCE_RUBY_PLATFORM: 1 3 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: [ 4 | 'standard', 5 | 'plugin:react/recommended', 6 | 'plugin:import/recommended', 7 | 'plugin:import/typescript', 8 | 'prettier', 9 | ], 10 | }; 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | ios/.xcode.env.local 24 | 25 | # Android/IntelliJ 26 | # 27 | build/ 28 | .idea 29 | .gradle 30 | local.properties 31 | *.iml 32 | *.hprof 33 | .cxx/ 34 | *.keystore 35 | !debug.keystore 36 | 37 | # node.js 38 | # 39 | node_modules/ 40 | npm-debug.log 41 | yarn-error.log 42 | 43 | # fastlane 44 | # 45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 46 | # screenshots whenever they are needed. 47 | # For more information about the recommended setup visit: 48 | # https://docs.fastlane.tools/best-practices/source-control/ 49 | 50 | **/fastlane/report.xml 51 | **/fastlane/Preview.html 52 | **/fastlane/screenshots 53 | **/fastlane/test_output 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # Ruby / CocoaPods 59 | /ios/Pods/ 60 | /vendor/bundle/ 61 | 62 | # Temporary files created by Metro to check the health of the file watcher 63 | .metro-health-check* 64 | 65 | # testing 66 | /coverage 67 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .bundle/ 2 | android/ 3 | ios/ 4 | node_modules/ 5 | vendor/ -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSameLine: true, 3 | bracketSpacing: true, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | plugins: ['@trivago/prettier-plugin-sort-imports'], 7 | }; 8 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /App.tsx: -------------------------------------------------------------------------------- 1 | import * as eva from '@eva-design/eva'; 2 | import * as fal from '@fal-ai/serverless-client'; 3 | import { createDrawerNavigator } from '@react-navigation/drawer'; 4 | import { NavigationContainer } from '@react-navigation/native'; 5 | import { ApplicationProvider, useTheme } from '@ui-kitten/components'; 6 | import React from 'react'; 7 | import { appTheme } from '~/components/theme'; 8 | import { DrawingScreen } from '~/screens/drawing'; 9 | import { HomeScreen } from '~/screens/home'; 10 | 11 | const Drawer = createDrawerNavigator(); 12 | 13 | fal.config({ 14 | proxyUrl: 'http://localhost:3333/api/fal/proxy', 15 | }); 16 | 17 | function App() { 18 | return ( 19 | 20 | 21 | 22 | ); 23 | } 24 | 25 | function Navigation() { 26 | const theme = useTheme(); 27 | return ( 28 | 29 | 49 | 50 | 51 | 52 | 53 | ); 54 | } 55 | 56 | export default App; 57 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, caste, color, religion, or sexual 10 | identity and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or advances of 31 | any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email address, 35 | without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [INSERT CONTACT METHOD]. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series of 86 | actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or permanent 93 | ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within the 113 | community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.1, available at 119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 | 121 | Community Impact Guidelines were inspired by 122 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at 126 | [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 | [Mozilla CoC]: https://github.com/mozilla/diversity 131 | [FAQ]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version 4 | ruby ">= 2.6.10" 5 | 6 | gem 'cocoapods', '~> 1.13' 7 | gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' 8 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | CFPropertyList (3.0.6) 5 | rexml 6 | activesupport (6.1.7.6) 7 | concurrent-ruby (~> 1.0, >= 1.0.2) 8 | i18n (>= 1.6, < 2) 9 | minitest (>= 5.1) 10 | tzinfo (~> 2.0) 11 | zeitwerk (~> 2.3) 12 | addressable (2.8.6) 13 | public_suffix (>= 2.0.2, < 6.0) 14 | algoliasearch (1.27.5) 15 | httpclient (~> 2.8, >= 2.8.3) 16 | json (>= 1.5.1) 17 | atomos (0.1.3) 18 | claide (1.1.0) 19 | cocoapods (1.14.3) 20 | addressable (~> 2.8) 21 | claide (>= 1.0.2, < 2.0) 22 | cocoapods-core (= 1.14.3) 23 | cocoapods-deintegrate (>= 1.0.3, < 2.0) 24 | cocoapods-downloader (>= 2.1, < 3.0) 25 | cocoapods-plugins (>= 1.0.0, < 2.0) 26 | cocoapods-search (>= 1.0.0, < 2.0) 27 | cocoapods-trunk (>= 1.6.0, < 2.0) 28 | cocoapods-try (>= 1.1.0, < 2.0) 29 | colored2 (~> 3.1) 30 | escape (~> 0.0.4) 31 | fourflusher (>= 2.3.0, < 3.0) 32 | gh_inspector (~> 1.0) 33 | molinillo (~> 0.8.0) 34 | nap (~> 1.0) 35 | ruby-macho (>= 2.3.0, < 3.0) 36 | xcodeproj (>= 1.23.0, < 2.0) 37 | cocoapods-core (1.14.3) 38 | activesupport (>= 5.0, < 8) 39 | addressable (~> 2.8) 40 | algoliasearch (~> 1.0) 41 | concurrent-ruby (~> 1.1) 42 | fuzzy_match (~> 2.0.4) 43 | nap (~> 1.0) 44 | netrc (~> 0.11) 45 | public_suffix (~> 4.0) 46 | typhoeus (~> 1.0) 47 | cocoapods-deintegrate (1.0.5) 48 | cocoapods-downloader (2.1) 49 | cocoapods-plugins (1.0.0) 50 | nap 51 | cocoapods-search (1.0.1) 52 | cocoapods-trunk (1.6.0) 53 | nap (>= 0.8, < 2.0) 54 | netrc (~> 0.11) 55 | cocoapods-try (1.2.0) 56 | colored2 (3.1.2) 57 | concurrent-ruby (1.2.2) 58 | escape (0.0.4) 59 | ethon (0.16.0) 60 | ffi (>= 1.15.0) 61 | ffi (1.16.3) 62 | fourflusher (2.3.1) 63 | fuzzy_match (2.0.4) 64 | gh_inspector (1.1.3) 65 | httpclient (2.8.3) 66 | i18n (1.14.1) 67 | concurrent-ruby (~> 1.0) 68 | json (2.7.1) 69 | minitest (5.20.0) 70 | molinillo (0.8.0) 71 | nanaimo (0.3.0) 72 | nap (1.1.0) 73 | netrc (0.11.0) 74 | public_suffix (4.0.7) 75 | rexml (3.2.6) 76 | ruby-macho (2.5.1) 77 | typhoeus (1.4.1) 78 | ethon (>= 0.9.0) 79 | tzinfo (2.0.6) 80 | concurrent-ruby (~> 1.0) 81 | xcodeproj (1.23.0) 82 | CFPropertyList (>= 2.3.3, < 4.0) 83 | atomos (~> 0.1.3) 84 | claide (>= 1.0.2, < 2.0) 85 | colored2 (~> 3.1) 86 | nanaimo (~> 0.3.0) 87 | rexml (~> 3.2.4) 88 | zeitwerk (2.6.12) 89 | 90 | PLATFORMS 91 | ruby 92 | 93 | DEPENDENCIES 94 | activesupport (>= 6.1.7.3, < 7.1.0) 95 | cocoapods (~> 1.13) 96 | 97 | RUBY VERSION 98 | ruby 2.6.10p210 99 | 100 | BUNDLED WITH 101 | 2.4.22 102 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a [**React Native**](https://reactnative.dev) project, integrated with [**fal.ai**](https://fal.ai). 2 | 3 | # Getting Started 4 | 5 | ## Step 1: Start the Metro Server 6 | 7 | First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. 8 | 9 | To start Metro, run the following command from the _root_ of your React Native project: 10 | 11 | ```bash 12 | # using npm 13 | npm start 14 | 15 | # OR using Yarn 16 | yarn start 17 | ``` 18 | 19 | ## Step 2: Start your Application 20 | 21 | Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: 22 | 23 | ### For Android 24 | 25 | ```bash 26 | # using npm 27 | npm run android 28 | 29 | # OR using Yarn 30 | yarn android 31 | ``` 32 | 33 | ### For iOS 34 | 35 | ```bash 36 | # using npm 37 | npm run ios 38 | 39 | # OR using Yarn 40 | yarn ios 41 | ``` 42 | 43 | If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. 44 | 45 | This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. 46 | 47 | ## Step 3: Modifying your App 48 | 49 | Now that you have successfully run the app, let's modify it. 50 | 51 | 1. Open `App.tsx` in your text editor of choice and edit some lines. 52 | 2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes! 53 | 54 | For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes! 55 | 56 | ## Congratulations! :tada: 57 | 58 | You've successfully run and modified your React Native App. :partying_face: 59 | 60 | ### Now what? 61 | 62 | - If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). 63 | - If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). 64 | 65 | # Troubleshooting 66 | 67 | If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. 68 | 69 | # Learn More 70 | 71 | To learn more about React Native, take a look at the following resources: 72 | 73 | - [React Native Website](https://reactnative.dev) - learn more about React Native. 74 | - [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. 75 | - [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. 76 | - [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. 77 | - [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. 78 | -------------------------------------------------------------------------------- /__tests__/App.test.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | import App from '../App'; 5 | // Note: import explicitly to use the types shipped with jest. 6 | import { it } from '@jest/globals'; 7 | import React from 'react'; 8 | import 'react-native'; 9 | // Note: test renderer must be required after react-native. 10 | import renderer from 'react-test-renderer'; 11 | 12 | it('renders correctly', () => { 13 | renderer.create(); 14 | }); 15 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | apply plugin: "org.jetbrains.kotlin.android" 3 | apply plugin: "com.facebook.react" 4 | 5 | /** 6 | * This is the configuration block to customize your React Native Android app. 7 | * By default you don't need to apply any configuration, just uncomment the lines you need. 8 | */ 9 | react { 10 | /* Folders */ 11 | // The root of your project, i.e. where "package.json" lives. Default is '..' 12 | // root = file("../") 13 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native 14 | // reactNativeDir = file("../node_modules/react-native") 15 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen 16 | // codegenDir = file("../node_modules/@react-native/codegen") 17 | // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js 18 | // cliFile = file("../node_modules/react-native/cli.js") 19 | 20 | /* Variants */ 21 | // The list of variants to that are debuggable. For those we're going to 22 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'. 23 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. 24 | // debuggableVariants = ["liteDebug", "prodDebug"] 25 | 26 | /* Bundling */ 27 | // A list containing the node command and its flags. Default is just 'node'. 28 | // nodeExecutableAndArgs = ["node"] 29 | // 30 | // The command to run when bundling. By default is 'bundle' 31 | // bundleCommand = "ram-bundle" 32 | // 33 | // The path to the CLI configuration file. Default is empty. 34 | // bundleConfig = file(../rn-cli.config.js) 35 | // 36 | // The name of the generated asset file containing your JS bundle 37 | // bundleAssetName = "MyApplication.android.bundle" 38 | // 39 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' 40 | // entryFile = file("../js/MyApplication.android.js") 41 | // 42 | // A list of extra flags to pass to the 'bundle' commands. 43 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle 44 | // extraPackagerArgs = [] 45 | 46 | /* Hermes Commands */ 47 | // The hermes compiler command to run. By default it is 'hermesc' 48 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" 49 | // 50 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" 51 | // hermesFlags = ["-O", "-output-source-map"] 52 | } 53 | 54 | /** 55 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode. 56 | */ 57 | def enableProguardInReleaseBuilds = false 58 | 59 | /** 60 | * The preferred build flavor of JavaScriptCore (JSC) 61 | * 62 | * For example, to use the international variant, you can use: 63 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 64 | * 65 | * The international variant includes ICU i18n library and necessary data 66 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 67 | * give correct results when using with locales other than en-US. Note that 68 | * this variant is about 6MiB larger per architecture than default. 69 | */ 70 | def jscFlavor = 'org.webkit:android-jsc:+' 71 | 72 | android { 73 | ndkVersion rootProject.ext.ndkVersion 74 | buildToolsVersion rootProject.ext.buildToolsVersion 75 | compileSdk rootProject.ext.compileSdkVersion 76 | 77 | namespace "com.falwithreactnative" 78 | defaultConfig { 79 | applicationId "com.falwithreactnative" 80 | minSdkVersion rootProject.ext.minSdkVersion 81 | targetSdkVersion rootProject.ext.targetSdkVersion 82 | versionCode 1 83 | versionName "1.0" 84 | } 85 | signingConfigs { 86 | debug { 87 | storeFile file('debug.keystore') 88 | storePassword 'android' 89 | keyAlias 'androiddebugkey' 90 | keyPassword 'android' 91 | } 92 | } 93 | buildTypes { 94 | debug { 95 | signingConfig signingConfigs.debug 96 | } 97 | release { 98 | // Caution! In production, you need to generate your own keystore file. 99 | // see https://reactnative.dev/docs/signed-apk-android. 100 | signingConfig signingConfigs.debug 101 | minifyEnabled enableProguardInReleaseBuilds 102 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 103 | } 104 | } 105 | } 106 | 107 | dependencies { 108 | // The version of react-native is set by the React Native Gradle Plugin 109 | implementation("com.facebook.react:react-android") 110 | implementation("com.facebook.react:flipper-integration") 111 | 112 | if (hermesEnabled.toBoolean()) { 113 | implementation("com.facebook.react:hermes-android") 114 | } else { 115 | implementation jscFlavor 116 | } 117 | } 118 | 119 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 120 | -------------------------------------------------------------------------------- /android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/debug.keystore -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/falwithreactnative/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.falwithreactnative 2 | 3 | import com.facebook.react.ReactActivity 4 | import com.facebook.react.ReactActivityDelegate 5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled 6 | import com.facebook.react.defaults.DefaultReactActivityDelegate 7 | 8 | class MainActivity : ReactActivity() { 9 | 10 | /** 11 | * Returns the name of the main component registered from JavaScript. This is used to schedule 12 | * rendering of the component. 13 | */ 14 | override fun getMainComponentName(): String = "FalWithReactNative" 15 | 16 | /** 17 | * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] 18 | * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] 19 | */ 20 | override fun createReactActivityDelegate(): ReactActivityDelegate = 21 | DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) 22 | } 23 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/falwithreactnative/MainApplication.kt: -------------------------------------------------------------------------------- 1 | package com.falwithreactnative 2 | 3 | import android.app.Application 4 | import com.facebook.react.PackageList 5 | import com.facebook.react.ReactApplication 6 | import com.facebook.react.ReactHost 7 | import com.facebook.react.ReactNativeHost 8 | import com.facebook.react.ReactPackage 9 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load 10 | import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost 11 | import com.facebook.react.defaults.DefaultReactNativeHost 12 | import com.facebook.react.flipper.ReactNativeFlipper 13 | import com.facebook.soloader.SoLoader 14 | 15 | class MainApplication : Application(), ReactApplication { 16 | 17 | override val reactNativeHost: ReactNativeHost = 18 | object : DefaultReactNativeHost(this) { 19 | override fun getPackages(): List { 20 | // Packages that cannot be autolinked yet can be added manually here, for example: 21 | // packages.add(new MyReactNativePackage()); 22 | return PackageList(this).packages 23 | } 24 | 25 | override fun getJSMainModuleName(): String = "index" 26 | 27 | override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG 28 | 29 | override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED 30 | override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED 31 | } 32 | 33 | override val reactHost: ReactHost 34 | get() = getDefaultReactHost(this.applicationContext, reactNativeHost) 35 | 36 | override fun onCreate() { 37 | super.onCreate() 38 | SoLoader.init(this, false) 39 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 40 | // If you opted-in for the New Architecture, we load the native entry point for this app. 41 | load() 42 | } 43 | ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/rn_edit_text_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 23 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | FalWithReactNative 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext { 3 | buildToolsVersion = "34.0.0" 4 | minSdkVersion = 21 5 | compileSdkVersion = 34 6 | targetSdkVersion = 34 7 | ndkVersion = "25.1.8937393" 8 | kotlinVersion = "1.8.0" 9 | } 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | dependencies { 15 | classpath("com.android.tools.build:gradle") 16 | classpath("com.facebook.react:react-native-gradle-plugin") 17 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") 18 | } 19 | } 20 | 21 | apply plugin: "com.facebook.react.rootproject" 22 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | # Automatically convert third-party libraries to use AndroidX 25 | android.enableJetifier=true 26 | 27 | # Use this property to specify which architecture you want to build. 28 | # You can also override it from the CLI using 29 | # ./gradlew -PreactNativeArchitectures=x86_64 30 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 31 | 32 | # Use this property to enable support to the new architecture. 33 | # This will allow you to use TurboModules and the Fabric render in 34 | # your application. You should enable this flag either if you want 35 | # to write custom TurboModules/Fabric components OR use libraries that 36 | # are providing them. 37 | newArchEnabled=false 38 | 39 | # Use this property to enable or disable the Hermes JS engine. 40 | # If set to false, you will be using JSC instead. 41 | hermesEnabled=true 42 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fal-ai/fal-with-react-native/f73cc79f8278f61f75508a82882d510f5fddf382/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | # This is normally unused 84 | # shellcheck disable=SC2034 85 | APP_BASE_NAME=${0##*/} 86 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit 88 | 89 | # Use the maximum available, or set MAX_FD != -1 to use that value. 90 | MAX_FD=maximum 91 | 92 | warn () { 93 | echo "$*" 94 | } >&2 95 | 96 | die () { 97 | echo 98 | echo "$*" 99 | echo 100 | exit 1 101 | } >&2 102 | 103 | # OS specific support (must be 'true' or 'false'). 104 | cygwin=false 105 | msys=false 106 | darwin=false 107 | nonstop=false 108 | case "$( uname )" in #( 109 | CYGWIN* ) cygwin=true ;; #( 110 | Darwin* ) darwin=true ;; #( 111 | MSYS* | MINGW* ) msys=true ;; #( 112 | NONSTOP* ) nonstop=true ;; 113 | esac 114 | 115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 116 | 117 | 118 | # Determine the Java command to use to start the JVM. 119 | if [ -n "$JAVA_HOME" ] ; then 120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 121 | # IBM's JDK on AIX uses strange locations for the executables 122 | JAVACMD=$JAVA_HOME/jre/sh/java 123 | else 124 | JAVACMD=$JAVA_HOME/bin/java 125 | fi 126 | if [ ! -x "$JAVACMD" ] ; then 127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 128 | 129 | Please set the JAVA_HOME variable in your environment to match the 130 | location of your Java installation." 131 | fi 132 | else 133 | JAVACMD=java 134 | if ! command -v java >/dev/null 2>&1 135 | then 136 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | fi 142 | 143 | # Increase the maximum file descriptors if we can. 144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 145 | case $MAX_FD in #( 146 | max*) 147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 148 | # shellcheck disable=SC3045 149 | MAX_FD=$( ulimit -H -n ) || 150 | warn "Could not query maximum file descriptor limit" 151 | esac 152 | case $MAX_FD in #( 153 | '' | soft) :;; #( 154 | *) 155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 156 | # shellcheck disable=SC3045 157 | ulimit -n "$MAX_FD" || 158 | warn "Could not set maximum file descriptor limit to $MAX_FD" 159 | esac 160 | fi 161 | 162 | # Collect all arguments for the java command, stacking in reverse order: 163 | # * args from the command line 164 | # * the main class name 165 | # * -classpath 166 | # * -D...appname settings 167 | # * --module-path (only if needed) 168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 169 | 170 | # For Cygwin or MSYS, switch paths to Windows format before running java 171 | if "$cygwin" || "$msys" ; then 172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 174 | 175 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 176 | 177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 178 | for arg do 179 | if 180 | case $arg in #( 181 | -*) false ;; # don't mess with options #( 182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 183 | [ -e "$t" ] ;; #( 184 | *) false ;; 185 | esac 186 | then 187 | arg=$( cygpath --path --ignore --mixed "$arg" ) 188 | fi 189 | # Roll the args list around exactly as many times as the number of 190 | # args, so each arg winds up back in the position where it started, but 191 | # possibly modified. 192 | # 193 | # NB: a `for` loop captures its iteration list before it begins, so 194 | # changing the positional parameters here affects neither the number of 195 | # iterations, nor the values presented in `arg`. 196 | shift # remove old arg 197 | set -- "$@" "$arg" # push replacement arg 198 | done 199 | fi 200 | 201 | 202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 204 | 205 | # Collect all arguments for the java command; 206 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 207 | # shell script including quotes and variable substitutions, so put them in 208 | # double quotes to make sure that they get re-expanded; and 209 | # * put everything else in single quotes, so that it's not re-expanded. 210 | 211 | set -- \ 212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 213 | -classpath "$CLASSPATH" \ 214 | org.gradle.wrapper.GradleWrapperMain \ 215 | "$@" 216 | 217 | # Stop when "xargs" is not available. 218 | if ! command -v xargs >/dev/null 2>&1 219 | then 220 | die "xargs is not available" 221 | fi 222 | 223 | # Use "xargs" to parse quoted args. 224 | # 225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 226 | # 227 | # In Bash we could simply go: 228 | # 229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 230 | # set -- "${ARGS[@]}" "$@" 231 | # 232 | # but POSIX shell has neither arrays nor command substitution, so instead we 233 | # post-process each arg (as a line of input to sed) to backslash-escape any 234 | # character that might be a shell metacharacter, then use eval to reverse 235 | # that process (while maintaining the separation between arguments), and wrap 236 | # the whole thing up as a single "set" statement. 237 | # 238 | # This will of course break if any of these variables contains a newline or 239 | # an unmatched quote. 240 | # 241 | 242 | eval "set -- $( 243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 244 | xargs -n1 | 245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 246 | tr '\n' ' ' 247 | )" '"$@"' 248 | 249 | exec "$JAVACMD" "$@" 250 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'FalWithReactNative' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | includeBuild('../node_modules/@react-native/gradle-plugin') 5 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FalWithReactNative", 3 | "displayName": "FalWithReactNative" 4 | } 5 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:@react-native/babel-preset'], 3 | plugins: [ 4 | [ 5 | 'module-resolver', 6 | { 7 | alias: { 8 | '~': './src', 9 | }, 10 | }, 11 | ], 12 | ['nativewind/babel', { compileOnly: true }], 13 | 'react-native-reanimated/plugin', 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-unused-vars */ 2 | 3 | /* eslint-disable import/namespace */ 4 | 5 | /** 6 | * @format 7 | */ 8 | import App from './App'; 9 | import { name as appName } from './app.json'; 10 | import React from 'react'; 11 | import { AppRegistry } from 'react-native'; 12 | import 'react-native-gesture-handler'; 13 | 14 | AppRegistry.registerComponent(appName, () => App); 15 | -------------------------------------------------------------------------------- /ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /ios/FalWithReactNative.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00E356F31AD99517003FC87E /* FalWithReactNativeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* FalWithReactNativeTests.m */; }; 11 | 0C80B921A6F3F58F76C31292 /* libPods-FalWithReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-FalWithReactNative.a */; }; 12 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 15 | 7699B88040F8A987B510C191 /* libPods-FalWithReactNative-FalWithReactNativeTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-FalWithReactNative-FalWithReactNativeTests.a */; }; 16 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXContainerItemProxy section */ 20 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { 21 | isa = PBXContainerItemProxy; 22 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 23 | proxyType = 1; 24 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A; 25 | remoteInfo = FalWithReactNative; 26 | }; 27 | /* End PBXContainerItemProxy section */ 28 | 29 | /* Begin PBXFileReference section */ 30 | 00E356EE1AD99517003FC87E /* FalWithReactNativeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FalWithReactNativeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 31 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 32 | 00E356F21AD99517003FC87E /* FalWithReactNativeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FalWithReactNativeTests.m; sourceTree = ""; }; 33 | 13B07F961A680F5B00A75B9A /* FalWithReactNative.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FalWithReactNative.app; sourceTree = BUILT_PRODUCTS_DIR; }; 34 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = FalWithReactNative/AppDelegate.h; sourceTree = ""; }; 35 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = FalWithReactNative/AppDelegate.mm; sourceTree = ""; }; 36 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = FalWithReactNative/Images.xcassets; sourceTree = ""; }; 37 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = FalWithReactNative/Info.plist; sourceTree = ""; }; 38 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = FalWithReactNative/main.m; sourceTree = ""; }; 39 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-FalWithReactNative-FalWithReactNativeTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FalWithReactNative-FalWithReactNativeTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 40 | 3B4392A12AC88292D35C810B /* Pods-FalWithReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FalWithReactNative.debug.xcconfig"; path = "Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative.debug.xcconfig"; sourceTree = ""; }; 41 | 5709B34CF0A7D63546082F79 /* Pods-FalWithReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FalWithReactNative.release.xcconfig"; path = "Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative.release.xcconfig"; sourceTree = ""; }; 42 | 5B7EB9410499542E8C5724F5 /* Pods-FalWithReactNative-FalWithReactNativeTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FalWithReactNative-FalWithReactNativeTests.debug.xcconfig"; path = "Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests.debug.xcconfig"; sourceTree = ""; }; 43 | 5DCACB8F33CDC322A6C60F78 /* libPods-FalWithReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FalWithReactNative.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 44 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = FalWithReactNative/LaunchScreen.storyboard; sourceTree = ""; }; 45 | 89C6BE57DB24E9ADA2F236DE /* Pods-FalWithReactNative-FalWithReactNativeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FalWithReactNative-FalWithReactNativeTests.release.xcconfig"; path = "Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests.release.xcconfig"; sourceTree = ""; }; 46 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 47 | /* End PBXFileReference section */ 48 | 49 | /* Begin PBXFrameworksBuildPhase section */ 50 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 51 | isa = PBXFrameworksBuildPhase; 52 | buildActionMask = 2147483647; 53 | files = ( 54 | 7699B88040F8A987B510C191 /* libPods-FalWithReactNative-FalWithReactNativeTests.a in Frameworks */, 55 | ); 56 | runOnlyForDeploymentPostprocessing = 0; 57 | }; 58 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 59 | isa = PBXFrameworksBuildPhase; 60 | buildActionMask = 2147483647; 61 | files = ( 62 | 0C80B921A6F3F58F76C31292 /* libPods-FalWithReactNative.a in Frameworks */, 63 | ); 64 | runOnlyForDeploymentPostprocessing = 0; 65 | }; 66 | /* End PBXFrameworksBuildPhase section */ 67 | 68 | /* Begin PBXGroup section */ 69 | 00E356EF1AD99517003FC87E /* FalWithReactNativeTests */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 00E356F21AD99517003FC87E /* FalWithReactNativeTests.m */, 73 | 00E356F01AD99517003FC87E /* Supporting Files */, 74 | ); 75 | path = FalWithReactNativeTests; 76 | sourceTree = ""; 77 | }; 78 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 00E356F11AD99517003FC87E /* Info.plist */, 82 | ); 83 | name = "Supporting Files"; 84 | sourceTree = ""; 85 | }; 86 | 13B07FAE1A68108700A75B9A /* FalWithReactNative */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 90 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 91 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 92 | 13B07FB61A68108700A75B9A /* Info.plist */, 93 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 94 | 13B07FB71A68108700A75B9A /* main.m */, 95 | ); 96 | name = FalWithReactNative; 97 | sourceTree = ""; 98 | }; 99 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 100 | isa = PBXGroup; 101 | children = ( 102 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 103 | 5DCACB8F33CDC322A6C60F78 /* libPods-FalWithReactNative.a */, 104 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-FalWithReactNative-FalWithReactNativeTests.a */, 105 | ); 106 | name = Frameworks; 107 | sourceTree = ""; 108 | }; 109 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | ); 113 | name = Libraries; 114 | sourceTree = ""; 115 | }; 116 | 83CBB9F61A601CBA00E9B192 = { 117 | isa = PBXGroup; 118 | children = ( 119 | 13B07FAE1A68108700A75B9A /* FalWithReactNative */, 120 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 121 | 00E356EF1AD99517003FC87E /* FalWithReactNativeTests */, 122 | 83CBBA001A601CBA00E9B192 /* Products */, 123 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 124 | BBD78D7AC51CEA395F1C20DB /* Pods */, 125 | ); 126 | indentWidth = 2; 127 | sourceTree = ""; 128 | tabWidth = 2; 129 | usesTabs = 0; 130 | }; 131 | 83CBBA001A601CBA00E9B192 /* Products */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 13B07F961A680F5B00A75B9A /* FalWithReactNative.app */, 135 | 00E356EE1AD99517003FC87E /* FalWithReactNativeTests.xctest */, 136 | ); 137 | name = Products; 138 | sourceTree = ""; 139 | }; 140 | BBD78D7AC51CEA395F1C20DB /* Pods */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | 3B4392A12AC88292D35C810B /* Pods-FalWithReactNative.debug.xcconfig */, 144 | 5709B34CF0A7D63546082F79 /* Pods-FalWithReactNative.release.xcconfig */, 145 | 5B7EB9410499542E8C5724F5 /* Pods-FalWithReactNative-FalWithReactNativeTests.debug.xcconfig */, 146 | 89C6BE57DB24E9ADA2F236DE /* Pods-FalWithReactNative-FalWithReactNativeTests.release.xcconfig */, 147 | ); 148 | path = Pods; 149 | sourceTree = ""; 150 | }; 151 | /* End PBXGroup section */ 152 | 153 | /* Begin PBXNativeTarget section */ 154 | 00E356ED1AD99517003FC87E /* FalWithReactNativeTests */ = { 155 | isa = PBXNativeTarget; 156 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FalWithReactNativeTests" */; 157 | buildPhases = ( 158 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, 159 | 00E356EA1AD99517003FC87E /* Sources */, 160 | 00E356EB1AD99517003FC87E /* Frameworks */, 161 | 00E356EC1AD99517003FC87E /* Resources */, 162 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, 163 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, 164 | ); 165 | buildRules = ( 166 | ); 167 | dependencies = ( 168 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 169 | ); 170 | name = FalWithReactNativeTests; 171 | productName = FalWithReactNativeTests; 172 | productReference = 00E356EE1AD99517003FC87E /* FalWithReactNativeTests.xctest */; 173 | productType = "com.apple.product-type.bundle.unit-test"; 174 | }; 175 | 13B07F861A680F5B00A75B9A /* FalWithReactNative */ = { 176 | isa = PBXNativeTarget; 177 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FalWithReactNative" */; 178 | buildPhases = ( 179 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, 180 | 13B07F871A680F5B00A75B9A /* Sources */, 181 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 182 | 13B07F8E1A680F5B00A75B9A /* Resources */, 183 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 184 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, 185 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, 186 | ); 187 | buildRules = ( 188 | ); 189 | dependencies = ( 190 | ); 191 | name = FalWithReactNative; 192 | productName = FalWithReactNative; 193 | productReference = 13B07F961A680F5B00A75B9A /* FalWithReactNative.app */; 194 | productType = "com.apple.product-type.application"; 195 | }; 196 | /* End PBXNativeTarget section */ 197 | 198 | /* Begin PBXProject section */ 199 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 200 | isa = PBXProject; 201 | attributes = { 202 | LastUpgradeCheck = 1210; 203 | TargetAttributes = { 204 | 00E356ED1AD99517003FC87E = { 205 | CreatedOnToolsVersion = 6.2; 206 | TestTargetID = 13B07F861A680F5B00A75B9A; 207 | }; 208 | 13B07F861A680F5B00A75B9A = { 209 | LastSwiftMigration = 1120; 210 | }; 211 | }; 212 | }; 213 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "FalWithReactNative" */; 214 | compatibilityVersion = "Xcode 12.0"; 215 | developmentRegion = en; 216 | hasScannedForEncodings = 0; 217 | knownRegions = ( 218 | en, 219 | Base, 220 | ); 221 | mainGroup = 83CBB9F61A601CBA00E9B192; 222 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 223 | projectDirPath = ""; 224 | projectRoot = ""; 225 | targets = ( 226 | 13B07F861A680F5B00A75B9A /* FalWithReactNative */, 227 | 00E356ED1AD99517003FC87E /* FalWithReactNativeTests */, 228 | ); 229 | }; 230 | /* End PBXProject section */ 231 | 232 | /* Begin PBXResourcesBuildPhase section */ 233 | 00E356EC1AD99517003FC87E /* Resources */ = { 234 | isa = PBXResourcesBuildPhase; 235 | buildActionMask = 2147483647; 236 | files = ( 237 | ); 238 | runOnlyForDeploymentPostprocessing = 0; 239 | }; 240 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 241 | isa = PBXResourcesBuildPhase; 242 | buildActionMask = 2147483647; 243 | files = ( 244 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 245 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 246 | ); 247 | runOnlyForDeploymentPostprocessing = 0; 248 | }; 249 | /* End PBXResourcesBuildPhase section */ 250 | 251 | /* Begin PBXShellScriptBuildPhase section */ 252 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 253 | isa = PBXShellScriptBuildPhase; 254 | buildActionMask = 2147483647; 255 | files = ( 256 | ); 257 | inputPaths = ( 258 | "$(SRCROOT)/.xcode.env.local", 259 | "$(SRCROOT)/.xcode.env", 260 | ); 261 | name = "Bundle React Native code and images"; 262 | outputPaths = ( 263 | ); 264 | runOnlyForDeploymentPostprocessing = 0; 265 | shellPath = /bin/sh; 266 | shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; 267 | }; 268 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { 269 | isa = PBXShellScriptBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | ); 273 | inputFileListPaths = ( 274 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative-frameworks-${CONFIGURATION}-input-files.xcfilelist", 275 | ); 276 | name = "[CP] Embed Pods Frameworks"; 277 | outputFileListPaths = ( 278 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative-frameworks-${CONFIGURATION}-output-files.xcfilelist", 279 | ); 280 | runOnlyForDeploymentPostprocessing = 0; 281 | shellPath = /bin/sh; 282 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative-frameworks.sh\"\n"; 283 | showEnvVarsInLog = 0; 284 | }; 285 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { 286 | isa = PBXShellScriptBuildPhase; 287 | buildActionMask = 2147483647; 288 | files = ( 289 | ); 290 | inputFileListPaths = ( 291 | ); 292 | inputPaths = ( 293 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 294 | "${PODS_ROOT}/Manifest.lock", 295 | ); 296 | name = "[CP] Check Pods Manifest.lock"; 297 | outputFileListPaths = ( 298 | ); 299 | outputPaths = ( 300 | "$(DERIVED_FILE_DIR)/Pods-FalWithReactNative-FalWithReactNativeTests-checkManifestLockResult.txt", 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | shellPath = /bin/sh; 304 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 305 | showEnvVarsInLog = 0; 306 | }; 307 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { 308 | isa = PBXShellScriptBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | ); 312 | inputFileListPaths = ( 313 | ); 314 | inputPaths = ( 315 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 316 | "${PODS_ROOT}/Manifest.lock", 317 | ); 318 | name = "[CP] Check Pods Manifest.lock"; 319 | outputFileListPaths = ( 320 | ); 321 | outputPaths = ( 322 | "$(DERIVED_FILE_DIR)/Pods-FalWithReactNative-checkManifestLockResult.txt", 323 | ); 324 | runOnlyForDeploymentPostprocessing = 0; 325 | shellPath = /bin/sh; 326 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 327 | showEnvVarsInLog = 0; 328 | }; 329 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { 330 | isa = PBXShellScriptBuildPhase; 331 | buildActionMask = 2147483647; 332 | files = ( 333 | ); 334 | inputFileListPaths = ( 335 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", 336 | ); 337 | name = "[CP] Embed Pods Frameworks"; 338 | outputFileListPaths = ( 339 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", 340 | ); 341 | runOnlyForDeploymentPostprocessing = 0; 342 | shellPath = /bin/sh; 343 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests-frameworks.sh\"\n"; 344 | showEnvVarsInLog = 0; 345 | }; 346 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { 347 | isa = PBXShellScriptBuildPhase; 348 | buildActionMask = 2147483647; 349 | files = ( 350 | ); 351 | inputFileListPaths = ( 352 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative-resources-${CONFIGURATION}-input-files.xcfilelist", 353 | ); 354 | name = "[CP] Copy Pods Resources"; 355 | outputFileListPaths = ( 356 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative-resources-${CONFIGURATION}-output-files.xcfilelist", 357 | ); 358 | runOnlyForDeploymentPostprocessing = 0; 359 | shellPath = /bin/sh; 360 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative/Pods-FalWithReactNative-resources.sh\"\n"; 361 | showEnvVarsInLog = 0; 362 | }; 363 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { 364 | isa = PBXShellScriptBuildPhase; 365 | buildActionMask = 2147483647; 366 | files = ( 367 | ); 368 | inputFileListPaths = ( 369 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests-resources-${CONFIGURATION}-input-files.xcfilelist", 370 | ); 371 | name = "[CP] Copy Pods Resources"; 372 | outputFileListPaths = ( 373 | "${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests-resources-${CONFIGURATION}-output-files.xcfilelist", 374 | ); 375 | runOnlyForDeploymentPostprocessing = 0; 376 | shellPath = /bin/sh; 377 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FalWithReactNative-FalWithReactNativeTests/Pods-FalWithReactNative-FalWithReactNativeTests-resources.sh\"\n"; 378 | showEnvVarsInLog = 0; 379 | }; 380 | /* End PBXShellScriptBuildPhase section */ 381 | 382 | /* Begin PBXSourcesBuildPhase section */ 383 | 00E356EA1AD99517003FC87E /* Sources */ = { 384 | isa = PBXSourcesBuildPhase; 385 | buildActionMask = 2147483647; 386 | files = ( 387 | 00E356F31AD99517003FC87E /* FalWithReactNativeTests.m in Sources */, 388 | ); 389 | runOnlyForDeploymentPostprocessing = 0; 390 | }; 391 | 13B07F871A680F5B00A75B9A /* Sources */ = { 392 | isa = PBXSourcesBuildPhase; 393 | buildActionMask = 2147483647; 394 | files = ( 395 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 396 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 397 | ); 398 | runOnlyForDeploymentPostprocessing = 0; 399 | }; 400 | /* End PBXSourcesBuildPhase section */ 401 | 402 | /* Begin PBXTargetDependency section */ 403 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 404 | isa = PBXTargetDependency; 405 | target = 13B07F861A680F5B00A75B9A /* FalWithReactNative */; 406 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 407 | }; 408 | /* End PBXTargetDependency section */ 409 | 410 | /* Begin XCBuildConfiguration section */ 411 | 00E356F61AD99517003FC87E /* Debug */ = { 412 | isa = XCBuildConfiguration; 413 | baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-FalWithReactNative-FalWithReactNativeTests.debug.xcconfig */; 414 | buildSettings = { 415 | BUNDLE_LOADER = "$(TEST_HOST)"; 416 | GCC_PREPROCESSOR_DEFINITIONS = ( 417 | "DEBUG=1", 418 | "$(inherited)", 419 | ); 420 | INFOPLIST_FILE = FalWithReactNativeTests/Info.plist; 421 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 422 | LD_RUNPATH_SEARCH_PATHS = ( 423 | "$(inherited)", 424 | "@executable_path/Frameworks", 425 | "@loader_path/Frameworks", 426 | ); 427 | OTHER_LDFLAGS = ( 428 | "-ObjC", 429 | "-lc++", 430 | "$(inherited)", 431 | ); 432 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 433 | PRODUCT_NAME = "$(TARGET_NAME)"; 434 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FalWithReactNative.app/FalWithReactNative"; 435 | }; 436 | name = Debug; 437 | }; 438 | 00E356F71AD99517003FC87E /* Release */ = { 439 | isa = XCBuildConfiguration; 440 | baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-FalWithReactNative-FalWithReactNativeTests.release.xcconfig */; 441 | buildSettings = { 442 | BUNDLE_LOADER = "$(TEST_HOST)"; 443 | COPY_PHASE_STRIP = NO; 444 | INFOPLIST_FILE = FalWithReactNativeTests/Info.plist; 445 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 446 | LD_RUNPATH_SEARCH_PATHS = ( 447 | "$(inherited)", 448 | "@executable_path/Frameworks", 449 | "@loader_path/Frameworks", 450 | ); 451 | OTHER_LDFLAGS = ( 452 | "-ObjC", 453 | "-lc++", 454 | "$(inherited)", 455 | ); 456 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 457 | PRODUCT_NAME = "$(TARGET_NAME)"; 458 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FalWithReactNative.app/FalWithReactNative"; 459 | }; 460 | name = Release; 461 | }; 462 | 13B07F941A680F5B00A75B9A /* Debug */ = { 463 | isa = XCBuildConfiguration; 464 | baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-FalWithReactNative.debug.xcconfig */; 465 | buildSettings = { 466 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 467 | CLANG_ENABLE_MODULES = YES; 468 | CURRENT_PROJECT_VERSION = 1; 469 | ENABLE_BITCODE = NO; 470 | INFOPLIST_FILE = FalWithReactNative/Info.plist; 471 | LD_RUNPATH_SEARCH_PATHS = ( 472 | "$(inherited)", 473 | "@executable_path/Frameworks", 474 | ); 475 | MARKETING_VERSION = 1.0; 476 | OTHER_LDFLAGS = ( 477 | "$(inherited)", 478 | "-ObjC", 479 | "-lc++", 480 | ); 481 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 482 | PRODUCT_NAME = FalWithReactNative; 483 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 484 | SWIFT_VERSION = 5.0; 485 | VERSIONING_SYSTEM = "apple-generic"; 486 | }; 487 | name = Debug; 488 | }; 489 | 13B07F951A680F5B00A75B9A /* Release */ = { 490 | isa = XCBuildConfiguration; 491 | baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-FalWithReactNative.release.xcconfig */; 492 | buildSettings = { 493 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 494 | CLANG_ENABLE_MODULES = YES; 495 | CURRENT_PROJECT_VERSION = 1; 496 | INFOPLIST_FILE = FalWithReactNative/Info.plist; 497 | LD_RUNPATH_SEARCH_PATHS = ( 498 | "$(inherited)", 499 | "@executable_path/Frameworks", 500 | ); 501 | MARKETING_VERSION = 1.0; 502 | OTHER_LDFLAGS = ( 503 | "$(inherited)", 504 | "-ObjC", 505 | "-lc++", 506 | ); 507 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 508 | PRODUCT_NAME = FalWithReactNative; 509 | SWIFT_VERSION = 5.0; 510 | VERSIONING_SYSTEM = "apple-generic"; 511 | }; 512 | name = Release; 513 | }; 514 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 515 | isa = XCBuildConfiguration; 516 | buildSettings = { 517 | ALWAYS_SEARCH_USER_PATHS = NO; 518 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 519 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 520 | CLANG_CXX_LIBRARY = "libc++"; 521 | CLANG_ENABLE_MODULES = YES; 522 | CLANG_ENABLE_OBJC_ARC = YES; 523 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 524 | CLANG_WARN_BOOL_CONVERSION = YES; 525 | CLANG_WARN_COMMA = YES; 526 | CLANG_WARN_CONSTANT_CONVERSION = YES; 527 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 528 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 529 | CLANG_WARN_EMPTY_BODY = YES; 530 | CLANG_WARN_ENUM_CONVERSION = YES; 531 | CLANG_WARN_INFINITE_RECURSION = YES; 532 | CLANG_WARN_INT_CONVERSION = YES; 533 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 534 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 535 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 536 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 537 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 538 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 539 | CLANG_WARN_STRICT_PROTOTYPES = YES; 540 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 541 | CLANG_WARN_UNREACHABLE_CODE = YES; 542 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 543 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 544 | COPY_PHASE_STRIP = NO; 545 | ENABLE_STRICT_OBJC_MSGSEND = YES; 546 | ENABLE_TESTABILITY = YES; 547 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 548 | GCC_C_LANGUAGE_STANDARD = gnu99; 549 | GCC_DYNAMIC_NO_PIC = NO; 550 | GCC_NO_COMMON_BLOCKS = YES; 551 | GCC_OPTIMIZATION_LEVEL = 0; 552 | GCC_PREPROCESSOR_DEFINITIONS = ( 553 | "DEBUG=1", 554 | "$(inherited)", 555 | ); 556 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 557 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 558 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 559 | GCC_WARN_UNDECLARED_SELECTOR = YES; 560 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 561 | GCC_WARN_UNUSED_FUNCTION = YES; 562 | GCC_WARN_UNUSED_VARIABLE = YES; 563 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 564 | LD_RUNPATH_SEARCH_PATHS = ( 565 | /usr/lib/swift, 566 | "$(inherited)", 567 | ); 568 | LIBRARY_SEARCH_PATHS = ( 569 | "\"$(SDKROOT)/usr/lib/swift\"", 570 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", 571 | "\"$(inherited)\"", 572 | ); 573 | MTL_ENABLE_DEBUG_INFO = YES; 574 | ONLY_ACTIVE_ARCH = YES; 575 | OTHER_CFLAGS = ( 576 | "$(inherited)", 577 | " ", 578 | ); 579 | OTHER_CPLUSPLUSFLAGS = ( 580 | "$(OTHER_CFLAGS)", 581 | "-DFOLLY_NO_CONFIG", 582 | "-DFOLLY_MOBILE=1", 583 | "-DFOLLY_USE_LIBCPP=1", 584 | "-DFOLLY_CFG_NO_COROUTINES=1", 585 | " ", 586 | ); 587 | OTHER_LDFLAGS = ( 588 | "$(inherited)", 589 | "-Wl", 590 | "-ld_classic", 591 | ); 592 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 593 | SDKROOT = iphoneos; 594 | USE_HERMES = true; 595 | }; 596 | name = Debug; 597 | }; 598 | 83CBBA211A601CBA00E9B192 /* Release */ = { 599 | isa = XCBuildConfiguration; 600 | buildSettings = { 601 | ALWAYS_SEARCH_USER_PATHS = NO; 602 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 603 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 604 | CLANG_CXX_LIBRARY = "libc++"; 605 | CLANG_ENABLE_MODULES = YES; 606 | CLANG_ENABLE_OBJC_ARC = YES; 607 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 608 | CLANG_WARN_BOOL_CONVERSION = YES; 609 | CLANG_WARN_COMMA = YES; 610 | CLANG_WARN_CONSTANT_CONVERSION = YES; 611 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 612 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 613 | CLANG_WARN_EMPTY_BODY = YES; 614 | CLANG_WARN_ENUM_CONVERSION = YES; 615 | CLANG_WARN_INFINITE_RECURSION = YES; 616 | CLANG_WARN_INT_CONVERSION = YES; 617 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 618 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 619 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 620 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 621 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 622 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 623 | CLANG_WARN_STRICT_PROTOTYPES = YES; 624 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 625 | CLANG_WARN_UNREACHABLE_CODE = YES; 626 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 627 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 628 | COPY_PHASE_STRIP = YES; 629 | ENABLE_NS_ASSERTIONS = NO; 630 | ENABLE_STRICT_OBJC_MSGSEND = YES; 631 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 632 | GCC_C_LANGUAGE_STANDARD = gnu99; 633 | GCC_NO_COMMON_BLOCKS = YES; 634 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 635 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 636 | GCC_WARN_UNDECLARED_SELECTOR = YES; 637 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 638 | GCC_WARN_UNUSED_FUNCTION = YES; 639 | GCC_WARN_UNUSED_VARIABLE = YES; 640 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 641 | LD_RUNPATH_SEARCH_PATHS = ( 642 | /usr/lib/swift, 643 | "$(inherited)", 644 | ); 645 | LIBRARY_SEARCH_PATHS = ( 646 | "\"$(SDKROOT)/usr/lib/swift\"", 647 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", 648 | "\"$(inherited)\"", 649 | ); 650 | MTL_ENABLE_DEBUG_INFO = NO; 651 | OTHER_CFLAGS = ( 652 | "$(inherited)", 653 | " ", 654 | ); 655 | OTHER_CPLUSPLUSFLAGS = ( 656 | "$(OTHER_CFLAGS)", 657 | "-DFOLLY_NO_CONFIG", 658 | "-DFOLLY_MOBILE=1", 659 | "-DFOLLY_USE_LIBCPP=1", 660 | "-DFOLLY_CFG_NO_COROUTINES=1", 661 | " ", 662 | ); 663 | OTHER_LDFLAGS = ( 664 | "$(inherited)", 665 | "-Wl", 666 | "-ld_classic", 667 | ); 668 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 669 | SDKROOT = iphoneos; 670 | USE_HERMES = true; 671 | VALIDATE_PRODUCT = YES; 672 | }; 673 | name = Release; 674 | }; 675 | /* End XCBuildConfiguration section */ 676 | 677 | /* Begin XCConfigurationList section */ 678 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FalWithReactNativeTests" */ = { 679 | isa = XCConfigurationList; 680 | buildConfigurations = ( 681 | 00E356F61AD99517003FC87E /* Debug */, 682 | 00E356F71AD99517003FC87E /* Release */, 683 | ); 684 | defaultConfigurationIsVisible = 0; 685 | defaultConfigurationName = Release; 686 | }; 687 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FalWithReactNative" */ = { 688 | isa = XCConfigurationList; 689 | buildConfigurations = ( 690 | 13B07F941A680F5B00A75B9A /* Debug */, 691 | 13B07F951A680F5B00A75B9A /* Release */, 692 | ); 693 | defaultConfigurationIsVisible = 0; 694 | defaultConfigurationName = Release; 695 | }; 696 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "FalWithReactNative" */ = { 697 | isa = XCConfigurationList; 698 | buildConfigurations = ( 699 | 83CBBA201A601CBA00E9B192 /* Debug */, 700 | 83CBBA211A601CBA00E9B192 /* Release */, 701 | ); 702 | defaultConfigurationIsVisible = 0; 703 | defaultConfigurationName = Release; 704 | }; 705 | /* End XCConfigurationList section */ 706 | }; 707 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 708 | } 709 | -------------------------------------------------------------------------------- /ios/FalWithReactNative.xcodeproj/xcshareddata/xcschemes/FalWithReactNative.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /ios/FalWithReactNative.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : RCTAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | #import 4 | 5 | @implementation AppDelegate 6 | 7 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 8 | { 9 | self.moduleName = @"FalWithReactNative"; 10 | // You can add your custom initial props in the dictionary below. 11 | // They will be passed down to the ViewController used by React Native. 12 | self.initialProps = @{}; 13 | 14 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 15 | } 16 | 17 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 18 | { 19 | return [self getBundleURL]; 20 | } 21 | 22 | - (NSURL *)getBundleURL 23 | { 24 | #if DEBUG 25 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; 26 | #else 27 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 28 | #endif 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "iphone", 5 | "scale": "2x", 6 | "size": "20x20" 7 | }, 8 | { 9 | "idiom": "iphone", 10 | "scale": "3x", 11 | "size": "20x20" 12 | }, 13 | { 14 | "idiom": "iphone", 15 | "scale": "2x", 16 | "size": "29x29" 17 | }, 18 | { 19 | "idiom": "iphone", 20 | "scale": "3x", 21 | "size": "29x29" 22 | }, 23 | { 24 | "idiom": "iphone", 25 | "scale": "2x", 26 | "size": "40x40" 27 | }, 28 | { 29 | "idiom": "iphone", 30 | "scale": "3x", 31 | "size": "40x40" 32 | }, 33 | { 34 | "idiom": "iphone", 35 | "scale": "2x", 36 | "size": "60x60" 37 | }, 38 | { 39 | "idiom": "iphone", 40 | "scale": "3x", 41 | "size": "60x60" 42 | }, 43 | { 44 | "idiom": "ios-marketing", 45 | "scale": "1x", 46 | "size": "1024x1024" 47 | } 48 | ], 49 | "info": { 50 | "author": "xcode", 51 | "version": 1 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "version": 1, 4 | "author": "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | FalWithReactNative 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(CURRENT_PROJECT_VERSION) 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | NSAllowsLocalNetworking 32 | 33 | 34 | NSLocationWhenInUseUsageDescription 35 | 36 | UILaunchStoryboardName 37 | LaunchScreen 38 | UIRequiredDeviceCapabilities 39 | 40 | armv7 41 | 42 | UISupportedInterfaceOrientations 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | UIViewControllerBasedStatusBarAppearance 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/FalWithReactNative/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | @autoreleasepool { 8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ios/FalWithReactNativeTests/FalWithReactNativeTests.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import 5 | #import 6 | 7 | #define TIMEOUT_SECONDS 600 8 | #define TEXT_TO_LOOK_FOR @"Welcome to React" 9 | 10 | @interface FalWithReactNativeTests : XCTestCase 11 | 12 | @end 13 | 14 | @implementation FalWithReactNativeTests 15 | 16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test 17 | { 18 | if (test(view)) { 19 | return YES; 20 | } 21 | for (UIView *subview in [view subviews]) { 22 | if ([self findSubviewInView:subview matching:test]) { 23 | return YES; 24 | } 25 | } 26 | return NO; 27 | } 28 | 29 | - (void)testRendersWelcomeScreen 30 | { 31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 33 | BOOL foundElement = NO; 34 | 35 | __block NSString *redboxError = nil; 36 | #ifdef DEBUG 37 | RCTSetLogFunction( 38 | ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 39 | if (level >= RCTLogLevelError) { 40 | redboxError = message; 41 | } 42 | }); 43 | #endif 44 | 45 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 46 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 47 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 48 | 49 | foundElement = [self findSubviewInView:vc.view 50 | matching:^BOOL(UIView *view) { 51 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 52 | return YES; 53 | } 54 | return NO; 55 | }]; 56 | } 57 | 58 | #ifdef DEBUG 59 | RCTSetLogFunction(RCTDefaultLogFunction); 60 | #endif 61 | 62 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 63 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /ios/FalWithReactNativeTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Resolve react_native_pods.rb with node to allow for hoisting 2 | require Pod::Executable.execute_command('node', ['-p', 3 | 'require.resolve( 4 | "react-native/scripts/react_native_pods.rb", 5 | {paths: [process.argv[1]]}, 6 | )', __dir__]).strip 7 | 8 | platform :ios, min_ios_version_supported 9 | prepare_react_native_project! 10 | 11 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 12 | # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded 13 | # 14 | # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` 15 | # ```js 16 | # module.exports = { 17 | # dependencies: { 18 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 19 | # ``` 20 | flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled 21 | 22 | linkage = ENV['USE_FRAMEWORKS'] 23 | if linkage != nil 24 | Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green 25 | use_frameworks! :linkage => linkage.to_sym 26 | end 27 | 28 | target 'FalWithReactNative' do 29 | config = use_native_modules! 30 | 31 | use_react_native!( 32 | :path => config[:reactNativePath], 33 | # Enables Flipper. 34 | # 35 | # Note that if you have use_frameworks! enabled, Flipper will not work and 36 | # you should disable the next line. 37 | :flipper_configuration => flipper_config, 38 | # An absolute path to your application root. 39 | :app_path => "#{Pod::Config.instance.installation_root}/.." 40 | ) 41 | 42 | target 'FalWithReactNativeTests' do 43 | inherit! :complete 44 | # Pods for testing 45 | end 46 | 47 | post_install do |installer| 48 | # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 49 | react_native_post_install( 50 | installer, 51 | config[:reactNativePath], 52 | :mac_catalyst_enabled => false 53 | ) 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.83.0) 3 | - CocoaAsyncSocket (7.6.5) 4 | - DoubleConversion (1.1.6) 5 | - FBLazyVector (0.73.0) 6 | - FBReactNativeSpec (0.73.0): 7 | - RCT-Folly (= 2022.05.16.00) 8 | - RCTRequired (= 0.73.0) 9 | - RCTTypeSafety (= 0.73.0) 10 | - React-Core (= 0.73.0) 11 | - React-jsi (= 0.73.0) 12 | - ReactCommon/turbomodule/core (= 0.73.0) 13 | - Flipper (0.201.0): 14 | - Flipper-Folly (~> 2.6) 15 | - Flipper-Boost-iOSX (1.76.0.1.11) 16 | - Flipper-DoubleConversion (3.2.0.1) 17 | - Flipper-Fmt (7.1.7) 18 | - Flipper-Folly (2.6.10): 19 | - Flipper-Boost-iOSX 20 | - Flipper-DoubleConversion 21 | - Flipper-Fmt (= 7.1.7) 22 | - Flipper-Glog 23 | - libevent (~> 2.1.12) 24 | - OpenSSL-Universal (= 1.1.1100) 25 | - Flipper-Glog (0.5.0.5) 26 | - Flipper-PeerTalk (0.0.4) 27 | - FlipperKit (0.201.0): 28 | - FlipperKit/Core (= 0.201.0) 29 | - FlipperKit/Core (0.201.0): 30 | - Flipper (~> 0.201.0) 31 | - FlipperKit/CppBridge 32 | - FlipperKit/FBCxxFollyDynamicConvert 33 | - FlipperKit/FBDefines 34 | - FlipperKit/FKPortForwarding 35 | - SocketRocket (~> 0.6.0) 36 | - FlipperKit/CppBridge (0.201.0): 37 | - Flipper (~> 0.201.0) 38 | - FlipperKit/FBCxxFollyDynamicConvert (0.201.0): 39 | - Flipper-Folly (~> 2.6) 40 | - FlipperKit/FBDefines (0.201.0) 41 | - FlipperKit/FKPortForwarding (0.201.0): 42 | - CocoaAsyncSocket (~> 7.6) 43 | - Flipper-PeerTalk (~> 0.0.4) 44 | - FlipperKit/FlipperKitHighlightOverlay (0.201.0) 45 | - FlipperKit/FlipperKitLayoutHelpers (0.201.0): 46 | - FlipperKit/Core 47 | - FlipperKit/FlipperKitHighlightOverlay 48 | - FlipperKit/FlipperKitLayoutTextSearchable 49 | - FlipperKit/FlipperKitLayoutIOSDescriptors (0.201.0): 50 | - FlipperKit/Core 51 | - FlipperKit/FlipperKitHighlightOverlay 52 | - FlipperKit/FlipperKitLayoutHelpers 53 | - FlipperKit/FlipperKitLayoutPlugin (0.201.0): 54 | - FlipperKit/Core 55 | - FlipperKit/FlipperKitHighlightOverlay 56 | - FlipperKit/FlipperKitLayoutHelpers 57 | - FlipperKit/FlipperKitLayoutIOSDescriptors 58 | - FlipperKit/FlipperKitLayoutTextSearchable 59 | - FlipperKit/FlipperKitLayoutTextSearchable (0.201.0) 60 | - FlipperKit/FlipperKitNetworkPlugin (0.201.0): 61 | - FlipperKit/Core 62 | - FlipperKit/FlipperKitReactPlugin (0.201.0): 63 | - FlipperKit/Core 64 | - FlipperKit/FlipperKitUserDefaultsPlugin (0.201.0): 65 | - FlipperKit/Core 66 | - FlipperKit/SKIOSNetworkPlugin (0.201.0): 67 | - FlipperKit/Core 68 | - FlipperKit/FlipperKitNetworkPlugin 69 | - fmt (6.2.1) 70 | - glog (0.3.5) 71 | - hermes-engine (0.73.0): 72 | - hermes-engine/Pre-built (= 0.73.0) 73 | - hermes-engine/Pre-built (0.73.0) 74 | - libevent (2.1.12) 75 | - OpenSSL-Universal (1.1.1100) 76 | - RCT-Folly (2022.05.16.00): 77 | - boost 78 | - DoubleConversion 79 | - fmt (~> 6.2.1) 80 | - glog 81 | - RCT-Folly/Default (= 2022.05.16.00) 82 | - RCT-Folly/Default (2022.05.16.00): 83 | - boost 84 | - DoubleConversion 85 | - fmt (~> 6.2.1) 86 | - glog 87 | - RCT-Folly/Fabric (2022.05.16.00): 88 | - boost 89 | - DoubleConversion 90 | - fmt (~> 6.2.1) 91 | - glog 92 | - RCT-Folly/Futures (2022.05.16.00): 93 | - boost 94 | - DoubleConversion 95 | - fmt (~> 6.2.1) 96 | - glog 97 | - libevent 98 | - RCTRequired (0.73.0) 99 | - RCTTypeSafety (0.73.0): 100 | - FBLazyVector (= 0.73.0) 101 | - RCTRequired (= 0.73.0) 102 | - React-Core (= 0.73.0) 103 | - React (0.73.0): 104 | - React-Core (= 0.73.0) 105 | - React-Core/DevSupport (= 0.73.0) 106 | - React-Core/RCTWebSocket (= 0.73.0) 107 | - React-RCTActionSheet (= 0.73.0) 108 | - React-RCTAnimation (= 0.73.0) 109 | - React-RCTBlob (= 0.73.0) 110 | - React-RCTImage (= 0.73.0) 111 | - React-RCTLinking (= 0.73.0) 112 | - React-RCTNetwork (= 0.73.0) 113 | - React-RCTSettings (= 0.73.0) 114 | - React-RCTText (= 0.73.0) 115 | - React-RCTVibration (= 0.73.0) 116 | - React-callinvoker (0.73.0) 117 | - React-Codegen (0.73.0): 118 | - DoubleConversion 119 | - FBReactNativeSpec 120 | - glog 121 | - hermes-engine 122 | - RCT-Folly 123 | - RCTRequired 124 | - RCTTypeSafety 125 | - React-Core 126 | - React-jsi 127 | - React-jsiexecutor 128 | - React-NativeModulesApple 129 | - React-rncore 130 | - ReactCommon/turbomodule/bridging 131 | - ReactCommon/turbomodule/core 132 | - React-Core (0.73.0): 133 | - glog 134 | - hermes-engine 135 | - RCT-Folly (= 2022.05.16.00) 136 | - React-Core/Default (= 0.73.0) 137 | - React-cxxreact 138 | - React-hermes 139 | - React-jsi 140 | - React-jsiexecutor 141 | - React-perflogger 142 | - React-runtimescheduler 143 | - React-utils 144 | - SocketRocket (= 0.6.1) 145 | - Yoga 146 | - React-Core/CoreModulesHeaders (0.73.0): 147 | - glog 148 | - hermes-engine 149 | - RCT-Folly (= 2022.05.16.00) 150 | - React-Core/Default 151 | - React-cxxreact 152 | - React-hermes 153 | - React-jsi 154 | - React-jsiexecutor 155 | - React-perflogger 156 | - React-runtimescheduler 157 | - React-utils 158 | - SocketRocket (= 0.6.1) 159 | - Yoga 160 | - React-Core/Default (0.73.0): 161 | - glog 162 | - hermes-engine 163 | - RCT-Folly (= 2022.05.16.00) 164 | - React-cxxreact 165 | - React-hermes 166 | - React-jsi 167 | - React-jsiexecutor 168 | - React-perflogger 169 | - React-runtimescheduler 170 | - React-utils 171 | - SocketRocket (= 0.6.1) 172 | - Yoga 173 | - React-Core/DevSupport (0.73.0): 174 | - glog 175 | - hermes-engine 176 | - RCT-Folly (= 2022.05.16.00) 177 | - React-Core/Default (= 0.73.0) 178 | - React-Core/RCTWebSocket (= 0.73.0) 179 | - React-cxxreact 180 | - React-hermes 181 | - React-jsi 182 | - React-jsiexecutor 183 | - React-jsinspector (= 0.73.0) 184 | - React-perflogger 185 | - React-runtimescheduler 186 | - React-utils 187 | - SocketRocket (= 0.6.1) 188 | - Yoga 189 | - React-Core/RCTActionSheetHeaders (0.73.0): 190 | - glog 191 | - hermes-engine 192 | - RCT-Folly (= 2022.05.16.00) 193 | - React-Core/Default 194 | - React-cxxreact 195 | - React-hermes 196 | - React-jsi 197 | - React-jsiexecutor 198 | - React-perflogger 199 | - React-runtimescheduler 200 | - React-utils 201 | - SocketRocket (= 0.6.1) 202 | - Yoga 203 | - React-Core/RCTAnimationHeaders (0.73.0): 204 | - glog 205 | - hermes-engine 206 | - RCT-Folly (= 2022.05.16.00) 207 | - React-Core/Default 208 | - React-cxxreact 209 | - React-hermes 210 | - React-jsi 211 | - React-jsiexecutor 212 | - React-perflogger 213 | - React-runtimescheduler 214 | - React-utils 215 | - SocketRocket (= 0.6.1) 216 | - Yoga 217 | - React-Core/RCTBlobHeaders (0.73.0): 218 | - glog 219 | - hermes-engine 220 | - RCT-Folly (= 2022.05.16.00) 221 | - React-Core/Default 222 | - React-cxxreact 223 | - React-hermes 224 | - React-jsi 225 | - React-jsiexecutor 226 | - React-perflogger 227 | - React-runtimescheduler 228 | - React-utils 229 | - SocketRocket (= 0.6.1) 230 | - Yoga 231 | - React-Core/RCTImageHeaders (0.73.0): 232 | - glog 233 | - hermes-engine 234 | - RCT-Folly (= 2022.05.16.00) 235 | - React-Core/Default 236 | - React-cxxreact 237 | - React-hermes 238 | - React-jsi 239 | - React-jsiexecutor 240 | - React-perflogger 241 | - React-runtimescheduler 242 | - React-utils 243 | - SocketRocket (= 0.6.1) 244 | - Yoga 245 | - React-Core/RCTLinkingHeaders (0.73.0): 246 | - glog 247 | - hermes-engine 248 | - RCT-Folly (= 2022.05.16.00) 249 | - React-Core/Default 250 | - React-cxxreact 251 | - React-hermes 252 | - React-jsi 253 | - React-jsiexecutor 254 | - React-perflogger 255 | - React-runtimescheduler 256 | - React-utils 257 | - SocketRocket (= 0.6.1) 258 | - Yoga 259 | - React-Core/RCTNetworkHeaders (0.73.0): 260 | - glog 261 | - hermes-engine 262 | - RCT-Folly (= 2022.05.16.00) 263 | - React-Core/Default 264 | - React-cxxreact 265 | - React-hermes 266 | - React-jsi 267 | - React-jsiexecutor 268 | - React-perflogger 269 | - React-runtimescheduler 270 | - React-utils 271 | - SocketRocket (= 0.6.1) 272 | - Yoga 273 | - React-Core/RCTSettingsHeaders (0.73.0): 274 | - glog 275 | - hermes-engine 276 | - RCT-Folly (= 2022.05.16.00) 277 | - React-Core/Default 278 | - React-cxxreact 279 | - React-hermes 280 | - React-jsi 281 | - React-jsiexecutor 282 | - React-perflogger 283 | - React-runtimescheduler 284 | - React-utils 285 | - SocketRocket (= 0.6.1) 286 | - Yoga 287 | - React-Core/RCTTextHeaders (0.73.0): 288 | - glog 289 | - hermes-engine 290 | - RCT-Folly (= 2022.05.16.00) 291 | - React-Core/Default 292 | - React-cxxreact 293 | - React-hermes 294 | - React-jsi 295 | - React-jsiexecutor 296 | - React-perflogger 297 | - React-runtimescheduler 298 | - React-utils 299 | - SocketRocket (= 0.6.1) 300 | - Yoga 301 | - React-Core/RCTVibrationHeaders (0.73.0): 302 | - glog 303 | - hermes-engine 304 | - RCT-Folly (= 2022.05.16.00) 305 | - React-Core/Default 306 | - React-cxxreact 307 | - React-hermes 308 | - React-jsi 309 | - React-jsiexecutor 310 | - React-perflogger 311 | - React-runtimescheduler 312 | - React-utils 313 | - SocketRocket (= 0.6.1) 314 | - Yoga 315 | - React-Core/RCTWebSocket (0.73.0): 316 | - glog 317 | - hermes-engine 318 | - RCT-Folly (= 2022.05.16.00) 319 | - React-Core/Default (= 0.73.0) 320 | - React-cxxreact 321 | - React-hermes 322 | - React-jsi 323 | - React-jsiexecutor 324 | - React-perflogger 325 | - React-runtimescheduler 326 | - React-utils 327 | - SocketRocket (= 0.6.1) 328 | - Yoga 329 | - React-CoreModules (0.73.0): 330 | - RCT-Folly (= 2022.05.16.00) 331 | - RCTTypeSafety (= 0.73.0) 332 | - React-Codegen 333 | - React-Core/CoreModulesHeaders (= 0.73.0) 334 | - React-jsi (= 0.73.0) 335 | - React-NativeModulesApple 336 | - React-RCTBlob 337 | - React-RCTImage (= 0.73.0) 338 | - ReactCommon 339 | - SocketRocket (= 0.6.1) 340 | - React-cxxreact (0.73.0): 341 | - boost (= 1.83.0) 342 | - DoubleConversion 343 | - fmt (~> 6.2.1) 344 | - glog 345 | - hermes-engine 346 | - RCT-Folly (= 2022.05.16.00) 347 | - React-callinvoker (= 0.73.0) 348 | - React-debug (= 0.73.0) 349 | - React-jsi (= 0.73.0) 350 | - React-jsinspector (= 0.73.0) 351 | - React-logger (= 0.73.0) 352 | - React-perflogger (= 0.73.0) 353 | - React-runtimeexecutor (= 0.73.0) 354 | - React-debug (0.73.0) 355 | - React-Fabric (0.73.0): 356 | - DoubleConversion 357 | - fmt (~> 6.2.1) 358 | - glog 359 | - hermes-engine 360 | - RCT-Folly/Fabric (= 2022.05.16.00) 361 | - RCTRequired 362 | - RCTTypeSafety 363 | - React-Core 364 | - React-cxxreact 365 | - React-debug 366 | - React-Fabric/animations (= 0.73.0) 367 | - React-Fabric/attributedstring (= 0.73.0) 368 | - React-Fabric/componentregistry (= 0.73.0) 369 | - React-Fabric/componentregistrynative (= 0.73.0) 370 | - React-Fabric/components (= 0.73.0) 371 | - React-Fabric/core (= 0.73.0) 372 | - React-Fabric/imagemanager (= 0.73.0) 373 | - React-Fabric/leakchecker (= 0.73.0) 374 | - React-Fabric/mounting (= 0.73.0) 375 | - React-Fabric/scheduler (= 0.73.0) 376 | - React-Fabric/telemetry (= 0.73.0) 377 | - React-Fabric/templateprocessor (= 0.73.0) 378 | - React-Fabric/textlayoutmanager (= 0.73.0) 379 | - React-Fabric/uimanager (= 0.73.0) 380 | - React-graphics 381 | - React-jsi 382 | - React-jsiexecutor 383 | - React-logger 384 | - React-rendererdebug 385 | - React-runtimescheduler 386 | - React-utils 387 | - ReactCommon/turbomodule/core 388 | - React-Fabric/animations (0.73.0): 389 | - DoubleConversion 390 | - fmt (~> 6.2.1) 391 | - glog 392 | - hermes-engine 393 | - RCT-Folly/Fabric (= 2022.05.16.00) 394 | - RCTRequired 395 | - RCTTypeSafety 396 | - React-Core 397 | - React-cxxreact 398 | - React-debug 399 | - React-graphics 400 | - React-jsi 401 | - React-jsiexecutor 402 | - React-logger 403 | - React-rendererdebug 404 | - React-runtimescheduler 405 | - React-utils 406 | - ReactCommon/turbomodule/core 407 | - React-Fabric/attributedstring (0.73.0): 408 | - DoubleConversion 409 | - fmt (~> 6.2.1) 410 | - glog 411 | - hermes-engine 412 | - RCT-Folly/Fabric (= 2022.05.16.00) 413 | - RCTRequired 414 | - RCTTypeSafety 415 | - React-Core 416 | - React-cxxreact 417 | - React-debug 418 | - React-graphics 419 | - React-jsi 420 | - React-jsiexecutor 421 | - React-logger 422 | - React-rendererdebug 423 | - React-runtimescheduler 424 | - React-utils 425 | - ReactCommon/turbomodule/core 426 | - React-Fabric/componentregistry (0.73.0): 427 | - DoubleConversion 428 | - fmt (~> 6.2.1) 429 | - glog 430 | - hermes-engine 431 | - RCT-Folly/Fabric (= 2022.05.16.00) 432 | - RCTRequired 433 | - RCTTypeSafety 434 | - React-Core 435 | - React-cxxreact 436 | - React-debug 437 | - React-graphics 438 | - React-jsi 439 | - React-jsiexecutor 440 | - React-logger 441 | - React-rendererdebug 442 | - React-runtimescheduler 443 | - React-utils 444 | - ReactCommon/turbomodule/core 445 | - React-Fabric/componentregistrynative (0.73.0): 446 | - DoubleConversion 447 | - fmt (~> 6.2.1) 448 | - glog 449 | - hermes-engine 450 | - RCT-Folly/Fabric (= 2022.05.16.00) 451 | - RCTRequired 452 | - RCTTypeSafety 453 | - React-Core 454 | - React-cxxreact 455 | - React-debug 456 | - React-graphics 457 | - React-jsi 458 | - React-jsiexecutor 459 | - React-logger 460 | - React-rendererdebug 461 | - React-runtimescheduler 462 | - React-utils 463 | - ReactCommon/turbomodule/core 464 | - React-Fabric/components (0.73.0): 465 | - DoubleConversion 466 | - fmt (~> 6.2.1) 467 | - glog 468 | - hermes-engine 469 | - RCT-Folly/Fabric (= 2022.05.16.00) 470 | - RCTRequired 471 | - RCTTypeSafety 472 | - React-Core 473 | - React-cxxreact 474 | - React-debug 475 | - React-Fabric/components/inputaccessory (= 0.73.0) 476 | - React-Fabric/components/legacyviewmanagerinterop (= 0.73.0) 477 | - React-Fabric/components/modal (= 0.73.0) 478 | - React-Fabric/components/rncore (= 0.73.0) 479 | - React-Fabric/components/root (= 0.73.0) 480 | - React-Fabric/components/safeareaview (= 0.73.0) 481 | - React-Fabric/components/scrollview (= 0.73.0) 482 | - React-Fabric/components/text (= 0.73.0) 483 | - React-Fabric/components/textinput (= 0.73.0) 484 | - React-Fabric/components/unimplementedview (= 0.73.0) 485 | - React-Fabric/components/view (= 0.73.0) 486 | - React-graphics 487 | - React-jsi 488 | - React-jsiexecutor 489 | - React-logger 490 | - React-rendererdebug 491 | - React-runtimescheduler 492 | - React-utils 493 | - ReactCommon/turbomodule/core 494 | - React-Fabric/components/inputaccessory (0.73.0): 495 | - DoubleConversion 496 | - fmt (~> 6.2.1) 497 | - glog 498 | - hermes-engine 499 | - RCT-Folly/Fabric (= 2022.05.16.00) 500 | - RCTRequired 501 | - RCTTypeSafety 502 | - React-Core 503 | - React-cxxreact 504 | - React-debug 505 | - React-graphics 506 | - React-jsi 507 | - React-jsiexecutor 508 | - React-logger 509 | - React-rendererdebug 510 | - React-runtimescheduler 511 | - React-utils 512 | - ReactCommon/turbomodule/core 513 | - React-Fabric/components/legacyviewmanagerinterop (0.73.0): 514 | - DoubleConversion 515 | - fmt (~> 6.2.1) 516 | - glog 517 | - hermes-engine 518 | - RCT-Folly/Fabric (= 2022.05.16.00) 519 | - RCTRequired 520 | - RCTTypeSafety 521 | - React-Core 522 | - React-cxxreact 523 | - React-debug 524 | - React-graphics 525 | - React-jsi 526 | - React-jsiexecutor 527 | - React-logger 528 | - React-rendererdebug 529 | - React-runtimescheduler 530 | - React-utils 531 | - ReactCommon/turbomodule/core 532 | - React-Fabric/components/modal (0.73.0): 533 | - DoubleConversion 534 | - fmt (~> 6.2.1) 535 | - glog 536 | - hermes-engine 537 | - RCT-Folly/Fabric (= 2022.05.16.00) 538 | - RCTRequired 539 | - RCTTypeSafety 540 | - React-Core 541 | - React-cxxreact 542 | - React-debug 543 | - React-graphics 544 | - React-jsi 545 | - React-jsiexecutor 546 | - React-logger 547 | - React-rendererdebug 548 | - React-runtimescheduler 549 | - React-utils 550 | - ReactCommon/turbomodule/core 551 | - React-Fabric/components/rncore (0.73.0): 552 | - DoubleConversion 553 | - fmt (~> 6.2.1) 554 | - glog 555 | - hermes-engine 556 | - RCT-Folly/Fabric (= 2022.05.16.00) 557 | - RCTRequired 558 | - RCTTypeSafety 559 | - React-Core 560 | - React-cxxreact 561 | - React-debug 562 | - React-graphics 563 | - React-jsi 564 | - React-jsiexecutor 565 | - React-logger 566 | - React-rendererdebug 567 | - React-runtimescheduler 568 | - React-utils 569 | - ReactCommon/turbomodule/core 570 | - React-Fabric/components/root (0.73.0): 571 | - DoubleConversion 572 | - fmt (~> 6.2.1) 573 | - glog 574 | - hermes-engine 575 | - RCT-Folly/Fabric (= 2022.05.16.00) 576 | - RCTRequired 577 | - RCTTypeSafety 578 | - React-Core 579 | - React-cxxreact 580 | - React-debug 581 | - React-graphics 582 | - React-jsi 583 | - React-jsiexecutor 584 | - React-logger 585 | - React-rendererdebug 586 | - React-runtimescheduler 587 | - React-utils 588 | - ReactCommon/turbomodule/core 589 | - React-Fabric/components/safeareaview (0.73.0): 590 | - DoubleConversion 591 | - fmt (~> 6.2.1) 592 | - glog 593 | - hermes-engine 594 | - RCT-Folly/Fabric (= 2022.05.16.00) 595 | - RCTRequired 596 | - RCTTypeSafety 597 | - React-Core 598 | - React-cxxreact 599 | - React-debug 600 | - React-graphics 601 | - React-jsi 602 | - React-jsiexecutor 603 | - React-logger 604 | - React-rendererdebug 605 | - React-runtimescheduler 606 | - React-utils 607 | - ReactCommon/turbomodule/core 608 | - React-Fabric/components/scrollview (0.73.0): 609 | - DoubleConversion 610 | - fmt (~> 6.2.1) 611 | - glog 612 | - hermes-engine 613 | - RCT-Folly/Fabric (= 2022.05.16.00) 614 | - RCTRequired 615 | - RCTTypeSafety 616 | - React-Core 617 | - React-cxxreact 618 | - React-debug 619 | - React-graphics 620 | - React-jsi 621 | - React-jsiexecutor 622 | - React-logger 623 | - React-rendererdebug 624 | - React-runtimescheduler 625 | - React-utils 626 | - ReactCommon/turbomodule/core 627 | - React-Fabric/components/text (0.73.0): 628 | - DoubleConversion 629 | - fmt (~> 6.2.1) 630 | - glog 631 | - hermes-engine 632 | - RCT-Folly/Fabric (= 2022.05.16.00) 633 | - RCTRequired 634 | - RCTTypeSafety 635 | - React-Core 636 | - React-cxxreact 637 | - React-debug 638 | - React-graphics 639 | - React-jsi 640 | - React-jsiexecutor 641 | - React-logger 642 | - React-rendererdebug 643 | - React-runtimescheduler 644 | - React-utils 645 | - ReactCommon/turbomodule/core 646 | - React-Fabric/components/textinput (0.73.0): 647 | - DoubleConversion 648 | - fmt (~> 6.2.1) 649 | - glog 650 | - hermes-engine 651 | - RCT-Folly/Fabric (= 2022.05.16.00) 652 | - RCTRequired 653 | - RCTTypeSafety 654 | - React-Core 655 | - React-cxxreact 656 | - React-debug 657 | - React-graphics 658 | - React-jsi 659 | - React-jsiexecutor 660 | - React-logger 661 | - React-rendererdebug 662 | - React-runtimescheduler 663 | - React-utils 664 | - ReactCommon/turbomodule/core 665 | - React-Fabric/components/unimplementedview (0.73.0): 666 | - DoubleConversion 667 | - fmt (~> 6.2.1) 668 | - glog 669 | - hermes-engine 670 | - RCT-Folly/Fabric (= 2022.05.16.00) 671 | - RCTRequired 672 | - RCTTypeSafety 673 | - React-Core 674 | - React-cxxreact 675 | - React-debug 676 | - React-graphics 677 | - React-jsi 678 | - React-jsiexecutor 679 | - React-logger 680 | - React-rendererdebug 681 | - React-runtimescheduler 682 | - React-utils 683 | - ReactCommon/turbomodule/core 684 | - React-Fabric/components/view (0.73.0): 685 | - DoubleConversion 686 | - fmt (~> 6.2.1) 687 | - glog 688 | - hermes-engine 689 | - RCT-Folly/Fabric (= 2022.05.16.00) 690 | - RCTRequired 691 | - RCTTypeSafety 692 | - React-Core 693 | - React-cxxreact 694 | - React-debug 695 | - React-graphics 696 | - React-jsi 697 | - React-jsiexecutor 698 | - React-logger 699 | - React-rendererdebug 700 | - React-runtimescheduler 701 | - React-utils 702 | - ReactCommon/turbomodule/core 703 | - Yoga 704 | - React-Fabric/core (0.73.0): 705 | - DoubleConversion 706 | - fmt (~> 6.2.1) 707 | - glog 708 | - hermes-engine 709 | - RCT-Folly/Fabric (= 2022.05.16.00) 710 | - RCTRequired 711 | - RCTTypeSafety 712 | - React-Core 713 | - React-cxxreact 714 | - React-debug 715 | - React-graphics 716 | - React-jsi 717 | - React-jsiexecutor 718 | - React-logger 719 | - React-rendererdebug 720 | - React-runtimescheduler 721 | - React-utils 722 | - ReactCommon/turbomodule/core 723 | - React-Fabric/imagemanager (0.73.0): 724 | - DoubleConversion 725 | - fmt (~> 6.2.1) 726 | - glog 727 | - hermes-engine 728 | - RCT-Folly/Fabric (= 2022.05.16.00) 729 | - RCTRequired 730 | - RCTTypeSafety 731 | - React-Core 732 | - React-cxxreact 733 | - React-debug 734 | - React-graphics 735 | - React-jsi 736 | - React-jsiexecutor 737 | - React-logger 738 | - React-rendererdebug 739 | - React-runtimescheduler 740 | - React-utils 741 | - ReactCommon/turbomodule/core 742 | - React-Fabric/leakchecker (0.73.0): 743 | - DoubleConversion 744 | - fmt (~> 6.2.1) 745 | - glog 746 | - hermes-engine 747 | - RCT-Folly/Fabric (= 2022.05.16.00) 748 | - RCTRequired 749 | - RCTTypeSafety 750 | - React-Core 751 | - React-cxxreact 752 | - React-debug 753 | - React-graphics 754 | - React-jsi 755 | - React-jsiexecutor 756 | - React-logger 757 | - React-rendererdebug 758 | - React-runtimescheduler 759 | - React-utils 760 | - ReactCommon/turbomodule/core 761 | - React-Fabric/mounting (0.73.0): 762 | - DoubleConversion 763 | - fmt (~> 6.2.1) 764 | - glog 765 | - hermes-engine 766 | - RCT-Folly/Fabric (= 2022.05.16.00) 767 | - RCTRequired 768 | - RCTTypeSafety 769 | - React-Core 770 | - React-cxxreact 771 | - React-debug 772 | - React-graphics 773 | - React-jsi 774 | - React-jsiexecutor 775 | - React-logger 776 | - React-rendererdebug 777 | - React-runtimescheduler 778 | - React-utils 779 | - ReactCommon/turbomodule/core 780 | - React-Fabric/scheduler (0.73.0): 781 | - DoubleConversion 782 | - fmt (~> 6.2.1) 783 | - glog 784 | - hermes-engine 785 | - RCT-Folly/Fabric (= 2022.05.16.00) 786 | - RCTRequired 787 | - RCTTypeSafety 788 | - React-Core 789 | - React-cxxreact 790 | - React-debug 791 | - React-graphics 792 | - React-jsi 793 | - React-jsiexecutor 794 | - React-logger 795 | - React-rendererdebug 796 | - React-runtimescheduler 797 | - React-utils 798 | - ReactCommon/turbomodule/core 799 | - React-Fabric/telemetry (0.73.0): 800 | - DoubleConversion 801 | - fmt (~> 6.2.1) 802 | - glog 803 | - hermes-engine 804 | - RCT-Folly/Fabric (= 2022.05.16.00) 805 | - RCTRequired 806 | - RCTTypeSafety 807 | - React-Core 808 | - React-cxxreact 809 | - React-debug 810 | - React-graphics 811 | - React-jsi 812 | - React-jsiexecutor 813 | - React-logger 814 | - React-rendererdebug 815 | - React-runtimescheduler 816 | - React-utils 817 | - ReactCommon/turbomodule/core 818 | - React-Fabric/templateprocessor (0.73.0): 819 | - DoubleConversion 820 | - fmt (~> 6.2.1) 821 | - glog 822 | - hermes-engine 823 | - RCT-Folly/Fabric (= 2022.05.16.00) 824 | - RCTRequired 825 | - RCTTypeSafety 826 | - React-Core 827 | - React-cxxreact 828 | - React-debug 829 | - React-graphics 830 | - React-jsi 831 | - React-jsiexecutor 832 | - React-logger 833 | - React-rendererdebug 834 | - React-runtimescheduler 835 | - React-utils 836 | - ReactCommon/turbomodule/core 837 | - React-Fabric/textlayoutmanager (0.73.0): 838 | - DoubleConversion 839 | - fmt (~> 6.2.1) 840 | - glog 841 | - hermes-engine 842 | - RCT-Folly/Fabric (= 2022.05.16.00) 843 | - RCTRequired 844 | - RCTTypeSafety 845 | - React-Core 846 | - React-cxxreact 847 | - React-debug 848 | - React-Fabric/uimanager 849 | - React-graphics 850 | - React-jsi 851 | - React-jsiexecutor 852 | - React-logger 853 | - React-rendererdebug 854 | - React-runtimescheduler 855 | - React-utils 856 | - ReactCommon/turbomodule/core 857 | - React-Fabric/uimanager (0.73.0): 858 | - DoubleConversion 859 | - fmt (~> 6.2.1) 860 | - glog 861 | - hermes-engine 862 | - RCT-Folly/Fabric (= 2022.05.16.00) 863 | - RCTRequired 864 | - RCTTypeSafety 865 | - React-Core 866 | - React-cxxreact 867 | - React-debug 868 | - React-graphics 869 | - React-jsi 870 | - React-jsiexecutor 871 | - React-logger 872 | - React-rendererdebug 873 | - React-runtimescheduler 874 | - React-utils 875 | - ReactCommon/turbomodule/core 876 | - React-FabricImage (0.73.0): 877 | - DoubleConversion 878 | - fmt (~> 6.2.1) 879 | - glog 880 | - hermes-engine 881 | - RCT-Folly/Fabric (= 2022.05.16.00) 882 | - RCTRequired (= 0.73.0) 883 | - RCTTypeSafety (= 0.73.0) 884 | - React-Fabric 885 | - React-graphics 886 | - React-ImageManager 887 | - React-jsi 888 | - React-jsiexecutor (= 0.73.0) 889 | - React-logger 890 | - React-rendererdebug 891 | - React-utils 892 | - ReactCommon 893 | - Yoga 894 | - React-graphics (0.73.0): 895 | - glog 896 | - RCT-Folly/Fabric (= 2022.05.16.00) 897 | - React-Core/Default (= 0.73.0) 898 | - React-utils 899 | - React-hermes (0.73.0): 900 | - DoubleConversion 901 | - fmt (~> 6.2.1) 902 | - glog 903 | - hermes-engine 904 | - RCT-Folly (= 2022.05.16.00) 905 | - RCT-Folly/Futures (= 2022.05.16.00) 906 | - React-cxxreact (= 0.73.0) 907 | - React-jsi 908 | - React-jsiexecutor (= 0.73.0) 909 | - React-jsinspector (= 0.73.0) 910 | - React-perflogger (= 0.73.0) 911 | - React-ImageManager (0.73.0): 912 | - glog 913 | - RCT-Folly/Fabric 914 | - React-Core/Default 915 | - React-debug 916 | - React-Fabric 917 | - React-graphics 918 | - React-rendererdebug 919 | - React-utils 920 | - React-jserrorhandler (0.73.0): 921 | - RCT-Folly/Fabric (= 2022.05.16.00) 922 | - React-debug 923 | - React-jsi 924 | - React-Mapbuffer 925 | - React-jsi (0.73.0): 926 | - boost (= 1.83.0) 927 | - DoubleConversion 928 | - fmt (~> 6.2.1) 929 | - glog 930 | - hermes-engine 931 | - RCT-Folly (= 2022.05.16.00) 932 | - React-jsiexecutor (0.73.0): 933 | - DoubleConversion 934 | - fmt (~> 6.2.1) 935 | - glog 936 | - hermes-engine 937 | - RCT-Folly (= 2022.05.16.00) 938 | - React-cxxreact (= 0.73.0) 939 | - React-jsi (= 0.73.0) 940 | - React-perflogger (= 0.73.0) 941 | - React-jsinspector (0.73.0) 942 | - React-logger (0.73.0): 943 | - glog 944 | - React-Mapbuffer (0.73.0): 945 | - glog 946 | - React-debug 947 | - react-native-safe-area-context (4.8.1): 948 | - React-Core 949 | - react-native-skia (0.1.230): 950 | - glog 951 | - RCT-Folly (= 2022.05.16.00) 952 | - React 953 | - React-callinvoker 954 | - React-Core 955 | - React-nativeconfig (0.73.0) 956 | - React-NativeModulesApple (0.73.0): 957 | - glog 958 | - hermes-engine 959 | - React-callinvoker 960 | - React-Core 961 | - React-cxxreact 962 | - React-jsi 963 | - React-runtimeexecutor 964 | - ReactCommon/turbomodule/bridging 965 | - ReactCommon/turbomodule/core 966 | - React-perflogger (0.73.0) 967 | - React-RCTActionSheet (0.73.0): 968 | - React-Core/RCTActionSheetHeaders (= 0.73.0) 969 | - React-RCTAnimation (0.73.0): 970 | - RCT-Folly (= 2022.05.16.00) 971 | - RCTTypeSafety 972 | - React-Codegen 973 | - React-Core/RCTAnimationHeaders 974 | - React-jsi 975 | - React-NativeModulesApple 976 | - ReactCommon 977 | - React-RCTAppDelegate (0.73.0): 978 | - RCT-Folly 979 | - RCTRequired 980 | - RCTTypeSafety 981 | - React-Core 982 | - React-CoreModules 983 | - React-hermes 984 | - React-nativeconfig 985 | - React-NativeModulesApple 986 | - React-RCTFabric 987 | - React-RCTImage 988 | - React-RCTNetwork 989 | - React-runtimescheduler 990 | - ReactCommon 991 | - React-RCTBlob (0.73.0): 992 | - hermes-engine 993 | - RCT-Folly (= 2022.05.16.00) 994 | - React-Codegen 995 | - React-Core/RCTBlobHeaders 996 | - React-Core/RCTWebSocket 997 | - React-jsi 998 | - React-NativeModulesApple 999 | - React-RCTNetwork 1000 | - ReactCommon 1001 | - React-RCTFabric (0.73.0): 1002 | - glog 1003 | - hermes-engine 1004 | - RCT-Folly/Fabric (= 2022.05.16.00) 1005 | - React-Core 1006 | - React-debug 1007 | - React-Fabric 1008 | - React-FabricImage 1009 | - React-graphics 1010 | - React-ImageManager 1011 | - React-jsi 1012 | - React-nativeconfig 1013 | - React-RCTImage 1014 | - React-RCTText 1015 | - React-rendererdebug 1016 | - React-runtimescheduler 1017 | - React-utils 1018 | - Yoga 1019 | - React-RCTImage (0.73.0): 1020 | - RCT-Folly (= 2022.05.16.00) 1021 | - RCTTypeSafety 1022 | - React-Codegen 1023 | - React-Core/RCTImageHeaders 1024 | - React-jsi 1025 | - React-NativeModulesApple 1026 | - React-RCTNetwork 1027 | - ReactCommon 1028 | - React-RCTLinking (0.73.0): 1029 | - React-Codegen 1030 | - React-Core/RCTLinkingHeaders (= 0.73.0) 1031 | - React-jsi (= 0.73.0) 1032 | - React-NativeModulesApple 1033 | - ReactCommon 1034 | - ReactCommon/turbomodule/core (= 0.73.0) 1035 | - React-RCTNetwork (0.73.0): 1036 | - RCT-Folly (= 2022.05.16.00) 1037 | - RCTTypeSafety 1038 | - React-Codegen 1039 | - React-Core/RCTNetworkHeaders 1040 | - React-jsi 1041 | - React-NativeModulesApple 1042 | - ReactCommon 1043 | - React-RCTSettings (0.73.0): 1044 | - RCT-Folly (= 2022.05.16.00) 1045 | - RCTTypeSafety 1046 | - React-Codegen 1047 | - React-Core/RCTSettingsHeaders 1048 | - React-jsi 1049 | - React-NativeModulesApple 1050 | - ReactCommon 1051 | - React-RCTText (0.73.0): 1052 | - React-Core/RCTTextHeaders (= 0.73.0) 1053 | - Yoga 1054 | - React-RCTVibration (0.73.0): 1055 | - RCT-Folly (= 2022.05.16.00) 1056 | - React-Codegen 1057 | - React-Core/RCTVibrationHeaders 1058 | - React-jsi 1059 | - React-NativeModulesApple 1060 | - ReactCommon 1061 | - React-rendererdebug (0.73.0): 1062 | - DoubleConversion 1063 | - fmt (~> 6.2.1) 1064 | - RCT-Folly (= 2022.05.16.00) 1065 | - React-debug 1066 | - React-rncore (0.73.0) 1067 | - React-runtimeexecutor (0.73.0): 1068 | - React-jsi (= 0.73.0) 1069 | - React-runtimescheduler (0.73.0): 1070 | - glog 1071 | - hermes-engine 1072 | - RCT-Folly (= 2022.05.16.00) 1073 | - React-callinvoker 1074 | - React-cxxreact 1075 | - React-debug 1076 | - React-jsi 1077 | - React-rendererdebug 1078 | - React-runtimeexecutor 1079 | - React-utils 1080 | - React-utils (0.73.0): 1081 | - glog 1082 | - RCT-Folly (= 2022.05.16.00) 1083 | - React-debug 1084 | - ReactCommon (0.73.0): 1085 | - React-logger (= 0.73.0) 1086 | - ReactCommon/turbomodule (= 0.73.0) 1087 | - ReactCommon/turbomodule (0.73.0): 1088 | - DoubleConversion 1089 | - fmt (~> 6.2.1) 1090 | - glog 1091 | - hermes-engine 1092 | - RCT-Folly (= 2022.05.16.00) 1093 | - React-callinvoker (= 0.73.0) 1094 | - React-cxxreact (= 0.73.0) 1095 | - React-jsi (= 0.73.0) 1096 | - React-logger (= 0.73.0) 1097 | - React-perflogger (= 0.73.0) 1098 | - ReactCommon/turbomodule/bridging (= 0.73.0) 1099 | - ReactCommon/turbomodule/core (= 0.73.0) 1100 | - ReactCommon/turbomodule/bridging (0.73.0): 1101 | - DoubleConversion 1102 | - fmt (~> 6.2.1) 1103 | - glog 1104 | - hermes-engine 1105 | - RCT-Folly (= 2022.05.16.00) 1106 | - React-callinvoker (= 0.73.0) 1107 | - React-cxxreact (= 0.73.0) 1108 | - React-jsi (= 0.73.0) 1109 | - React-logger (= 0.73.0) 1110 | - React-perflogger (= 0.73.0) 1111 | - ReactCommon/turbomodule/core (0.73.0): 1112 | - DoubleConversion 1113 | - fmt (~> 6.2.1) 1114 | - glog 1115 | - hermes-engine 1116 | - RCT-Folly (= 2022.05.16.00) 1117 | - React-callinvoker (= 0.73.0) 1118 | - React-cxxreact (= 0.73.0) 1119 | - React-jsi (= 0.73.0) 1120 | - React-logger (= 0.73.0) 1121 | - React-perflogger (= 0.73.0) 1122 | - RNGestureHandler (2.14.0): 1123 | - glog 1124 | - RCT-Folly (= 2022.05.16.00) 1125 | - React-Core 1126 | - RNReanimated (3.6.1): 1127 | - glog 1128 | - RCT-Folly (= 2022.05.16.00) 1129 | - React-Core 1130 | - ReactCommon/turbomodule/core 1131 | - RNScreens (3.29.0): 1132 | - glog 1133 | - RCT-Folly (= 2022.05.16.00) 1134 | - React-Core 1135 | - RNSVG (9.13.6): 1136 | - React 1137 | - RNVectorIcons (10.0.3): 1138 | - glog 1139 | - RCT-Folly (= 2022.05.16.00) 1140 | - React-Core 1141 | - SocketRocket (0.6.1) 1142 | - Yoga (1.14.0) 1143 | 1144 | DEPENDENCIES: 1145 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 1146 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 1147 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 1148 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 1149 | - Flipper (= 0.201.0) 1150 | - Flipper-Boost-iOSX (= 1.76.0.1.11) 1151 | - Flipper-DoubleConversion (= 3.2.0.1) 1152 | - Flipper-Fmt (= 7.1.7) 1153 | - Flipper-Folly (= 2.6.10) 1154 | - Flipper-Glog (= 0.5.0.5) 1155 | - Flipper-PeerTalk (= 0.0.4) 1156 | - FlipperKit (= 0.201.0) 1157 | - FlipperKit/Core (= 0.201.0) 1158 | - FlipperKit/CppBridge (= 0.201.0) 1159 | - FlipperKit/FBCxxFollyDynamicConvert (= 0.201.0) 1160 | - FlipperKit/FBDefines (= 0.201.0) 1161 | - FlipperKit/FKPortForwarding (= 0.201.0) 1162 | - FlipperKit/FlipperKitHighlightOverlay (= 0.201.0) 1163 | - FlipperKit/FlipperKitLayoutPlugin (= 0.201.0) 1164 | - FlipperKit/FlipperKitLayoutTextSearchable (= 0.201.0) 1165 | - FlipperKit/FlipperKitNetworkPlugin (= 0.201.0) 1166 | - FlipperKit/FlipperKitReactPlugin (= 0.201.0) 1167 | - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.201.0) 1168 | - FlipperKit/SKIOSNetworkPlugin (= 0.201.0) 1169 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 1170 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) 1171 | - libevent (~> 2.1.12) 1172 | - OpenSSL-Universal (= 1.1.1100) 1173 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1174 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1175 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 1176 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 1177 | - React (from `../node_modules/react-native/`) 1178 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 1179 | - React-Codegen (from `build/generated/ios`) 1180 | - React-Core (from `../node_modules/react-native/`) 1181 | - React-Core/DevSupport (from `../node_modules/react-native/`) 1182 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 1183 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 1184 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 1185 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 1186 | - React-Fabric (from `../node_modules/react-native/ReactCommon`) 1187 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`) 1188 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) 1189 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) 1190 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) 1191 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) 1192 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 1193 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 1194 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) 1195 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 1196 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) 1197 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) 1198 | - "react-native-skia (from `../node_modules/@shopify/react-native-skia`)" 1199 | - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) 1200 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 1201 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 1202 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 1203 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 1204 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 1205 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 1206 | - React-RCTFabric (from `../node_modules/react-native/React`) 1207 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 1208 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 1209 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 1210 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 1211 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 1212 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 1213 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) 1214 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 1215 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 1216 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 1217 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 1218 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 1219 | - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) 1220 | - RNReanimated (from `../node_modules/react-native-reanimated`) 1221 | - RNScreens (from `../node_modules/react-native-screens`) 1222 | - RNSVG (from `../node_modules/react-native-svg`) 1223 | - RNVectorIcons (from `../node_modules/react-native-vector-icons`) 1224 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 1225 | 1226 | SPEC REPOS: 1227 | trunk: 1228 | - CocoaAsyncSocket 1229 | - Flipper 1230 | - Flipper-Boost-iOSX 1231 | - Flipper-DoubleConversion 1232 | - Flipper-Fmt 1233 | - Flipper-Folly 1234 | - Flipper-Glog 1235 | - Flipper-PeerTalk 1236 | - FlipperKit 1237 | - fmt 1238 | - libevent 1239 | - OpenSSL-Universal 1240 | - SocketRocket 1241 | 1242 | EXTERNAL SOURCES: 1243 | boost: 1244 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 1245 | DoubleConversion: 1246 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 1247 | FBLazyVector: 1248 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 1249 | FBReactNativeSpec: 1250 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 1251 | glog: 1252 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 1253 | hermes-engine: 1254 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" 1255 | :tag: hermes-2023-11-17-RNv0.73.0-21043a3fc062be445e56a2c10ecd8be028dd9cc5 1256 | RCT-Folly: 1257 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 1258 | RCTRequired: 1259 | :path: "../node_modules/react-native/Libraries/RCTRequired" 1260 | RCTTypeSafety: 1261 | :path: "../node_modules/react-native/Libraries/TypeSafety" 1262 | React: 1263 | :path: "../node_modules/react-native/" 1264 | React-callinvoker: 1265 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 1266 | React-Codegen: 1267 | :path: build/generated/ios 1268 | React-Core: 1269 | :path: "../node_modules/react-native/" 1270 | React-CoreModules: 1271 | :path: "../node_modules/react-native/React/CoreModules" 1272 | React-cxxreact: 1273 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 1274 | React-debug: 1275 | :path: "../node_modules/react-native/ReactCommon/react/debug" 1276 | React-Fabric: 1277 | :path: "../node_modules/react-native/ReactCommon" 1278 | React-FabricImage: 1279 | :path: "../node_modules/react-native/ReactCommon" 1280 | React-graphics: 1281 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" 1282 | React-hermes: 1283 | :path: "../node_modules/react-native/ReactCommon/hermes" 1284 | React-ImageManager: 1285 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" 1286 | React-jserrorhandler: 1287 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler" 1288 | React-jsi: 1289 | :path: "../node_modules/react-native/ReactCommon/jsi" 1290 | React-jsiexecutor: 1291 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 1292 | React-jsinspector: 1293 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" 1294 | React-logger: 1295 | :path: "../node_modules/react-native/ReactCommon/logger" 1296 | React-Mapbuffer: 1297 | :path: "../node_modules/react-native/ReactCommon" 1298 | react-native-safe-area-context: 1299 | :path: "../node_modules/react-native-safe-area-context" 1300 | react-native-skia: 1301 | :path: "../node_modules/@shopify/react-native-skia" 1302 | React-nativeconfig: 1303 | :path: "../node_modules/react-native/ReactCommon" 1304 | React-NativeModulesApple: 1305 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 1306 | React-perflogger: 1307 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 1308 | React-RCTActionSheet: 1309 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 1310 | React-RCTAnimation: 1311 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 1312 | React-RCTAppDelegate: 1313 | :path: "../node_modules/react-native/Libraries/AppDelegate" 1314 | React-RCTBlob: 1315 | :path: "../node_modules/react-native/Libraries/Blob" 1316 | React-RCTFabric: 1317 | :path: "../node_modules/react-native/React" 1318 | React-RCTImage: 1319 | :path: "../node_modules/react-native/Libraries/Image" 1320 | React-RCTLinking: 1321 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 1322 | React-RCTNetwork: 1323 | :path: "../node_modules/react-native/Libraries/Network" 1324 | React-RCTSettings: 1325 | :path: "../node_modules/react-native/Libraries/Settings" 1326 | React-RCTText: 1327 | :path: "../node_modules/react-native/Libraries/Text" 1328 | React-RCTVibration: 1329 | :path: "../node_modules/react-native/Libraries/Vibration" 1330 | React-rendererdebug: 1331 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" 1332 | React-rncore: 1333 | :path: "../node_modules/react-native/ReactCommon" 1334 | React-runtimeexecutor: 1335 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 1336 | React-runtimescheduler: 1337 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 1338 | React-utils: 1339 | :path: "../node_modules/react-native/ReactCommon/react/utils" 1340 | ReactCommon: 1341 | :path: "../node_modules/react-native/ReactCommon" 1342 | RNGestureHandler: 1343 | :path: "../node_modules/react-native-gesture-handler" 1344 | RNReanimated: 1345 | :path: "../node_modules/react-native-reanimated" 1346 | RNScreens: 1347 | :path: "../node_modules/react-native-screens" 1348 | RNSVG: 1349 | :path: "../node_modules/react-native-svg" 1350 | RNVectorIcons: 1351 | :path: "../node_modules/react-native-vector-icons" 1352 | Yoga: 1353 | :path: "../node_modules/react-native/ReactCommon/yoga" 1354 | 1355 | SPEC CHECKSUMS: 1356 | boost: 26fad476bfa736552bbfa698a06cc530475c1505 1357 | CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 1358 | DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 1359 | FBLazyVector: 39ba45baf4e398618f8b3a4bb6ba8fcdb7fc2133 1360 | FBReactNativeSpec: 20cfca68498e27879514790359289d1df2b52c56 1361 | Flipper: c7a0093234c4bdd456e363f2f19b2e4b27652d44 1362 | Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c 1363 | Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 1364 | Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b 1365 | Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 1366 | Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 1367 | Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 1368 | FlipperKit: 37525a5d056ef9b93d1578e04bc3ea1de940094f 1369 | fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 1370 | glog: 79d13cd7c34b5d0cea5f4ca72c0e6b462ef8fb4d 1371 | hermes-engine: 06a5a3f9d840279a0b0c6dc80d10ddd9349103b4 1372 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 1373 | OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c 1374 | RCT-Folly: 082c31bb88ae3582d685f8923b9938147be587b3 1375 | RCTRequired: 5e3631b27c08716986980ef23eed8abdee1cdcaf 1376 | RCTTypeSafety: 02a64828b0b428eb4f63de1397d44fb2d0747e85 1377 | React: df5dbfbd10c5bd8d4bcb49bd9830551533e11c7e 1378 | React-callinvoker: dc0dff59e8d3d1fe4cd9fb5f120f82a775d2a325 1379 | React-Codegen: 88bf5d1e29db28c1c9b88fe909f073be6c9f769d 1380 | React-Core: 276ccbbf282538138f4429313bb1200a15067c6e 1381 | React-CoreModules: 64747180c0329bebed8307ffdc97c331220277a6 1382 | React-cxxreact: 84d98283f701bae882dcd3ad7c573a02f4c9d5c0 1383 | React-debug: 443cf46ade52f3555dd1ec709718793490ac5edc 1384 | React-Fabric: 4c877c032b3acc07ed3f2e46ae25b5a39af89382 1385 | React-FabricImage: c46c47ea3c672b9fadd6850795a51d3d9e5df712 1386 | React-graphics: e1cff03acf09098513642535324432d495b6425c 1387 | React-hermes: e3356f82c76c5c41688a7e08ced2254a944501c4 1388 | React-ImageManager: c783771479ab0bf1e3dbe711cc8b9f5b0f65972b 1389 | React-jserrorhandler: 7cd93ce5165e5d66c87b6f612f94e5642f5c5028 1390 | React-jsi: 81b5fe94500e69051c2f3a775308afaa53e2608b 1391 | React-jsiexecutor: 4f790f865ad23fa949396c1a103d06867c0047ed 1392 | React-jsinspector: 9f6fb9ed9f03a0fb961ab8dc2e0e0ee0dc729e77 1393 | React-logger: 008caec0d6a587abc1e71be21bfac5ba1662fe6a 1394 | React-Mapbuffer: 58fe558faf52ecde6705376700f848d0293d1cef 1395 | react-native-safe-area-context: cd1169d797a2ef722a00bfc5af10748d5b6c94f9 1396 | react-native-skia: 17ee79b4c29eb3df54691ceed3c30c103f5ab0d0 1397 | React-nativeconfig: a063483672b8add47a4875b0281e202908ff6747 1398 | React-NativeModulesApple: 169506a5fd708ab22811f76ee06a976595c367a1 1399 | React-perflogger: b61e5db8e5167f5e70366e820766c492847c082e 1400 | React-RCTActionSheet: dcaecff7ffc1888972cd1c1935751ff3bce1e0c1 1401 | React-RCTAnimation: 24b8ae7ebc897ba3f33a93a020bbc66ab7863f5d 1402 | React-RCTAppDelegate: 661fc59d833e6727cc8c7e36bf8664215e5c277f 1403 | React-RCTBlob: 112880abc731c5a0d8eefb5919a591ad30f630e8 1404 | React-RCTFabric: a0289e3bf73da8c03b68b4e9733ba497b021de45 1405 | React-RCTImage: b8065c1b51cc6c2ff58ad81001619352518dd793 1406 | React-RCTLinking: fdf9f43f8bd763d178281a079700105674953849 1407 | React-RCTNetwork: ad3d988e425288492510ee37c9dcdf8259566214 1408 | React-RCTSettings: 67c3876f2775d1cf86298f657e6006afc2a2e4cf 1409 | React-RCTText: 671518da40bd548943ec12ee6a60f733a751e2e9 1410 | React-RCTVibration: 60bc4d01d7d8ab7cff14852a195a7fa93b38e1f3 1411 | React-rendererdebug: 6aaab394c9fefe395ef61809580a9bf63b98fd3e 1412 | React-rncore: 6680f0ebb941e256af7dc92c6a512356e77bfea7 1413 | React-runtimeexecutor: 2ca6f02d3fd6eea5b9575eb30720cf12c5d89906 1414 | React-runtimescheduler: 77543c74df984ce56c09d49d427149c53784aaf6 1415 | React-utils: 42708ea436853045ef1eaff29996813d9fbbe209 1416 | ReactCommon: 851280fb976399ca1aabc74cc2c3612069ea70a2 1417 | RNGestureHandler: 61bfdfc05db9b79dd61f894dcd29d3dcc6db3c02 1418 | RNReanimated: 57f436e7aa3d277fbfed05e003230b43428157c0 1419 | RNScreens: b582cb834dc4133307562e930e8fa914b8c04ef2 1420 | RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f 1421 | RNVectorIcons: 210f910e834e3485af40693ad4615c1ec22fc02b 1422 | SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 1423 | Yoga: 44003f970aa541b79dfdd59cf236fda41bd5890f 1424 | 1425 | PODFILE CHECKSUM: 7e81f10cbd0c705352d165111d319f7c6a737f7c 1426 | 1427 | COCOAPODS: 1.14.2 1428 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'react-native', 3 | }; 4 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); 2 | 3 | /** 4 | * Metro configuration 5 | * https://facebook.github.io/metro/docs/configuration 6 | * 7 | * @type {import('metro-config').MetroConfig} 8 | */ 9 | const config = {}; 10 | 11 | module.exports = mergeConfig(getDefaultConfig(__dirname), config); 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fal-ai/fal-with-react-native", 3 | "version": "0.0.1", 4 | "license": "AGPLv3", 5 | "private": true, 6 | "scripts": { 7 | "android": "react-native run-android", 8 | "ios:pod": "cd ios && pod install && cd ..", 9 | "ios": "react-native run-ios", 10 | "lint": "eslint .", 11 | "start": "react-native start", 12 | "test": "jest", 13 | "prepare": "husky install" 14 | }, 15 | "lint-staged": { 16 | "*.{md,mdx,json}": [ 17 | "prettier --write" 18 | ], 19 | "src/*.{js,jsx,ts,tsx}": [ 20 | "eslint --fix", 21 | "prettier --write" 22 | ] 23 | }, 24 | "dependencies": { 25 | "@eva-design/eva": "^2.2.0", 26 | "@fal-ai/serverless-client": "^0.7.4-alpha.1", 27 | "@react-navigation/drawer": "^6.6.6", 28 | "@react-navigation/native": "^6.1.9", 29 | "@shopify/react-native-skia": "^0.1.230", 30 | "@ui-kitten/components": "^5.3.1", 31 | "@ui-kitten/eva-icons": "^5.3.1", 32 | "nativewind": "^2.0.11", 33 | "react": "18.2.0", 34 | "react-native": "0.73.0", 35 | "react-native-gesture-handler": "^2.14.0", 36 | "react-native-reanimated": "^3.6.1", 37 | "react-native-safe-area-context": "^4.8.1", 38 | "react-native-screens": "^3.29.0", 39 | "react-native-svg": "^9.13.6", 40 | "react-native-vector-icons": "^10.0.3" 41 | }, 42 | "devDependencies": { 43 | "@babel/core": "^7.20.0", 44 | "@babel/preset-env": "^7.20.0", 45 | "@babel/runtime": "^7.20.0", 46 | "@react-native/babel-preset": "^0.73.18", 47 | "@react-native/eslint-config": "^0.74.0", 48 | "@react-native/metro-config": "^0.73.2", 49 | "@react-native/typescript-config": "^0.73.1", 50 | "@trivago/prettier-plugin-sort-imports": "^4.3.0", 51 | "@types/react": "^18.2.6", 52 | "@types/react-test-renderer": "^18.0.0", 53 | "babel-jest": "^29.6.3", 54 | "babel-plugin-module-resolver": "^5.0.0", 55 | "eslint": "^8.56.0", 56 | "eslint-config-prettier": "^9.1.0", 57 | "eslint-config-standard": "^17.1.0", 58 | "eslint-plugin-import": "^2.29.1", 59 | "eslint-plugin-react": "^7.33.2", 60 | "husky": "^8.0.3", 61 | "jest": "^29.6.3", 62 | "lint-staged": "^15.2.0", 63 | "prettier": "^2.8.8", 64 | "react-test-renderer": "18.2.0", 65 | "tailwindcss": "3.3.2", 66 | "typescript": "5.0.4" 67 | }, 68 | "engines": { 69 | "node": ">=18" 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | project: { 3 | ios: { 4 | automaticPodsInstallation: true, 5 | }, 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /src/components/core.tsx: -------------------------------------------------------------------------------- 1 | import { Button as KButton, Input as KInput } from '@ui-kitten/components'; 2 | import { styled } from 'nativewind'; 3 | import { Image as RNImage, Text as RNText, View as RNView } from 'react-native'; 4 | 5 | export const Button = styled(KButton); 6 | export const Input = styled(KInput); 7 | export const Image = styled(RNImage); 8 | export const Text = styled(RNText); 9 | export const View = styled(RNView); 10 | -------------------------------------------------------------------------------- /src/components/screen.tsx: -------------------------------------------------------------------------------- 1 | import { View } from './core'; 2 | import React, { type PropsWithChildren } from 'react'; 3 | import { ScrollView } from 'react-native'; 4 | 5 | export function Screen({ children }: PropsWithChildren) { 6 | return ( 7 | 8 | {children} 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /src/components/theme.ts: -------------------------------------------------------------------------------- 1 | import { light } from '@eva-design/eva'; 2 | 3 | // https://colors.eva.design 4 | export const appTheme = { 5 | ...light, 6 | // 'background-basic-color-1': '#191E24', 7 | // 'background-basic-color-2': '#161A20', 8 | // 'background-basic-color-3': '#13171B', 9 | // 'background-basic-color-4': '#111519', 10 | 'color-primary-100': '#DFD8F9', 11 | 'color-primary-200': '#BFB4F4', 12 | 'color-primary-300': '#9586DE', 13 | 'color-primary-400': '#6E60BD', 14 | 'color-primary-500': '#3F3291', 15 | 'color-primary-600': '#2F247C', 16 | 'color-primary-700': '#211968', 17 | 'color-primary-800': '#160F54', 18 | 'color-primary-900': '#0E0945', 19 | }; 20 | -------------------------------------------------------------------------------- /src/screens/drawing.tsx: -------------------------------------------------------------------------------- 1 | import * as fal from '@fal-ai/serverless-client'; 2 | import { 3 | Canvas, 4 | useCanvasRef, 5 | Circle, 6 | Fill, 7 | ImageFormat, 8 | Image, 9 | Skia, 10 | SkImage, 11 | } from '@shopify/react-native-skia'; 12 | import { useState, useEffect } from 'react'; 13 | import { GestureResponderEvent } from 'react-native'; 14 | import { useSharedValue } from 'react-native-reanimated'; 15 | import { Text, View } from '~/components/core'; 16 | 17 | const APP_ID = '110602490-lcm-sd15-i2i'; 18 | const DEFAULT_PROMPT = 'A moon in a starry night sky'; 19 | 20 | type LcmInput = { 21 | prompt: string; 22 | image_url: string; 23 | seed?: number; 24 | num_inference_steps?: number; 25 | guidance_scale?: number; 26 | strength?: number; 27 | sync_mode?: boolean; 28 | }; 29 | 30 | type LcmImage = { 31 | url: string; 32 | width: number; 33 | height: number; 34 | }; 35 | 36 | type LcmOutput = { 37 | images: LcmImage[]; 38 | seed: number; 39 | }; 40 | 41 | export function DrawingScreen() { 42 | const currentImage = useSharedValue(null); 43 | 44 | const { send } = fal.realtime.connect(APP_ID, { 45 | // The connectionKey is used to identify the connection so that it's reused across 46 | // re-renders. This avoids multiple connections being opened without the need to 47 | // keep the reference as useRef or useState yourself. 48 | connectionKey: 'drawing-lcm-rn', 49 | // Throttles the number of requests sent to the server. 50 | throttleInterval: 64, 51 | onResult(result) { 52 | const imageUrl = result.images[0].url; 53 | const base64Data = imageUrl.split(',')[1]; 54 | const data = Skia.Data.fromBase64(base64Data); 55 | currentImage.value = Skia.Image.MakeImageFromEncoded(data); 56 | }, 57 | }); 58 | 59 | const [isDragging, setIsDragging] = useState(false); 60 | const moonX = useSharedValue(50); 61 | const moonY = useSharedValue(50); 62 | 63 | const handleTouchMove = (event: GestureResponderEvent) => { 64 | 'worklet'; 65 | const { locationX, locationY } = event.nativeEvent; 66 | moonX.value = locationX; 67 | moonY.value = locationY; 68 | }; 69 | 70 | const canvasRef = useCanvasRef(); 71 | const canvasSize = useSharedValue({ width: 0, height: 0 }); 72 | const resultCanvasSize = useSharedValue({ width: 0, height: 0 }); 73 | 74 | const sendCanvasSnapshot = () => { 75 | const canvas = canvasRef.current; 76 | if (!canvas) { 77 | return; 78 | } 79 | const image = canvas.makeImageSnapshot({ 80 | x: 0, 81 | y: 0, 82 | width: 512, 83 | height: 512, 84 | }); 85 | const imageUrl = `data:image/jpeg;base64,${image.encodeToBase64( 86 | ImageFormat.JPEG, 87 | 50, 88 | )}`; 89 | 90 | send({ 91 | prompt: DEFAULT_PROMPT, 92 | image_url: imageUrl, 93 | strength: 0.8, 94 | sync_mode: true, 95 | seed: 6252023, 96 | }); 97 | }; 98 | 99 | useEffect(() => { 100 | const canvas = canvasRef.current; 101 | if (isDragging && canvas) { 102 | const intervalTimeout = setInterval(() => { 103 | sendCanvasSnapshot(); 104 | }, 8); 105 | 106 | return () => clearInterval(intervalTimeout); 107 | } 108 | }, [isDragging]); 109 | 110 | useEffect(() => { 111 | sendCanvasSnapshot(); 112 | }, []); 113 | 114 | return ( 115 | 116 | 117 | 118 | Hint: touch the canvas to move 119 | the moon around 120 | 121 | 122 | { 127 | setIsDragging(true); 128 | handleTouchMove(event); 129 | }} 130 | onTouchMove={handleTouchMove} 131 | onTouchEnd={() => { 132 | setIsDragging(false); 133 | sendCanvasSnapshot(); 134 | }}> 135 | 136 | 137 | 138 | 141 | 146 | 147 | 148 | ); 149 | } 150 | -------------------------------------------------------------------------------- /src/screens/home.tsx: -------------------------------------------------------------------------------- 1 | import * as fal from '@fal-ai/serverless-client'; 2 | import React, { useState } from 'react'; 3 | import { View, Image, Input, Button } from '~/components/core'; 4 | import { Screen } from '~/components/screen'; 5 | 6 | const DEFAULT_PROMPT = 7 | 'a city landscape of a cyberpunk metropolis, raining, purple, pink and teal neon lights, highly detailed, uhd'; 8 | 9 | type SdxlInput = { 10 | prompt: string; 11 | seed?: number; 12 | }; 13 | 14 | type FalTiming = { 15 | inference: number; 16 | image_processing: number; 17 | }; 18 | 19 | type FalImage = { 20 | url: string; 21 | width: number; 22 | height: number; 23 | }; 24 | 25 | type SdxlResult = { 26 | images: FalImage[]; 27 | timings: FalTiming; 28 | }; 29 | 30 | export function HomeScreen() { 31 | const [prompt, setPrompt] = useState(DEFAULT_PROMPT); 32 | const [loading, setLoading] = useState(false); 33 | const [image, setImage] = useState(null); 34 | const generateImate = async () => { 35 | setLoading(true); 36 | try { 37 | const result = await fal.subscribe( 38 | '110602490-fast-sdxl', 39 | { 40 | input: { 41 | prompt, 42 | }, 43 | }, 44 | ); 45 | if (result.images && result.images.length > 0) { 46 | setImage(result.images[0]); 47 | } 48 | } catch (error) { 49 | console.error(error); 50 | } finally { 51 | setLoading(false); 52 | } 53 | }; 54 | 55 | return ( 56 | 57 | 58 | 63 | 64 | {image && ( 65 | 69 | )} 70 | 71 | 72 | ); 73 | } 74 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | './src/screens/**/*.{js,ts,jsx,tsx}', 4 | './src/components/**/*.{js,ts,jsx,tsx}', 5 | ], 6 | }; 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@react-native/typescript-config/tsconfig.json", 3 | "compilerOptions": { 4 | "paths": { 5 | "~/*": ["./src/*"] 6 | } 7 | } 8 | } 9 | --------------------------------------------------------------------------------