diff --git a/README.md b/README.md index a874d5f..0d21c62 100755 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ Image Editor Native module for React Native. Originally extracted from React Native [`issue#23313`](https://github.com/facebook/react-native/issues/23313) and maintained by the community. +Example app: selecting a crop area on an image + +_Screenshot from the [example app](/example). The crop UI is example code, not part of this library, which provides only `ImageEditor.cropImage()`._ + ## Getting started ### Requirements @@ -18,7 +22,7 @@ Starting from v5, this library supports only the [New Architecture](https://reac | Library version | React Native version | Architecture | | --------------- | -------------------- | -------------- | -| 5.x | >= 0.74 | New only | +| 5.x | >= 0.77 | New only | | 4.x | >= 0.57 | Old and New | > [!NOTE] @@ -86,7 +90,12 @@ ImageEditor.cropImage(uri, cropData).then((result) => { | `type` | `string` | The MIME type of the image (`'image/jpeg'`, `'image/png'`, `'image/webp'`) | | `base64`
_(optional)_ | `string` | The base64-encoded image data example: `'/9j/4AAQSkZJRgABAQAAAQABAAD'`
if you need data URI as the `source` for an `Image` element for example, you can use `data:${type};base64,${base64}` | -For more advanced usage check our [example app](/example/src/App.tsx). +## Example app + +The [example app](/example) shows every `cropImage` option, plus a cache lab for `Image.prefetch` / `` cache reuse. See its [README](/example/README.md) for how to run it. + +> [!NOTE] +> The example UI (crop box, controls, result view) is **not part of this library**. It's example code built with plain React Native. The library itself only provides `ImageEditor.cropImage()`. diff --git a/android/src/main/java/com/reactnativecommunity/imageeditor/ImageEditorModuleImpl.kt b/android/src/main/java/com/reactnativecommunity/imageeditor/ImageEditorModuleImpl.kt index f2c2dbf..53a92f3 100644 --- a/android/src/main/java/com/reactnativecommunity/imageeditor/ImageEditorModuleImpl.kt +++ b/android/src/main/java/com/reactnativecommunity/imageeditor/ImageEditorModuleImpl.kt @@ -20,8 +20,12 @@ import android.os.Build import android.provider.MediaStore import android.text.TextUtils import android.util.Base64 +import android.util.Log import androidx.exifinterface.media.ExifInterface import com.facebook.common.logging.FLog +import com.facebook.drawee.backends.pipeline.Fresco +import com.facebook.imagepipeline.cache.DefaultCacheKeyFactory +import com.facebook.imagepipeline.request.ImageRequest import com.facebook.infer.annotation.Assertions import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.JSApplicationIllegalArgumentException @@ -353,13 +357,59 @@ class ImageEditorModuleImpl(private val reactContext: ReactApplicationContext) { } else if (isLocalUri(uri)) { reactContext.contentResolver.openInputStream(Uri.parse(uri)) } else { - val connection = URL(uri).openConnection() - headers?.forEach { (key, value) -> - if (value is String) { - connection.setRequestProperty(key, value) - } + openFrescoCachedInputStream(uri, headers)?.let { + return it + } + openRemoteInputStream(uri, headers) + } + } + + private fun openRemoteInputStream(uri: String, headers: HashMap?): InputStream { + val connection = URL(uri).openConnection() + headers?.forEach { (key, value) -> + if (value is String) { + connection.setRequestProperty(key, value) } - connection.getInputStream() + } + return connection.getInputStream() + } + + /** + * Reads the image through Fresco's disk cache, the one `Image.prefetch(url)` and `` use. + * On cache miss the image is downloaded into the cache, so a later `` with the same URL + * loads it from disk. Returns null if the cache can't be used. + */ + private fun openFrescoCachedInputStream( + uri: String, + headers: HashMap? + ): InputStream? { + val (fileCache, cacheKey) = + try { + if (!Fresco.hasBeenInitialized()) return null + val request = ImageRequest.fromUri(uri) ?: return null + Pair( + Fresco.getImagePipelineFactory().diskCachesStoreSupplier.get().mainFileCache, + DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(request, null) + ) + } catch (e: Exception) { + FLog.w(ReactConstants.TAG, "ImageEditor: Fresco disk cache unavailable", e) + return null + } + + fileCache.getResource(cacheKey)?.let { + Log.i("RNCImageEditor", "Fresco disk cache hit for $uri") + return it.openStream() + } + + // Network errors propagate to the caller as before; only cache failures fall back + val input = openRemoteInputStream(uri, headers) + return try { + val resource = input.use { fileCache.insert(cacheKey) { out -> it.copyTo(out) } } + Log.i("RNCImageEditor", "Fresco disk cache miss, stored $uri") + resource?.openStream() + } catch (e: Exception) { + FLog.w(ReactConstants.TAG, "ImageEditor: Failed to store $uri in Fresco disk cache", e) + null } } diff --git a/example/.gitignore b/example/.gitignore index e546116..de99955 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -1,24 +1,75 @@ -*.binlog -*.hprof -*.xcworkspace/ -*.zip +# OSX +# .DS_Store -.bundle/* -!.bundle/config -.gradle/ -.idea/ -.vs/ -.watchman-* -.xcode.env -android/app/ -android/build/ -dist/* -!dist/.gitignore -ios/DerivedData/ -ios/Pods/ -ios/build/ + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +**/.xcode.env.local + +# Android/IntelliJ +# +build/ +.idea +.gradle local.properties -macos/DerivedData/ -macos/Pods/ -macos/build/ +*.iml +*.hprof +.cxx/ +*.keystore +!debug.keystore +.kotlin/ + +# node.js +# node_modules/ +npm-debug.log +yarn-error.log + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +**/fastlane/report.xml +**/fastlane/Preview.html +**/fastlane/screenshots +**/fastlane/test_output + +# Bundle artifact +*.jsbundle + +# Ruby / CocoaPods +**/Pods/ +/vendor/bundle/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* + +# testing +/coverage + +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/example/Gemfile.lock b/example/Gemfile.lock deleted file mode 100644 index 14e521c..0000000 --- a/example/Gemfile.lock +++ /dev/null @@ -1,114 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.9) - activesupport (6.1.7.10) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.9.0) - public_suffix (>= 2.0.2, < 8.0) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) - atomos (0.1.3) - benchmark (0.5.0) - bigdecimal (4.1.2) - claide (1.1.0) - cocoapods (1.15.2) - addressable (~> 2.8) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.15.2) - cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 2.1, < 3.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.6.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (>= 2.3.0, < 3.0) - gh_inspector (~> 1.0) - molinillo (~> 0.8.0) - nap (~> 1.0) - ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.23.0, < 2.0) - cocoapods-core (1.15.2) - activesupport (>= 5.0, < 8) - addressable (~> 2.8) - algoliasearch (~> 1.0) - concurrent-ruby (~> 1.1) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - netrc (~> 0.11) - public_suffix (~> 4.0) - typhoeus (~> 1.0) - cocoapods-deintegrate (1.0.5) - cocoapods-downloader (2.1) - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.1) - cocoapods-trunk (1.6.0) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.2.0) - colored2 (3.1.2) - concurrent-ruby (1.3.3) - escape (0.0.4) - ethon (0.18.0) - ffi (>= 1.15.0) - logger - ffi (1.17.4) - fourflusher (2.3.1) - fuzzy_match (2.0.4) - gh_inspector (1.1.3) - httpclient (2.9.0) - mutex_m - i18n (1.14.8) - concurrent-ruby (~> 1.0) - json (2.7.6) - logger (1.7.0) - minitest (5.25.4) - molinillo (0.8.0) - mutex_m (0.3.0) - nanaimo (0.3.0) - nap (1.1.0) - netrc (0.11.0) - nkf (0.3.0) - public_suffix (4.0.7) - rexml (3.4.4) - ruby-macho (2.5.1) - typhoeus (1.6.0) - ethon (>= 0.18.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - xcodeproj (1.25.1) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.3.0) - rexml (>= 3.3.6, < 4.0) - zeitwerk (2.6.18) - -PLATFORMS - ruby - -DEPENDENCIES - activesupport (>= 6.1.7.5, != 7.1.0) - benchmark - bigdecimal - cocoapods (>= 1.13, != 1.15.1, != 1.15.0) - concurrent-ruby (< 1.3.4) - logger - mutex_m - nkf - xcodeproj (< 1.26.0) - -RUBY VERSION - ruby 2.6.10p210 - -BUNDLED WITH - 1.17.2 diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..c915141 --- /dev/null +++ b/example/README.md @@ -0,0 +1,55 @@ +# Image Editor example app + +A playground for [`@react-native-community/image-editor`](../README.md) that exercises every option of `ImageEditor.cropImage`. + +> [!NOTE] +> The UI in this app (crop box, controls, result inspector, cache lab) is **not part of the library**. The library only provides `ImageEditor.cropImage()`. The UI is plain React Native code you're free to copy. + +| Editor | Output options | Result | Cache lab | +| :---: | :---: | :---: | :---: | +| Crop area with a draggable crop box and aspect ratio presets | Format, quality, base64 and displaySize options | Cropped image with its dimensions, type, size and base64 | Cache lab log showing prefetch followed by a fast crop | + +## What it covers + +- **Sources**: a remote URL, a remote URL with custom `headers`, a 4000×3000 image, a portrait image, the previous result as a `file://` URI, and the previous result's base64 as a `data:` URI. +- **Crop area**: drag the box to move it and its corners to resize it, with aspect ratio presets (Free, 1:1, 4:3, 3:4, 16:9). Offset and size are shown in the original image's pixels, which is what `cropImage` expects. +- **Output options**: `format`, `quality`, `includeBase64`, `displaySize` and `resizeMode`. +- **Result**: preview, dimensions, MIME type, file size, path, base64 preview and the time `cropImage` took. +- **Cache lab**: `Image.queryCache`, `Image.prefetch`, cropping a URL without displaying it, rendering it with ``, and an invalid URL to check that the promise rejects. Use it to check that `cropImage` reuses the image already cached by `Image.prefetch` / ``. + +Platform differences are labeled in the UI: iOS writes only JPEG or PNG (`webp` falls back to JPEG), and Android ignores `resizeMode`. + +## Running + +The app links the library from the repository root (`"@react-native-community/image-editor": "link:.."`), so changes to `../src`, `../ios` and `../android` are picked up directly. Metro watches the root folder (see [`metro.config.js`](./metro.config.js)). + +```sh +cd example +yarn install +``` + +### iOS + +```sh +cd ios && bundle install && bundle exec pod install && cd .. +yarn ios +``` + +### Android + +```sh +yarn android +``` + +Metro starts automatically. To start it yourself, run `yarn start`. + +## Code map + +| File | What it does | +| --- | --- | +| [`src/App.tsx`](./src/App.tsx) | Screen state and the `ImageEditor.cropImage` call | +| [`src/components/CropArea.tsx`](./src/components/CropArea.tsx) | Image with a draggable, resizable crop box (`PanResponder`) | +| [`src/components/ResultCard.tsx`](./src/components/ResultCard.tsx) | Shows the `CropResult` | +| [`src/components/CacheLab.tsx`](./src/components/CacheLab.tsx) | Prefetch / cache checks | +| [`src/components/ui.tsx`](./src/components/ui.tsx) | Small UI kit (section, segmented control, toggle, stepper, button) | +| [`src/sources.ts`](./src/sources.ts) | Sample image URLs | diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle new file mode 100644 index 0000000..2f99793 --- /dev/null +++ b/example/android/app/build.gradle @@ -0,0 +1,119 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" + +/** + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js + // cliFile = file("../../node_modules/react-native/cli.js") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. Default is "debug", "debugOptimized". + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "liteDebugOptimized", "prodDebug", "prodDebugOptimized"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + // + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] + + /* Autolinking */ + autolinkLibrariesWithApp() +} + +/** + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = false + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' + +android { + ndkVersion rootProject.ext.ndkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + namespace "com.imageeditorexample" + defaultConfig { + applicationId "com.imageeditorexample" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} diff --git a/example/android/app/debug.keystore b/example/android/app/debug.keystore new file mode 100644 index 0000000..364e105 Binary files /dev/null and b/example/android/app/debug.keystore differ diff --git a/example/android/app/proguard-rules.pro b/example/android/app/proguard-rules.pro new file mode 100644 index 0000000..11b0257 --- /dev/null +++ b/example/android/app/proguard-rules.pro @@ -0,0 +1,10 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..fb78f39 --- /dev/null +++ b/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff --git a/example/android/app/src/main/java/com/imageeditorexample/MainActivity.kt b/example/android/app/src/main/java/com/imageeditorexample/MainActivity.kt new file mode 100644 index 0000000..42755bb --- /dev/null +++ b/example/android/app/src/main/java/com/imageeditorexample/MainActivity.kt @@ -0,0 +1,22 @@ +package com.imageeditorexample + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +class MainActivity : ReactActivity() { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "ImageEditorExample" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) +} diff --git a/example/android/app/src/main/java/com/imageeditorexample/MainApplication.kt b/example/android/app/src/main/java/com/imageeditorexample/MainApplication.kt new file mode 100644 index 0000000..52c38ac --- /dev/null +++ b/example/android/app/src/main/java/com/imageeditorexample/MainApplication.kt @@ -0,0 +1,27 @@ +package com.imageeditorexample + +import android.app.Application +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative +import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost + +class MainApplication : Application(), ReactApplication { + + override val reactHost: ReactHost by lazy { + getDefaultReactHost( + context = applicationContext, + packageList = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + }, + ) + } + + override fun onCreate() { + super.onCreate() + loadReactNative(this) + } +} diff --git a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..5c25e72 --- /dev/null +++ b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..a2f5908 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..1b52399 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..ff10afd Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..115a4c7 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..dcd3cd8 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..459ca60 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..8ca12fe Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..8e19b41 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..b824ebd Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..4c19a13 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/values/strings.xml b/example/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..64339bd --- /dev/null +++ b/example/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + ImageEditorExample + diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..7ba83a2 --- /dev/null +++ b/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/example/android/build.gradle b/example/android/build.gradle index 3e00c03..f0b3a26 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,23 +1,21 @@ buildscript { - apply(from: { - def searchDir = rootDir.toPath() - do { - def p = searchDir.resolve("node_modules/react-native-test-app/android/dependencies.gradle") - if (p.toFile().exists()) { - return p.toRealPath().toString() - } - } while (searchDir = searchDir.getParent()) - throw new GradleException("Could not find `react-native-test-app`"); - }()) - + ext { + buildToolsVersion = "37.0.0" + minSdkVersion = 24 + compileSdkVersion = 37 + targetSdkVersion = 36 + ndkVersion = "27.1.12297006" + kotlinVersion = "2.2.0" + } repositories { - mavenCentral() google() + mavenCentral() } - dependencies { - getReactNativeDependencies().each { dependency -> - classpath(dependency) - } + classpath("com.android.tools.build:gradle") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") } } + +apply plugin: "com.facebook.react.rootproject" diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 63fd807..50a0ed6 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -7,27 +7,20 @@ # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the Gradle Daemon. The setting is -# particularly useful for configuring JVM memory settings for build performance. -# This does not affect the JVM settings for the Gradle client VM. -# The default is `-Xmx512m -XX:MaxMetaspaceSize=256m`. -org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - -# When configured, Gradle will fork up to org.gradle.workers.max JVMs to execute -# projects in parallel. To learn more about parallel task execution, see the -# section on Gradle build performance: -# https://docs.gradle.org/current/userguide/performance.html#parallel_execution. -# Default is `false`. -#org.gradle.parallel=true +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true # AndroidX package structure to make it clearer which packages are bundled with the # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -#android.enableJetifier=true -# Jetifier randomly fails on these libraries -#android.jetifier.ignorelist=hermes-android,react-android # Use this property to specify which architecture you want to build. # You can also override it from the CLI using @@ -39,18 +32,11 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # your application. You should enable this flag either if you want # to write custom TurboModules/Fabric components OR use libraries that # are providing them. -# Note that this is incompatible with web debugging. newArchEnabled=true -#bridgelessEnabled=true - -# Uncomment the line below to build React Native from source. -#react.buildFromSource=true - -# Version of Android NDK to build against. -#ANDROID_NDK_VERSION=26.1.10909125 -# Version of Kotlin to build against. -#KOTLIN_VERSION=1.8.22 +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true # Use this property to enable edge-to-edge display support. # This allows your app to draw behind system bars for an immersive UI. @@ -60,4 +46,4 @@ edgeToEdgeEnabled=true # Opt out of built-in kotlin and new DSL behavior that ships with AGP 9. # Starting from AGP 10.x these opt outs will be removed. android.builtInKotlin=false -android.newDsl=false +android.newDsl=false \ No newline at end of file diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar index 61285a6..d997cfc 100644 Binary files a/example/android/gradle/wrapper/gradle-wrapper.jar and b/example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 37f78a6..c61a118 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/example/android/gradlew b/example/android/gradlew index adff685..739907d 100755 --- a/example/android/gradlew +++ b/example/android/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat index c4bdd3a..4626b90 100644 --- a/example/android/gradlew.bat +++ b/example/android/gradlew.bat @@ -1,3 +1,8 @@ +@REM Copyright (c) Meta Platforms, Inc. and affiliates. +@REM +@REM This source code is licensed under the MIT license found in the +@REM LICENSE file in the root directory of this source tree. + @rem @rem Copyright 2015 the original author or authors. @rem diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 0f09309..77494a0 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,21 +1,6 @@ -pluginManagement { - repositories { - gradlePluginPortal() - mavenCentral() - google() - } -} - -rootProject.name = "ImageEditorExample" - -apply(from: { - def searchDir = rootDir.toPath() - do { - def p = searchDir.resolve("node_modules/react-native-test-app/test-app.gradle") - if (p.toFile().exists()) { - return p.toRealPath().toString() - } - } while (searchDir = searchDir.getParent()) - throw new GradleException("Could not find `react-native-test-app`"); -}()) -applyTestAppSettings(settings) +pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } +plugins { id("com.facebook.react.settings") } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } +rootProject.name = 'ImageEditorExample' +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/example/app.json b/example/app.json index d6ddda4..2d70fea 100644 --- a/example/app.json +++ b/example/app.json @@ -1,32 +1,4 @@ { "name": "ImageEditorExample", - "displayName": "ImageEditorExample", - "components": [ - { - "appKey": "ImageEditorExample", - "displayName": "ImageEditorExample" - } - ], - "resources": { - "android": [ - "dist/res", - "dist/main.android.jsbundle" - ], - "ios": [ - "dist/assets", - "dist/main.ios.jsbundle" - ], - "macos": [ - "dist/assets", - "dist/main.macos.jsbundle" - ], - "visionos": [ - "dist/assets", - "dist/main.visionos.jsbundle" - ], - "windows": [ - "dist/assets", - "dist/main.windows.bundle" - ] - } + "displayName": "ImageEditorExample" } diff --git a/example/ios/.xcode.env b/example/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/example/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/example/ios/ImageEditorExample.xcodeproj/project.pbxproj b/example/ios/ImageEditorExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..af2c6c7 --- /dev/null +++ b/example/ios/ImageEditorExample.xcodeproj/project.pbxproj @@ -0,0 +1,494 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0C80B921A6F3F58F76C31292 /* libPods-ImageEditorExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-ImageEditorExample.a */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 5A2321E4AC47B8EC24C900F6 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* ImageEditorExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ImageEditorExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ImageEditorExample/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ImageEditorExample/Info.plist; sourceTree = ""; }; + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = ImageEditorExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 3B4392A12AC88292D35C810B /* Pods-ImageEditorExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ImageEditorExample.debug.xcconfig"; path = "Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample.debug.xcconfig"; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-ImageEditorExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ImageEditorExample.release.xcconfig"; path = "Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample.release.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-ImageEditorExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ImageEditorExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = ImageEditorExample/AppDelegate.swift; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ImageEditorExample/LaunchScreen.storyboard; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C80B921A6F3F58F76C31292 /* libPods-ImageEditorExample.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* ImageEditorExample */ = { + isa = PBXGroup; + children = ( + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 761780EC2CA45674006654EE /* AppDelegate.swift */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, + ); + name = ImageEditorExample; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 5DCACB8F33CDC322A6C60F78 /* libPods-ImageEditorExample.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* ImageEditorExample */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + BBD78D7AC51CEA395F1C20DB /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* ImageEditorExample.app */, + ); + name = Products; + sourceTree = ""; + }; + BBD78D7AC51CEA395F1C20DB /* Pods */ = { + isa = PBXGroup; + children = ( + 3B4392A12AC88292D35C810B /* Pods-ImageEditorExample.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-ImageEditorExample.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* ImageEditorExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ImageEditorExample" */; + buildPhases = ( + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ImageEditorExample; + productName = ImageEditorExample; + productReference = 13B07F961A680F5B00A75B9A /* ImageEditorExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1210; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ImageEditorExample" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* ImageEditorExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 5A2321E4AC47B8EC24C900F6 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"\\\"$WITH_ENVIRONMENT\\\" \\\"$REACT_NATIVE_XCODE\\\"\"\n"; + }; + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ImageEditorExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + 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"; + showEnvVarsInLog = 0; + }; + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ImageEditorExample/Pods-ImageEditorExample-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-ImageEditorExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = ImageEditorExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = ImageEditorExample; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-ImageEditorExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = ImageEditorExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = ImageEditorExample; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "$(inherited)", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); + PODFILE_DIR = "$(SRCROOT)"; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; + USE_HERMES = true; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); + PODFILE_DIR = "$(SRCROOT)"; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ImageEditorExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ImageEditorExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/example/ios/ImageEditorExample.xcodeproj/xcshareddata/xcschemes/ImageEditorExample.xcscheme b/example/ios/ImageEditorExample.xcodeproj/xcshareddata/xcschemes/ImageEditorExample.xcscheme new file mode 100644 index 0000000..60688e4 --- /dev/null +++ b/example/ios/ImageEditorExample.xcodeproj/xcshareddata/xcschemes/ImageEditorExample.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/ios/ImageEditorExample.xcworkspace/contents.xcworkspacedata b/example/ios/ImageEditorExample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ebde318 --- /dev/null +++ b/example/ios/ImageEditorExample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/example/ios/ImageEditorExample/AppDelegate.swift b/example/ios/ImageEditorExample/AppDelegate.swift new file mode 100644 index 0000000..9a129d5 --- /dev/null +++ b/example/ios/ImageEditorExample/AppDelegate.swift @@ -0,0 +1,48 @@ +import UIKit +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? + + var reactNativeDelegate: ReactNativeDelegate? + var reactNativeFactory: RCTReactNativeFactory? + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + let delegate = ReactNativeDelegate() + let factory = RCTReactNativeFactory(delegate: delegate) + delegate.dependencyProvider = RCTAppDependencyProvider() + + reactNativeDelegate = delegate + reactNativeFactory = factory + + window = UIWindow(frame: UIScreen.main.bounds) + + factory.startReactNative( + withModuleName: "ImageEditorExample", + in: window, + launchOptions: launchOptions + ) + + return true + } +} + +class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { + override func sourceURL(for bridge: RCTBridge) -> URL? { + self.bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} diff --git a/example/ios/ImageEditorExample/Images.xcassets/AppIcon.appiconset/Contents.json b/example/ios/ImageEditorExample/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..8121323 --- /dev/null +++ b/example/ios/ImageEditorExample/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,53 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/example/ios/ImageEditorExample/Images.xcassets/Contents.json b/example/ios/ImageEditorExample/Images.xcassets/Contents.json new file mode 100644 index 0000000..2d92bd5 --- /dev/null +++ b/example/ios/ImageEditorExample/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/ios/ImageEditorExample/Info.plist b/example/ios/ImageEditorExample/Info.plist new file mode 100644 index 0000000..c34f531 --- /dev/null +++ b/example/ios/ImageEditorExample/Info.plist @@ -0,0 +1,60 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ImageEditorExample + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSLocationWhenInUseUsageDescription + + RCTNewArchEnabled + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/example/ios/ImageEditorExample/LaunchScreen.storyboard b/example/ios/ImageEditorExample/LaunchScreen.storyboard new file mode 100644 index 0000000..5a45ac1 --- /dev/null +++ b/example/ios/ImageEditorExample/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/ios/ImageEditorExample/PrivacyInfo.xcprivacy b/example/ios/ImageEditorExample/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..fc90547 --- /dev/null +++ b/example/ios/ImageEditorExample/PrivacyInfo.xcprivacy @@ -0,0 +1,37 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/example/ios/Podfile b/example/ios/Podfile index b7062b5..38a116d 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,9 +1,34 @@ -ws_dir = Pathname.new(__dir__) -ws_dir = ws_dir.parent until - File.exist?("#{ws_dir}/node_modules/react-native-test-app/test_app.rb") || - ws_dir.expand_path.to_s == '/' -require "#{ws_dir}/node_modules/react-native-test-app/test_app.rb" +# Resolve react_native_pods.rb with node to allow for hoisting +require Pod::Executable.execute_command('node', ['-p', + 'require.resolve( + "react-native/scripts/react_native_pods.rb", + {paths: [process.argv[1]]}, + )', __dir__]).strip -workspace 'ImageEditorExample.xcworkspace' +platform :ios, min_ios_version_supported +prepare_react_native_project! -use_test_app! :hermes_enabled => true, :fabric_enabled => true +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end + +target 'ImageEditorExample' do + config = use_native_modules! + + use_react_native!( + :path => config[:reactNativePath], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + post_install do |installer| + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + # :ccache_enabled => true + ) + end +end diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index d897c52..e39d9da 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,336 +1,125 @@ PODS: - - FBLazyVector (0.86.0) - - hermes-engine (250829098.0.14): - - hermes-engine/Pre-built (= 250829098.0.14) - - hermes-engine/Pre-built (250829098.0.14) - - RCTDeprecation (0.86.0) - - RCTRequired (0.86.0) - - RCTSwiftUI (0.86.0) - - RCTSwiftUIWrapper (0.86.0): - - RCTSwiftUI - - RCTTypeSafety (0.86.0): - - FBLazyVector (= 0.86.0) - - RCTRequired (= 0.86.0) - - React-Core (= 0.86.0) - - React (0.86.0): - - React-Core (= 0.86.0) - - React-Core/DevSupport (= 0.86.0) - - React-Core/RCTWebSocket (= 0.86.0) - - React-RCTActionSheet (= 0.86.0) - - React-RCTAnimation (= 0.86.0) - - React-RCTBlob (= 0.86.0) - - React-RCTImage (= 0.86.0) - - React-RCTLinking (= 0.86.0) - - React-RCTNetwork (= 0.86.0) - - React-RCTSettings (= 0.86.0) - - React-RCTText (= 0.86.0) - - React-RCTVibration (= 0.86.0) - - React-callinvoker (0.86.0) - - React-Core (0.86.0): - - hermes-engine - - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default (= 0.86.0) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - boost (1.84.0): - ReactNativeDependencies - - Yoga - - React-Core-prebuilt (0.86.0): + - DoubleConversion (1.1.6): - ReactNativeDependencies - - React-Core/CoreModulesHeaders (0.86.0): - - hermes-engine - - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - fast_float (8.0.0): - ReactNativeDependencies - - Yoga - - React-Core/Default (0.86.0): - - hermes-engine - - RCTDeprecation + - FBLazyVector (0.87.1): - React-Core-prebuilt - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - fmt (12.1.0): - ReactNativeDependencies - - Yoga - - React-Core/DevSupport (0.86.0): - - hermes-engine - - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default (= 0.86.0) - - React-Core/RCTWebSocket (= 0.86.0) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - glog (0.3.5): - ReactNativeDependencies - - Yoga - - React-Core/RCTActionSheetHeaders (0.86.0): - - hermes-engine - - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - hermes-engine (250829098.0.17): + - hermes-engine/Pre-built (= 250829098.0.17) + - hermes-engine/Pre-built (250829098.0.17) + - RCT-Folly (2024.11.18.00): + - RCT-Folly/Default (= 2024.11.18.00) - ReactNativeDependencies - - Yoga - - React-Core/RCTAnimationHeaders (0.86.0): - - hermes-engine - - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - RCT-Folly/Default (2024.11.18.00): - ReactNativeDependencies - - Yoga - - React-Core/RCTBlobHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - RCTDeprecation (0.87.1): - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-Core/RCTImageHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - RCTRequired (0.87.1): - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-Core/RCTLinkingHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - RCTSwiftUI (0.87.1) + - RCTSwiftUIWrapper (0.87.1): + - RCTSwiftUI + - RCTTypeSafety (0.87.1): + - FBLazyVector (= 0.87.1) + - RCTRequired (= 0.87.1) + - React-Core (= 0.87.1) + - React (0.87.1): + - React-Core (= 0.87.1) + - React-Core/DevSupport (= 0.87.1) + - React-Core/RCTWebSocket (= 0.87.1) + - React-RCTActionSheet (= 0.87.1) + - React-RCTAnimation (= 0.87.1) + - React-RCTBlob (= 0.87.1) + - React-RCTImage (= 0.87.1) + - React-RCTLinking (= 0.87.1) + - React-RCTNetwork (= 0.87.1) + - React-RCTSettings (= 0.87.1) + - React-RCTText (= 0.87.1) + - React-RCTVibration (= 0.87.1) + - React-bridging (0.87.1): + - React-callinvoker - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - React-timing - ReactNativeDependencies - - Yoga - - React-Core/RCTNetworkHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - React-callinvoker (0.87.1) + - React-Core (0.87.1): - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils + - React-Core/Default (= 0.87.1) + - React-Core-prebuilt (0.87.1): - ReactNativeDependencies - - Yoga - - React-Core/RCTSettingsHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - React-Core/CoreModulesHeaders (0.87.1): - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-Core/RCTTextHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - React-Core/Default (0.87.1): - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-Core/RCTVibrationHeaders (0.86.0): - - hermes-engine - - RCTDeprecation + - React-Core/DevSupport (0.87.1): - React-Core-prebuilt - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-Core/RCTWebSocket (0.86.0): - - hermes-engine - - RCTDeprecation + - React-Core/RCTActionSheetHeaders (0.87.1): - React-Core-prebuilt - - React-Core/Default (= 0.86.0) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-CoreModules (0.86.0): - - RCTTypeSafety (= 0.86.0) + - React-Core/RCTAnimationHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTBlobHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTImageHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTLinkingHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTNetworkHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTSettingsHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTTextHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTVibrationHeaders (0.87.1): + - React-Core-prebuilt + - React-Core/RCTWebSocket (0.87.1): - React-Core-prebuilt - - React-Core/CoreModulesHeaders (= 0.86.0) + - React-CoreModules (0.87.1): + - RCTTypeSafety (= 0.87.1) + - React-Core-prebuilt + - React-Core/CoreModulesHeaders (= 0.87.1) - React-debug - React-featureflags - - React-jsi (= 0.86.0) + - React-jsi (= 0.87.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.86.0) + - React-RCTImage (= 0.87.1) - React-runtimeexecutor - React-utils - ReactCommon - ReactNativeDependencies - - React-cxxreact (0.86.0): + - React-cxxreact (0.87.1): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-callinvoker (= 0.87.1) - React-Core-prebuilt - - React-debug (= 0.86.0) - - React-jsi (= 0.86.0) + - React-debug (= 0.87.1) + - React-jserrorhandler (= 0.87.1) + - React-jsi (= 0.87.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) + - React-logger (= 0.87.1) + - React-perflogger (= 0.87.1) - React-runtimeexecutor - - React-timing (= 0.86.0) + - React-timing (= 0.87.1) - React-utils - ReactNativeDependencies - - React-debug (0.86.0): - - React-debug/redbox (= 0.86.0) - - React-debug/redbox (0.86.0) - - React-defaultsnativemodule (0.86.0): + - React-cxxstableapi (0.87.1) + - React-debug (0.87.1): + - React-debug/redbox (= 0.87.1) + - React-debug/redbox (0.87.1) + - React-defaultsnativemodule (0.87.1): - hermes-engine - React-Core-prebuilt - React-domnativemodule @@ -348,8 +137,9 @@ PODS: - React-webperformancenativemodule - ReactNativeDependencies - Yoga - - React-domnativemodule (0.86.0): + - React-domnativemodule (0.87.1): - hermes-engine + - React-bridging - React-Core-prebuilt - React-Fabric - React-Fabric/bridging @@ -362,33 +152,34 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-Fabric (0.86.0): + - React-Fabric (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/animated (= 0.86.0) - - React-Fabric/animationbackend (= 0.86.0) - - React-Fabric/animations (= 0.86.0) - - React-Fabric/attributedstring (= 0.86.0) - - React-Fabric/bridging (= 0.86.0) - - React-Fabric/componentregistry (= 0.86.0) - - React-Fabric/componentregistrynative (= 0.86.0) - - React-Fabric/components (= 0.86.0) - - React-Fabric/consistency (= 0.86.0) - - React-Fabric/core (= 0.86.0) - - React-Fabric/dom (= 0.86.0) - - React-Fabric/imagemanager (= 0.86.0) - - React-Fabric/leakchecker (= 0.86.0) - - React-Fabric/mounting (= 0.86.0) - - React-Fabric/observers (= 0.86.0) - - React-Fabric/scheduler (= 0.86.0) - - React-Fabric/telemetry (= 0.86.0) - - React-Fabric/uimanager (= 0.86.0) - - React-Fabric/viewtransition (= 0.86.0) + - React-Fabric/animated (= 0.87.1) + - React-Fabric/animationbackend (= 0.87.1) + - React-Fabric/animations (= 0.87.1) + - React-Fabric/attributedstring (= 0.87.1) + - React-Fabric/bridging (= 0.87.1) + - React-Fabric/componentregistry (= 0.87.1) + - React-Fabric/componentregistrynative (= 0.87.1) + - React-Fabric/components (= 0.87.1) + - React-Fabric/consistency (= 0.87.1) + - React-Fabric/core (= 0.87.1) + - React-Fabric/dom (= 0.87.1) + - React-Fabric/imagemanager (= 0.87.1) + - React-Fabric/leakchecker (= 0.87.1) + - React-Fabric/mounting (= 0.87.1) + - React-Fabric/observers (= 0.87.1) + - React-Fabric/scheduler (= 0.87.1) + - React-Fabric/telemetry (= 0.87.1) + - React-Fabric/uimanager (= 0.87.1) + - React-Fabric/viewtransition (= 0.87.1) - React-featureflags - React-graphics - React-jsi @@ -400,10 +191,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animated (0.86.0): + - React-Fabric/animated (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -420,10 +212,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animationbackend (0.86.0): + - React-Fabric/animationbackend (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -439,10 +232,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animations (0.86.0): + - React-Fabric/animations (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -458,10 +252,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/attributedstring (0.86.0): + - React-Fabric/attributedstring (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -477,10 +272,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/bridging (0.86.0): + - React-Fabric/bridging (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -496,10 +292,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/componentregistry (0.86.0): + - React-Fabric/componentregistry (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -515,10 +312,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/componentregistrynative (0.86.0): + - React-Fabric/componentregistrynative (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -534,18 +332,19 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components (0.86.0): + - React-Fabric/components (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.86.0) - - React-Fabric/components/root (= 0.86.0) - - React-Fabric/components/scrollview (= 0.86.0) - - React-Fabric/components/view (= 0.86.0) + - React-Fabric/components/legacyviewmanagerinterop (= 0.87.1) + - React-Fabric/components/root (= 0.87.1) + - React-Fabric/components/scrollview (= 0.87.1) + - React-Fabric/components/view (= 0.87.1) - React-featureflags - React-graphics - React-jsi @@ -557,10 +356,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/legacyviewmanagerinterop (0.86.0): + - React-Fabric/components/legacyviewmanagerinterop (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -576,10 +376,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/root (0.86.0): + - React-Fabric/components/root (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -595,10 +396,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/scrollview (0.86.0): + - React-Fabric/components/scrollview (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -614,10 +416,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/view (0.86.0): + - React-Fabric/components/view (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -635,10 +438,11 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-Fabric/consistency (0.86.0): + - React-Fabric/consistency (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -654,10 +458,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/core (0.86.0): + - React-Fabric/core (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -673,10 +478,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/dom (0.86.0): + - React-Fabric/dom (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -692,10 +498,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/imagemanager (0.86.0): + - React-Fabric/imagemanager (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -711,10 +518,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/leakchecker (0.86.0): + - React-Fabric/leakchecker (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -730,10 +538,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/mounting (0.86.0): + - React-Fabric/mounting (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -750,17 +559,18 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers (0.86.0): + - React-Fabric/observers (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.86.0) - - React-Fabric/observers/intersection (= 0.86.0) - - React-Fabric/observers/mutation (= 0.86.0) + - React-Fabric/observers/events (= 0.87.1) + - React-Fabric/observers/intersection (= 0.87.1) + - React-Fabric/observers/mutation (= 0.87.1) - React-featureflags - React-graphics - React-jsi @@ -772,10 +582,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/events (0.86.0): + - React-Fabric/observers/events (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -791,10 +602,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/intersection (0.86.0): + - React-Fabric/observers/intersection (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -810,10 +622,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/mutation (0.86.0): + - React-Fabric/observers/mutation (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -829,10 +642,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/scheduler (0.86.0): + - React-Fabric/scheduler (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -853,10 +667,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/telemetry (0.86.0): + - React-Fabric/telemetry (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -872,15 +687,16 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/uimanager (0.86.0): + - React-Fabric/uimanager (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.86.0) + - React-Fabric/uimanager/consistency (= 0.87.1) - React-featureflags - React-graphics - React-jsi @@ -893,10 +709,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/uimanager/consistency (0.86.0): + - React-Fabric/uimanager/consistency (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -913,10 +730,11 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/viewtransition (0.86.0): + - React-Fabric/viewtransition (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -932,7 +750,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-FabricComponents (0.86.0): + - React-FabricComponents (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -941,8 +759,8 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.86.0) - - React-FabricComponents/textlayoutmanager (= 0.86.0) + - React-FabricComponents/components (= 0.87.1) + - React-FabricComponents/textlayoutmanager (= 0.87.1) - React-featureflags - React-graphics - React-jsi @@ -955,7 +773,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components (0.86.0): + - React-FabricComponents/components (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -964,17 +782,17 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.86.0) - - React-FabricComponents/components/iostextinput (= 0.86.0) - - React-FabricComponents/components/modal (= 0.86.0) - - React-FabricComponents/components/rncore (= 0.86.0) - - React-FabricComponents/components/safeareaview (= 0.86.0) - - React-FabricComponents/components/scrollview (= 0.86.0) - - React-FabricComponents/components/switch (= 0.86.0) - - React-FabricComponents/components/text (= 0.86.0) - - React-FabricComponents/components/textinput (= 0.86.0) - - React-FabricComponents/components/unimplementedview (= 0.86.0) - - React-FabricComponents/components/virtualview (= 0.86.0) + - React-FabricComponents/components/inputaccessory (= 0.87.1) + - React-FabricComponents/components/iostextinput (= 0.87.1) + - React-FabricComponents/components/modal (= 0.87.1) + - React-FabricComponents/components/rncore (= 0.87.1) + - React-FabricComponents/components/safeareaview (= 0.87.1) + - React-FabricComponents/components/scrollview (= 0.87.1) + - React-FabricComponents/components/switch (= 0.87.1) + - React-FabricComponents/components/text (= 0.87.1) + - React-FabricComponents/components/textinput (= 0.87.1) + - React-FabricComponents/components/unimplementedview (= 0.87.1) + - React-FabricComponents/components/virtualview (= 0.87.1) - React-featureflags - React-graphics - React-jsi @@ -987,7 +805,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/inputaccessory (0.86.0): + - React-FabricComponents/components/inputaccessory (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1008,7 +826,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/iostextinput (0.86.0): + - React-FabricComponents/components/iostextinput (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1029,7 +847,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/modal (0.86.0): + - React-FabricComponents/components/modal (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1050,7 +868,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/rncore (0.86.0): + - React-FabricComponents/components/rncore (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1071,7 +889,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/safeareaview (0.86.0): + - React-FabricComponents/components/safeareaview (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1092,7 +910,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/scrollview (0.86.0): + - React-FabricComponents/components/scrollview (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1113,7 +931,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/switch (0.86.0): + - React-FabricComponents/components/switch (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1134,7 +952,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/text (0.86.0): + - React-FabricComponents/components/text (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1155,7 +973,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/textinput (0.86.0): + - React-FabricComponents/components/textinput (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1176,7 +994,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/unimplementedview (0.86.0): + - React-FabricComponents/components/unimplementedview (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1197,7 +1015,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/virtualview (0.86.0): + - React-FabricComponents/components/virtualview (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1218,7 +1036,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/textlayoutmanager (0.86.0): + - React-FabricComponents/textlayoutmanager (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1239,27 +1057,27 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricImage (0.86.0): + - React-FabricImage (0.87.1): - hermes-engine - - RCTRequired (= 0.86.0) - - RCTTypeSafety (= 0.86.0) + - RCTRequired (= 0.87.1) + - RCTTypeSafety (= 0.87.1) - React-Core-prebuilt - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.86.0) + - React-jsiexecutor (= 0.87.1) - React-logger - React-rendererdebug - React-utils - ReactCommon - ReactNativeDependencies - Yoga - - React-featureflags (0.86.0): + - React-featureflags (0.87.1): - React-Core-prebuilt - ReactNativeDependencies - - React-featureflagsnativemodule (0.86.0): + - React-featureflagsnativemodule (0.87.1): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1268,7 +1086,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-graphics (0.86.0): + - React-graphics (0.87.1): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1277,22 +1095,23 @@ PODS: - React-rendererdebug - React-utils - ReactNativeDependencies - - React-hermes (0.86.0): + - React-hermes (0.87.1): - hermes-engine - React-Core-prebuilt - - React-cxxreact (= 0.86.0) + - React-cxxreact (= 0.87.1) - React-jsi - - React-jsiexecutor (= 0.86.0) + - React-jsiexecutor (= 0.87.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-oscompat - - React-perflogger (= 0.86.0) + - React-perflogger (= 0.87.1) - React-runtimeexecutor - ReactNativeDependencies - - React-idlecallbacksnativemodule (0.86.0): + - React-idlecallbacksnativemodule (0.87.1): - hermes-engine + - React-bridging - React-Core-prebuilt - React-jsi - React-jsiexecutor @@ -1301,7 +1120,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-ImageManager (0.86.0): + - React-ImageManager (0.87.1): - React-Core-prebuilt - React-Core/Default - React-debug @@ -1310,8 +1129,9 @@ PODS: - React-rendererdebug - React-utils - ReactNativeDependencies - - React-intersectionobservernativemodule (0.86.0): + - React-intersectionobservernativemodule (0.87.1): - hermes-engine + - React-bridging - React-Core-prebuilt - React-cxxreact - React-Fabric @@ -1325,20 +1145,19 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-jserrorhandler (0.86.0): + - React-jserrorhandler (0.87.1): - hermes-engine + - React-bridging - React-Core-prebuilt - - React-cxxreact - React-debug - React-featureflags - React-jsi - - ReactCommon/turbomodule/bridging - ReactNativeDependencies - - React-jsi (0.86.0): + - React-jsi (0.87.1): - hermes-engine - React-Core-prebuilt - ReactNativeDependencies - - React-jsiexecutor (0.86.0): + - React-jsiexecutor (0.87.1): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1353,7 +1172,7 @@ PODS: - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsinspector (0.86.0): + - React-jsinspector (0.87.1): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1362,18 +1181,18 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.86.0) + - React-perflogger (= 0.87.1) - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsinspectorcdp (0.86.0): + - React-jsinspectorcdp (0.87.1): - React-Core-prebuilt - ReactNativeDependencies - - React-jsinspectornetwork (0.86.0): + - React-jsinspectornetwork (0.87.1): - React-Core-prebuilt - React-jsinspectorcdp - ReactNativeDependencies - - React-jsinspectortracing (0.86.0): + - React-jsinspectortracing (0.87.1): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1382,28 +1201,28 @@ PODS: - React-timing - React-utils - ReactNativeDependencies - - React-jsitooling (0.86.0): + - React-jsitooling (0.87.1): - hermes-engine - React-Core-prebuilt - - React-cxxreact (= 0.86.0) + - React-cxxreact (= 0.87.1) - React-debug - - React-jsi (= 0.86.0) + - React-jsi (= 0.87.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsitracing (0.86.0): + - React-jsitracing (0.87.1): - React-jsi - - React-logger (0.86.0): + - React-logger (0.87.1): - React-Core-prebuilt - ReactNativeDependencies - - React-Mapbuffer (0.86.0): + - React-Mapbuffer (0.87.1): - React-Core-prebuilt - React-debug - ReactNativeDependencies - - React-microtasksnativemodule (0.86.0): + - React-microtasksnativemodule (0.87.1): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1411,8 +1230,9 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-mutationobservernativemodule (0.86.0): + - React-mutationobservernativemodule (0.87.1): - hermes-engine + - React-bridging - React-Core-prebuilt - React-cxxreact - React-Fabric @@ -1426,10 +1246,11 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-image-editor (4.3.0): + - react-native-image-editor (5.0.0): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1445,14 +1266,14 @@ PODS: - React-rendererdebug - React-utils - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-safe-area-context (5.8.0): + - react-native-safe-area-context (5.10.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1461,22 +1282,22 @@ PODS: - React-graphics - React-ImageManager - React-jsi - - react-native-safe-area-context/common (= 5.8.0) - - react-native-safe-area-context/fabric (= 5.8.0) + - react-native-safe-area-context/common (= 5.10.1) + - react-native-safe-area-context/fabric (= 5.10.1) - React-NativeModulesApple - React-RCTFabric - React-renderercss - React-rendererdebug - React-utils - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-safe-area-context/common (5.8.0): + - react-native-safe-area-context/common (5.10.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1491,14 +1312,14 @@ PODS: - React-rendererdebug - React-utils - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-safe-area-context/fabric (5.8.0): + - react-native-safe-area-context/fabric (5.10.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1514,57 +1335,12 @@ PODS: - React-rendererdebug - React-utils - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - Yoga - - react-native-slider (5.2.0): - - hermes-engine - - RCTRequired - - RCTTypeSafety - - React-Core - - React-Core-prebuilt - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - react-native-slider/common (= 5.2.0) - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - Yoga - - react-native-slider/common (5.2.0): - - hermes-engine - - RCTRequired - - RCTTypeSafety - - React-Core - - React-Core-prebuilt - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-NativeModulesApple (0.86.0): + - React-NativeModulesApple (0.87.1): - hermes-engine + - React-bridging - React-callinvoker - React-Core - React-Core-prebuilt @@ -1575,21 +1351,20 @@ PODS: - React-jsinspector - React-jsinspectorcdp - React-runtimeexecutor - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-networking (0.86.0): + - React-networking (0.87.1): - React-Core-prebuilt - React-jsinspectornetwork - React-jsinspectortracing - React-performancetimeline - React-timing - ReactNativeDependencies - - React-oscompat (0.86.0) - - React-perflogger (0.86.0): + - React-oscompat (0.87.1) + - React-perflogger (0.87.1): - React-Core-prebuilt - ReactNativeDependencies - - React-performancecdpmetrics (0.86.0): + - React-performancecdpmetrics (0.87.1): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1597,7 +1372,7 @@ PODS: - React-runtimeexecutor - React-timing - ReactNativeDependencies - - React-performancetimeline (0.86.0): + - React-performancetimeline (0.87.1): - React-Core-prebuilt - React-featureflags - React-jsinspector @@ -1605,9 +1380,18 @@ PODS: - React-perflogger - React-timing - ReactNativeDependencies - - React-RCTActionSheet (0.86.0): - - React-Core/RCTActionSheetHeaders (= 0.86.0) - - React-RCTAnimation (0.86.0): + - React-RCTActionSheet (0.87.1): + - React-Core/RCTActionSheetHeaders (= 0.87.1) + - React-RCTAnimatedModuleProvider (0.87.1): + - hermes-engine + - React-Core + - React-Core-prebuilt + - React-Fabric/animated + - React-featureflags + - ReactCommon + - ReactNativeDependencies + - Yoga + - React-RCTAnimation (0.87.1): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTAnimationHeaders @@ -1618,7 +1402,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTAppDelegate (0.86.0): + - React-RCTAppDelegate (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1633,6 +1417,7 @@ PODS: - React-hermes - React-jsitooling - React-NativeModulesApple + - React-RCTAnimatedModuleProvider - React-RCTFabric - React-RCTFBReactNativeSpec - React-RCTImage @@ -1646,7 +1431,7 @@ PODS: - React-utils - ReactCommon - ReactNativeDependencies - - React-RCTBlob (0.86.0): + - React-RCTBlob (0.87.1): - hermes-engine - React-Core-prebuilt - React-Core/RCTBlobHeaders @@ -1659,52 +1444,25 @@ PODS: - React-RCTNetwork - ReactCommon - ReactNativeDependencies - - React-RCTFabric (0.86.0): - - hermes-engine - - RCTSwiftUIWrapper - - React-Core + - React-RCTFabric (0.87.1): - React-Core-prebuilt - - React-debug - - React-Fabric - - React-FabricComponents - - React-FabricImage - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-networking - - React-performancecdpmetrics - - React-performancetimeline - - React-RCTAnimation - - React-RCTFBReactNativeSpec - - React-RCTImage - - React-RCTText - - React-rendererconsistency - - React-renderercss - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactNativeDependencies - - Yoga - - React-RCTFBReactNativeSpec (0.86.0): + - React-RCTFBReactNativeSpec (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.86.0) + - React-RCTFBReactNativeSpec/components (= 0.87.1) - ReactCommon - ReactNativeDependencies - - React-RCTFBReactNativeSpec/components (0.86.0): + - React-RCTFBReactNativeSpec/components (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1718,7 +1476,7 @@ PODS: - ReactCommon - ReactNativeDependencies - Yoga - - React-RCTImage (0.86.0): + - React-RCTImage (0.87.1): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTImageHeaders @@ -1728,14 +1486,14 @@ PODS: - React-RCTNetwork - ReactCommon - ReactNativeDependencies - - React-RCTLinking (0.86.0): - - React-Core/RCTLinkingHeaders (= 0.86.0) - - React-jsi (= 0.86.0) + - React-RCTLinking (0.87.1): + - React-Core/RCTLinkingHeaders (= 0.87.1) + - React-jsi (= 0.87.1) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.86.0) - - React-RCTNetwork (0.86.0): + - ReactCommon/turbomodule/core (= 0.87.1) + - React-RCTNetwork (0.87.1): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTNetworkHeaders @@ -1749,23 +1507,9 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTRuntime (0.86.0): - - hermes-engine - - React-Core + - React-RCTRuntime (0.87.1): - React-Core-prebuilt - - React-debug - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-jsitooling - - React-RuntimeApple - - React-RuntimeCore - - React-runtimeexecutor - - React-RuntimeHermes - - React-utils - - ReactNativeDependencies - - React-RCTSettings (0.86.0): + - React-RCTSettings (0.87.1): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTSettingsHeaders @@ -1774,10 +1518,10 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTText (0.86.0): - - React-Core/RCTTextHeaders (= 0.86.0) + - React-RCTText (0.87.1): + - React-Core/RCTTextHeaders (= 0.87.1) - Yoga - - React-RCTVibration (0.86.0): + - React-RCTVibration (0.87.1): - React-Core-prebuilt - React-Core/RCTVibrationHeaders - React-jsi @@ -1785,15 +1529,15 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-rendererconsistency (0.86.0) - - React-renderercss (0.86.0): + - React-rendererconsistency (0.87.1) + - React-renderercss (0.87.1): - React-debug - React-utils - - React-rendererdebug (0.86.0): + - React-rendererdebug (0.87.1): - React-Core-prebuilt - React-debug - ReactNativeDependencies - - React-RuntimeApple (0.86.0): + - React-RuntimeApple (0.87.1): - hermes-engine - React-callinvoker - React-Core-prebuilt @@ -1816,7 +1560,7 @@ PODS: - React-runtimescheduler - React-utils - ReactNativeDependencies - - React-RuntimeCore (0.86.0): + - React-RuntimeCore (0.87.1): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1832,14 +1576,14 @@ PODS: - React-runtimescheduler - React-utils - ReactNativeDependencies - - React-runtimeexecutor (0.86.0): + - React-runtimeexecutor (0.87.1): - React-Core-prebuilt - React-debug - React-featureflags - - React-jsi (= 0.86.0) + - React-jsi (= 0.87.1) - React-utils - ReactNativeDependencies - - React-RuntimeHermes (0.86.0): + - React-RuntimeHermes (0.87.1): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1854,13 +1598,14 @@ PODS: - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-runtimescheduler (0.86.0): + - React-runtimescheduler (0.87.1): - hermes-engine - React-callinvoker - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags + - React-jserrorhandler - React-jsi - React-jsinspectortracing - React-performancetimeline @@ -1870,15 +1615,15 @@ PODS: - React-timing - React-utils - ReactNativeDependencies - - React-timing (0.86.0): + - React-timing (0.87.1): - React-debug - - React-utils (0.86.0): + - React-utils (0.87.1): - hermes-engine - React-Core-prebuilt - React-debug - - React-jsi (= 0.86.0) + - React-jsi (= 0.87.1) - ReactNativeDependencies - - React-viewtransitionnativemodule (0.86.0): + - React-viewtransitionnativemodule (0.87.1): - hermes-engine - React-Core-prebuilt - React-Fabric @@ -1890,8 +1635,9 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-webperformancenativemodule (0.86.0): + - React-webperformancenativemodule (0.87.1): - hermes-engine + - React-bridging - React-Core-prebuilt - React-cxxreact - React-jsi @@ -1901,12 +1647,13 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/core - ReactNativeDependencies - - ReactAppDependencyProvider (0.86.0): + - ReactAppDependencyProvider (0.87.1): - ReactCodegen - - ReactCodegen (0.86.0): + - ReactCodegen (0.87.1): - hermes-engine - RCTRequired - RCTTypeSafety + - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1920,91 +1667,63 @@ PODS: - React-RCTAppDelegate - React-rendererdebug - React-utils - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - ReactCommon (0.86.0): + - ReactCommon (0.87.1): - React-Core-prebuilt - - ReactCommon/turbomodule (= 0.86.0) + - ReactCommon/turbomodule (= 0.87.1) - ReactNativeDependencies - - ReactCommon/turbomodule (0.86.0): + - ReactCommon/turbomodule (0.87.1): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-callinvoker (= 0.87.1) - React-Core-prebuilt - - React-cxxreact (= 0.86.0) - - React-jsi (= 0.86.0) - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) - - ReactCommon/turbomodule/bridging (= 0.86.0) - - ReactCommon/turbomodule/core (= 0.86.0) + - React-jsi (= 0.87.1) + - React-logger (= 0.87.1) + - React-perflogger (= 0.87.1) + - ReactCommon/turbomodule/core (= 0.87.1) - ReactNativeDependencies - - ReactCommon/turbomodule/bridging (0.86.0): + - ReactCommon/turbomodule/core (0.87.1): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-bridging + - React-callinvoker (= 0.87.1) - React-Core-prebuilt - - React-cxxreact (= 0.86.0) - - React-jsi (= 0.86.0) - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) + - React-cxxreact (= 0.87.1) + - React-debug (= 0.87.1) + - React-featureflags (= 0.87.1) + - React-jsi (= 0.87.1) + - React-logger (= 0.87.1) + - React-perflogger (= 0.87.1) + - React-utils (= 0.87.1) - ReactNativeDependencies - - ReactCommon/turbomodule/core (0.86.0): - - hermes-engine - - React-callinvoker (= 0.86.0) - - React-Core-prebuilt - - React-cxxreact (= 0.86.0) - - React-debug (= 0.86.0) - - React-featureflags (= 0.86.0) - - React-jsi (= 0.86.0) - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) - - React-utils (= 0.86.0) + - ReactNativeDependencies (0.87.1) + - SocketRocket (0.7.1): - ReactNativeDependencies - - ReactNativeDependencies (0.86.0) - - ReactNativeHost (0.5.21): - - hermes-engine - - RCTRequired - - RCTTypeSafety - - React-Core + - Yoga (0.0.0): - React-Core-prebuilt - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTAppDelegate - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - Yoga - - ReactTestApp-DevSupport (5.4.5): - - React-Core - - React-jsi - - ReactTestApp-Resources (1.0.0-dev) - - Yoga (0.0.0) DEPENDENCIES: - - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - boost (from `build/rndeps-facades/boost`) + - DoubleConversion (from `build/rndeps-facades/DoubleConversion`) + - fast_float (from `build/rndeps-facades/fast_float`) + - FBLazyVector (from `build/rncore-facades/FBLazyVector`) + - fmt (from `build/rndeps-facades/fmt`) + - glog (from `build/rndeps-facades/glog`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCT-Folly (from `build/rndeps-facades/RCT-Folly`) + - RCTDeprecation (from `build/rncore-facades/RCTDeprecation`) + - RCTRequired (from `build/rncore-facades/RCTRequired`) - RCTSwiftUI (from `../node_modules/react-native/ReactApple/RCTSwiftUI`) - RCTSwiftUIWrapper (from `../node_modules/react-native/ReactApple/RCTSwiftUIWrapper`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) + - React-bridging (from `../node_modules/react-native/ReactCommon/react/bridging`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Core (from `../node_modules/react-native/`) + - React-Core (from `build/rncore-facades/React-Core`) - React-Core-prebuilt (from `../node_modules/react-native/React-Core-prebuilt.podspec`) - - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `build/rncore-facades/React-Core`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-cxxstableapi (from `../node_modules/react-native/ReactCommon/react/cxxstableapi`) - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) @@ -2033,7 +1752,6 @@ DEPENDENCIES: - React-mutationobservernativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver`) - "react-native-image-editor (from `../node_modules/@react-native-community/image-editor`)" - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - - "react-native-slider (from `../node_modules/@react-native-community/slider`)" - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-networking (from `../node_modules/react-native/ReactCommon/react/networking`) - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) @@ -2041,15 +1759,16 @@ DEPENDENCIES: - React-performancecdpmetrics (from `../node_modules/react-native/ReactCommon/react/performance/cdpmetrics`) - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimatedModuleProvider (from `../node_modules/react-native/ReactApple/RCTAnimatedModuleProvider`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTFabric (from `build/rncore-facades/React-RCTFabric`) - React-RCTFBReactNativeSpec (from `../node_modules/react-native/React`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`) + - React-RCTRuntime (from `build/rncore-facades/React-RCTRuntime`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) @@ -2069,21 +1788,31 @@ DEPENDENCIES: - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - ReactNativeDependencies (from `../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`) - - "ReactNativeHost (from `../node_modules/@rnx-kit/react-native-host`)" - - ReactTestApp-DevSupport (from `../node_modules/react-native-test-app`) - - ReactTestApp-Resources (from `..`) - - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + - SocketRocket (from `build/rndeps-facades/SocketRocket`) + - Yoga (from `build/rncore-facades/Yoga`) EXTERNAL SOURCES: + boost: + :path: build/rndeps-facades/boost + DoubleConversion: + :path: build/rndeps-facades/DoubleConversion + fast_float: + :path: build/rndeps-facades/fast_float FBLazyVector: - :path: "../node_modules/react-native/Libraries/FBLazyVector" + :path: build/rncore-facades/FBLazyVector + fmt: + :path: build/rndeps-facades/fmt + glog: + :path: build/rndeps-facades/glog hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v250829098.0.14 + :tag: hermes-v250829098.0.17 + RCT-Folly: + :path: build/rndeps-facades/RCT-Folly RCTDeprecation: - :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" + :path: build/rncore-facades/RCTDeprecation RCTRequired: - :path: "../node_modules/react-native/Libraries/Required" + :path: build/rncore-facades/RCTRequired RCTSwiftUI: :path: "../node_modules/react-native/ReactApple/RCTSwiftUI" RCTSwiftUIWrapper: @@ -2092,16 +1821,20 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" + React-bridging: + :path: "../node_modules/react-native/ReactCommon/react/bridging" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" React-Core: - :path: "../node_modules/react-native/" + :path: build/rncore-facades/React-Core React-Core-prebuilt: :podspec: "../node_modules/react-native/React-Core-prebuilt.podspec" React-CoreModules: :path: "../node_modules/react-native/React/CoreModules" React-cxxreact: :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-cxxstableapi: + :path: "../node_modules/react-native/ReactCommon/react/cxxstableapi" React-debug: :path: "../node_modules/react-native/ReactCommon/react/debug" React-defaultsnativemodule: @@ -2158,8 +1891,6 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-community/image-editor" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" - react-native-slider: - :path: "../node_modules/@react-native-community/slider" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-networking: @@ -2174,6 +1905,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimatedModuleProvider: + :path: "../node_modules/react-native/ReactApple/RCTAnimatedModuleProvider" React-RCTAnimation: :path: "../node_modules/react-native/Libraries/NativeAnimation" React-RCTAppDelegate: @@ -2181,7 +1914,7 @@ EXTERNAL SOURCES: React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" React-RCTFabric: - :path: "../node_modules/react-native/React" + :path: build/rncore-facades/React-RCTFabric React-RCTFBReactNativeSpec: :path: "../node_modules/react-native/React" React-RCTImage: @@ -2191,7 +1924,7 @@ EXTERNAL SOURCES: React-RCTNetwork: :path: "../node_modules/react-native/Libraries/Network" React-RCTRuntime: - :path: "../node_modules/react-native/React/Runtime" + :path: build/rncore-facades/React-RCTRuntime React-RCTSettings: :path: "../node_modules/react-native/Libraries/Settings" React-RCTText: @@ -2230,98 +1963,100 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon" ReactNativeDependencies: :podspec: "../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec" - ReactNativeHost: - :path: "../node_modules/@rnx-kit/react-native-host" - ReactTestApp-DevSupport: - :path: "../node_modules/react-native-test-app" - ReactTestApp-Resources: - :path: ".." + SocketRocket: + :path: build/rndeps-facades/SocketRocket Yoga: - :path: "../node_modules/react-native/ReactCommon/yoga" + :path: build/rncore-facades/Yoga SPEC CHECKSUMS: - FBLazyVector: b3e7ad108f0d882e30445c5527d774e3fd432f3d - hermes-engine: 1d8658d95f1b06c6f809c781c5761d4bfab1b32e - RCTDeprecation: 2a74a2c57675e64419bd89078efde81f7c1de90b - RCTRequired: 30451112e6fef4e6f31b4e7eee0845156e35e4b0 - RCTSwiftUI: 5aaf0b07e747ba749dc6acc94d8bd41eea4b570f - RCTSwiftUIWrapper: 1feaf484029fd6294fe8bc401d28e1d803eca142 - RCTTypeSafety: 3eaed17dbddb0b989208b062ea14c44d412b9780 - React: 2574546f2d017abd14d0c9b48cf2b6a0547c2591 - React-callinvoker: 03cd4b931d1d583d87aae99b8f7b6fe26bf571ee - React-Core: b0a0038e05720fb8148759404e9c354e3e60043c - React-Core-prebuilt: 7da85c26e5616d52f119b81ce5e3e6fc5c9bda49 - React-CoreModules: a1121b3182200be11e078940159c67ff95ee98b4 - React-cxxreact: 8f74977959064bee99af63bb0ad95b6c3dbec921 - React-debug: 8cc8d99ccc664ef9e873027f7fc3fb0a50496012 - React-defaultsnativemodule: 7c8182addbb79ec576c589186b51e3fb405da7da - React-domnativemodule: 576bd1e6ad81477997dcb556e6db1f005134356b - React-Fabric: 4cbd22315ddb9e33441437f851117d314d1b4ad3 - React-FabricComponents: efe374aecaf1bbc2fb9a195ece4b50fd9f66bfa0 - React-FabricImage: cfeffc0b527de8bc2dc5a50618dad119361d0ec3 - React-featureflags: 98931b22f5f4b861a3985b75bd79c5fcbe4618ab - React-featureflagsnativemodule: 518c2e279cdb3835604f7e8fb15f4c2691336b4c - React-graphics: ac9ff09da733d98c0e5eddb589dc7f9f082c9531 - React-hermes: bd1a14a982e63ee75e9c9cb8d11d3d4b5f330196 - React-idlecallbacksnativemodule: b6378d3bca83d8284e1abaa51251ee1ce570d85a - React-ImageManager: 4936349da191d1bc29ed2bbaf5a2dd74bfdf5ed8 - React-intersectionobservernativemodule: d9a6451f2aa1f1c989d5d5e0d967db2c07d0c48c - React-jserrorhandler: 2455567e21fcc036f96015b2b8eb4eb13e0d8d05 - React-jsi: bf5ec8e7a7b26bddc39ab7f821af5aad8bb94a33 - React-jsiexecutor: cf6c957f578dd491ec8ae516a39aff2cf7369f1a - React-jsinspector: 63e9b9f9a5b6c51bf38deea2b379a63754c0ab0d - React-jsinspectorcdp: 327082854cdebb1f500a669c51146b9fd871058c - React-jsinspectornetwork: bbc5c2e881252075d63dc679f18cd856c2def94e - React-jsinspectortracing: ea6ec857ead0de4e6bbb2e12ee48ae4381938874 - React-jsitooling: 52e278666b35e856414d613d7dc50d1f0d50d9a5 - React-jsitracing: 642172314677a1d1780b81f4e2e4a3f4d3ccf238 - React-logger: 35cda3ab8977c6c4546e3cf6dc8f91bacec25934 - React-Mapbuffer: c058c051f571589e37a29bce18d0e9b730faa9d0 - React-microtasksnativemodule: 03752e60738a797bb49f4d6cb0291dfa398099b8 - React-mutationobservernativemodule: 2e568e13c98bd185fe83266795233fa7ad2cbc19 - react-native-image-editor: 2e15f132502bb54b2776b36f311e98c162957b0b - react-native-safe-area-context: c1eb308f4b36372a4de4b3bdaa8ed695ec3dd461 - react-native-slider: 8824cf332b11bf5149f6576c8c8b32b4f93f82ac - React-NativeModulesApple: a4713821c9caae40ae33eef933a6e692a6f4a81d - React-networking: b344a1a41a4729ef859123b7a234f3092761cb25 - React-oscompat: 0b72a7e926954a0415ccd83e0748b6561fe45367 - React-perflogger: a0d581c6cc174e847877107ddac3f4fc9b518dc7 - React-performancecdpmetrics: 91d3d0dce2e3a239ea68cc2882e75b11a61cbf2e - React-performancetimeline: 4b9e04002c1ddba95167276a86424e5face65605 - React-RCTActionSheet: 902c79deec52f99cc48b1051b59bcbe86787d339 - React-RCTAnimation: f50eac1c9dbea36c4abc69cb24e2da4364374055 - React-RCTAppDelegate: a5d746fec869d15a8f6eecce60510c18e52135d5 - React-RCTBlob: e544dc72edc6f277c67e85493b0a405e1993c250 - React-RCTFabric: 8003ea99830c294857d41469a888b033e5ad91a6 - React-RCTFBReactNativeSpec: 8a3506041284fdc75da90e6fa40fb9b575414a39 - React-RCTImage: fb85496986a53d9e11a835124a083b7c7c33f898 - React-RCTLinking: b8eafcdedaebf981a18396db61d1190f5279ea81 - React-RCTNetwork: 03573c4fcc73e28f48fea7aea69310b6955a749c - React-RCTRuntime: 08d58920b217b2d7715d5da595794e63520cd2d9 - React-RCTSettings: f9b278b46e5de1ff8b843bb7aefaee721f06572d - React-RCTText: 7266943febf3382dac8adce9ba0de95b90c26e9e - React-RCTVibration: 27e1952701ec858922062f25a59b0c48e7153151 - React-rendererconsistency: ef8519bdd9931261c6561bfad6506356b8108387 - React-renderercss: edc1b0a18b12d681f8edbc779039dc6db32cf7b2 - React-rendererdebug: 074ec3420f3bab2bea498da65e5a17e9288c90d0 - React-RuntimeApple: 180682587e82ae4fc525f7d6636ed5db39c1e78c - React-RuntimeCore: 991cdb27072f7885750fdad4a70c2b919533e4ef - React-runtimeexecutor: bfec6ca5e62c6b2460a4adf0fddce0c4db0a8748 - React-RuntimeHermes: dcb07afe0f38c1cbaf48b7a1bf4904e867529726 - React-runtimescheduler: fdf0b71e519e416ad38c76525df43eba8dd78db2 - React-timing: 7b538f379678210bf30d8541eb4cf007c000c6f3 - React-utils: a15da1da76aee3dd0ed9f51d62bf1c09be17c221 - React-viewtransitionnativemodule: 8556c844dcd691ab3fe1b32bbf8f58c8c9a49c75 - React-webperformancenativemodule: 4d1d0258107fe0cb8ef5c9ac17a6a099785f2995 - ReactAppDependencyProvider: adf5403892170fbe996fce485a703f25df08db66 - ReactCodegen: ee39bbc365b4791c9b5183b52c533ebf586e1d8d - ReactCommon: 4d01bfb533b93a2103329dfefc74db6a9e272888 - ReactNativeDependencies: fa0a54b3f5319ae0e3b9aff32bfee7a424b88e66 - ReactNativeHost: 035cd87713a3b8ce508f37d721fc4433011cc200 - ReactTestApp-DevSupport: 936af30c1530de1026fbb0c08c1b9a5e023155e1 - ReactTestApp-Resources: 1bd9ff10e4c24f2ad87101a32023721ae923bccf - Yoga: 94172d87dd5d83fc929bf1ee53121b5d4490b5f2 + boost: 8502bfdc46e2804408af2e163049ece181009af4 + DoubleConversion: 501a575c40c0b50c89685762dd3e415e6bb26fb0 + fast_float: 7c925d1cebf8328d4018d061f49377e9f887e3b4 + FBLazyVector: e08a27053b503eeb756ea4bd75d570d2f2522a1b + fmt: ba0886e864ebb21d14c98b2e12e164b8002f5b93 + glog: 3cf7cb46f743c4bc758ae3e6d9c15bd1b4cfd6d4 + hermes-engine: 63c5db7d529c36335fada6582fd293ae2a105d77 + RCT-Folly: 82921e585c0400eda46fac1068297aa9dfb035e4 + RCTDeprecation: 5cc865306ce4974b7a57ddbc575fd1f3fef41957 + RCTRequired: ea6f2c41f2670961ce9a48a4bf17a190dd53e493 + RCTSwiftUI: 78ca6a66d8413ab78e24a133674b40b8c472144f + RCTSwiftUIWrapper: d547076b3b5889f57e81c543ed5253b4e7bbdc63 + RCTTypeSafety: 189f0320246cf5879b25268ad027c47f44df071c + React: 2de853bffdce9d79608a256892cadfdd42124fb1 + React-bridging: ad588ebf664b5339b159f7bb1076a52967a5e433 + React-callinvoker: 33c0c2c46a808f55ef5a2927fa373977a334ea3e + React-Core: 48305724ff82e5922efc52bf8d0e713fbf84be5a + React-Core-prebuilt: cd44efd12c9bfad37c194372a6d3a18a6a6d5c00 + React-CoreModules: a190415306d55fbe58fb3d8eb045c0e46c5c8437 + React-cxxreact: 2ed666fa84fbcda80286da0c2fd6ad8636c7e9d0 + React-cxxstableapi: 1e0ad8a5ecb7f2f5440c012798cf20bec6341c1f + React-debug: 32e0e1c05c42cbf517be7c5e0dc823a23efc9034 + React-defaultsnativemodule: 74475d2452c818f9ebc3513b2df900bedd18c396 + React-domnativemodule: a425b8b6acbb47a7b6779c1e334bd8fc236f67b0 + React-Fabric: 005469f5cb798c3047bacb43cc560d95eee19171 + React-FabricComponents: 171963d034307ae4e020ef18993b92e856c1f8b3 + React-FabricImage: 459f14722cf17b2bf74f98b68da2fc7de4af51e9 + React-featureflags: 0eb89858b7b57ef8f3b695f9129164d55e6c5e4d + React-featureflagsnativemodule: 73fe3a75cf31e35dfcedc7c3e4b2b2c2240202c4 + React-graphics: b0ab8b47fc0f07e29d1da0792cff0d658f913ea8 + React-hermes: f1043e16098d7e31cb55faa28494d9c3dec782f3 + React-idlecallbacksnativemodule: 6eb47bb954639dc29839ccb472032b730d9fa3ab + React-ImageManager: c101d51571137c332e6b7fce83e6d12d8493cd52 + React-intersectionobservernativemodule: fa76007b27a150c43125b21ba3a0f76847426c03 + React-jserrorhandler: e5d7f718ed444fa040297a654ff0ca229907e54f + React-jsi: cd9cf66cfffee23062dbd4b7ceca27f6294adfc8 + React-jsiexecutor: 834be45f4c635f93cc5c0137f5db62d5297b7d7f + React-jsinspector: 17b99007b14ee0588c775ad8fbae828353bc4dae + React-jsinspectorcdp: f56181a316a781334bbd7f061e4aa0f8f94b9f0c + React-jsinspectornetwork: 7ca0da8af486f5444a3f7dc81a1cafe13ca23572 + React-jsinspectortracing: 49a963331332d1c0abef67cab184e80f6bdcd341 + React-jsitooling: d85d39d2633572a39a5b045c9d589d64187de600 + React-jsitracing: 810e823cc6d83c091d45468967558d1eace28922 + React-logger: 8ecf7242442a7e222a636d24ac9c56ea948fd455 + React-Mapbuffer: 295203fc648a43acf7fba609ddf573aa9fca849f + React-microtasksnativemodule: 269f81deee27a2a9bedb6b2d1088c1ae93de9bd3 + React-mutationobservernativemodule: 877e9f730e0d8175c2e952901b55c170fc3d372f + react-native-image-editor: 4c908341d4fa70532db66677d365db7e1edf93ae + react-native-safe-area-context: f2bf5d3db254014a48910436c4a58ab0c4e2fe1f + React-NativeModulesApple: adb1dd8361dff80e9f6652fb3fdbf033cfbe2a89 + React-networking: c00b437c4408f0640ba0d4158357133488521eca + React-oscompat: 3175a287dd7175d1a20fdce5048a4b9e11f4b915 + React-perflogger: 50bffa76f6e8d101e1e324d06cbbbf1fd9afcf06 + React-performancecdpmetrics: a5a874381b84b596e344e25666596ba6d44b961d + React-performancetimeline: bacec680535024bc6a5a7dc646d5a62b46c6a2fd + React-RCTActionSheet: eae121cc5c15015e5adf24fe863f2a31895a2411 + React-RCTAnimatedModuleProvider: 24721e9467537b981b1a4b96ebf384a9324c80c5 + React-RCTAnimation: 8d988bbf7585d660d79027933a3c4976a26a8496 + React-RCTAppDelegate: da272f46f8f23ce42ddf5eeeca740af5cd503a2c + React-RCTBlob: e0b7c51bec9b327e34eebb356af5fb5504a401b7 + React-RCTFabric: 2d3c788f9cac0cf0be2f6db39d2df2e576a2a6d6 + React-RCTFBReactNativeSpec: 9f977b0764f1f1cd97dd4d02d30a6fcd8608c517 + React-RCTImage: 5c0afa67274b21518491935a895d427c6530c7a6 + React-RCTLinking: bf7d1245f38e5df7432fad0c18caf4d171c2832c + React-RCTNetwork: 0f1ca5f4182b133a62248983a100a202275937de + React-RCTRuntime: 7adbf03a4ac5d66fc0953d4fbc7f93425662dc82 + React-RCTSettings: 7c7387e52b838cfeb49c8c8049223a72b2ebce88 + React-RCTText: 10d157fe52d742fcdec5adae67e161b530fc7a57 + React-RCTVibration: a19a6e696173d014e9228fa16b003f9afa1b14dc + React-rendererconsistency: 24e61e6a927fbcbc676e2a88e5d219c1b5b144e7 + React-renderercss: 20ba84f23fab261df5e18c04d486e4669df9d33e + React-rendererdebug: 914e9d02aa71fef5af72d6642a0979865ecfe8d4 + React-RuntimeApple: 7ebd7c54e08cfe2c30188248c03e507c10729721 + React-RuntimeCore: 31f5796d73bfbca978d2e23a956a2cf131082108 + React-runtimeexecutor: 740750b1a196add2e2a591a3154cb580eb9af336 + React-RuntimeHermes: 384cebd1e7ed03329b2de18add97154fa4204a4c + React-runtimescheduler: 39b8dae97bda24f0d80bff480aadeee852b9eb22 + React-timing: 8ff0fb7aebbf0b4605a3057418670632e329cc5a + React-utils: d77852fe2b8259da760f21a68819d48038f00de3 + React-viewtransitionnativemodule: 1bc6bb59029e578e62cb1a818ff4a4d548071a66 + React-webperformancenativemodule: 10cf05e9bcf2f28a4b1c498d580e21ba3cc114f1 + ReactAppDependencyProvider: 3949ea6b2df0d96295128aae79f068cb6c5f81dc + ReactCodegen: 13d2ebfe2d8f1200052509b4fc4abf7a6825a7fc + ReactCommon: 749169e12aa3461a3df3656a00e48dbe0456b2d6 + ReactNativeDependencies: 94c922c39e0e6150ee9ad05e2ca1946e0ef55783 + SocketRocket: 37aec555668fb852ec12e3c0de59a86ca58f0871 + Yoga: d1c536142c5ff8ec8cd856ab2a7c227a1d875c8e -PODFILE CHECKSUM: 53f7ee545206092484864049cad7459f7bbc1840 +PODFILE CHECKSUM: 4c843781a6b1d641a95b0b3ad874b3218edc20a6 -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/example/metro.config.js b/example/metro.config.js index b80dc91..24d0638 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -1,14 +1,27 @@ const path = require('path'); -const { makeMetroConfig } = require('@rnx-kit/metro-config'); +const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); -module.exports = makeMetroConfig({ - watchFolders: [path.resolve(__dirname, '../')], - transformer: { - getTransformOptions: async () => ({ - transform: { - experimentalImportSupport: false, - inlineRequires: false, - }, - }), +const root = path.resolve(__dirname, '../'); +const escape = (p) => p.replace(/[/\\^$*+?.()|[\]{}]/g, '\\$&'); + +/** + * Metro configuration + * https://reactnative.dev/docs/metro + * + * The library is linked from the repo root (`link:..`), so Metro has to watch + * it. The root has its own `react` / `react-native` dev dependencies, which + * are blocked so the library resolves the example's copies instead. + * + * @type {import('@react-native/metro-config').MetroConfig} + */ +const config = { + watchFolders: [root], + resolver: { + blockList: [ + new RegExp(`^${escape(path.join(root, 'node_modules'))}\\/.*$`), + ], + nodeModulesPaths: [path.resolve(__dirname, 'node_modules')], }, -}); +}; + +module.exports = mergeConfig(getDefaultConfig(__dirname), config); diff --git a/example/package.json b/example/package.json index a3f97d4..0fb4441 100644 --- a/example/package.json +++ b/example/package.json @@ -4,42 +4,27 @@ "private": true, "scripts": { "android": "react-native run-android", - "build:android": "react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist/res", - "build:ios": "react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist", "ios": "react-native run-ios", - "lint": "eslint .", - "start": "react-native start", - "test": "jest" + "start": "react-native start" }, "dependencies": { "@react-native-community/image-editor": "link:..", - "@react-native-community/slider": "^5.2.0", - "@react-native/new-app-screen": "0.86.0", "react": "19.2.3", - "react-native": "0.86.0", + "react-native": "0.87.1", "react-native-safe-area-context": "^5.5.2" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", - "@react-native-community/cli": "20.1.0", - "@react-native-community/cli-platform-android": "20.1.0", - "@react-native-community/cli-platform-ios": "20.1.0", - "@react-native/babel-preset": "0.86.0", - "@react-native/eslint-config": "0.86.0", - "@react-native/metro-config": "0.86.0", - "@react-native/typescript-config": "0.86.0", - "@rnx-kit/metro-config": "^2.2.4", - "@types/jest": "^29.5.13", + "@react-native-community/cli": "20.2.0", + "@react-native-community/cli-platform-android": "20.2.0", + "@react-native-community/cli-platform-ios": "20.2.0", + "@react-native/babel-preset": "0.87.1", + "@react-native/metro-config": "0.87.1", + "@react-native/typescript-config": "0.87.1", "@types/react": "^19.2.0", - "@types/react-test-renderer": "^19.1.0", - "eslint": "^8.19.0", - "jest": "^29.6.3", - "prettier": "2.8.8", - "react-native-test-app": "^5.4.5", - "react-test-renderer": "19.2.3", - "typescript": "^5.8.3" + "typescript": "^6.0.3" }, "engines": { "node": ">= 22.11.0" diff --git a/example/react-native.config.js b/example/react-native.config.js deleted file mode 100644 index b937976..0000000 --- a/example/react-native.config.js +++ /dev/null @@ -1,29 +0,0 @@ -const project = (() => { - try { - const { configureProjects } = require('react-native-test-app'); - return configureProjects({ - android: { - sourceDir: 'android', - }, - ios: { - sourceDir: 'ios', - }, - macos: { - sourceDir: 'macos', - }, - visionos: { - sourceDir: 'visionos', - }, - windows: { - sourceDir: 'windows', - solutionFile: 'windows/ImageEditorExample.sln', - }, - }); - } catch (_) { - return undefined; - } -})(); - -module.exports = { - ...(project ? { project } : undefined), -}; diff --git a/example/screenshots/cache-lab.jpg b/example/screenshots/cache-lab.jpg new file mode 100644 index 0000000..1a94ea3 Binary files /dev/null and b/example/screenshots/cache-lab.jpg differ diff --git a/example/screenshots/editor.jpg b/example/screenshots/editor.jpg new file mode 100644 index 0000000..f7dd080 Binary files /dev/null and b/example/screenshots/editor.jpg differ diff --git a/example/screenshots/options.jpg b/example/screenshots/options.jpg new file mode 100644 index 0000000..0aa4174 Binary files /dev/null and b/example/screenshots/options.jpg differ diff --git a/example/screenshots/result.jpg b/example/screenshots/result.jpg new file mode 100644 index 0000000..3a0e6b7 Binary files /dev/null and b/example/screenshots/result.jpg differ diff --git a/example/src/App.tsx b/example/src/App.tsx index 1cf1e7f..a6d5c2f 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -1,14 +1,490 @@ -import React from 'react'; -import { SafeAreaView } from 'react-native-safe-area-context'; +import React, { useEffect, useState } from 'react'; +import { + Image, + Platform, + ScrollView, + StatusBar, + StyleSheet, + Text, + View, +} from 'react-native'; +import { + SafeAreaProvider, + useSafeAreaInsets, +} from 'react-native-safe-area-context'; +import ImageEditor from '@react-native-community/image-editor'; -import { SquareImageCropper } from './SquareImageCropper'; +import { CacheLab } from './components/CacheLab'; +import { CropArea, centeredRect } from './components/CropArea'; +import type { CropRect, Size } from './components/CropArea'; +import { ResultCard } from './components/ResultCard'; +import type { CropRun } from './components/ResultCard'; +import { + Button, + Field, + Section, + Segmented, + Stepper, + ToggleRow, +} from './components/ui'; +import type { SegmentOption } from './components/ui'; +import { PRESET_SOURCES } from './sources'; +import type { ImageSource } from './sources'; +import { colors, radius, spacing } from './theme'; +import type { ImageCropData } from './types'; -const flex1 = { flex: 1 }; +type Format = 'auto' | NonNullable; +type ResizeMode = NonNullable; + +const ASPECTS: SegmentOption[] = [ + { label: 'Free', value: null }, + { label: '1:1', value: 1 }, + { label: '4:3', value: 4 / 3 }, + { label: '3:4', value: 3 / 4 }, + { label: '16:9', value: 16 / 9 }, +]; + +const FORMATS: SegmentOption[] = [ + { label: 'Auto', value: 'auto' }, + { label: 'JPEG', value: 'jpeg' }, + { label: 'PNG', value: 'png' }, + { label: 'WebP', value: 'webp' }, +]; + +const RESIZE_MODES: SegmentOption[] = [ + { label: 'Cover', value: 'cover' }, + { label: 'Contain', value: 'contain' }, + { label: 'Stretch', value: 'stretch' }, + { label: 'Center', value: 'center' }, +]; + +function getImageSize(source: ImageSource): Promise { + return source.headers + ? Image.getSizeWithHeaders(source.uri, source.headers) + : Image.getSize(source.uri); +} + +function describeSource(source: ImageSource) { + if (source.uri.startsWith('data:')) { + return 'data: URI'; + } + if (source.uri.startsWith('file:')) { + return 'file:// URI'; + } + return source.label; +} + +function Playground() { + const insets = useSafeAreaInsets(); + + const [source, setSource] = useState(PRESET_SOURCES[0]!); + const [imageSize, setImageSize] = useState(null); + const [loadError, setLoadError] = useState(null); + const [rect, setRect] = useState(null); + const [aspect, setAspect] = useState(null); + + const [format, setFormat] = useState('auto'); + const [quality, setQuality] = useState(0.9); + const [includeBase64, setIncludeBase64] = useState(false); + const [resize, setResize] = useState(false); + const [displayWidth, setDisplayWidth] = useState(400); + const [displayHeight, setDisplayHeight] = useState(400); + const [resizeMode, setResizeMode] = useState('cover'); + + const [dragging, setDragging] = useState(false); + const [cropping, setCropping] = useState(false); + const [cropError, setCropError] = useState(null); + const [run, setRun] = useState(null); + + useEffect(() => { + let cancelled = false; + setImageSize(null); + setLoadError(null); + setRect(null); + const load = async () => { + try { + const size = await getImageSize(source); + if (!cancelled) { + setImageSize(size); + setRect(centeredRect(size, aspect)); + } + } catch (error) { + if (!cancelled) { + setLoadError(error instanceof Error ? error.message : String(error)); + } + } + }; + void load(); + return () => { + cancelled = true; + }; + // The crop box is only re-centered for a new source, not on aspect change + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [source]); + + const changeAspect = (value: number | null) => { + setAspect(value); + if (imageSize) { + setRect(centeredRect(imageSize, value)); + } + }; + + const crop = async () => { + if (!rect) { + return; + } + const cropData: ImageCropData = { + offset: { x: rect.x, y: rect.y }, + size: { width: rect.width, height: rect.height }, + quality, + includeBase64, + ...(format !== 'auto' && { format }), + ...(resize && { + displaySize: { width: displayWidth, height: displayHeight }, + resizeMode, + }), + ...(source.headers && { headers: source.headers }), + }; + + setCropping(true); + setCropError(null); + const start = Date.now(); + try { + const result = await ImageEditor.cropImage(source.uri, cropData); + setRun({ + result, + durationMs: Date.now() - start, + requested: `${describeSource(source)} · ${rect.width}×${rect.height} at (${rect.x}, ${rect.y})`, + }); + } catch (error) { + setCropError(error instanceof Error ? error.message : String(error)); + } finally { + setCropping(false); + } + }; + + const useResultFile = () => { + if (run) { + setSource({ + key: 'file', + label: 'Last result', + description: 'Local file:// written by the previous crop', + uri: run.result.uri, + }); + } + }; + + const useResultBase64 = () => { + if (run?.result.base64) { + setSource({ + key: 'base64', + label: 'Base64', + description: 'data: URI built from the previous result', + uri: `data:${run.result.type};base64,${run.result.base64}`, + }); + } + }; + + const sourceOptions: SegmentOption[] = PRESET_SOURCES.map((s) => ({ + label: s.label, + value: s.key, + })); + + return ( + + + + @react-native-community + Image Editor + + Crop, scale and re-encode images natively on{' '} + {Platform.OS === 'ios' ? 'iOS' : 'Android'}. + + + +
+ + setSource(PRESET_SOURCES.find((s) => s.key === key) ?? source) + } + /> + {source.headers ? ( + + {Object.entries(source.headers).map(([key, value]) => ( + + {key}: {value} + + ))} + + ) : null} +
+ +
+ + + + + {imageSize && rect ? ( + + + + + + ) : null} +
+ +
+ + + + + setQuality(Math.round(value * 10) / 10)} + step={0.1} + min={0} + max={1} + format={(value) => value.toFixed(1)} + /> + + + + {resize ? ( + <> + + + + + + + + + + + + + + + + + ) : null} +
+ +