diff --git a/README.md b/README.md index ca25e7c2c..d5ece9c58 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ - ⚡ Fully native input and display components (Supports New Architecture only) - 💻 HTML-based parsing with live, synchronous text styling - 🎨 Fully customizable styles for seamless UI integration -- 🌐 Solid mobile and Web support +- 🌐 Solid mobile and Web support with experimental macOS implementations `EnrichedTextInput`, the rich text input component is an uncontrolled input. This means that it doesn't use any state or props to store its value, but instead directly interacts with the underlying platform-specific components. Thanks to this, the component is really performant and simple to use while offering complex and advanced features no other solution has. diff --git a/ReactNativeEnrichedHtml.podspec b/ReactNativeEnrichedHtml.podspec index caf535de8..b18f43e00 100644 --- a/ReactNativeEnrichedHtml.podspec +++ b/ReactNativeEnrichedHtml.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.license = package["license"] s.authors = package["author"] - s.platforms = { :ios => min_ios_version_supported } + s.platforms = { :ios => min_ios_version_supported, :osx => "14.0" } s.source = { :git => "https://github.com/software-mansion/react-native-enriched-html.git", :tag => "#{s.version}" } s.source_files = ["ios/**/*.{h,m,mm,cpp}", "cpp/**/*.{h,hpp,c,cpp}"] diff --git a/apps/example-macos/.watchmanconfig b/apps/example-macos/.watchmanconfig new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/apps/example-macos/.watchmanconfig @@ -0,0 +1 @@ +{} diff --git a/apps/example-macos/Gemfile b/apps/example-macos/Gemfile new file mode 100644 index 000000000..51515233e --- /dev/null +++ b/apps/example-macos/Gemfile @@ -0,0 +1,17 @@ +source 'https://rubygems.org' + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby ">= 2.6.10" + +# Exclude problematic versions of cocoapods and activesupport that causes build failures. +gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' +gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' +gem 'xcodeproj', '< 1.26.0' +gem 'concurrent-ruby', '< 1.3.4' + +# Ruby 3.4.0 has removed some libraries from the standard library. +gem 'bigdecimal' +gem 'logger' +gem 'benchmark' +gem 'mutex_m' +gem 'nkf' diff --git a/apps/example-macos/Gemfile.lock b/apps/example-macos/Gemfile.lock new file mode 100644 index 000000000..3e2980790 --- /dev/null +++ b/apps/example-macos/Gemfile.lock @@ -0,0 +1,143 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.8) + activesupport (7.2.3.1) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1, < 6) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + 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) + base64 (0.3.0) + 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) + connection_pool (3.0.2) + drb (2.2.3) + escape (0.0.4) + ethon (0.18.0) + ffi (>= 1.15.0) + logger + ffi (1.17.4) + ffi (1.17.4-aarch64-linux-gnu) + ffi (1.17.4-aarch64-linux-musl) + ffi (1.17.4-arm-linux-gnu) + ffi (1.17.4-arm-linux-musl) + ffi (1.17.4-arm64-darwin) + ffi (1.17.4-x86-linux-gnu) + ffi (1.17.4-x86-linux-musl) + ffi (1.17.4-x86_64-darwin) + ffi (1.17.4-x86_64-linux-gnu) + ffi (1.17.4-x86_64-linux-musl) + fourflusher (2.3.1) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + httpclient (2.9.0) + mutex_m + i18n (1.15.2) + concurrent-ruby (~> 1.0) + json (2.20.0) + logger (1.7.0) + minitest (5.27.0) + 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) + securerandom (0.4.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) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + ruby + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +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 3.3.10p183 + +BUNDLED WITH + 2.5.22 diff --git a/apps/example-macos/app.json b/apps/example-macos/app.json new file mode 100644 index 000000000..717c86a5a --- /dev/null +++ b/apps/example-macos/app.json @@ -0,0 +1,4 @@ +{ + "name": "EnrichedMacOSExample", + "displayName": "ReactNativeEnrichedMacOSExample" +} diff --git a/apps/example-macos/babel.config.js b/apps/example-macos/babel.config.js new file mode 100644 index 000000000..0431c77bd --- /dev/null +++ b/apps/example-macos/babel.config.js @@ -0,0 +1,12 @@ +const path = require('path'); +const { getConfig } = require('react-native-builder-bob/babel-config'); +const pkg = require('../../package.json'); + +const root = path.resolve(__dirname, '../..'); + +module.exports = getConfig( + { + presets: ['module:@react-native/babel-preset'], + }, + { root, pkg } +); diff --git a/apps/example-macos/index.js b/apps/example-macos/index.js new file mode 100644 index 000000000..117ddcae4 --- /dev/null +++ b/apps/example-macos/index.js @@ -0,0 +1,5 @@ +import { AppRegistry } from 'react-native'; +import App from './src/App'; +import { name as appName } from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/apps/example-macos/macos/.gitignore b/apps/example-macos/macos/.gitignore new file mode 100644 index 000000000..daba14103 --- /dev/null +++ b/apps/example-macos/macos/.gitignore @@ -0,0 +1,2 @@ +# CocoaPods +Pods/ diff --git a/apps/example-macos/macos/.xcode.env b/apps/example-macos/macos/.xcode.env new file mode 100644 index 000000000..3d5782c71 --- /dev/null +++ b/apps/example-macos/macos/.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/apps/example-macos/macos/EnrichedMacOSExample-macOS/AppDelegate.h b/apps/example-macos/macos/EnrichedMacOSExample-macOS/AppDelegate.h new file mode 100644 index 000000000..1c6ff4514 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/AppDelegate.h @@ -0,0 +1,6 @@ +#import +#import + +@interface AppDelegate : RCTAppDelegate + +@end diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/AppDelegate.mm b/apps/example-macos/macos/EnrichedMacOSExample-macOS/AppDelegate.mm new file mode 100644 index 000000000..9085af23e --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/AppDelegate.mm @@ -0,0 +1,48 @@ +#import "AppDelegate.h" + +#import +#import + +@implementation AppDelegate + +- (void)applicationDidFinishLaunching:(NSNotification *)notification { + self.moduleName = @"EnrichedMacOSExample"; + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; + self.dependencyProvider = [RCTAppDependencyProvider new]; + + return [super applicationDidFinishLaunching:notification]; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { + return [self bundleURL]; +} + +- (NSURL *)bundleURL { +#if DEBUG + return + [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" + withExtension:@"jsbundle"]; +#endif +} + +/// This method controls whether the `concurrentRoot`feature of React18 is +/// turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New +/// Architecture). +/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it +/// returns `false`. +- (BOOL)concurrentRootEnabled { +#ifdef RN_FABRIC_ENABLED + return true; +#else + return false; +#endif +} + +@end diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..3f00db43e --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/Assets.xcassets/Contents.json b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Assets.xcassets/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/Base.lproj/Main.storyboard b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Base.lproj/Main.storyboard new file mode 100644 index 000000000..c3ae5253d --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Base.lproj/Main.storyboard @@ -0,0 +1,684 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/EnrichedMacOSExample.entitlements b/apps/example-macos/macos/EnrichedMacOSExample-macOS/EnrichedMacOSExample.entitlements new file mode 100644 index 000000000..625af03d9 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/EnrichedMacOSExample.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + com.apple.security.network.client + + + diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/Info.plist b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Info.plist new file mode 100644 index 000000000..8f8a26ca8 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + NSSupportsAutomaticTermination + + NSSupportsSuddenTermination + + RCTNewArchEnabled + + + diff --git a/apps/example-macos/macos/EnrichedMacOSExample-macOS/main.m b/apps/example-macos/macos/EnrichedMacOSExample-macOS/main.m new file mode 100644 index 000000000..3e26351a0 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample-macOS/main.m @@ -0,0 +1,3 @@ +#import + +int main(int argc, const char *argv[]) { return NSApplicationMain(argc, argv); } diff --git a/apps/example-macos/macos/EnrichedMacOSExample.xcodeproj/project.pbxproj b/apps/example-macos/macos/EnrichedMacOSExample.xcodeproj/project.pbxproj new file mode 100644 index 000000000..805b58559 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample.xcodeproj/project.pbxproj @@ -0,0 +1,589 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 093333F75D329F063465C91B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 2C99902755D2472629C9337F /* PrivacyInfo.xcprivacy */; }; + 5142014D2437B4B30078DB4F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5142014C2437B4B30078DB4F /* AppDelegate.mm */; }; + 514201522437B4B40078DB4F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 514201512437B4B40078DB4F /* Assets.xcassets */; }; + 514201552437B4B40078DB4F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 514201532437B4B40078DB4F /* Main.storyboard */; }; + 514201582437B4B40078DB4F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 514201572437B4B40078DB4F /* main.m */; }; + 9AA405EEE313B2AFB7F02B6D /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 2C99902755D2472629C9337F /* PrivacyInfo.xcprivacy */; }; + E5B456B6CB65C34A136C22C0 /* libPods-EnrichedMacOSExample-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 723D751CE2FFFC2F61A85CE3 /* libPods-EnrichedMacOSExample-macOS.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* EnrichedMacOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EnrichedMacOSExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 2C99902755D2472629C9337F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + 514201492437B4B30078DB4F /* EnrichedMacOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EnrichedMacOSExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5142014B2437B4B30078DB4F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 5142014C2437B4B30078DB4F /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; + 514201512437B4B40078DB4F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 514201542437B4B40078DB4F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 514201562437B4B40078DB4F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 514201572437B4B40078DB4F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 514201592437B4B40078DB4F /* EnrichedMacOSExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = EnrichedMacOSExample.entitlements; sourceTree = ""; }; + 58774DB3A0873F8CFD9DBD66 /* Pods-EnrichedMacOSExample-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EnrichedMacOSExample-macOS.debug.xcconfig"; path = "Target Support Files/Pods-EnrichedMacOSExample-macOS/Pods-EnrichedMacOSExample-macOS.debug.xcconfig"; sourceTree = ""; }; + 723D751CE2FFFC2F61A85CE3 /* libPods-EnrichedMacOSExample-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EnrichedMacOSExample-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AA8C2F1CA6402B196BF4E505 /* Pods-EnrichedMacOSExample-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EnrichedMacOSExample-macOS.release.xcconfig"; path = "Target Support Files/Pods-EnrichedMacOSExample-macOS/Pods-EnrichedMacOSExample-macOS.release.xcconfig"; 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 = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 514201462437B4B30078DB4F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E5B456B6CB65C34A136C22C0 /* libPods-EnrichedMacOSExample-macOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 723D751CE2FFFC2F61A85CE3 /* libPods-EnrichedMacOSExample-macOS.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5142014A2437B4B30078DB4F /* EnrichedMacOSExample-macOS */ = { + isa = PBXGroup; + children = ( + 5142014B2437B4B30078DB4F /* AppDelegate.h */, + 5142014C2437B4B30078DB4F /* AppDelegate.mm */, + 514201512437B4B40078DB4F /* Assets.xcassets */, + 514201532437B4B40078DB4F /* Main.storyboard */, + 514201562437B4B40078DB4F /* Info.plist */, + 514201572437B4B40078DB4F /* main.m */, + 514201592437B4B40078DB4F /* EnrichedMacOSExample.entitlements */, + ); + path = "EnrichedMacOSExample-macOS"; + sourceTree = ""; + }; + 7EFECB81DAF4251FCDB477F1 /* Pods */ = { + isa = PBXGroup; + children = ( + 58774DB3A0873F8CFD9DBD66 /* Pods-EnrichedMacOSExample-macOS.debug.xcconfig */, + AA8C2F1CA6402B196BF4E505 /* Pods-EnrichedMacOSExample-macOS.release.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 5142014A2437B4B30078DB4F /* EnrichedMacOSExample-macOS */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + 2C99902755D2472629C9337F /* PrivacyInfo.xcprivacy */, + 7EFECB81DAF4251FCDB477F1 /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* EnrichedMacOSExample.app */, + 514201492437B4B30078DB4F /* EnrichedMacOSExample.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* EnrichedMacOSExample-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "EnrichedMacOSExample-iOS" */; + buildPhases = ( + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "EnrichedMacOSExample-iOS"; + productName = EnrichedMacOSExample; + productReference = 13B07F961A680F5B00A75B9A /* EnrichedMacOSExample.app */; + productType = "com.apple.product-type.application"; + }; + 514201482437B4B30078DB4F /* EnrichedMacOSExample-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5142015A2437B4B40078DB4F /* Build configuration list for PBXNativeTarget "EnrichedMacOSExample-macOS" */; + buildPhases = ( + 1A938104A937498D81B3BD3B /* [CP] Check Pods Manifest.lock */, + 514201452437B4B30078DB4F /* Sources */, + 514201462437B4B30078DB4F /* Frameworks */, + 514201472437B4B30078DB4F /* Resources */, + 381D8A6E24576A4E00465D17 /* Bundle React Native code and images */, + E521BB48010A2A6F591F4751 /* [CP] Embed Pods Frameworks */, + F1D573264A52B89763DF5B4A /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "EnrichedMacOSExample-macOS"; + productName = EnrichedMacOSExample; + productReference = 514201492437B4B30078DB4F /* EnrichedMacOSExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + 514201482437B4B30078DB4F = { + CreatedOnToolsVersion = 11.4; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "EnrichedMacOSExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* EnrichedMacOSExample-iOS */, + 514201482437B4B30078DB4F /* EnrichedMacOSExample-macOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 093333F75D329F063465C91B /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 514201472437B4B30078DB4F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 514201522437B4B40078DB4F /* Assets.xcassets in Resources */, + 514201552437B4B40078DB4F /* Main.storyboard in Resources */, + 9AA405EEE313B2AFB7F02B6D /* 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 = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native-macos/scripts/react-native-xcode.sh\n"; + }; + 1A938104A937498D81B3BD3B /* [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-EnrichedMacOSExample-macOS-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; + }; + 381D8A6E24576A4E00465D17 /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native-macos/scripts/react-native-xcode.sh\n"; + }; + E521BB48010A2A6F591F4751 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-EnrichedMacOSExample-macOS/Pods-EnrichedMacOSExample-macOS-frameworks.sh", + "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-EnrichedMacOSExample-macOS/Pods-EnrichedMacOSExample-macOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + F1D573264A52B89763DF5B4A /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-EnrichedMacOSExample-macOS/Pods-EnrichedMacOSExample-macOS-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/React-Core_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact/React-cxxreact_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/boost/boost_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-Core_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-cxxreact_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/boost_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-EnrichedMacOSExample-macOS/Pods-EnrichedMacOSExample-macOS-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 514201452437B4B30078DB4F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 514201582437B4B40078DB4F /* main.m in Sources */, + 5142014D2437B4B30078DB4F /* AppDelegate.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 514201532437B4B40078DB4F /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 514201542437B4B40078DB4F /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = "EnrichedMacOSExample-iOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = EnrichedMacOSExample; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = "EnrichedMacOSExample-iOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = EnrichedMacOSExample; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 5142015B2437B4B40078DB4F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 58774DB3A0873F8CFD9DBD66 /* Pods-EnrichedMacOSExample-macOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + INFOPLIST_FILE = "EnrichedMacOSExample-macos/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 14.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = EnrichedMacOSExample; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 5142015C2437B4B40078DB4F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AA8C2F1CA6402B196BF4E505 /* Pods-EnrichedMacOSExample-macOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = "EnrichedMacOSExample-macos/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 14.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = EnrichedMacOSExample; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + }; + 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_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; + 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 = 9.0; + 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; + 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_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; + 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 = 9.0; + 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; + 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 "EnrichedMacOSExample-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5142015A2437B4B40078DB4F /* Build configuration list for PBXNativeTarget "EnrichedMacOSExample-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5142015B2437B4B40078DB4F /* Debug */, + 5142015C2437B4B40078DB4F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "EnrichedMacOSExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/apps/example-macos/macos/EnrichedMacOSExample.xcodeproj/xcshareddata/xcschemes/EnrichedMacOSExample-macOS.xcscheme b/apps/example-macos/macos/EnrichedMacOSExample.xcodeproj/xcshareddata/xcschemes/EnrichedMacOSExample-macOS.xcscheme new file mode 100644 index 000000000..3304ce474 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample.xcodeproj/xcshareddata/xcschemes/EnrichedMacOSExample-macOS.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/example-macos/macos/EnrichedMacOSExample.xcworkspace/contents.xcworkspacedata b/apps/example-macos/macos/EnrichedMacOSExample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..6d6410401 --- /dev/null +++ b/apps/example-macos/macos/EnrichedMacOSExample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/apps/example-macos/macos/Podfile b/apps/example-macos/macos/Podfile new file mode 100644 index 000000000..7479a1c2a --- /dev/null +++ b/apps/example-macos/macos/Podfile @@ -0,0 +1,32 @@ +# This library is Fabric-only, so the new architecture is always enabled. +ENV['RCT_NEW_ARCH_ENABLED'] = '1' + +require 'pathname' + +ws_dir = Pathname.new(__dir__) +ws_dir = ws_dir.parent until + File.exist?("#{ws_dir}/node_modules/react-native-macos/scripts/react_native_pods.rb") || + ws_dir.expand_path.to_s == '/' +require "#{ws_dir}/node_modules/react-native-macos/scripts/react_native_pods.rb" + +prepare_react_native_project! + +target 'EnrichedMacOSExample-macOS' do + platform :macos, '14.0' + use_native_modules! + + use_react_native!( + :path => '../node_modules/react-native-macos', + :fabric_enabled => ENV['RCT_NEW_ARCH_ENABLED'] == '1', + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + pre_install do |installer| + system("cd ../../../ && npx bob build --target codegen") + end + + post_install do |installer| + react_native_post_install(installer) + end +end diff --git a/apps/example-macos/macos/Podfile.lock b/apps/example-macos/macos/Podfile.lock new file mode 100644 index 000000000..072124be4 --- /dev/null +++ b/apps/example-macos/macos/Podfile.lock @@ -0,0 +1,2564 @@ +PODS: + - boost (1.84.0) + - DoubleConversion (1.1.6) + - fast_float (8.0.0) + - FBLazyVector (0.81.9) + - fmt (12.1.0) + - glog (0.3.5) + - hermes-engine (0.81.6): + - hermes-engine/Pre-built (= 0.81.6) + - hermes-engine/Pre-built (0.81.6) + - RCT-Folly (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 8.0.0) + - fmt (= 12.1.0) + - glog + - RCT-Folly/Default (= 2024.11.18.00) + - RCT-Folly/Default (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 8.0.0) + - fmt (= 12.1.0) + - glog + - RCT-Folly/Fabric (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 8.0.0) + - fmt (= 12.1.0) + - glog + - RCTDeprecation (0.81.9) + - RCTRequired (0.81.9) + - RCTTypeSafety (0.81.9): + - FBLazyVector (= 0.81.9) + - RCTRequired (= 0.81.9) + - React-Core (= 0.81.9) + - React (0.81.9): + - React-Core (= 0.81.9) + - React-Core/DevSupport (= 0.81.9) + - React-Core/RCTWebSocket (= 0.81.9) + - React-RCTActionSheet (= 0.81.9) + - React-RCTAnimation (= 0.81.9) + - React-RCTBlob (= 0.81.9) + - React-RCTImage (= 0.81.9) + - React-RCTLinking (= 0.81.9) + - React-RCTNetwork (= 0.81.9) + - React-RCTSettings (= 0.81.9) + - React-RCTText (= 0.81.9) + - React-RCTVibration (= 0.81.9) + - React-callinvoker (0.81.9) + - React-Core (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - React-Core/Default (= 0.81.9) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsinspectorcdp + - React-jsitooling + - React-perflogger + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket + - Yoga + - React-Core/CoreModulesHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/Default (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsinspectorcdp + - React-jsitooling + - React-perflogger + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket + - Yoga + - React-Core/DevSupport (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - React-Core/Default (= 0.81.9) + - React-Core/RCTWebSocket (= 0.81.9) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsinspectorcdp + - React-jsitooling + - React-perflogger + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket + - Yoga + - React-Core/RCTActionSheetHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTAnimationHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTBlobHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTImageHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTLinkingHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTNetworkHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTSettingsHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTTextHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTVibrationHeaders (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - 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 + - SocketRocket + - Yoga + - React-Core/RCTWebSocket (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTDeprecation + - React-Core/Default (= 0.81.9) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsinspectorcdp + - React-jsitooling + - React-perflogger + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket + - Yoga + - React-CoreModules (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - RCTTypeSafety (= 0.81.9) + - React-Core/CoreModulesHeaders (= 0.81.9) + - React-jsi (= 0.81.9) + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-NativeModulesApple + - React-RCTBlob + - React-RCTFBReactNativeSpec + - React-RCTImage (= 0.81.9) + - React-runtimeexecutor + - ReactCommon + - SocketRocket + - React-cxxreact (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.81.9) + - React-debug (= 0.81.9) + - React-jsi (= 0.81.9) + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-logger (= 0.81.9) + - React-perflogger (= 0.81.9) + - React-runtimeexecutor + - React-timing (= 0.81.9) + - SocketRocket + - React-debug (0.81.9) + - React-defaultsnativemodule (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-domnativemodule + - React-featureflagsnativemodule + - React-idlecallbacksnativemodule + - React-jsi + - React-jsiexecutor + - React-microtasksnativemodule + - React-RCTFBReactNativeSpec + - SocketRocket + - React-domnativemodule (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-Fabric + - React-Fabric/bridging + - React-FabricComponents + - React-graphics + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-Fabric (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.81.9) + - React-Fabric/attributedstring (= 0.81.9) + - React-Fabric/bridging (= 0.81.9) + - React-Fabric/componentregistry (= 0.81.9) + - React-Fabric/componentregistrynative (= 0.81.9) + - React-Fabric/components (= 0.81.9) + - React-Fabric/consistency (= 0.81.9) + - React-Fabric/core (= 0.81.9) + - React-Fabric/dom (= 0.81.9) + - React-Fabric/imagemanager (= 0.81.9) + - React-Fabric/leakchecker (= 0.81.9) + - React-Fabric/mounting (= 0.81.9) + - React-Fabric/observers (= 0.81.9) + - React-Fabric/scheduler (= 0.81.9) + - React-Fabric/telemetry (= 0.81.9) + - React-Fabric/templateprocessor (= 0.81.9) + - React-Fabric/uimanager (= 0.81.9) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/animations (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/attributedstring (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/bridging (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/componentregistry (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/componentregistrynative (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.81.9) + - React-Fabric/components/root (= 0.81.9) + - React-Fabric/components/scrollview (= 0.81.9) + - React-Fabric/components/view (= 0.81.9) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components/legacyviewmanagerinterop (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components/root (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components/scrollview (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components/view (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-renderercss + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-Fabric/consistency (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/core (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/dom (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/imagemanager (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/leakchecker (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/mounting (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/observers (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events (= 0.81.9) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/observers/events (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/scheduler (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-performancetimeline + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/telemetry (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/templateprocessor (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/uimanager (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager/consistency (= 0.81.9) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/uimanager/consistency (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-FabricComponents (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.81.9) + - React-FabricComponents/textlayoutmanager (= 0.81.9) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.81.9) + - React-FabricComponents/components/iostextinput (= 0.81.9) + - React-FabricComponents/components/modal (= 0.81.9) + - React-FabricComponents/components/rncore (= 0.81.9) + - React-FabricComponents/components/safeareaview (= 0.81.9) + - React-FabricComponents/components/switch (= 0.81.9) + - React-FabricComponents/components/text (= 0.81.9) + - React-FabricComponents/components/textinput (= 0.81.9) + - React-FabricComponents/components/unimplementedview (= 0.81.9) + - React-FabricComponents/components/virtualview (= 0.81.9) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/inputaccessory (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/iostextinput (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/modal (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/rncore (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/safeareaview (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/switch (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/text (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/textinput (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/unimplementedview (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components/virtualview (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/textlayoutmanager (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricImage (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired (= 0.81.9) + - RCTTypeSafety (= 0.81.9) + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.81.9) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - SocketRocket + - Yoga + - React-featureflags (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-featureflagsnativemodule (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - SocketRocket + - React-graphics (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-Core + - React-jsi + - React-jsiexecutor + - React-utils + - SocketRocket + - React-hermes (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact (= 0.81.9) + - React-jsi + - React-jsiexecutor (= 0.81.9) + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-perflogger (= 0.81.9) + - React-runtimeexecutor + - SocketRocket + - React-idlecallbacksnativemodule (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - React-runtimescheduler + - ReactCommon/turbomodule/core + - SocketRocket + - React-ImageManager (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - SocketRocket + - React-jserrorhandler (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - ReactCommon/turbomodule/bridging + - SocketRocket + - React-jsi (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-jsiexecutor (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact (= 0.81.9) + - React-jsi (= 0.81.9) + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-perflogger (= 0.81.9) + - React-runtimeexecutor + - SocketRocket + - React-jsinspector (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-jsi + - React-jsinspectorcdp + - React-jsinspectornetwork + - React-jsinspectortracing + - React-oscompat + - React-perflogger (= 0.81.9) + - React-runtimeexecutor + - SocketRocket + - React-jsinspectorcdp (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-jsinspectornetwork (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-jsinspectorcdp + - React-performancetimeline + - React-timing + - SocketRocket + - React-jsinspectortracing (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-oscompat + - React-timing + - SocketRocket + - React-jsitooling (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact (= 0.81.9) + - React-jsi (= 0.81.9) + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-runtimeexecutor + - SocketRocket + - React-jsitracing (0.81.9): + - React-jsi + - React-logger (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-Mapbuffer (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-debug + - SocketRocket + - React-microtasksnativemodule (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - SocketRocket + - React-NativeModulesApple (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker + - React-Core + - React-cxxreact + - React-featureflags + - React-jsi + - React-jsinspector + - React-jsinspectorcdp + - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - React-oscompat (0.81.9) + - React-perflogger (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-performancetimeline (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-jsinspectortracing + - React-perflogger + - React-timing + - SocketRocket + - React-RCTActionSheet (0.81.9): + - React-Core/RCTActionSheetHeaders (= 0.81.9) + - React-RCTAnimation (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - RCTTypeSafety + - React-Core/RCTAnimationHeaders + - React-featureflags + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - SocketRocket + - React-RCTAppDelegate (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-CoreModules + - React-debug + - React-defaultsnativemodule + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsitooling + - React-NativeModulesApple + - React-RCTFabric + - React-RCTFBReactNativeSpec + - React-RCTImage + - React-RCTNetwork + - React-RCTRuntime + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon + - SocketRocket + - React-RCTBlob (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-jsinspectorcdp + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - React-RCTNetwork + - ReactCommon + - SocketRocket + - React-RCTFabric (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-FabricImage + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-RCTAnimation + - React-RCTFBReactNativeSpec + - React-RCTImage + - React-RCTText + - React-rendererconsistency + - React-renderercss + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket + - Yoga + - React-RCTFBReactNativeSpec (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec/components (= 0.81.9) + - ReactCommon + - SocketRocket + - React-RCTFBReactNativeSpec/components (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon + - SocketRocket + - Yoga + - React-RCTImage (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - RCTTypeSafety + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - React-RCTNetwork + - ReactCommon + - SocketRocket + - React-RCTLinking (0.81.9): + - React-Core/RCTLinkingHeaders (= 0.81.9) + - React-jsi (= 0.81.9) + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - ReactCommon/turbomodule/core (= 0.81.9) + - React-RCTNetwork (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - RCTTypeSafety + - React-Core/RCTNetworkHeaders + - React-featureflags + - React-jsi + - React-jsinspectorcdp + - React-jsinspectornetwork + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - SocketRocket + - React-RCTRuntime (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-Core + - React-jsi + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-jsitooling + - React-RuntimeApple + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - SocketRocket + - React-RCTSettings (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - RCTTypeSafety + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - SocketRocket + - React-RCTText (0.81.9): + - React-Core/RCTTextHeaders (= 0.81.9) + - Yoga + - React-RCTVibration (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - SocketRocket + - React-rendererconsistency (0.81.9) + - React-renderercss (0.81.9): + - React-debug + - React-utils + - React-rendererdebug (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-debug + - SocketRocket + - React-RuntimeApple (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker + - React-Core/Default + - React-CoreModules + - React-cxxreact + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RCTFBReactNativeSpec + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - React-runtimescheduler + - React-utils + - SocketRocket + - React-RuntimeCore (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-Fabric + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-performancetimeline + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket + - React-runtimeexecutor (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-debug + - React-featureflags + - React-jsi (= 0.81.9) + - React-utils + - SocketRocket + - React-RuntimeHermes (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsinspectorcdp + - React-jsinspectortracing + - React-jsitooling + - React-jsitracing + - React-RuntimeCore + - React-runtimeexecutor + - React-utils + - SocketRocket + - React-runtimescheduler (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker + - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - React-jsinspectortracing + - React-performancetimeline + - React-rendererconsistency + - React-rendererdebug + - React-runtimeexecutor + - React-timing + - React-utils + - SocketRocket + - React-timing (0.81.9): + - React-debug + - React-utils (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-debug + - React-jsi (= 0.81.9) + - SocketRocket + - ReactAppDependencyProvider (0.81.9): + - ReactCodegen + - ReactCodegen (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-RCTAppDelegate + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - ReactCommon (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - ReactCommon/turbomodule (= 0.81.9) + - SocketRocket + - ReactCommon/turbomodule (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.81.9) + - React-cxxreact (= 0.81.9) + - React-jsi (= 0.81.9) + - React-logger (= 0.81.9) + - React-perflogger (= 0.81.9) + - ReactCommon/turbomodule/bridging (= 0.81.9) + - ReactCommon/turbomodule/core (= 0.81.9) + - SocketRocket + - ReactCommon/turbomodule/bridging (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.81.9) + - React-cxxreact (= 0.81.9) + - React-jsi (= 0.81.9) + - React-logger (= 0.81.9) + - React-perflogger (= 0.81.9) + - SocketRocket + - ReactCommon/turbomodule/core (0.81.9): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.81.9) + - React-cxxreact (= 0.81.9) + - React-debug (= 0.81.9) + - React-featureflags (= 0.81.9) + - React-jsi (= 0.81.9) + - React-logger (= 0.81.9) + - React-perflogger (= 0.81.9) + - React-utils (= 0.81.9) + - SocketRocket + - ReactNativeEnrichedHtml (1.1.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - 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 + - SocketRocket + - Yoga + - SocketRocket (0.7.1) + - Yoga (0.0.0) + +DEPENDENCIES: + - boost (from `../node_modules/react-native-macos/third-party-podspecs/boost.podspec`) + - DoubleConversion (from `../node_modules/react-native-macos/third-party-podspecs/DoubleConversion.podspec`) + - fast_float (from `../node_modules/react-native-macos/third-party-podspecs/fast_float.podspec`) + - FBLazyVector (from `../node_modules/react-native-macos/Libraries/FBLazyVector`) + - fmt (from `../node_modules/react-native-macos/third-party-podspecs/fmt.podspec`) + - glog (from `../node_modules/react-native-macos/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native-macos/sdks/hermes-engine/hermes-engine.podspec`) + - RCT-Folly (from `../node_modules/react-native-macos/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native-macos/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native-macos/Libraries/Required`) + - RCTTypeSafety (from `../node_modules/react-native-macos/Libraries/TypeSafety`) + - React (from `../node_modules/react-native-macos/`) + - React-callinvoker (from `../node_modules/react-native-macos/ReactCommon/callinvoker`) + - React-Core (from `../node_modules/react-native-macos/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native-macos/`) + - React-CoreModules (from `../node_modules/react-native-macos/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native-macos/ReactCommon/cxxreact`) + - React-debug (from `../node_modules/react-native-macos/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/dom`) + - React-Fabric (from `../node_modules/react-native-macos/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native-macos/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native-macos/ReactCommon`) + - React-featureflags (from `../node_modules/react-native-macos/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/featureflags`) + - React-graphics (from `../node_modules/react-native-macos/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native-macos/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/idlecallbacks`) + - React-ImageManager (from `../node_modules/react-native-macos/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native-macos/ReactCommon/jserrorhandler`) + - React-jsi (from `../node_modules/react-native-macos/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native-macos/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native-macos/ReactCommon/jsinspector-modern`) + - React-jsinspectorcdp (from `../node_modules/react-native-macos/ReactCommon/jsinspector-modern/cdp`) + - React-jsinspectornetwork (from `../node_modules/react-native-macos/ReactCommon/jsinspector-modern/network`) + - React-jsinspectortracing (from `../node_modules/react-native-macos/ReactCommon/jsinspector-modern/tracing`) + - React-jsitooling (from `../node_modules/react-native-macos/ReactCommon/jsitooling`) + - React-jsitracing (from `../node_modules/react-native-macos/ReactCommon/hermes/executor/`) + - React-logger (from `../node_modules/react-native-macos/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native-macos/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/microtasks`) + - React-NativeModulesApple (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/core/platform/ios`) + - React-oscompat (from `../node_modules/react-native-macos/ReactCommon/oscompat`) + - React-perflogger (from `../node_modules/react-native-macos/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native-macos/ReactCommon/react/performance/timeline`) + - React-RCTActionSheet (from `../node_modules/react-native-macos/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native-macos/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native-macos/Libraries/AppDelegate`) + - React-RCTBlob (from `../node_modules/react-native-macos/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native-macos/React`) + - React-RCTFBReactNativeSpec (from `../node_modules/react-native-macos/React`) + - React-RCTImage (from `../node_modules/react-native-macos/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native-macos/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native-macos/Libraries/Network`) + - React-RCTRuntime (from `../node_modules/react-native-macos/React/Runtime`) + - React-RCTSettings (from `../node_modules/react-native-macos/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native-macos/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native-macos/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native-macos/ReactCommon/react/renderer/consistency`) + - React-renderercss (from `../node_modules/react-native-macos/ReactCommon/react/renderer/css`) + - React-rendererdebug (from `../node_modules/react-native-macos/ReactCommon/react/renderer/debug`) + - React-RuntimeApple (from `../node_modules/react-native-macos/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native-macos/ReactCommon/react/runtime`) + - React-runtimeexecutor (from `../node_modules/react-native-macos/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native-macos/ReactCommon/react/runtime`) + - React-runtimescheduler (from `../node_modules/react-native-macos/ReactCommon/react/renderer/runtimescheduler`) + - React-timing (from `../node_modules/react-native-macos/ReactCommon/react/timing`) + - React-utils (from `../node_modules/react-native-macos/ReactCommon/react/utils`) + - ReactAppDependencyProvider (from `build/generated/ios`) + - ReactCodegen (from `build/generated/ios`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native-macos/ReactCommon`) + - ReactNativeEnrichedHtml (from `../../..`) + - SocketRocket (~> 0.7.1) + - Yoga (from `../node_modules/react-native-macos/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - SocketRocket + +EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native-macos/third-party-podspecs/boost.podspec" + DoubleConversion: + :podspec: "../node_modules/react-native-macos/third-party-podspecs/DoubleConversion.podspec" + fast_float: + :podspec: "../node_modules/react-native-macos/third-party-podspecs/fast_float.podspec" + FBLazyVector: + :path: "../node_modules/react-native-macos/Libraries/FBLazyVector" + fmt: + :podspec: "../node_modules/react-native-macos/third-party-podspecs/fmt.podspec" + glog: + :podspec: "../node_modules/react-native-macos/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native-macos/sdks/hermes-engine/hermes-engine.podspec" + :tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782 + RCT-Folly: + :podspec: "../node_modules/react-native-macos/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native-macos/ReactApple/Libraries/RCTFoundation/RCTDeprecation" + RCTRequired: + :path: "../node_modules/react-native-macos/Libraries/Required" + RCTTypeSafety: + :path: "../node_modules/react-native-macos/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native-macos/" + React-callinvoker: + :path: "../node_modules/react-native-macos/ReactCommon/callinvoker" + React-Core: + :path: "../node_modules/react-native-macos/" + React-CoreModules: + :path: "../node_modules/react-native-macos/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native-macos/ReactCommon/cxxreact" + React-debug: + :path: "../node_modules/react-native-macos/ReactCommon/react/debug" + React-defaultsnativemodule: + :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/defaults" + React-domnativemodule: + :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/dom" + React-Fabric: + :path: "../node_modules/react-native-macos/ReactCommon" + React-FabricComponents: + :path: "../node_modules/react-native-macos/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native-macos/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native-macos/ReactCommon/react/featureflags" + React-featureflagsnativemodule: + :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/featureflags" + React-graphics: + :path: "../node_modules/react-native-macos/ReactCommon/react/renderer/graphics" + React-hermes: + :path: "../node_modules/react-native-macos/ReactCommon/hermes" + React-idlecallbacksnativemodule: + :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/idlecallbacks" + React-ImageManager: + :path: "../node_modules/react-native-macos/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native-macos/ReactCommon/jserrorhandler" + React-jsi: + :path: "../node_modules/react-native-macos/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native-macos/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native-macos/ReactCommon/jsinspector-modern" + React-jsinspectorcdp: + :path: "../node_modules/react-native-macos/ReactCommon/jsinspector-modern/cdp" + React-jsinspectornetwork: + :path: "../node_modules/react-native-macos/ReactCommon/jsinspector-modern/network" + React-jsinspectortracing: + :path: "../node_modules/react-native-macos/ReactCommon/jsinspector-modern/tracing" + React-jsitooling: + :path: "../node_modules/react-native-macos/ReactCommon/jsitooling" + React-jsitracing: + :path: "../node_modules/react-native-macos/ReactCommon/hermes/executor/" + React-logger: + :path: "../node_modules/react-native-macos/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native-macos/ReactCommon" + React-microtasksnativemodule: + :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/microtasks" + React-NativeModulesApple: + :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/core/platform/ios" + React-oscompat: + :path: "../node_modules/react-native-macos/ReactCommon/oscompat" + React-perflogger: + :path: "../node_modules/react-native-macos/ReactCommon/reactperflogger" + React-performancetimeline: + :path: "../node_modules/react-native-macos/ReactCommon/react/performance/timeline" + React-RCTActionSheet: + :path: "../node_modules/react-native-macos/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native-macos/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native-macos/Libraries/AppDelegate" + React-RCTBlob: + :path: "../node_modules/react-native-macos/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native-macos/React" + React-RCTFBReactNativeSpec: + :path: "../node_modules/react-native-macos/React" + React-RCTImage: + :path: "../node_modules/react-native-macos/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native-macos/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native-macos/Libraries/Network" + React-RCTRuntime: + :path: "../node_modules/react-native-macos/React/Runtime" + React-RCTSettings: + :path: "../node_modules/react-native-macos/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native-macos/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native-macos/Libraries/Vibration" + React-rendererconsistency: + :path: "../node_modules/react-native-macos/ReactCommon/react/renderer/consistency" + React-renderercss: + :path: "../node_modules/react-native-macos/ReactCommon/react/renderer/css" + React-rendererdebug: + :path: "../node_modules/react-native-macos/ReactCommon/react/renderer/debug" + React-RuntimeApple: + :path: "../node_modules/react-native-macos/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native-macos/ReactCommon/react/runtime" + React-runtimeexecutor: + :path: "../node_modules/react-native-macos/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native-macos/ReactCommon/react/runtime" + React-runtimescheduler: + :path: "../node_modules/react-native-macos/ReactCommon/react/renderer/runtimescheduler" + React-timing: + :path: "../node_modules/react-native-macos/ReactCommon/react/timing" + React-utils: + :path: "../node_modules/react-native-macos/ReactCommon/react/utils" + ReactAppDependencyProvider: + :path: build/generated/ios + ReactCodegen: + :path: build/generated/ios + ReactCommon: + :path: "../node_modules/react-native-macos/ReactCommon" + ReactNativeEnrichedHtml: + :path: "../../.." + Yoga: + :path: "../node_modules/react-native-macos/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd + DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab + fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 + FBLazyVector: 3cde5aa3abeda29fd70560e5a3e3199e6add163f + fmt: 4cf0c5ec5864511c96d8d4bd7b03c3c69040af06 + glog: 0b31c25149b9d350b2666c7d459229861a00ec07 + hermes-engine: 7219f6e751ad6ec7f3d7ec121830ee34dae40749 + RCT-Folly: a3d9b23289a456c318f4814703664bdc33c771cc + RCTDeprecation: ae9e1391708bf992a2a94fb724b0923015be995b + RCTRequired: eb7a65dfaf816b64d40e1c96e4fc597bfa28bedc + RCTTypeSafety: a54e58687e664b1bfe9e45d2a8f8a53895d0a3eb + React: e9544e63efd562e190c906f467ad07948eeaad5f + React-callinvoker: 7dfaa2ec8ac499a414dfed53e3ebce46b23bca65 + React-Core: 06e5f9aa4779f13c00714936f405b1e21d56e465 + React-CoreModules: 9de28d4e2a12aad01443f2ca0fae0a0e41bea465 + React-cxxreact: 1b4e0f0e7a857eb642cb13a1c7f6575409b7cde4 + React-debug: ba7f1d298877aa92a9bf5af856b5606af0ee197a + React-defaultsnativemodule: bfce3c5a160043f993110653b2e1bf01ad2cedde + React-domnativemodule: 599193de380c13f93586db02c8595b5692c76f03 + React-Fabric: e3d0577231452d4563420478ef70fb55fe248051 + React-FabricComponents: be74318b443ea8f728a60cbd4ad7e0c9413c9af9 + React-FabricImage: 64ef438c49bee98e1a84e6454d13bbae91926698 + React-featureflags: 7597462adb09b18b3dbff8bd4f1f6441d790f252 + React-featureflagsnativemodule: d2e560a759e0e5777cfe7ce633cdc413395a8aba + React-graphics: 5feb59b27469c4c3e7664d79b1181b62119f82c9 + React-hermes: 51003f7fd4d0946401770e1b45f3a0f6c4e585d2 + React-idlecallbacksnativemodule: 8169daed60a88ac9d095da6315daf452d00fb708 + React-ImageManager: 1399b5c230278af855f09cd5fb76aaac0af89956 + React-jserrorhandler: e5f0a0f84ccf3da91d56f1018a4b14b53010269b + React-jsi: ff817c16523cb90852fe73d405795b2dc70b77c0 + React-jsiexecutor: 1c56ce69f4efb679bc098135d33a308ce3e7dffc + React-jsinspector: 3b228b59e42d7fd5c60594b5cc2edc9ba81d3aec + React-jsinspectorcdp: cefb9bd91a9c8b2d743b40999a223543a5bd5879 + React-jsinspectornetwork: e6fed0da74f1399bac5e758d50cd2f660db3c40b + React-jsinspectortracing: bbf416487d9b78d8fb5f5234451163c8ed88ed82 + React-jsitooling: 1553ece4e91c4283f669999ec8c08c822d356acf + React-jsitracing: af182d47427801d4c8b16f995791baa0e0d6129a + React-logger: 19586e18cb370047633039b018d365953598739e + React-Mapbuffer: 45ec5cdca592f4dc6522c59b8f4575abf573e0b1 + React-microtasksnativemodule: a0f271cefc1bae9ff0cb8f4237b9f7481cd97543 + React-NativeModulesApple: 02b57ec4dced7eb81bedcccdad1ca62fee961c4d + React-oscompat: 66d4c9c770c0690b00c652a568f30b4713104ebf + React-perflogger: 0834475c95233811e2095a13fc6fad0bac270dae + React-performancetimeline: cb1c440be4b41ae07924220142a332f483ef0460 + React-RCTActionSheet: 6f0f30ca45644ea45c8fd4dcc4bb979841c1329c + React-RCTAnimation: 768305e2855bb6f42a20359090c289f488166e5c + React-RCTAppDelegate: b4f5318820cb2a1e08be6bd687e78ed1bbe63c9e + React-RCTBlob: 3a65e0cfc0002b221d72e8ba3e61693ea1cbfd47 + React-RCTFabric: 3c1ef8c53275964658f9e2d125fba368fba603f3 + React-RCTFBReactNativeSpec: 1181fd14170f46d062fa14050a4cbc96ba7d81dd + React-RCTImage: ca1c3955cfb73dc19375826126f3fc7f282b4133 + React-RCTLinking: 605ec0a901aa5be3bc1662cc218928dc89d59360 + React-RCTNetwork: 1dd04e5d9e1a196e341e5593b726e0e1997814a4 + React-RCTRuntime: 532616e200e07534a313d7d18e8829bdde19b567 + React-RCTSettings: 6bc84e7f4ec012ad61aad3ca3a1e4e011e98adb6 + React-RCTText: 7c9b8bee3ebbbc9260677b987fb182f47c8b4003 + React-RCTVibration: 5c58c1a898e21e7d69264ae81b5ce47715bc6a8f + React-rendererconsistency: 0d5c5e660b71e4a7e42008d925af773739030f2a + React-renderercss: de2285666b1ab90a867ba238b63d9b8b9cf2e8d3 + React-rendererdebug: 4636e47266fb8ece0dfac4baf130e986639f762f + React-RuntimeApple: 5f3bbce6a8bbb570f3c33eab1510d0061588bc02 + React-RuntimeCore: 756fab3631299b051ba62811a48b7bb27b10bd05 + React-runtimeexecutor: 30e08be18783a46a9476d6629715d7cc59306d13 + React-RuntimeHermes: 49242f750a3f93d99ffccfd602fb1b30a258b199 + React-runtimescheduler: 1463e92f5f70e254c4aca4173c179304202e37e0 + React-timing: 990ed60289af22f972123de84fe38f266a604c6a + React-utils: ae5bf8031b105dbd3cb85fc63ae56512563f8daf + ReactAppDependencyProvider: db0eebc7a9e85c8976d5ea10706d790753a53889 + ReactCodegen: b70cc4acc2bdfe4f7bb765db75b3c6fd14c7aa39 + ReactCommon: bc273d1cfc32a36ea662e81293e0961de8c21c77 + ReactNativeEnrichedHtml: 6d24ce69b270c4e4fbe92d0b10646171ade9ad30 + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 + Yoga: a88f30ac6f89fded00f9840e7d043315e5ab4fe0 + +PODFILE CHECKSUM: 7f8d4f65ebcb932eabd1108565d914a163909df4 + +COCOAPODS: 1.15.2 diff --git a/apps/example-macos/macos/PrivacyInfo.xcprivacy b/apps/example-macos/macos/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..41b8317f0 --- /dev/null +++ b/apps/example-macos/macos/PrivacyInfo.xcprivacy @@ -0,0 +1,37 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/apps/example-macos/metro.config.js b/apps/example-macos/metro.config.js new file mode 100644 index 000000000..77511ea0a --- /dev/null +++ b/apps/example-macos/metro.config.js @@ -0,0 +1,30 @@ +const path = require('path'); +const { getDefaultConfig } = require('@react-native/metro-config'); +const { withMetroConfig } = require('react-native-monorepo-config'); + +const root = path.resolve(__dirname, '../..'); + +/** + * Metro configuration + * https://facebook.github.io/metro/docs/configuration + * + * @type {import('metro-config').MetroConfig} + */ +const config = withMetroConfig(getDefaultConfig(__dirname), { + root, + dirname: __dirname, +}); + +// When bundling for macOS the CLI rewrites `react-native` imports to +// `react-native-macos`. Library sources at the monorepo root resolve their +// dependencies through `extraNodeModules` (which only covers declared peer +// deps), so the rewritten name needs an explicit mapping to this app's copy. +config.resolver.extraNodeModules = { + ...config.resolver.extraNodeModules, + 'react-native-macos': path.resolve( + __dirname, + 'node_modules/react-native-macos' + ), +}; + +module.exports = config; diff --git a/apps/example-macos/package.json b/apps/example-macos/package.json new file mode 100644 index 000000000..cffa609bf --- /dev/null +++ b/apps/example-macos/package.json @@ -0,0 +1,32 @@ +{ + "name": "react-native-enriched-macos-example", + "version": "0.0.1", + "private": true, + "scripts": { + "macos": "react-native run-macos --scheme EnrichedMacOSExample-macOS", + "start": "react-native start", + "build:macos": "react-native build-macos --scheme EnrichedMacOSExample-macOS --mode Debug" + }, + "dependencies": { + "react": "19.1.4", + "react-native": "0.81.6", + "react-native-macos": "^0.81.8" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "20.0.0", + "@react-native-community/cli-platform-android": "20.0.0", + "@react-native-community/cli-platform-ios": "20.0.0", + "@react-native/babel-preset": "0.81.6", + "@react-native/metro-config": "0.81.6", + "@react-native/typescript-config": "0.81.6", + "@types/react": "^19.1.4", + "react-native-builder-bob": "^0.40.18", + "react-native-monorepo-config": "0.3.3" + }, + "engines": { + "node": ">=20" + } +} diff --git a/apps/example-macos/react-native.config.js b/apps/example-macos/react-native.config.js new file mode 100644 index 000000000..878ded143 --- /dev/null +++ b/apps/example-macos/react-native.config.js @@ -0,0 +1,17 @@ +const path = require('path'); +const pkg = require('../../package.json'); + +module.exports = { + dependencies: { + [pkg.name]: { + root: path.join(__dirname, '../..'), + platforms: { + // Codegen script incorrectly fails without this + // So we explicitly specify the platforms with empty object + macos: {}, + ios: {}, + android: {}, + }, + }, + }, +}; diff --git a/apps/example-macos/src/App.tsx b/apps/example-macos/src/App.tsx new file mode 100644 index 000000000..33d3824e9 --- /dev/null +++ b/apps/example-macos/src/App.tsx @@ -0,0 +1,252 @@ +import { + Pressable, + SafeAreaView, + ScrollView, + StyleSheet, + Text, + View, +} from 'react-native'; +import { EnrichedText, EnrichedTextInput } from 'react-native-enriched-html'; +import { ImageModal } from './components/ImageModal'; +import { LinkModal } from './components/LinkModal'; +import { MentionPopup } from './components/MentionPopup'; +import { useEditorState } from './hooks/useEditorState'; + +interface ToolbarButtonProps { + label: string; + active?: boolean; + onPress: () => void; +} + +function ToolbarButton({ label, active, onPress }: ToolbarButtonProps) { + return ( + + {label} + + ); +} + +export const LINK_REGEX = + /^(?:enriched:\/\/\S+|(?:https?:\/\/)?(?:www\.)?swmansion\.com(?:\/\S*)?)$/i; + +export default function App() { + const editor = useEditorState(); + + return ( + + + EnrichedTextInput + + editor.ref.current?.toggleBold()} + /> + editor.ref.current?.toggleItalic()} + /> + editor.ref.current?.toggleUnderline()} + /> + editor.ref.current?.toggleStrikeThrough()} + /> + editor.ref.current?.toggleInlineCode()} + /> + editor.ref.current?.toggleH1()} + /> + editor.ref.current?.toggleH4()} + /> + editor.ref.current?.toggleBlockQuote()} + /> + editor.ref.current?.toggleCodeBlock()} + /> + editor.ref.current?.toggleOrderedList()} + /> + editor.ref.current?.toggleUnorderedList()} + /> + editor.ref.current?.toggleCheckboxList(false)} + /> + + + editor.ref.current?.startMention('@')} + /> + editor.ref.current?.setTextAlignment('left')} + /> + editor.ref.current?.setTextAlignment('center')} + /> + editor.ref.current?.setTextAlignment('right')} + /> + editor.ref.current?.setTextAlignment('justify')} + /> + + + + editor.handleChangeState(e.nativeEvent)} + onChangeHtml={(e) => editor.handleChangeHtml(e.nativeEvent.value)} + onChangeSelection={(e) => + editor.handleSelectionChange(e.nativeEvent) + } + onPasteImages={(e) => editor.handlePasteImagesEvent(e.nativeEvent)} + onLinkDetected={editor.handleLinkDetected} + onStartMention={editor.handleStartMention} + onChangeMention={editor.handleChangeMention} + onEndMention={editor.handleEndMention} + linkRegex={LINK_REGEX} + /> + + + + HTML output + {editor.currentHtml} + EnrichedText + {editor.currentHtml} + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + // Explicit colors: the RN root window is white regardless of the system + // appearance, while Text defaults to the semantic labelColor (white in + // dark mode), which would make all labels invisible. + backgroundColor: '#fff', + }, + content: { + padding: 16, + gap: 12, + }, + heading: { + fontSize: 18, + fontWeight: 'bold', + color: '#000', + }, + toolbar: { + flexDirection: 'row', + flexWrap: 'wrap', + gap: 8, + }, + button: { + paddingHorizontal: 10, + paddingVertical: 6, + borderRadius: 6, + borderWidth: 1, + borderColor: '#8888', + }, + buttonActive: { + backgroundColor: '#4444', + }, + buttonLabel: { + fontSize: 14, + color: '#000', + }, + editorContainer: { + width: 400, + }, + input: { + minHeight: 120, + width: '100%', + borderWidth: 1, + borderColor: '#8888', + borderRadius: 8, + padding: 8, + fontSize: 16, + }, + html: { + fontFamily: 'Menlo', + fontSize: 12, + color: '#000', + }, + text: { + fontSize: 16, + }, +}); diff --git a/apps/example-macos/src/components/ImageModal.tsx b/apps/example-macos/src/components/ImageModal.tsx new file mode 100644 index 000000000..48042532e --- /dev/null +++ b/apps/example-macos/src/components/ImageModal.tsx @@ -0,0 +1,144 @@ +import { type FC, useState } from 'react'; +import { Pressable, StyleSheet, Text, TextInput, View } from 'react-native'; +import { ModalShell } from './ModalShell'; + +interface ImageModalProps { + isOpen: boolean; + onClose: () => void; + onSubmit: ( + width: number | undefined, + height: number | undefined, + url: string + ) => void; +} + +export const ImageModal: FC = ({ + isOpen, + onClose, + onSubmit, +}) => { + const [width, setWidth] = useState(''); + const [height, setHeight] = useState(''); + const [url, setUrl] = useState(''); + + const resetState = () => { + setWidth(''); + setHeight(''); + setUrl(''); + }; + + const closeModal = () => { + onClose(); + resetState(); + }; + + const handleSave = () => { + if (url.trim().length === 0) return; + + const parsedWidth = parseFloat(width); + const parsedHeight = parseFloat(height); + const finalWidth = isNaN(parsedWidth) ? undefined : parsedWidth; + const finalHeight = isNaN(parsedHeight) ? undefined : parsedHeight; + + onSubmit(finalWidth, finalHeight, url.trim()); + closeModal(); + }; + + return ( + + + + + + + + + + + + + Insert Image + + + + + ); +}; + +const styles = StyleSheet.create({ + modal: { + width: 300, + height: 320, + backgroundColor: 'white', + borderRadius: 8, + padding: 16, + }, + header: { + width: '100%', + alignItems: 'flex-end', + }, + closeButton: { + justifyContent: 'center', + alignItems: 'center', + width: 24, + height: 24, + }, + closeLabel: { + fontSize: 16, + color: 'rgb(0, 26, 114)', + }, + content: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + input: { + fontSize: 15, + borderBottomWidth: 1, + borderBottomColor: 'grey', + width: '100%', + marginVertical: 10, + color: '#000', + }, + saveButton: { + width: '75%', + padding: 12, + borderRadius: 8, + backgroundColor: 'rgb(0, 26, 114)', + alignItems: 'center', + }, + disabled: { + backgroundColor: 'darkgray', + }, + saveButtonLabel: { + color: 'white', + fontWeight: 'bold', + }, +}); diff --git a/apps/example-macos/src/components/LinkModal.tsx b/apps/example-macos/src/components/LinkModal.tsx new file mode 100644 index 000000000..701a9e6e4 --- /dev/null +++ b/apps/example-macos/src/components/LinkModal.tsx @@ -0,0 +1,119 @@ +import { type FC, useEffect, useState } from 'react'; +import { Pressable, StyleSheet, Text, TextInput, View } from 'react-native'; +import { ModalShell } from './ModalShell'; + +interface LinkModalProps { + isOpen: boolean; + editedText: string; + editedUrl: string; + onClose: () => void; + onSubmit: (text: string, url: string) => void; +} + +export const LinkModal: FC = ({ + isOpen, + editedText, + editedUrl, + onClose, + onSubmit, +}) => { + const [text, setText] = useState(''); + const [url, setUrl] = useState(''); + + useEffect(() => { + setText(editedText); + setUrl(editedUrl); + }, [editedText, editedUrl]); + + const handleSave = () => { + onSubmit(text, url); + }; + + return ( + + + + + + + + + + + + Save + + + + + ); +}; + +const styles = StyleSheet.create({ + modal: { + width: 300, + height: 240, + backgroundColor: 'white', + borderRadius: 8, + padding: 16, + }, + header: { + width: '100%', + alignItems: 'flex-end', + }, + closeButton: { + justifyContent: 'center', + alignItems: 'center', + width: 24, + height: 24, + }, + closeLabel: { + fontSize: 16, + color: 'rgb(0, 26, 114)', + }, + content: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + input: { + fontSize: 15, + borderBottomWidth: 1, + borderBottomColor: 'grey', + width: '100%', + marginVertical: 10, + color: '#000', + }, + saveButton: { + width: '75%', + padding: 12, + borderRadius: 8, + backgroundColor: 'rgb(0, 26, 114)', + alignItems: 'center', + }, + disabled: { + backgroundColor: 'darkgray', + }, + saveButtonLabel: { + color: 'white', + fontWeight: 'bold', + }, +}); diff --git a/apps/example-macos/src/components/MentionPopup.tsx b/apps/example-macos/src/components/MentionPopup.tsx new file mode 100644 index 000000000..acfdec089 --- /dev/null +++ b/apps/example-macos/src/components/MentionPopup.tsx @@ -0,0 +1,108 @@ +import type { FC } from 'react'; +import { + FlatList, + type ListRenderItemInfo, + Pressable, + StyleSheet, + Text, + View, +} from 'react-native'; + +export interface MentionItem { + id: string; + name: string; +} + +export type MentionData = MentionItem[]; + +interface MentionPopupProps { + variant: 'user' | 'channel'; + data: MentionData; + isOpen: boolean; + onItemPress: (item: MentionItem) => void; +} + +export const MentionPopup: FC = ({ + variant, + data, + isOpen, + onItemPress, +}) => { + if (!isOpen || !data.length) return null; + + const renderItem = ({ item }: ListRenderItemInfo) => ( + [ + styles.itemContainer, + pressed && styles.itemContainerPressed, + ]} + onPress={() => onItemPress(item)} + > + + {variant === 'user' ? '@' : '#'} + + {item.name} + + ); + + return ( + + item.id} + contentContainerStyle={styles.content} + /> + + ); +}; + +const styles = StyleSheet.create({ + container: { + position: 'absolute', + width: '100%', + zIndex: 100, + top: 400, + }, + scrollView: { + flex: 1, + borderRadius: 8, + maxHeight: 200, + borderWidth: 1, + borderColor: 'grey', + backgroundColor: 'white', + }, + content: { + flexGrow: 1, + paddingVertical: 16, + }, + itemContainer: { + paddingVertical: 8, + paddingHorizontal: 16, + flexDirection: 'row', + alignItems: 'center', + gap: 4, + }, + itemContainerPressed: { + backgroundColor: 'rgba(0, 26, 114, 0.1)', + }, + itemLabel: { + fontSize: 16, + color: '#000', + }, + avatar: { + width: 32, + height: 32, + borderRadius: 16, + marginRight: 8, + backgroundColor: 'gainsboro', + justifyContent: 'center', + alignItems: 'center', + }, + avatarLabel: { + fontSize: 16, + fontWeight: 'bold', + color: 'rgb(0, 26, 114)', + }, +}); diff --git a/apps/example-macos/src/components/ModalShell.tsx b/apps/example-macos/src/components/ModalShell.tsx new file mode 100644 index 000000000..632831d16 --- /dev/null +++ b/apps/example-macos/src/components/ModalShell.tsx @@ -0,0 +1,31 @@ +import { type FC, type ReactNode } from 'react'; +import { StyleSheet, View } from 'react-native'; + +interface ModalShellProps { + isOpen: boolean; + children: ReactNode; +} + +// react-native-macos doesn't implement the native Modal host component +// (RCTModalHostView is compiled out on macOS), so RN's throws +// "exception in hostfunction" there. Render a plain absolutely-positioned +// overlay instead, matching apps/example-web/src/components/BaseModal.tsx. +export const ModalShell: FC = ({ isOpen, children }) => { + if (!isOpen) return null; + + return {children}; +}; + +const styles = StyleSheet.create({ + container: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.5)', + zIndex: 1000, + }, +}); diff --git a/apps/example-macos/src/hooks/useChannelMention.ts b/apps/example-macos/src/hooks/useChannelMention.ts new file mode 100644 index 000000000..8681c375a --- /dev/null +++ b/apps/example-macos/src/hooks/useChannelMention.ts @@ -0,0 +1,23 @@ +import { useMemo, useState } from 'react'; + +const MOCKED_DATA = [ + { id: '1', name: 'General' }, + { id: '2', name: 'Random' }, + { id: '3', name: 'Engineering' }, + { id: '4', name: 'Private channel' }, +]; + +export const useChannelMention = () => { + const [mention, setMention] = useState(''); + + const data = useMemo( + () => MOCKED_DATA.filter((i) => i.name.toLowerCase().startsWith(mention)), + [mention] + ); + + const onMentionChange = (value: string) => { + setMention(value.toLowerCase()); + }; + + return { data, onMentionChange }; +}; diff --git a/apps/example-macos/src/hooks/useEditorState.ts b/apps/example-macos/src/hooks/useEditorState.ts new file mode 100644 index 000000000..e8979705f --- /dev/null +++ b/apps/example-macos/src/hooks/useEditorState.ts @@ -0,0 +1,199 @@ +import { useRef, useState } from 'react'; +import type { + EnrichedTextInputInstance, + OnChangeMentionEvent, + OnChangeSelectionEvent, + OnChangeStateEvent, + OnLinkDetected, + OnPasteImagesEvent, +} from 'react-native-enriched-html'; +import type { MentionItem } from '../components/MentionPopup'; +import { useChannelMention } from './useChannelMention'; +import { useUserMention } from './useUserMention'; + +type CurrentLinkState = OnLinkDetected; + +const DEFAULT_LINK_STATE: CurrentLinkState = { + text: '', + url: '', + start: 0, + end: 0, +}; + +interface Selection { + start: number; + end: number; + text: string; +} + +export function useEditorState() { + const ref = useRef(null); + + const [isLinkModalOpen, setIsLinkModalOpen] = useState(false); + const [isImageModalOpen, setIsImageModalOpen] = useState(false); + const [isUserPopupOpen, setIsUserPopupOpen] = useState(false); + const [isChannelPopupOpen, setIsChannelPopupOpen] = useState(false); + const [currentHtml, setCurrentHtml] = useState(''); + const [selection, setSelection] = useState(); + const [stylesState, setStylesState] = useState( + null + ); + const [currentLink, setCurrentLink] = + useState(DEFAULT_LINK_STATE); + + const userMention = useUserMention(); + const channelMention = useChannelMention(); + + const insideCurrentLink = Boolean( + stylesState?.link.isActive && + currentLink.url.length > 0 && + (currentLink.start || currentLink.end) && + selection && + selection.start >= currentLink.start && + selection.end <= currentLink.end + ); + + const handleChangeHtml = (html: string) => { + setCurrentHtml(html); + }; + + const handleChangeState = (state: OnChangeStateEvent) => { + setStylesState(state); + }; + + const handleLinkDetected = (state: CurrentLinkState) => { + setCurrentLink(state); + }; + + const handleSelectionChange = (sel: OnChangeSelectionEvent) => { + setSelection(sel); + }; + + const handlePasteImagesEvent = (e: OnPasteImagesEvent) => { + e.images.forEach((image) => { + ref.current?.setImage(image.uri, image.width, image.height); + }); + }; + + const openLinkModal = () => setIsLinkModalOpen(true); + const closeLinkModal = () => setIsLinkModalOpen(false); + const openImageModal = () => setIsImageModalOpen(true); + const closeImageModal = () => setIsImageModalOpen(false); + + const openUserMentionPopup = () => setIsUserPopupOpen(true); + const closeUserMentionPopup = () => { + setIsUserPopupOpen(false); + userMention.onMentionChange(''); + }; + + const openChannelMentionPopup = () => setIsChannelPopupOpen(true); + const closeChannelMentionPopup = () => { + setIsChannelPopupOpen(false); + channelMention.onMentionChange(''); + }; + + const handleStartMention = (indicator: string) => { + console.log('start mention', indicator); + if (indicator === '@') { + userMention.onMentionChange(''); + openUserMentionPopup(); + return; + } + channelMention.onMentionChange(''); + openChannelMentionPopup(); + }; + + const handleChangeMention = ({ indicator, text }: OnChangeMentionEvent) => { + console.log('change mention', indicator); + if (indicator === '@') { + userMention.onMentionChange(text); + if (!isUserPopupOpen) setIsUserPopupOpen(true); + return; + } + channelMention.onMentionChange(text); + if (!isChannelPopupOpen) setIsChannelPopupOpen(true); + }; + + const handleEndMention = (indicator: string) => { + console.log('end mention', indicator); + if (indicator === '@') { + closeUserMentionPopup(); + return; + } + closeChannelMentionPopup(); + }; + + const handleUserMentionSelected = (item: MentionItem) => { + ref.current?.setMention('@', `@${item.name}`, { + id: item.id, + type: 'user', + }); + }; + + const handleChannelMentionSelected = (item: MentionItem) => { + ref.current?.setMention('#', `#${item.name}`, { + id: item.id, + type: 'channel', + }); + }; + + const submitLink = (text: string, url: string) => { + if (!selection || url.length === 0) { + closeLinkModal(); + return; + } + const newText = text.length > 0 ? text : url; + if (insideCurrentLink) { + ref.current?.setLink(currentLink.start, currentLink.end, newText, url); + } else { + ref.current?.setLink(selection.start, selection.end, newText, url); + } + closeLinkModal(); + }; + + const submitImage = ( + width: number | undefined, + height: number | undefined, + url: string + ) => { + ref.current?.setImage(url, width ?? 80, height ?? 80); + closeImageModal(); + }; + + const refresh = () => { + ref.current?.setValue(''); + setCurrentHtml(''); + }; + + return { + ref, + stylesState, + currentHtml, + selection, + currentLink, + insideCurrentLink, + isLinkModalOpen, + isImageModalOpen, + isUserPopupOpen, + isChannelPopupOpen, + userMention, + channelMention, + openLinkModal, + closeLinkModal, + openImageModal, + closeImageModal, + handleChangeHtml, + handleChangeState, + handleLinkDetected, + handleSelectionChange, + handlePasteImagesEvent, + handleStartMention, + handleChangeMention, + handleEndMention, + handleUserMentionSelected, + handleChannelMentionSelected, + submitLink, + submitImage, + refresh, + }; +} diff --git a/apps/example-macos/src/hooks/useUserMention.ts b/apps/example-macos/src/hooks/useUserMention.ts new file mode 100644 index 000000000..c46b055f9 --- /dev/null +++ b/apps/example-macos/src/hooks/useUserMention.ts @@ -0,0 +1,23 @@ +import { useMemo, useState } from 'react'; + +const MOCKED_DATA = [ + { id: '1', name: 'John Doe' }, + { id: '2', name: 'Jane Smith' }, + { id: '3', name: 'Alice Johnson' }, + { id: '4', name: 'Bob Brown' }, +]; + +export const useUserMention = () => { + const [mention, setMention] = useState(''); + + const data = useMemo( + () => MOCKED_DATA.filter((i) => i.name.toLowerCase().startsWith(mention)), + [mention] + ); + + const onMentionChange = (value: string) => { + setMention(value.toLowerCase()); + }; + + return { data, onMentionChange }; +}; diff --git a/apps/example-macos/tsconfig.json b/apps/example-macos/tsconfig.json new file mode 100644 index 000000000..e07db32f0 --- /dev/null +++ b/apps/example-macos/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "paths": { + "react-native-enriched-html": ["../../src/index.native.tsx"] + } + } +} diff --git a/apps/example/ios/Podfile.lock b/apps/example/ios/Podfile.lock index 00354487c..3dd6000d9 100644 --- a/apps/example/ios/Podfile.lock +++ b/apps/example/ios/Podfile.lock @@ -1,125 +1,333 @@ PODS: - - boost (1.84.0): - - ReactNativeDependencies - - DoubleConversion (1.1.6): + - FBLazyVector (0.85.0) + - hermes-engine (250829098.0.10): + - hermes-engine/Pre-built (= 250829098.0.10) + - hermes-engine/Pre-built (250829098.0.10) + - RCTDeprecation (0.85.0) + - RCTRequired (0.85.0) + - RCTSwiftUI (0.85.0) + - RCTSwiftUIWrapper (0.85.0): + - RCTSwiftUI + - RCTTypeSafety (0.85.0): + - FBLazyVector (= 0.85.0) + - RCTRequired (= 0.85.0) + - React-Core (= 0.85.0) + - React (0.85.0): + - React-Core (= 0.85.0) + - React-Core/DevSupport (= 0.85.0) + - React-Core/RCTWebSocket (= 0.85.0) + - React-RCTActionSheet (= 0.85.0) + - React-RCTAnimation (= 0.85.0) + - React-RCTBlob (= 0.85.0) + - React-RCTImage (= 0.85.0) + - React-RCTLinking (= 0.85.0) + - React-RCTNetwork (= 0.85.0) + - React-RCTSettings (= 0.85.0) + - React-RCTText (= 0.85.0) + - React-RCTVibration (= 0.85.0) + - React-callinvoker (0.85.0) + - React-Core (0.85.0): + - hermes-engine + - RCTDeprecation + - React-Core-prebuilt + - React-Core/Default (= 0.85.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 - - fast_float (8.0.0): + - Yoga + - React-Core-prebuilt (0.85.0): - ReactNativeDependencies - - FBLazyVector (0.87.0): + - React-Core/CoreModulesHeaders (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - fmt (12.1.0): - - ReactNativeDependencies - - glog (0.3.5): - - ReactNativeDependencies - - hermes-engine (250829098.0.16): - - hermes-engine/Pre-built (= 250829098.0.16) - - hermes-engine/Pre-built (250829098.0.16) - - RCT-Folly (2024.11.18.00): - - RCT-Folly/Default (= 2024.11.18.00) - - ReactNativeDependencies - - RCT-Folly/Default (2024.11.18.00): + - 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 - - RCTDeprecation (0.87.0): - - React-Core-prebuilt - - RCTRequired (0.87.0): - - React-Core-prebuilt - - RCTSwiftUI (0.87.0) - - RCTSwiftUIWrapper (0.87.0): - - RCTSwiftUI - - RCTTypeSafety (0.87.0): - - FBLazyVector (= 0.87.0) - - RCTRequired (= 0.87.0) - - React-Core (= 0.87.0) - - React (0.87.0): - - React-Core (= 0.87.0) - - React-Core/DevSupport (= 0.87.0) - - React-Core/RCTWebSocket (= 0.87.0) - - React-RCTActionSheet (= 0.87.0) - - React-RCTAnimation (= 0.87.0) - - React-RCTBlob (= 0.87.0) - - React-RCTImage (= 0.87.0) - - React-RCTLinking (= 0.87.0) - - React-RCTNetwork (= 0.87.0) - - React-RCTSettings (= 0.87.0) - - React-RCTText (= 0.87.0) - - React-RCTVibration (= 0.87.0) - - React-bridging (0.87.0): - - React-callinvoker + - Yoga + - React-Core/Default (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt + - React-cxxreact + - React-featureflags + - React-hermes - React-jsi - - React-timing + - React-jsiexecutor + - React-jsinspector + - React-jsinspectorcdp + - React-jsitooling + - React-perflogger + - React-runtimeexecutor + - React-runtimescheduler + - React-utils - ReactNativeDependencies - - React-callinvoker (0.87.0) - - React-Core (0.87.0): + - Yoga + - React-Core/DevSupport (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/Default (= 0.87.0) - - React-Core-prebuilt (0.87.0): + - React-Core/Default (= 0.85.0) + - React-Core/RCTWebSocket (= 0.85.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 - - React-Core/CoreModulesHeaders (0.87.0): - - React-Core-prebuilt - - React-Core/Default (0.87.0): - - React-Core-prebuilt - - React-Core/DevSupport (0.87.0): - - React-Core-prebuilt - - React-Core/RCTActionSheetHeaders (0.87.0): + - Yoga + - React-Core/RCTActionSheetHeaders (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTAnimationHeaders (0.87.0): + - 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/RCTAnimationHeaders (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTBlobHeaders (0.87.0): + - 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/RCTBlobHeaders (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTImageHeaders (0.87.0): + - 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.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTLinkingHeaders (0.87.0): + - 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.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTNetworkHeaders (0.87.0): + - 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/RCTNetworkHeaders (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTSettingsHeaders (0.87.0): + - 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/RCTSettingsHeaders (0.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTTextHeaders (0.87.0): + - 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.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTVibrationHeaders (0.87.0): + - 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.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-Core/RCTWebSocket (0.87.0): + - 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.85.0): + - hermes-engine + - RCTDeprecation - React-Core-prebuilt - - React-CoreModules (0.87.0): - - RCTTypeSafety (= 0.87.0) + - React-Core/Default (= 0.85.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.85.0): + - RCTTypeSafety (= 0.85.0) - React-Core-prebuilt - - React-Core/CoreModulesHeaders (= 0.87.0) + - React-Core/CoreModulesHeaders (= 0.85.0) - React-debug - - React-featureflags - - React-jsi (= 0.87.0) + - React-jsi (= 0.85.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.87.0) + - React-RCTImage (= 0.85.0) - React-runtimeexecutor - React-utils - ReactCommon - ReactNativeDependencies - - React-cxxreact (0.87.0): + - React-cxxreact (0.85.0): - hermes-engine - - React-callinvoker (= 0.87.0) + - React-callinvoker (= 0.85.0) - React-Core-prebuilt - - React-debug (= 0.87.0) - - React-jserrorhandler (= 0.87.0) - - React-jsi (= 0.87.0) + - React-debug (= 0.85.0) + - React-jsi (= 0.85.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.87.0) - - React-perflogger (= 0.87.0) + - React-logger (= 0.85.0) + - React-perflogger (= 0.85.0) - React-runtimeexecutor - - React-timing (= 0.87.0) + - React-timing (= 0.85.0) - React-utils - ReactNativeDependencies - - React-cxxstableapi (0.87.0) - - React-debug (0.87.0): - - React-debug/redbox (= 0.87.0) - - React-debug/redbox (0.87.0) - - React-defaultsnativemodule (0.87.0): + - React-debug (0.85.0) + - React-defaultsnativemodule (0.85.0): - hermes-engine - React-Core-prebuilt - React-domnativemodule @@ -131,15 +339,12 @@ PODS: - React-jsi - React-jsiexecutor - React-microtasksnativemodule - - React-mutationobservernativemodule - React-RCTFBReactNativeSpec - - React-viewtransitionnativemodule - React-webperformancenativemodule - ReactNativeDependencies - Yoga - - React-domnativemodule (0.87.0): + - React-domnativemodule (0.85.0): - hermes-engine - - React-bridging - React-Core-prebuilt - React-Fabric - React-Fabric/bridging @@ -152,34 +357,32 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-Fabric (0.87.0): + - React-Fabric (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/animated (= 0.87.0) - - React-Fabric/animationbackend (= 0.87.0) - - React-Fabric/animations (= 0.87.0) - - React-Fabric/attributedstring (= 0.87.0) - - React-Fabric/bridging (= 0.87.0) - - React-Fabric/componentregistry (= 0.87.0) - - React-Fabric/componentregistrynative (= 0.87.0) - - React-Fabric/components (= 0.87.0) - - React-Fabric/consistency (= 0.87.0) - - React-Fabric/core (= 0.87.0) - - React-Fabric/dom (= 0.87.0) - - React-Fabric/imagemanager (= 0.87.0) - - React-Fabric/leakchecker (= 0.87.0) - - React-Fabric/mounting (= 0.87.0) - - React-Fabric/observers (= 0.87.0) - - React-Fabric/scheduler (= 0.87.0) - - React-Fabric/telemetry (= 0.87.0) - - React-Fabric/uimanager (= 0.87.0) - - React-Fabric/viewtransition (= 0.87.0) + - React-Fabric/animated (= 0.85.0) + - React-Fabric/animationbackend (= 0.85.0) + - React-Fabric/animations (= 0.85.0) + - React-Fabric/attributedstring (= 0.85.0) + - React-Fabric/bridging (= 0.85.0) + - React-Fabric/componentregistry (= 0.85.0) + - React-Fabric/componentregistrynative (= 0.85.0) + - React-Fabric/components (= 0.85.0) + - React-Fabric/consistency (= 0.85.0) + - React-Fabric/core (= 0.85.0) + - React-Fabric/dom (= 0.85.0) + - React-Fabric/imagemanager (= 0.85.0) + - React-Fabric/leakchecker (= 0.85.0) + - React-Fabric/mounting (= 0.85.0) + - React-Fabric/observers (= 0.85.0) + - React-Fabric/scheduler (= 0.85.0) + - React-Fabric/telemetry (= 0.85.0) + - React-Fabric/uimanager (= 0.85.0) - React-featureflags - React-graphics - React-jsi @@ -191,11 +394,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animated (0.87.0): + - React-Fabric/animated (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -212,11 +414,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animationbackend (0.87.0): + - React-Fabric/animationbackend (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -232,11 +433,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animations (0.87.0): + - React-Fabric/animations (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -252,11 +452,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/attributedstring (0.87.0): + - React-Fabric/attributedstring (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -272,11 +471,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/bridging (0.87.0): + - React-Fabric/bridging (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -292,11 +490,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/componentregistry (0.87.0): + - React-Fabric/componentregistry (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -312,11 +509,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/componentregistrynative (0.87.0): + - React-Fabric/componentregistrynative (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -332,19 +528,18 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components (0.87.0): + - React-Fabric/components (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.87.0) - - React-Fabric/components/root (= 0.87.0) - - React-Fabric/components/scrollview (= 0.87.0) - - React-Fabric/components/view (= 0.87.0) + - React-Fabric/components/legacyviewmanagerinterop (= 0.85.0) + - React-Fabric/components/root (= 0.85.0) + - React-Fabric/components/scrollview (= 0.85.0) + - React-Fabric/components/view (= 0.85.0) - React-featureflags - React-graphics - React-jsi @@ -356,11 +551,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/legacyviewmanagerinterop (0.87.0): + - React-Fabric/components/legacyviewmanagerinterop (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -376,11 +570,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/root (0.87.0): + - React-Fabric/components/root (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -396,11 +589,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/scrollview (0.87.0): + - React-Fabric/components/scrollview (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -416,11 +608,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/view (0.87.0): + - React-Fabric/components/view (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -438,11 +629,10 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-Fabric/consistency (0.87.0): + - React-Fabric/consistency (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -458,11 +648,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/core (0.87.0): + - React-Fabric/core (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -478,11 +667,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/dom (0.87.0): + - React-Fabric/dom (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -498,11 +686,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/imagemanager (0.87.0): + - React-Fabric/imagemanager (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -518,11 +705,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/leakchecker (0.87.0): + - React-Fabric/leakchecker (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -538,11 +724,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/mounting (0.87.0): + - React-Fabric/mounting (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -551,7 +736,6 @@ PODS: - React-graphics - React-jsi - React-jsiexecutor - - React-jsinspectortracing - React-logger - React-rendererdebug - React-runtimeexecutor @@ -559,18 +743,16 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers (0.87.0): + - React-Fabric/observers (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.87.0) - - React-Fabric/observers/intersection (= 0.87.0) - - React-Fabric/observers/mutation (= 0.87.0) + - React-Fabric/observers/events (= 0.85.0) + - React-Fabric/observers/intersection (= 0.85.0) - React-featureflags - React-graphics - React-jsi @@ -582,11 +764,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/events (0.87.0): + - React-Fabric/observers/events (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -602,11 +783,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/intersection (0.87.0): + - React-Fabric/observers/intersection (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -622,38 +802,16 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/mutation (0.87.0): + - React-Fabric/scheduler (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - - React-Core - - React-Core-prebuilt - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/scheduler (0.87.0): - - hermes-engine - - RCTRequired - - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric/animationbackend - React-Fabric/observers/events - - React-Fabric/viewtransition - React-featureflags - React-graphics - React-jsi @@ -667,11 +825,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/telemetry (0.87.0): + - React-Fabric/telemetry (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -687,16 +844,15 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/uimanager (0.87.0): + - React-Fabric/uimanager (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.87.0) + - React-Fabric/uimanager/consistency (= 0.85.0) - React-featureflags - React-graphics - React-jsi @@ -709,11 +865,10 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/uimanager/consistency (0.87.0): + - React-Fabric/uimanager/consistency (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-cxxreact @@ -730,27 +885,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/viewtransition (0.87.0): - - hermes-engine - - RCTRequired - - RCTTypeSafety - - React-bridging - - React-Core - - React-Core-prebuilt - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-FabricComponents (0.87.0): + - React-FabricComponents (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -759,8 +894,8 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.87.0) - - React-FabricComponents/textlayoutmanager (= 0.87.0) + - React-FabricComponents/components (= 0.85.0) + - React-FabricComponents/textlayoutmanager (= 0.85.0) - React-featureflags - React-graphics - React-jsi @@ -773,7 +908,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components (0.87.0): + - React-FabricComponents/components (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -782,17 +917,17 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.87.0) - - React-FabricComponents/components/iostextinput (= 0.87.0) - - React-FabricComponents/components/modal (= 0.87.0) - - React-FabricComponents/components/rncore (= 0.87.0) - - React-FabricComponents/components/safeareaview (= 0.87.0) - - React-FabricComponents/components/scrollview (= 0.87.0) - - React-FabricComponents/components/switch (= 0.87.0) - - React-FabricComponents/components/text (= 0.87.0) - - React-FabricComponents/components/textinput (= 0.87.0) - - React-FabricComponents/components/unimplementedview (= 0.87.0) - - React-FabricComponents/components/virtualview (= 0.87.0) + - React-FabricComponents/components/inputaccessory (= 0.85.0) + - React-FabricComponents/components/iostextinput (= 0.85.0) + - React-FabricComponents/components/modal (= 0.85.0) + - React-FabricComponents/components/rncore (= 0.85.0) + - React-FabricComponents/components/safeareaview (= 0.85.0) + - React-FabricComponents/components/scrollview (= 0.85.0) + - React-FabricComponents/components/switch (= 0.85.0) + - React-FabricComponents/components/text (= 0.85.0) + - React-FabricComponents/components/textinput (= 0.85.0) + - React-FabricComponents/components/unimplementedview (= 0.85.0) + - React-FabricComponents/components/virtualview (= 0.85.0) - React-featureflags - React-graphics - React-jsi @@ -805,7 +940,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/inputaccessory (0.87.0): + - React-FabricComponents/components/inputaccessory (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -826,7 +961,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/iostextinput (0.87.0): + - React-FabricComponents/components/iostextinput (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -847,7 +982,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/modal (0.87.0): + - React-FabricComponents/components/modal (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -868,7 +1003,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/rncore (0.87.0): + - React-FabricComponents/components/rncore (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -889,7 +1024,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/safeareaview (0.87.0): + - React-FabricComponents/components/safeareaview (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -910,7 +1045,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/scrollview (0.87.0): + - React-FabricComponents/components/scrollview (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -931,7 +1066,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/switch (0.87.0): + - React-FabricComponents/components/switch (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -952,7 +1087,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/text (0.87.0): + - React-FabricComponents/components/text (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -973,7 +1108,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/textinput (0.87.0): + - React-FabricComponents/components/textinput (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -994,7 +1129,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/unimplementedview (0.87.0): + - React-FabricComponents/components/unimplementedview (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1015,7 +1150,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/virtualview (0.87.0): + - React-FabricComponents/components/virtualview (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1036,7 +1171,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/textlayoutmanager (0.87.0): + - React-FabricComponents/textlayoutmanager (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1057,27 +1192,27 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricImage (0.87.0): + - React-FabricImage (0.85.0): - hermes-engine - - RCTRequired (= 0.87.0) - - RCTTypeSafety (= 0.87.0) + - RCTRequired (= 0.85.0) + - RCTTypeSafety (= 0.85.0) - React-Core-prebuilt - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.87.0) + - React-jsiexecutor (= 0.85.0) - React-logger - React-rendererdebug - React-utils - ReactCommon - ReactNativeDependencies - Yoga - - React-featureflags (0.87.0): + - React-featureflags (0.85.0): - React-Core-prebuilt - ReactNativeDependencies - - React-featureflagsnativemodule (0.87.0): + - React-featureflagsnativemodule (0.85.0): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1086,32 +1221,30 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-graphics (0.87.0): + - React-graphics (0.85.0): - hermes-engine - React-Core-prebuilt - React-featureflags - React-jsi - React-jsiexecutor - - React-rendererdebug - React-utils - ReactNativeDependencies - - React-hermes (0.87.0): + - React-hermes (0.85.0): - hermes-engine - React-Core-prebuilt - - React-cxxreact (= 0.87.0) + - React-cxxreact (= 0.85.0) - React-jsi - - React-jsiexecutor (= 0.87.0) + - React-jsiexecutor (= 0.85.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-oscompat - - React-perflogger (= 0.87.0) + - React-perflogger (= 0.85.0) - React-runtimeexecutor - ReactNativeDependencies - - React-idlecallbacksnativemodule (0.87.0): + - React-idlecallbacksnativemodule (0.85.0): - hermes-engine - - React-bridging - React-Core-prebuilt - React-jsi - React-jsiexecutor @@ -1120,7 +1253,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-ImageManager (0.87.0): + - React-ImageManager (0.85.0): - React-Core-prebuilt - React-Core/Default - React-debug @@ -1129,9 +1262,8 @@ PODS: - React-rendererdebug - React-utils - ReactNativeDependencies - - React-intersectionobservernativemodule (0.87.0): + - React-intersectionobservernativemodule (0.85.0): - hermes-engine - - React-bridging - React-Core-prebuilt - React-cxxreact - React-Fabric @@ -1145,19 +1277,20 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-jserrorhandler (0.87.0): + - React-jserrorhandler (0.85.0): - hermes-engine - - React-bridging - React-Core-prebuilt + - React-cxxreact - React-debug - React-featureflags - React-jsi + - ReactCommon/turbomodule/bridging - ReactNativeDependencies - - React-jsi (0.87.0): + - React-jsi (0.85.0): - hermes-engine - React-Core-prebuilt - ReactNativeDependencies - - React-jsiexecutor (0.87.0): + - React-jsiexecutor (0.85.0): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1172,7 +1305,7 @@ PODS: - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsinspector (0.87.0): + - React-jsinspector (0.85.0): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1181,76 +1314,58 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.87.0) + - React-perflogger (= 0.85.0) - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsinspectorcdp (0.87.0): + - React-jsinspectorcdp (0.85.0): - React-Core-prebuilt - ReactNativeDependencies - - React-jsinspectornetwork (0.87.0): + - React-jsinspectornetwork (0.85.0): - React-Core-prebuilt - React-jsinspectorcdp - ReactNativeDependencies - - React-jsinspectortracing (0.87.0): + - React-jsinspectortracing (0.85.0): - hermes-engine - React-Core-prebuilt - React-jsi - React-jsinspectornetwork - React-oscompat - React-timing - - React-utils - ReactNativeDependencies - - React-jsitooling (0.87.0): + - React-jsitooling (0.85.0): - hermes-engine - React-Core-prebuilt - - React-cxxreact (= 0.87.0) + - React-cxxreact (= 0.85.0) - React-debug - - React-jsi (= 0.87.0) + - React-jsi (= 0.85.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsitracing (0.87.0): + - React-jsitracing (0.85.0): - React-jsi - - React-logger (0.87.0): + - React-logger (0.85.0): - React-Core-prebuilt - ReactNativeDependencies - - React-Mapbuffer (0.87.0): + - React-Mapbuffer (0.85.0): - React-Core-prebuilt - React-debug - ReactNativeDependencies - - React-microtasksnativemodule (0.87.0): - - hermes-engine - - React-Core-prebuilt - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-mutationobservernativemodule (0.87.0): + - React-microtasksnativemodule (0.85.0): - hermes-engine - - React-bridging - React-Core-prebuilt - - React-cxxreact - - React-Fabric - - React-Fabric/bridging - - React-Fabric/observers/mutation - - React-featureflags - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - - React-runtimeexecutor - ReactCommon/turbomodule/core - ReactNativeDependencies - - Yoga - react-native-image-picker (8.2.1): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1265,12 +1380,12 @@ PODS: - React-rendererdebug - React-utils - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-NativeModulesApple (0.87.0): + - React-NativeModulesApple (0.85.0): - hermes-engine - - React-bridging - React-callinvoker - React-Core - React-Core-prebuilt @@ -1281,20 +1396,21 @@ PODS: - React-jsinspector - React-jsinspectorcdp - React-runtimeexecutor + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-networking (0.87.0): + - React-networking (0.85.0): - React-Core-prebuilt - React-jsinspectornetwork - React-jsinspectortracing - React-performancetimeline - React-timing - ReactNativeDependencies - - React-oscompat (0.87.0) - - React-perflogger (0.87.0): + - React-oscompat (0.85.0) + - React-perflogger (0.85.0): - React-Core-prebuilt - ReactNativeDependencies - - React-performancecdpmetrics (0.87.0): + - React-performancecdpmetrics (0.85.0): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1302,7 +1418,7 @@ PODS: - React-runtimeexecutor - React-timing - ReactNativeDependencies - - React-performancetimeline (0.87.0): + - React-performancetimeline (0.85.0): - React-Core-prebuilt - React-featureflags - React-jsinspector @@ -1310,18 +1426,9 @@ PODS: - React-perflogger - React-timing - ReactNativeDependencies - - React-RCTActionSheet (0.87.0): - - React-Core/RCTActionSheetHeaders (= 0.87.0) - - React-RCTAnimatedModuleProvider (0.87.0): - - hermes-engine - - React-Core - - React-Core-prebuilt - - React-Fabric/animated - - React-featureflags - - ReactCommon - - ReactNativeDependencies - - Yoga - - React-RCTAnimation (0.87.0): + - React-RCTActionSheet (0.85.0): + - React-Core/RCTActionSheetHeaders (= 0.85.0) + - React-RCTAnimation (0.85.0): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTAnimationHeaders @@ -1332,7 +1439,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTAppDelegate (0.87.0): + - React-RCTAppDelegate (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1347,7 +1454,6 @@ PODS: - React-hermes - React-jsitooling - React-NativeModulesApple - - React-RCTAnimatedModuleProvider - React-RCTFabric - React-RCTFBReactNativeSpec - React-RCTImage @@ -1361,7 +1467,7 @@ PODS: - React-utils - ReactCommon - ReactNativeDependencies - - React-RCTBlob (0.87.0): + - React-RCTBlob (0.85.0): - hermes-engine - React-Core-prebuilt - React-Core/RCTBlobHeaders @@ -1374,25 +1480,52 @@ PODS: - React-RCTNetwork - ReactCommon - ReactNativeDependencies - - React-RCTFabric (0.87.0): + - React-RCTFabric (0.85.0): + - hermes-engine + - RCTSwiftUIWrapper + - React-Core - React-Core-prebuilt - - React-RCTFBReactNativeSpec (0.87.0): + - 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.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.87.0) + - React-RCTFBReactNativeSpec/components (= 0.85.0) - ReactCommon - ReactNativeDependencies - - React-RCTFBReactNativeSpec/components (0.87.0): + - React-RCTFBReactNativeSpec/components (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1406,7 +1539,7 @@ PODS: - ReactCommon - ReactNativeDependencies - Yoga - - React-RCTImage (0.87.0): + - React-RCTImage (0.85.0): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTImageHeaders @@ -1416,14 +1549,14 @@ PODS: - React-RCTNetwork - ReactCommon - ReactNativeDependencies - - React-RCTLinking (0.87.0): - - React-Core/RCTLinkingHeaders (= 0.87.0) - - React-jsi (= 0.87.0) + - React-RCTLinking (0.85.0): + - React-Core/RCTLinkingHeaders (= 0.85.0) + - React-jsi (= 0.85.0) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.87.0) - - React-RCTNetwork (0.87.0): + - ReactCommon/turbomodule/core (= 0.85.0) + - React-RCTNetwork (0.85.0): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTNetworkHeaders @@ -1437,9 +1570,23 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTRuntime (0.87.0): + - React-RCTRuntime (0.85.0): + - hermes-engine + - React-Core - React-Core-prebuilt - - React-RCTSettings (0.87.0): + - 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.85.0): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTSettingsHeaders @@ -1448,10 +1595,10 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTText (0.87.0): - - React-Core/RCTTextHeaders (= 0.87.0) + - React-RCTText (0.85.0): + - React-Core/RCTTextHeaders (= 0.85.0) - Yoga - - React-RCTVibration (0.87.0): + - React-RCTVibration (0.85.0): - React-Core-prebuilt - React-Core/RCTVibrationHeaders - React-jsi @@ -1459,15 +1606,15 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-rendererconsistency (0.87.0) - - React-renderercss (0.87.0): + - React-rendererconsistency (0.85.0) + - React-renderercss (0.85.0): - React-debug - React-utils - - React-rendererdebug (0.87.0): + - React-rendererdebug (0.85.0): - React-Core-prebuilt - React-debug - ReactNativeDependencies - - React-RuntimeApple (0.87.0): + - React-RuntimeApple (0.85.0): - hermes-engine - React-callinvoker - React-Core-prebuilt @@ -1490,7 +1637,7 @@ PODS: - React-runtimescheduler - React-utils - ReactNativeDependencies - - React-RuntimeCore (0.87.0): + - React-RuntimeCore (0.85.0): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1506,14 +1653,14 @@ PODS: - React-runtimescheduler - React-utils - ReactNativeDependencies - - React-runtimeexecutor (0.87.0): + - React-runtimeexecutor (0.85.0): - React-Core-prebuilt - React-debug - React-featureflags - - React-jsi (= 0.87.0) + - React-jsi (= 0.85.0) - React-utils - ReactNativeDependencies - - React-RuntimeHermes (0.87.0): + - React-RuntimeHermes (0.85.0): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1528,14 +1675,13 @@ PODS: - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-runtimescheduler (0.87.0): + - React-runtimescheduler (0.85.0): - hermes-engine - React-callinvoker - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags - - React-jserrorhandler - React-jsi - React-jsinspectortracing - React-performancetimeline @@ -1545,30 +1691,17 @@ PODS: - React-timing - React-utils - ReactNativeDependencies - - React-timing (0.87.0): + - React-timing (0.85.0): - React-debug - - React-utils (0.87.0): + - React-utils (0.85.0): - hermes-engine - React-Core-prebuilt - React-debug - - React-jsi (= 0.87.0) + - React-jsi (= 0.85.0) - ReactNativeDependencies - - React-viewtransitionnativemodule (0.87.0): + - React-webperformancenativemodule (0.85.0): - hermes-engine - React-Core-prebuilt - - React-Fabric - - React-Fabric/bridging - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - Yoga - - React-webperformancenativemodule (0.87.0): - - hermes-engine - - React-bridging - - React-Core-prebuilt - React-cxxreact - React-jsi - React-jsiexecutor @@ -1577,13 +1710,12 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/core - ReactNativeDependencies - - ReactAppDependencyProvider (0.87.0): + - ReactAppDependencyProvider (0.85.0): - ReactCodegen - - ReactCodegen (0.87.0): + - ReactCodegen (0.85.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1597,40 +1729,50 @@ PODS: - React-RCTAppDelegate - React-rendererdebug - React-utils + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - ReactCommon (0.87.0): + - ReactCommon (0.85.0): + - React-Core-prebuilt + - ReactCommon/turbomodule (= 0.85.0) + - ReactNativeDependencies + - ReactCommon/turbomodule (0.85.0): + - hermes-engine + - React-callinvoker (= 0.85.0) - React-Core-prebuilt - - ReactCommon/turbomodule (= 0.87.0) + - React-cxxreact (= 0.85.0) + - React-jsi (= 0.85.0) + - React-logger (= 0.85.0) + - React-perflogger (= 0.85.0) + - ReactCommon/turbomodule/bridging (= 0.85.0) + - ReactCommon/turbomodule/core (= 0.85.0) - ReactNativeDependencies - - ReactCommon/turbomodule (0.87.0): + - ReactCommon/turbomodule/bridging (0.85.0): - hermes-engine - - React-callinvoker (= 0.87.0) + - React-callinvoker (= 0.85.0) - React-Core-prebuilt - - React-jsi (= 0.87.0) - - React-logger (= 0.87.0) - - React-perflogger (= 0.87.0) - - ReactCommon/turbomodule/core (= 0.87.0) + - React-cxxreact (= 0.85.0) + - React-jsi (= 0.85.0) + - React-logger (= 0.85.0) + - React-perflogger (= 0.85.0) - ReactNativeDependencies - - ReactCommon/turbomodule/core (0.87.0): + - ReactCommon/turbomodule/core (0.85.0): - hermes-engine - - React-bridging - - React-callinvoker (= 0.87.0) + - React-callinvoker (= 0.85.0) - React-Core-prebuilt - - React-cxxreact (= 0.87.0) - - React-debug (= 0.87.0) - - React-featureflags (= 0.87.0) - - React-jsi (= 0.87.0) - - React-logger (= 0.87.0) - - React-perflogger (= 0.87.0) - - React-utils (= 0.87.0) + - React-cxxreact (= 0.85.0) + - React-debug (= 0.85.0) + - React-featureflags (= 0.85.0) + - React-jsi (= 0.85.0) + - React-logger (= 0.85.0) + - React-perflogger (= 0.85.0) + - React-utils (= 0.85.0) - ReactNativeDependencies - - ReactNativeDependencies (0.87.0) - - ReactNativeEnrichedHtml (1.1.0): + - ReactNativeDependencies (0.85.0) + - ReactNativeEnrichedHtml (1.0.0): - hermes-engine - RCTRequired - RCTTypeSafety - - React-bridging - React-Core - React-Core-prebuilt - React-debug @@ -1645,37 +1787,27 @@ PODS: - React-rendererdebug - React-utils - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - SocketRocket (0.7.1): - - ReactNativeDependencies - - Yoga (0.0.0): - - React-Core-prebuilt + - Yoga (0.0.0) DEPENDENCIES: - - 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`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - RCT-Folly (from `build/rndeps-facades/RCT-Folly`) - - RCTDeprecation (from `build/rncore-facades/RCTDeprecation`) - - RCTRequired (from `build/rncore-facades/RCTRequired`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) - 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 `build/rncore-facades/React-Core`) + - React-Core (from `../node_modules/react-native/`) - React-Core-prebuilt (from `../node_modules/react-native/React-Core-prebuilt.podspec`) - - React-Core/RCTWebSocket (from `build/rncore-facades/React-Core`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - 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`) @@ -1701,7 +1833,6 @@ DEPENDENCIES: - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) - - React-mutationobservernativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver`) - react-native-image-picker (from `../node_modules/react-native-image-picker`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-networking (from `../node_modules/react-native/ReactCommon/react/networking`) @@ -1710,16 +1841,15 @@ 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 `build/rncore-facades/React-RCTFabric`) + - React-RCTFabric (from `../node_modules/react-native/React`) - 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 `build/rncore-facades/React-RCTRuntime`) + - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`) - 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`) @@ -1733,38 +1863,24 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - - React-viewtransitionnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/viewtransition`) - React-webperformancenativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/webperformance`) - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) - 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`) - ReactNativeEnrichedHtml (from `../../..`) - - SocketRocket (from `build/rndeps-facades/SocketRocket`) - - Yoga (from `build/rncore-facades/Yoga`) + - Yoga (from `../node_modules/react-native/ReactCommon/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: build/rncore-facades/FBLazyVector - fmt: - :path: build/rndeps-facades/fmt - glog: - :path: build/rndeps-facades/glog + :path: "../node_modules/react-native/Libraries/FBLazyVector" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v250829098.0.16 - RCT-Folly: - :path: build/rndeps-facades/RCT-Folly + :tag: hermes-v250829098.0.10 RCTDeprecation: - :path: build/rncore-facades/RCTDeprecation + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: build/rncore-facades/RCTRequired + :path: "../node_modules/react-native/Libraries/Required" RCTSwiftUI: :path: "../node_modules/react-native/ReactApple/RCTSwiftUI" RCTSwiftUIWrapper: @@ -1773,20 +1889,16 @@ 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: build/rncore-facades/React-Core + :path: "../node_modules/react-native/" 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: @@ -1837,8 +1949,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon" React-microtasksnativemodule: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" - React-mutationobservernativemodule: - :path: "../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver" react-native-image-picker: :path: "../node_modules/react-native-image-picker" React-NativeModulesApple: @@ -1855,8 +1965,6 @@ 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: @@ -1864,7 +1972,7 @@ EXTERNAL SOURCES: React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" React-RCTFabric: - :path: build/rncore-facades/React-RCTFabric + :path: "../node_modules/react-native/React" React-RCTFBReactNativeSpec: :path: "../node_modules/react-native/React" React-RCTImage: @@ -1874,7 +1982,7 @@ EXTERNAL SOURCES: React-RCTNetwork: :path: "../node_modules/react-native/Libraries/Network" React-RCTRuntime: - :path: build/rncore-facades/React-RCTRuntime + :path: "../node_modules/react-native/React/Runtime" React-RCTSettings: :path: "../node_modules/react-native/Libraries/Settings" React-RCTText: @@ -1901,8 +2009,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" - React-viewtransitionnativemodule: - :path: "../node_modules/react-native/ReactCommon/react/nativemodule/viewtransition" React-webperformancenativemodule: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: @@ -1915,99 +2021,85 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec" ReactNativeEnrichedHtml: :path: "../../.." - SocketRocket: - :path: build/rndeps-facades/SocketRocket Yoga: - :path: build/rncore-facades/Yoga + :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 2a9d6e1d9873337543f08d9dbc007b288f4e113b - DoubleConversion: e85e4faac763226bfd1cc4c6a98d8355149b27a5 - fast_float: 908e5ee35999f3d91af4b962ac951acac591866c - FBLazyVector: ef7f5a8a8d3c7b3fb0b7c6f2bb810938c5fda9ea - fmt: c7776a2a4b1d7ce88b809a1e4d1f7add0f2369df - glog: b4427c3119645da795ff09985ba9da909c940c96 - hermes-engine: 6a26e94b4a974cbadc751eed9caa12624c38f226 - RCT-Folly: d173e541eeb78cad5c81011c1bbf62d5b86b9778 - RCTDeprecation: e12a993f8b27b25e9ed3617181ca87c20e6ab7ac - RCTRequired: 3ba259676adfd0c6371e474db758470fdf97f06d - RCTSwiftUI: ac8537fe21f096259c91bd663655ff52ec864cb0 - RCTSwiftUIWrapper: 0cebbc6ccb093236749715885d7655b761c03375 - RCTTypeSafety: 80eac4783ed394cdffb5981d2c99b73a1bc519ca - React: 41924a5bad9466fe869b4511650b7d6e0cf02c84 - React-bridging: dd8fc4c80bdd98b136d910c2be3ba1dffd92c64d - React-callinvoker: 2703817f9ad45a19f839421aa77a3504b2a76f0d - React-Core: 7a5e9cd7d14b4149c817b6e522206477b7fa63a2 - React-Core-prebuilt: d7a5fd7d35b1b39a271286ef44a294bc4228093f - React-CoreModules: 846a3cc0bfe0e5c930da571dd7c2cb1cb0033012 - React-cxxreact: ca6ef2aa2d29f0905be8a0109f649c42fd12768a - React-cxxstableapi: 06f491a41595d7e71e9a1783781913e0b2291d57 - React-debug: f156620f41c3947a9a80a0f0cd98321270613be6 - React-defaultsnativemodule: 5598669ad6378f69bd03a6934b670bc1cf6e1a6c - React-domnativemodule: 6b397db980b9b5eff642d595a96a1fc288aece3f - React-Fabric: eeefa4e3a110884f143e806f5f9fc224229f68fe - React-FabricComponents: 577eea7fa4946dd4c601d748fef8f645e2ec3205 - React-FabricImage: 94e38ba0b9bbe2cbcc193e2c9510bdddd077c671 - React-featureflags: 58e83ba96a419d951be0d4b21a6ae68f781878dd - React-featureflagsnativemodule: 747a3d8ab183715d1970d41ce0e0b8e6efde587b - React-graphics: 5aaae731d271336ba0987df85959a6c18e99cf18 - React-hermes: 5e11668d40cd4018b12b9e5fdb70734b397d5d36 - React-idlecallbacksnativemodule: bc04973c5f25c950b3cc6762b852d9aa71db0d7d - React-ImageManager: 0902cf80dec9b0718f132be4282b4e8c54261ea2 - React-intersectionobservernativemodule: 87d6836718008cc488276bc0c451b5704c299bc3 - React-jserrorhandler: 73e465fdd1048d7875bb1aa5ef7c3fe705223a92 - React-jsi: d6357d2b0c432e11d27c56f7c669b1e25ef6679a - React-jsiexecutor: 0c17d498f1bcb9918624bbc6e2a42e69811072ce - React-jsinspector: 1ef75331bf942924d5815048c36c54f61ea806da - React-jsinspectorcdp: 1b6e01e04288f536ee213c51a7a3308bef7a666b - React-jsinspectornetwork: 2939ee17ed68c2f6ba7d7dfcc5a087e31ffe0e59 - React-jsinspectortracing: c0e466edbea32a90cb9cd9d434a4e086f346be11 - React-jsitooling: 6739a8a977ea8c3fecd66f21af12a3a78deaba97 - React-jsitracing: ca7afeb7e4b87996719b404b7caa0ea2e6327109 - React-logger: 5634bd3a58fcebc0e017c50cf276e6a658e173bf - React-Mapbuffer: 4b91498f164010499357104ef12cb3161ddbec9e - React-microtasksnativemodule: e0095be041c79483d1d3fded0c682c31d351730f - React-mutationobservernativemodule: edfe5f0e9548231a767c3a1db6fc52926da0002a - react-native-image-picker: 15b0d236cdc3b5f1f22574616d6ec97333cb9d37 - React-NativeModulesApple: 9f0679a0f98eecd53150ebb6cba645f73a92434a - React-networking: cabb0d227644bddc24f5e7dba0f5c4a8ea9b8723 - React-oscompat: 72573ceb65b6c6c6bc34e51e0df8f44c91081a6d - React-perflogger: aacf75afce65b4ca90210f6dbab01963d1428cbf - React-performancecdpmetrics: 9458fc11e71499082b9f1e8635ae3cd3e8083ed5 - React-performancetimeline: ad513cd5ba092d5539641cf820790a53910627d5 - React-RCTActionSheet: a88d0f7eb5738ec418a2ff1984439a6924662b2c - React-RCTAnimatedModuleProvider: af5d33fd0cbbf1884b9369b62b90659156aa822f - React-RCTAnimation: 7b945912cabc7c53266322de0282e8788cee39b7 - React-RCTAppDelegate: 3567f3c6cf9c44a9fef5f2c61a4d2992cdb7b396 - React-RCTBlob: 74e5441e8b6d55b3c6b1fd891b46502bd0965376 - React-RCTFabric: d33d814d491ae85179fd91166224e6fa4e1d5fdb - React-RCTFBReactNativeSpec: 2b9967057eb81d324deee2b1e1079d195d6ae17a - React-RCTImage: 9f691b97ee53b2391721c6e300c277336296ae52 - React-RCTLinking: 7727049c4cd98ad115bbd7e3731de72bee9b83a0 - React-RCTNetwork: 6e90725d37a017b3337e1f8734f97c02d504deb3 - React-RCTRuntime: 22e387c218ff58ed0a5e4a28959e3b53ff50012d - React-RCTSettings: 373be2bbc026043135004c57aea276e6399d6c20 - React-RCTText: 386a5390130df3970e7de10e54b05002f70ac85a - React-RCTVibration: 97d1083b724e20c48d0ffd8729d18058e5bc5e13 - React-rendererconsistency: 98dbc9df61c67bfca2d95626f11aa9520b930be5 - React-renderercss: 369a9d7d75f77c98cf078baf70018fe49bd70b27 - React-rendererdebug: 8879d9bbd067507cac51849fe2174466e3abad2a - React-RuntimeApple: a76defddd4f00e2dadf353922358101ea0461b85 - React-RuntimeCore: 7fe8468e2b7004f3089cb07340e12f790de90ef1 - React-runtimeexecutor: 151f8320f1193418aa6e80e441fdd74878fe39da - React-RuntimeHermes: 3dd08c248378354b652f007950cc318a4a329775 - React-runtimescheduler: 84e2dd7afa39cf20de9de7abec63629ddfc1828f - React-timing: b4188ec6e1329cd0d9d808a916fcfac069172ea7 - React-utils: 5f70b1679c349e42a7d0b91007351cda2569b353 - React-viewtransitionnativemodule: 216e3d392406e58c3e0ae9f3a9afe72c23720b5f - React-webperformancenativemodule: 4577ed49e8b74da3d5cce379de6cf1c65a67212a - ReactAppDependencyProvider: 564644d20b4598060a0d24a9dfc029b5673b32f3 - ReactCodegen: b54c2a8d91c25df024024b078e9fd3cdf93ce8cf - ReactCommon: 31d05b76329c8b3c9ef37fff8212f830925a2535 - ReactNativeDependencies: ec5530432d8191b38e278117d498aaff05ea9d6f - ReactNativeEnrichedHtml: 862adfa2876f765869e6d27630d21f6e6e04bf25 - SocketRocket: d57b1af80c029e12a75cd9b218287c67381e4593 - Yoga: 58b502c52b14ad3c4468805d461fc37d275c2a42 + FBLazyVector: c00c20551d40126351a6783c47ce75f5b374851b + hermes-engine: b4dad6ba67535bb03c8ff1006b337cba14db16cb + RCTDeprecation: 3bb167081b134461cfeb875ff7ae1945f8635257 + RCTRequired: 74839f55d5058a133a0bc4569b0afec750957f64 + RCTSwiftUI: 87a316382f3eab4dd13d2a0d0fd2adcce917361a + RCTSwiftUIWrapper: f52a72cff5af363841dc0c5ab368e6a60fdbfe43 + RCTTypeSafety: abdf2eaed5501a52f2000de668ccfc60b78c3b27 + React: 1b1536b9099195944034e65b1830f463caaa8390 + React-callinvoker: 6dff6d17d1d6cc8fdf85468a649bafed473c65f5 + React-Core: 39ee05b5798296f433dd3c3624c57a187c1510e3 + React-Core-prebuilt: 69556f895326f23c007f3a6869340045d7dca106 + React-CoreModules: e78bfd2617075bc0e50c689df4a29232bd72ad82 + React-cxxreact: 3fe21801d46097cf74c3dff6953677bebc4a3c2a + React-debug: e1f00fcd2cef58a2897471a6d76a4ef5f5f90c74 + React-defaultsnativemodule: 5130fb68b18261e3a7b16be2aaad810a885482fa + React-domnativemodule: ace47c9e9cdfed14cd1528dc49055c4b8eb023ef + React-Fabric: 929105fe12a5e16caa85ed144e7459befbdca629 + React-FabricComponents: 0e725ecd0a3b8f6f9f5652ea67561f14c6d4a49d + React-FabricImage: 38540f65535f0b30db73c5a8428bedbf708aa9ff + React-featureflags: 686d8b86533b3eca4706f8971d570f43cb19d983 + React-featureflagsnativemodule: 13ef8a5b6afa786d8e549adbc2c2bef260b0940c + React-graphics: 610ea28df228b07251790b23f79a7640c9193863 + React-hermes: 698513cdf13fedc70cd090e7cff4c44377b06d5a + React-idlecallbacksnativemodule: 92c38ae1e875b1bbfb1f9f5f308684745c6755dd + React-ImageManager: a28b94e7955a094a5da76d230566fb8cb57cf5af + React-intersectionobservernativemodule: 4cb52f5d07042fa7091959ed9b77e40c93a8d75d + React-jserrorhandler: 32bfc5c0582e59e1e83574d10f6202d848abea84 + React-jsi: 2231f12e4f3bfc07be14a903114a283ce868a2a1 + React-jsiexecutor: 80729ccdaa7a35ec3be8a3b24f520d9fa59bf4f1 + React-jsinspector: 291f50cc39ff26bd7a8aadc50628abadfa941465 + React-jsinspectorcdp: 206459facbda4ede119c96acc53fb9c3b46faa50 + React-jsinspectornetwork: 2b8ccfe3ae0dd6399088e3db8466260ba559eda5 + React-jsinspectortracing: 3fdd57f8ed44653716fa168203ed66bf8112623b + React-jsitooling: bd5f50c0ef7182a4817820a0e699ee214e1dc903 + React-jsitracing: 1ba49400a0c7fa1d1826b1909fcc7b3a76d46eb7 + React-logger: 832b3fa3d0abbe447bcc3efeb028254b6ffcd803 + React-Mapbuffer: 8a4fda42c36c9a286abc297f65eb6c949650d97d + React-microtasksnativemodule: fefb6931840ba0949954e07d67caa503c7e0879d + react-native-image-picker: 2146157d5d37a34c2063d1d2ed01081b56d0b87b + React-NativeModulesApple: 203fb2f050c7949cb500df1ac8bf7c09e8030fca + React-networking: 368beb4a9537676c58fa72e7816cd969503fce69 + React-oscompat: 5361d0fa7905ba1c3b3c5e7c464d6be9d2d85f4b + React-perflogger: 16e8ea1ed29d94058d433e5ec51920ac46dfb4c9 + React-performancecdpmetrics: 299586dec0dedb1389bba85a7a1c852cd828c7c1 + React-performancetimeline: 82f52fa1d42e5cd3d1b250f373ea14687d31124b + React-RCTActionSheet: e3d1db66ef805645e83e6e80f2e21922328a79a7 + React-RCTAnimation: 27271ba57c17d39fe3a0b9539423e83ceb9d52a5 + React-RCTAppDelegate: c795c6831d5e13f1cefb4e728cc2b9534d83d82a + React-RCTBlob: fc01d55dc957f4cb08dd0fbdd079bbba32e3572c + React-RCTFabric: f93b12e3b46a8859390150320de33c5499609dba + React-RCTFBReactNativeSpec: 36c19394e3f79e7ccb2b6ef2cc52c32690f92f9c + React-RCTImage: 85dd8830ab80d33521399cc986cc3d442c3c2648 + React-RCTLinking: f42dc0476fe5f7b651e02c15b1f198f4ab56b3e3 + React-RCTNetwork: 930b50c392f9ae4faece7ae7614f7ca55f10090b + React-RCTRuntime: d6d3d2b6990c5f86f49e216361470e3495d5b961 + React-RCTSettings: 6ee227753225c997ea95130e3fdf55d969d38178 + React-RCTText: 2d00740fd3fe0ff6edc7e48fe4612bfbea18e01d + React-RCTVibration: 8254ff85ae70d910bb4a5e7613829450d81c362b + React-rendererconsistency: dd05e33df654b44cc5cdf99532b229d60d469b09 + React-renderercss: 46efb8e5c1dd2a835767e306a11b55249b44d39a + React-rendererdebug: ebbcf85a388f0cc84b4c9fc88a93f9d7d94f43dc + React-RuntimeApple: 600a30d1f05d83a5f5a88237cb7c5287278d122c + React-RuntimeCore: cc2948631d3664956554820a9bdb3c80e624efee + React-runtimeexecutor: bc4b4a4a9e032282f834cf4f67d4f1206e8114e8 + React-RuntimeHermes: b97bf966c465bc6b524c4b1ea40119b1e6c58ea6 + React-runtimescheduler: b6e08fc88bb41bc75ae7575a58cb6323b737b2ad + React-timing: f02cf171d6b937776c9734e58d0017308e9ed82b + React-utils: 317b0f4ef4110a0a8b424afed554e4b81a605269 + React-webperformancenativemodule: 10962122c2ef0b53a4a4422f5d78054dc38434bc + ReactAppDependencyProvider: 706b65371b90b5cc797b6639e8979f2e5cecd6da + ReactCodegen: ab01ebfffac5cda9140204eb872ed97c15df225f + ReactCommon: 47ef95b0920948a0b54d7439f7452501eeeac071 + ReactNativeDependencies: 8a208df374583424130645685d86306befc275cf + ReactNativeEnrichedHtml: e657ce585089ac404c3cc7d3b03ccecef6f8e723 + Yoga: e83c3121d079541e69f3c5c623faaaf933fb5812 PODFILE CHECKSUM: 88c10840d02e9884b2dc3f457d5120f83ac3803b diff --git a/apps/example/src/components/ToolbarButton.tsx b/apps/example/src/components/ToolbarButton.tsx index 2acdc84f6..074cbf951 100644 --- a/apps/example/src/components/ToolbarButton.tsx +++ b/apps/example/src/components/ToolbarButton.tsx @@ -29,8 +29,7 @@ interface ToolbarButtonTextProps { } export type ToolbarButtonProps = - | ToolbarButtonIconProps - | ToolbarButtonTextProps; + ToolbarButtonIconProps | ToolbarButtonTextProps; export const ToolbarButton: FC = ({ icon, diff --git a/docs/MACOS.md b/docs/MACOS.md new file mode 100644 index 000000000..7f5ae1a49 --- /dev/null +++ b/docs/MACOS.md @@ -0,0 +1,71 @@ +# macOS Support (Experimental) + +macOS support is provided through [react-native-macos](https://github.com/microsoft/react-native-macos) and is still experimental. APIs and behavior can change in future releases without a major version bump. + +## Requirements + +- `react-native-macos` `0.81.x` paired with `react-native` `0.81.x` (react-native-macos releases track React Native minor versions; `0.81` is the newest supported line). +- macOS 14.0 or newer (deployment target). +- The React Native New Architecture (Fabric) is **mandatory**. The library is Fabric-only and Fabric is opt-in on react-native-macos, so your `macos/Podfile` must set: + +```ruby +ENV['RCT_NEW_ARCH_ENABLED'] = '1' +``` + +No extra installation steps are needed beyond the regular native setup: the library's podspec declares an `osx` platform, autolinking picks it up, and the same codegen artifacts used on iOS are compiled for macOS. + +```sh +cd macos && bundle install && bundle exec pod install +``` + +## Enriched Text Input + +### What works + +- Typing, selection and all editing flows of the shared engine (zero-width space handling, paragraph merging, text shortcuts) +- Inline marks: bold, italic, underline, strikethrough, inline code +- Headings (h1-h6) +- Blockquote, code block +- Ordered lists, unordered lists, checkbox lists (including toggling a checkbox by clicking it) +- Inline images and animated GIFs (via `setImage` and `onPasteImages`) +- Manual links (`setLink` / `removeLink`) and automatic link detection (`linkRegex`) +- Mentions: `mentionIndicators`, `startMention`, `setMention` and all mention events +- `getHTML`, `setValue`, `setSelection`, `setTextAlignment`, `focus`, `blur` +- All change events: `onChangeText`, `onChangeHtml`, `onChangeState`, `onChangeSelection`, `onKeyPress`, `onFocus`, `onBlur` +- Copy / cut / paste with the same pipeline as iOS: HTML, RTF and plain text formats, pasted images (including image files copied from Finder) via `onPasteImages` +- `submitBehavior` and `onSubmitEditing` (Enter; Shift-Enter and Option-Enter flow through the same newline pipeline) +- Custom context menu items via `contextMenuItems` (added to the right-click menu) +- Input theming: `placeholder`, `placeholderTextColor`, `selectionColor` (drives both insertion point and selection highlight), `cursorColor` +- `editable`, `scrollEnabled`, `autoFocus`, `defaultValue`, `useHtmlNormalizer`, `textShortcuts` + +### Unsupported / platform differences + +- **`returnKeyType`**: ignored — macOS has no software keyboard. +- **`autoCapitalize`**: ignored — macOS has no software keyboard. +- **`allowFontScaling`**: has no effect — macOS has no Dynamic Type; fonts always render at their configured sizes. +- **`androidExperimentalSynchronousEvents`**: Android-only. + +## Enriched Text + +### What works + +- Rendering of all supported tags with the same drawing pipeline as iOS (blockquote bars, code block backgrounds, list bullets/decimals/checkboxes, inline images and GIFs) +- `onLinkPress` and `onMentionPress` (mouse clicks) with press feedback styling +- `selectable`, `selectionColor`, `numberOfLines`, `ellipsizeMode`, `useHtmlNormalizer` +- Copying selected text (HTML, RTF and plain text formats) + +### Unsupported / platform differences + +- **`allowFontScaling`**: has no effect — macOS has no Dynamic Type. + +## Running the example app + +The repository contains a dedicated macOS example app in `apps/example-macos` (the main example runs a newer React Native version than react-native-macos supports). + +```sh +yarn install +cd apps/example-macos/macos && bundle install && bundle exec pod install && cd .. +yarn macos +``` + +You can also open the workspace in Xcode with `yarn xcode:macos` from the repository root. diff --git a/ios/EnrichedTextInputView.h b/ios/EnrichedTextInputView.h index 963562683..967f68403 100644 --- a/ios/EnrichedTextInputView.h +++ b/ios/EnrichedTextInputView.h @@ -7,8 +7,8 @@ #import "interfaces/EnrichedViewHost.h" #import "interfaces/LinkData.h" #import "interfaces/MediaAttachment.h" +#import "platform/EnrichedPlatform.h" #import -#import #ifndef EnrichedTextInputViewNativeComponent_h #define EnrichedTextInputViewNativeComponent_h @@ -48,6 +48,9 @@ NS_ASSUME_NONNULL_BEGIN - (void)emitOnPasteImagesEvent:(NSArray *)images; - (void)anyTextMayHaveBeenModified; - (void)scheduleRelayoutIfNeeded; +- (void)handleDidBeginEditing; +- (void)handleDidEndEditing; +- (void)handleCheckboxTapAtIndex:(NSUInteger)charIndex; @end diff --git a/ios/EnrichedTextInputView.mm b/ios/EnrichedTextInputView.mm index c44d4d9dd..7559a2e3d 100644 --- a/ios/EnrichedTextInputView.mm +++ b/ios/EnrichedTextInputView.mm @@ -35,11 +35,19 @@ using namespace facebook::react; +#if !TARGET_OS_OSX @interface EnrichedTextInputView () < RCTEnrichedTextInputViewViewProtocol, UITextViewDelegate, UIGestureRecognizerDelegate, NSTextStorageDelegate, NSObject> @end +#else +@interface EnrichedTextInputView () + +@end +#endif @implementation EnrichedTextInputView { EnrichedTextInputViewShadowNode::ConcreteState::Shared _state; @@ -62,6 +70,9 @@ @implementation EnrichedTextInputView { NSString *_submitBehavior; NSDictionary *_capturedAttributesBeforeChange; NSString *_recentlyEmittedAlignment; +#if TARGET_OS_OSX + NSScrollView *_scrollView; +#endif } @synthesize blockEmitting = blockEmitting; @@ -83,7 +94,7 @@ + (BOOL)shouldBeRecycled { // MARK: - EnrichedViewHost protocol -- (UITextView *)textView { +- (EnrichedBaseTextView *)textView { return textView; } @@ -121,7 +132,11 @@ - (instancetype)initWithFrame:(CGRect)frame { [self setDefaults]; [self setupTextView]; [self setupPlaceholderLabel]; +#if !TARGET_OS_OSX self.contentView = textView; +#else + self.contentView = _scrollView; +#endif } return self; } @@ -155,6 +170,7 @@ - (void)setDefaults { } - (void)setupTextView { +#if !TARGET_OS_OSX textView = [[EnrichedInputTextView alloc] init]; textView.backgroundColor = UIColor.clearColor; textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0); @@ -168,10 +184,62 @@ - (void)setupTextView { [textView addGestureRecognizer:[[TextBlockTapGestureRecognizer alloc] initWithInput:self action:@selector(onTextBlockTap:)]]; +#else + // Build an explicit TextKit 1 stack: a plain NSTextView init on macOS 13+ + // creates a TextKit 2 view whose .layoutManager access triggers a lossy + // fallback mid-flight. + NSTextStorage *textStorage = [[NSTextStorage alloc] init]; + NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; + [textStorage addLayoutManager:layoutManager]; + NSTextContainer *textContainer = + [[NSTextContainer alloc] initWithSize:NSMakeSize(0, FLT_MAX)]; + textContainer.widthTracksTextView = YES; + [layoutManager addTextContainer:textContainer]; + + textView = [[EnrichedInputTextView alloc] initWithFrame:CGRectZero + textContainer:textContainer]; + textView.drawsBackground = NO; + textView.textContainerInset = NSMakeSize(0, 0); + textView.textContainer.lineFragmentPadding = 0; + textView.delegate = self; + textView.input = self; + textView.layoutManager.input = self; + textView.textStorage.delegate = self; + + textView.richText = YES; + textView.allowsUndo = YES; + textView.automaticQuoteSubstitutionEnabled = NO; + textView.automaticDashSubstitutionEnabled = NO; + textView.verticallyResizable = YES; + textView.horizontallyResizable = NO; + textView.autoresizingMask = NSViewWidthSizable; + textView.minSize = NSMakeSize(0, 0); + textView.maxSize = NSMakeSize(FLT_MAX, FLT_MAX); + + _scrollView = [[NSScrollView alloc] initWithFrame:CGRectZero]; + _scrollView.drawsBackground = NO; + _scrollView.hasHorizontalScroller = NO; + _scrollView.documentView = textView; +#endif } - (void)setupPlaceholderLabel { +#if !TARGET_OS_OSX _placeholderLabel = [[UILabel alloc] initWithFrame:CGRectZero]; +#else + // EnrichedPlaceholderLabel is transparent to clicks; a plain NSTextField + // would cover the text view and swallow every mouseDown, making the input + // impossible to focus with the mouse. + _placeholderLabel = + [[EnrichedPlaceholderLabel alloc] initWithFrame:CGRectZero]; +#endif +#if TARGET_OS_OSX + _placeholderLabel.bezeled = NO; + _placeholderLabel.drawsBackground = NO; + _placeholderLabel.editable = NO; + _placeholderLabel.selectable = NO; + _placeholderLabel.refusesFirstResponder = YES; +#endif _placeholderLabel.translatesAutoresizingMaskIntoConstraints = NO; [textView addSubview:_placeholderLabel]; [NSLayoutConstraint activateConstraints:@[ @@ -186,7 +254,9 @@ - (void)setupPlaceholderLabel { _placeholderLabel.lineBreakMode = NSLineBreakByTruncatingTail; _placeholderLabel.text = @""; _placeholderLabel.hidden = YES; +#if !TARGET_OS_OSX _placeholderLabel.adjustsFontForContentSizeCategory = YES; +#endif } // MARK: - Props @@ -676,7 +746,7 @@ - (void)updateProps:(Props::Shared const &)props blockEmitting = NO; textView.typingAttributes = defaultTypingAttributes; - textView.selectedRange = prevSelectedRange; + [textView enrichedSetSelectedRange:prevSelectedRange]; // make sure the newest lineHeight is applied [self refreshLineHeight]; @@ -744,7 +814,9 @@ - (void)updateProps:(Props::Shared const &)props // we've got some seemingly proper html [parser replaceWholeFromHtml:initiallyProcessedHtml]; } - textView.selectedRange = NSRange(textView.textStorage.string.length, 0); + [textView + enrichedSetSelectedRange:NSRange(textView.textStorage.string.length, + 0)]; } // placeholderTextColor @@ -787,25 +859,37 @@ - (void)updateProps:(Props::Shared const &)props // selection color sets both selection and cursor on iOS (just as in RN) if (newViewProps.selectionColor != oldViewProps.selectionColor) { +#if !TARGET_OS_OSX if (isColorMeaningful(newViewProps.selectionColor)) { textView.tintColor = RCTUIColorFromSharedColor(newViewProps.selectionColor); } else { textView.tintColor = nullptr; } +#else + if (isColorMeaningful(newViewProps.selectionColor)) { + [textView enrichedSetTintColor:RCTUIColorFromSharedColor( + newViewProps.selectionColor)]; + } +#endif } +#if !TARGET_OS_OSX + // returnKeyType and autoCapitalize configure the software keyboard, which + // does not exist on macOS. if (newViewProps.returnKeyType != oldViewProps.returnKeyType) { NSString *str = [NSString fromCppString:newViewProps.returnKeyType]; textView.returnKeyType = [KeyboardUtils getUIReturnKeyTypeFromReturnKeyType:str]; } +#endif if (newViewProps.submitBehavior != oldViewProps.submitBehavior) { _submitBehavior = [NSString fromCppString:newViewProps.submitBehavior]; } +#if !TARGET_OS_OSX // autoCapitalize if (newViewProps.autoCapitalize != oldViewProps.autoCapitalize) { NSString *str = [NSString fromCppString:newViewProps.autoCapitalize]; @@ -843,6 +927,7 @@ - (void)updateProps:(Props::Shared const &)props ? UITextSpellCheckingTypeYes : UITextSpellCheckingTypeNo; } +#endif // isOnChangeHtmlSet _emitHtml = newViewProps.isOnChangeHtmlSet; @@ -1346,7 +1431,8 @@ - (void)setValue:(NSString *)value { } // set selectedRange and check for changes - textView.selectedRange = NSRange(textView.textStorage.string.length, 0); + [textView + enrichedSetSelectedRange:NSRange(textView.textStorage.string.length, 0)]; [self anyTextMayHaveBeenModified]; } @@ -1356,7 +1442,8 @@ - (void)setCustomSelection:(NSInteger)visibleStart end:(NSInteger)visibleEnd { NSUInteger actualStart = [self getActualIndex:visibleStart text:text]; NSUInteger actualEnd = [self getActualIndex:visibleEnd text:text]; - textView.selectedRange = NSMakeRange(actualStart, actualEnd - actualStart); + [textView enrichedSetSelectedRange:NSMakeRange(actualStart, + actualEnd - actualStart)]; } // Helper: Walks through the string skipping ZWSPs to find the Nth visible @@ -1462,7 +1549,7 @@ - (void)emitOnMentionEvent:(NSString *)indicator text:(NSString *)text { } - (void)tryEmittingOnChangeHtmlEvent { - if (!_emitHtml || textView.markedTextRange != nullptr) { + if (!_emitHtml || textView.enrichedHasMarkedText) { return; } auto emitter = [self getEventEmitter]; @@ -1678,7 +1765,7 @@ - (void)handleWordModificationBasedChanges:(NSString *)word - (void)anyTextMayHaveBeenModified { // we don't do text changes when working with iOS marked text - if (textView.markedTextRange != nullptr) { + if (textView.enrichedHasMarkedText) { [self handlePlaceholderVisibility]; return; } @@ -1810,22 +1897,39 @@ - (void)_performRelayout { // We recall measureSize here because value returned from previous // measureSize may not be up-to date at that point CGSize measuredSize = [self measureSize:self->textView.frame.size.width]; +#if !TARGET_OS_OSX self->textView.contentSize = measuredSize; +#else + // On macOS scrollability is driven by the documentView's frame instead of + // an explicit contentSize. + CGFloat visibleHeight = self->_scrollView.contentSize.height; + [self->textView + setFrameSize:NSMakeSize(self->textView.frame.size.width, + MAX(measuredSize.height, visibleHeight))]; +#endif // Re-position attachment image views after the forced full re-layout [self layoutAttachments]; }); } +#if !TARGET_OS_OSX - (void)didMoveToWindow { [super didMoveToWindow]; // used to run all lifecycle callbacks [self anyTextMayHaveBeenModified]; } +#else +- (void)viewDidMoveToWindow { + [super viewDidMoveToWindow]; + // used to run all lifecycle callbacks + [self anyTextMayHaveBeenModified]; +} +#endif // MARK: - Delegate methods -- (void)textViewDidBeginEditing:(UITextView *)textView { +- (void)handleDidBeginEditing { auto emitter = [self getEventEmitter]; if (emitter != nullptr) { // send onFocus event if allowed @@ -1838,7 +1942,7 @@ - (void)textViewDidBeginEditing:(UITextView *)textView { [self manageSelectionBasedChanges]; } -- (void)textViewDidEndEditing:(UITextView *)textView { +- (void)handleDidEndEditing { auto emitter = [self getEventEmitter]; if (emitter != nullptr && _emitFocusBlur) { // send onBlur event @@ -1846,7 +1950,16 @@ - (void)textViewDidEndEditing:(UITextView *)textView { } } -- (UIMenu *)textView:(UITextView *)tv +#if !TARGET_OS_OSX +- (void)textViewDidBeginEditing:(EnrichedBaseTextView *)textView { + [self handleDidBeginEditing]; +} + +- (void)textViewDidEndEditing:(EnrichedBaseTextView *)textView { + [self handleDidEndEditing]; +} + +- (UIMenu *)textView:(EnrichedBaseTextView *)tv editMenuForTextInRange:(NSRange)range suggestedActions:(NSArray *)suggestedActions API_AVAILABLE(ios(16.0)) { @@ -1872,6 +1985,37 @@ - (UIMenu *)textView:(UITextView *)tv [customActions addObjectsFromArray:suggestedActions]; return [UIMenu menuWithChildren:customActions]; } +#else +- (NSMenu *)textView:(NSTextView *)view + menu:(NSMenu *)menu + forEvent:(NSEvent *)event + atIndex:(NSUInteger)charIndex { + if (_contextMenuItems == nil || _contextMenuItems.count == 0) { + return menu; + } + + NSInteger insertionIndex = 0; + for (NSString *title in _contextMenuItems) { + NSMenuItem *item = + [[NSMenuItem alloc] initWithTitle:title + action:@selector(handleContextMenuAction:) + keyEquivalent:@""]; + item.target = self; + item.representedObject = title; + [menu insertItem:item atIndex:insertionIndex++]; + } + [menu insertItem:[NSMenuItem separatorItem] atIndex:insertionIndex]; + + return menu; +} + +- (void)handleContextMenuAction:(NSMenuItem *)item { + NSString *title = item.representedObject; + if ([title isKindOfClass:NSString.class]) { + [self emitOnContextMenuItemPressEvent:title]; + } +} +#endif - (void)emitOnContextMenuItemPressEvent:(NSString *)itemText { auto emitter = [self getEventEmitter]; @@ -1934,9 +2078,27 @@ - (void)handleKeyPressInRange:(NSString *)text range:(NSRange)range { } } -- (bool)textView:(UITextView *)textView +#if !TARGET_OS_OSX +- (bool)textView:(EnrichedBaseTextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { + return [self handleShouldChangeTextInRange:range replacementText:text]; +} +#else +- (BOOL)textView:(NSTextView *)view + shouldChangeTextInRange:(NSRange)range + replacementString:(NSString *)text { + // AppKit passes nil for attribute-only changes; treating it as a change + // would mis-detect a Backspace key press. + if (text == nil) { + return YES; + } + return [self handleShouldChangeTextInRange:range replacementText:text]; +} +#endif + +- (bool)handleShouldChangeTextInRange:(NSRange)range + replacementText:(NSString *)text { // Capture the attributes at range.location that are being replaced // (autocorrect / predictive) so didProcessEditing: can re-stamp them onto the // replacement. Only capture for genuine replacements (text.length > 0), not @@ -1957,7 +2119,7 @@ - (bool)textView:(UITextView *)textView } if (shouldReturn) { - [textView endEditing:NO]; + [textView enrichedEndEditing]; } if (shouldSubmit || shouldReturn) { @@ -2023,14 +2185,24 @@ - (bool)textView:(UITextView *)textView // character actually lands. Sometimes, between a selection change and the // next keystroke, typing attributes might get removed - this seems like a // native TextKit issue. - if (textView.markedTextRange == nil && text.length > 0) { + if (!textView.enrichedHasMarkedText && text.length > 0) { [attributesManager repeatRecentTypingAttributesManagement]; } return YES; } -- (void)textViewDidChangeSelection:(UITextView *)textView { +#if !TARGET_OS_OSX +- (void)textViewDidChangeSelection:(EnrichedBaseTextView *)textView { + [self handleSelectionChange]; +} +#else +- (void)textViewDidChangeSelection:(NSNotification *)notification { + [self handleSelectionChange]; +} +#endif + +- (void)handleSelectionChange { // emit the event NSString *textAtSelection = [[[NSMutableString alloc] initWithString:textView.textStorage.string] @@ -2055,10 +2227,44 @@ - (void)textViewDidChangeSelection:(UITextView *)textView { // this function isn't called always when some text changes (for example setting // link or starting mention with indicator doesn't fire it) so all the logic is // in anyTextMayHaveBeenModified -- (void)textViewDidChange:(UITextView *)textView { +#if !TARGET_OS_OSX +- (void)textViewDidChange:(EnrichedBaseTextView *)textView { [self anyTextMayHaveBeenModified]; } +#else +- (void)textDidChange:(NSNotification *)notification { + [self anyTextMayHaveBeenModified]; +} + +- (BOOL)textView:(NSTextView *)view doCommandBySelector:(SEL)commandSelector { + // Shift-Enter (insertLineBreak:) would insert a U+2028 line separator and + // Option-Enter (insertNewlineIgnoringFieldEditor:) would bypass the field + // editor path; both must flow through the regular newline pipeline so + // submitBehavior and the paragraph model keep working. + if (commandSelector == @selector(insertLineBreak:) || + commandSelector == @selector(insertNewlineIgnoringFieldEditor:)) { + // We want to wire the manual newline insertion through the + // shouldChangeTextInRange pipeline. + NSRange selectedRange = view.selectedRange; + if ([view shouldChangeTextInRange:selectedRange replacementString:@"\n"]) { + [view insertNewline:nil]; + } + return YES; + } + + // Sometimes when you put a cursor at the very beginning of the line, + // backspace press handling was supressed. We force it here. + if (commandSelector == @selector(deleteBackward:) && + view.selectedRange.location == 0 && view.selectedRange.length == 0) { + [self handleShouldChangeTextInRange:NSMakeRange(0, 0) replacementText:@""]; + return YES; + } + + return NO; +} +#endif +#if !TARGET_OS_OSX /** * Handles iOS Dynamic Type changes (User changing font size in System * Settings). @@ -2099,10 +2305,42 @@ - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { NSString *initiallyProcessedHtml = [parser initiallyProcessHtml:currentHtml]; [parser replaceWholeFromHtml:initiallyProcessedHtml]; - textView.selectedRange = prevSelectedRange; + [textView enrichedSetSelectedRange:prevSelectedRange]; [self anyTextMayHaveBeenModified]; } +#endif +- (void)handleCheckboxTapAtIndex:(NSUInteger)charIndex { + CheckboxListStyle *checkboxStyle = + (CheckboxListStyle *)stylesDict[@([CheckboxListStyle getType])]; + if (checkboxStyle == nullptr) { + return; + } + + [checkboxStyle toggleCheckedAt:charIndex withDirtyRange:YES]; + [self anyTextMayHaveBeenModified]; + + NSString *fullText = textView.textStorage.string; + NSRange paragraphRange = + [fullText paragraphRangeForRange:NSMakeRange(charIndex, 0)]; + NSUInteger endOfLineIndex = NSMaxRange(paragraphRange); + + // If the paragraph ends with a newline, step back by 1 so the cursor + // stays on the current line instead of jumping to the next one. + if (endOfLineIndex > 0 && endOfLineIndex <= fullText.length) { + unichar lastChar = [fullText characterAtIndex:endOfLineIndex - 1]; + if ([[NSCharacterSet newlineCharacterSet] characterIsMember:lastChar]) { + endOfLineIndex--; + } + } + + // Move the cursor to the end of the currently tapped checkbox line. + // Without this, the cursor may remain at its previous position, + // potentially inside a different checkbox line. + [textView enrichedSetSelectedRange:NSMakeRange(endOfLineIndex, 0)]; +} + +#if !TARGET_OS_OSX - (void)onTextBlockTap:(TextBlockTapGestureRecognizer *)gr { if (gr.state != UIGestureRecognizerStateEnded) return; @@ -2113,33 +2351,7 @@ - (void)onTextBlockTap:(TextBlockTapGestureRecognizer *)gr { switch (gr.tapKind) { case TextBlockTapKindCheckbox: { - CheckboxListStyle *checkboxStyle = - (CheckboxListStyle *)stylesDict[@([CheckboxListStyle getType])]; - - if (checkboxStyle) { - NSUInteger charIndex = (NSUInteger)gr.characterIndex; - [checkboxStyle toggleCheckedAt:charIndex withDirtyRange:YES]; - [self anyTextMayHaveBeenModified]; - - NSString *fullText = textView.textStorage.string; - NSRange paragraphRange = - [fullText paragraphRangeForRange:NSMakeRange(charIndex, 0)]; - NSUInteger endOfLineIndex = NSMaxRange(paragraphRange); - - // If the paragraph ends with a newline, step back by 1 so the cursor - // stays on the current line instead of jumping to the next one. - if (endOfLineIndex > 0 && endOfLineIndex <= fullText.length) { - unichar lastChar = [fullText characterAtIndex:endOfLineIndex - 1]; - if ([[NSCharacterSet newlineCharacterSet] characterIsMember:lastChar]) { - endOfLineIndex--; - } - } - - // Move the cursor to the end of the currently tapped checkbox line. - // Without this, the cursor may remain at its previous position, - // potentially inside a different checkbox line. - textView.selectedRange = NSMakeRange(endOfLineIndex, 0); - } + [self handleCheckboxTapAtIndex:(NSUInteger)gr.characterIndex]; break; } @@ -2147,6 +2359,7 @@ - (void)onTextBlockTap:(TextBlockTapGestureRecognizer *)gr { break; } } +#endif - (void)textStorage:(NSTextStorage *)textStorage didProcessEditing:(NSTextStorageEditActions)editedMask @@ -2165,7 +2378,7 @@ - (void)textStorage:(NSTextStorage *)textStorage // the new range so autocorrect/predictive replacements keep their styling. if (_capturedAttributesBeforeChange != nil) { // Skip while an IME composition is in progress; restamp on commit. - if (textView.markedTextRange == nil) { + if (!textView.enrichedHasMarkedText) { NSSet *customKeys = [attributesManager customAttributesKeys]; for (NSString *key in _capturedAttributesBeforeChange) { if ([customKeys containsObject:key]) { diff --git a/ios/EnrichedTextView.h b/ios/EnrichedTextView.h index 5f249ea91..67d02acc3 100644 --- a/ios/EnrichedTextView.h +++ b/ios/EnrichedTextView.h @@ -3,8 +3,8 @@ #import "interfaces/EnrichedViewHost.h" #import "interfaces/MediaAttachment.h" #import "interfaces/MentionParams.h" +#import "platform/EnrichedPlatform.h" #import -#import #ifndef EnrichedTextViewNativeComponent_h #define EnrichedTextViewNativeComponent_h @@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN @interface EnrichedTextView : RCTViewComponentView { @public - UITextView *textView; + EnrichedBaseTextView *textView; @public EnrichedConfig *config; @public diff --git a/ios/EnrichedTextView.mm b/ios/EnrichedTextView.mm index 991b180c6..a225370b8 100644 --- a/ios/EnrichedTextView.mm +++ b/ios/EnrichedTextView.mm @@ -66,6 +66,7 @@ - (instancetype)initWithFrame:(CGRect)frame { } - (void)setupTextView { +#if !TARGET_OS_OSX EnrichedTextTextView *tv = [[EnrichedTextTextView alloc] init]; _touchHandler = [[EnrichedTextTouchHandler alloc] initWithView:self]; tv.touchHandler = _touchHandler; @@ -79,6 +80,35 @@ - (void)setupTextView { textView.scrollEnabled = NO; textView.adjustsFontForContentSizeCategory = YES; textView.layoutManager.input = self; +#else + // Build an explicit TextKit 1 stack: a plain NSTextView init on macOS 13+ + // creates a TextKit 2 view whose .layoutManager access triggers a lossy + // fallback mid-flight. + NSTextStorage *textStorage = [[NSTextStorage alloc] init]; + NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; + [textStorage addLayoutManager:layoutManager]; + NSTextContainer *textContainer = + [[NSTextContainer alloc] initWithSize:NSMakeSize(0, FLT_MAX)]; + textContainer.widthTracksTextView = YES; + [layoutManager addTextContainer:textContainer]; + + EnrichedTextTextView *tv = + [[EnrichedTextTextView alloc] initWithFrame:CGRectZero + textContainer:textContainer]; + _touchHandler = [[EnrichedTextTouchHandler alloc] initWithView:self]; + tv.touchHandler = _touchHandler; + tv.host = self; + textView = tv; + + textView.drawsBackground = NO; + textView.textContainerInset = NSMakeSize(0, 0); + textView.textContainer.lineFragmentPadding = 0; + textView.editable = NO; + textView.verticallyResizable = YES; + textView.horizontallyResizable = NO; + textView.autoresizingMask = NSViewWidthSizable; + textView.layoutManager.input = self; +#endif } - (void)setupStyles { @@ -89,7 +119,7 @@ - (void)setupStyles { // MARK: - EnrichedViewHost protocol -- (UITextView *)textView { +- (EnrichedBaseTextView *)textView { return textView; } @@ -580,8 +610,13 @@ - (void)updateProps:(Props::Shared const &)props // selectionColor if (newViewProps.selectionColor != oldViewProps.selectionColor) { if (isColorMeaningful(newViewProps.selectionColor)) { +#if !TARGET_OS_OSX textView.tintColor = RCTUIColorFromSharedColor(newViewProps.selectionColor); +#else + [textView enrichedSetTintColor:RCTUIColorFromSharedColor( + newViewProps.selectionColor)]; +#endif } } @@ -712,6 +747,7 @@ - (void)tryUpdatingHeight { _state->updateState(EnrichedTextViewState(selfRef)); } +#if !TARGET_OS_OSX /** * Handles iOS Dynamic Type changes (user changing font size in System * Settings). @@ -738,6 +774,7 @@ - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { [self renderContent]; [self tryUpdatingHeight]; } +#endif - (std::shared_ptr)getEventEmitter { if (_eventEmitter != nullptr) { diff --git a/ios/config/EnrichedConfig.h b/ios/config/EnrichedConfig.h index be7b8eb7b..064b78728 100644 --- a/ios/config/EnrichedConfig.h +++ b/ios/config/EnrichedConfig.h @@ -2,7 +2,7 @@ #import "interfaces/LinkRegexConfig.h" #import "interfaces/MentionStyleProps.h" #import "interfaces/TextDecorationLineEnum.h" -#import +#import "platform/EnrichedPlatform.h" @interface EnrichedConfig : NSObject - (instancetype)init; diff --git a/ios/config/EnrichedConfig.mm b/ios/config/EnrichedConfig.mm index 89f0e9d1d..8374f6e9c 100644 --- a/ios/config/EnrichedConfig.mm +++ b/ios/config/EnrichedConfig.mm @@ -165,8 +165,7 @@ - (CGFloat)scaledPrimaryLineHeight { if (!_allowFontScaling) { return [self primaryLineHeight]; } - return [[UIFontMetrics defaultMetrics] - scaledValueForValue:[self primaryLineHeight]]; + return EnrichedFontScaledValue([self primaryLineHeight]); } - (NSString *)primaryFontWeight { @@ -238,7 +237,7 @@ - (CGFloat)h1FontSize { if (!_allowFontScaling) { return _h1FontSize; } - return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h1FontSize]; + return EnrichedFontScaledValue(_h1FontSize); } - (void)setH1FontSize:(CGFloat)newValue { @@ -257,7 +256,7 @@ - (CGFloat)h2FontSize { if (!_allowFontScaling) { return _h2FontSize; } - return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h2FontSize]; + return EnrichedFontScaledValue(_h2FontSize); } - (void)setH2FontSize:(CGFloat)newValue { @@ -276,7 +275,7 @@ - (CGFloat)h3FontSize { if (!_allowFontScaling) { return _h3FontSize; } - return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h3FontSize]; + return EnrichedFontScaledValue(_h3FontSize); } - (void)setH3FontSize:(CGFloat)newValue { @@ -295,7 +294,7 @@ - (CGFloat)h4FontSize { if (!_allowFontScaling) { return _h4FontSize; } - return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h4FontSize]; + return EnrichedFontScaledValue(_h4FontSize); } - (void)setH4FontSize:(CGFloat)newValue { @@ -314,7 +313,7 @@ - (CGFloat)h5FontSize { if (!_allowFontScaling) { return _h5FontSize; } - return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h5FontSize]; + return EnrichedFontScaledValue(_h5FontSize); } - (void)setH5FontSize:(CGFloat)newValue { @@ -333,7 +332,7 @@ - (CGFloat)h6FontSize { if (!_allowFontScaling) { return _h6FontSize; } - return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h6FontSize]; + return EnrichedFontScaledValue(_h6FontSize); } - (void)setH6FontSize:(CGFloat)newValue { @@ -564,8 +563,8 @@ - (NSNumber *)scaledPrimaryFontSize { if (!_allowFontScaling) { return [self primaryFontSize]; } - CGFloat scaledSize = [[UIFontMetrics defaultMetrics] - scaledValueForValue:[[self primaryFontSize] floatValue]]; + CGFloat scaledSize = + EnrichedFontScaledValue([[self primaryFontSize] floatValue]); return @(scaledSize); } @@ -629,6 +628,7 @@ - (UIImage *)generateCheckboxImage:(BOOL)isChecked { CGFloat boxSize = self.checkboxListBoxSize; UIColor *boxColor = self.checkboxListBoxColor ?: [UIColor blackColor]; +#if !TARGET_OS_OSX UIGraphicsBeginImageContextWithOptions(CGSizeMake(boxSize, boxSize), NO, 0.0); CGRect localRect = CGRectMake(0, 0, boxSize, boxSize); CGFloat cornerRadius = boxSize * 0.15f; @@ -674,6 +674,59 @@ - (UIImage *)generateCheckboxImage:(BOOL)isChecked { UIGraphicsEndImageContext(); return result; +#else + // Same drawing as the UIKit branch, expressed with NSBezierPath selectors. + // The image is drawn checkmark-up in an unflipped context and rendered into + // the flipped text view context via EnrichedDrawImageInRect + // (respectFlipped:), which keeps its orientation correct. + return [NSImage + imageWithSize:NSMakeSize(boxSize, boxSize) + flipped:YES + drawingHandler:^BOOL(NSRect localRect) { + CGFloat cornerRadius = boxSize * 0.15f; + CGFloat strokeWidth = boxSize * 0.1f; + CGRect insetRect = + CGRectInset(localRect, strokeWidth / 2.0, strokeWidth / 2.0); + + // Draw Box + NSBezierPath *boxPath = + [NSBezierPath bezierPathWithRoundedRect:insetRect + xRadius:cornerRadius + yRadius:cornerRadius]; + [boxPath setLineWidth:strokeWidth]; + + if (isChecked) { + [[boxColor colorWithAlphaComponent:1.0] setFill]; + [boxPath fill]; + [[boxColor colorWithAlphaComponent:1.0] setStroke]; + [boxPath stroke]; + + // Draw Checkmark + NSBezierPath *checkPath = [NSBezierPath bezierPath]; + CGFloat startX = insetRect.origin.x + insetRect.size.width * 0.25; + CGFloat startY = insetRect.origin.y + insetRect.size.height * 0.5; + CGFloat midX = insetRect.origin.x + insetRect.size.width * 0.45; + CGFloat midY = insetRect.origin.y + insetRect.size.height * 0.65; + CGFloat endX = insetRect.origin.x + insetRect.size.width * 0.75; + CGFloat endY = insetRect.origin.y + insetRect.size.height * 0.35; + + [checkPath moveToPoint:CGPointMake(startX, startY)]; + [checkPath lineToPoint:CGPointMake(midX, midY)]; + [checkPath lineToPoint:CGPointMake(endX, endY)]; + + [checkPath setLineWidth:strokeWidth * 1.5]; + [[UIColor whiteColor] setStroke]; + [checkPath setLineCapStyle:NSLineCapStyleRound]; + [checkPath setLineJoinStyle:NSLineJoinStyleRound]; + [checkPath stroke]; + } else { + [[boxColor colorWithAlphaComponent:1.0] setStroke]; + [boxPath stroke]; + } + + return YES; + }]; +#endif } // MARK: - Input only props diff --git a/ios/enrichedInputTextView/EnrichedInputTextView.h b/ios/enrichedInputTextView/EnrichedInputTextView.h index 3f517cbcd..0ca8bfdc3 100644 --- a/ios/enrichedInputTextView/EnrichedInputTextView.h +++ b/ios/enrichedInputTextView/EnrichedInputTextView.h @@ -1,6 +1,6 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" -@interface EnrichedInputTextView : UITextView +@interface EnrichedInputTextView : EnrichedBaseTextView @property(nonatomic, weak) id input; @end diff --git a/ios/enrichedInputTextView/EnrichedInputTextView.mm b/ios/enrichedInputTextView/EnrichedInputTextView.mm index 4dcba8bc4..fe877cf6e 100644 --- a/ios/enrichedInputTextView/EnrichedInputTextView.mm +++ b/ios/enrichedInputTextView/EnrichedInputTextView.mm @@ -2,12 +2,20 @@ #import "EnrichedTextInputView.h" #import "extensions/StringExtension.h" #import "htmlParser/HtmlParser.h" +#import "platform/EnrichedPlatform.h" #import "utils/AlignmentUtils.h" +#import "utils/CheckboxHitTestUtils.h" #import "utils/TextInsertionUtils.h" #import "utils/TextListsUtils.h" #import -@implementation EnrichedInputTextView +@implementation EnrichedInputTextView { +#if TARGET_OS_OSX + NSArray *_enrichedShadowTextLists; +#endif +} + +#if !TARGET_OS_OSX - (void)layoutSubviews { [super layoutSubviews]; @@ -226,6 +234,8 @@ - (void)paste:(id)sender { [typedInput anyTextMayHaveBeenModified]; } +#endif // !TARGET_OS_OSX + - (NSDictionary *)detectImageFormat:(NSString *)type { if ([type isEqual:UTTypeJPEG.identifier]) { return @{@"ext" : @"jpg", @"mime" : @"image/jpeg"}; @@ -244,6 +254,7 @@ - (NSDictionary *)detectImageFormat:(NSString *)type { } } +#if !TARGET_OS_OSX - (NSData *)getDataForImageItem:(UIImage *)image type:(NSString *)type { if ([type isEqual:UTTypePNG.identifier]) { return UIImagePNGRepresentation(image); @@ -254,6 +265,8 @@ - (NSData *)getDataForImageItem:(UIImage *)image type:(NSString *)type { } } +#endif // !TARGET_OS_OSX + - (NSString *)saveToTempFile:(NSData *)data extension:(NSString *)ext { if (!data) return nil; @@ -270,6 +283,7 @@ - (NSString *)saveToTempFile:(NSData *)data extension:(NSString *)ext { return nil; } +#if !TARGET_OS_OSX - (void)tryHandlingPlainTextItemsIn:(UIPasteboard *)pasteboard range:(NSRange)range input:(EnrichedTextInputView *)input { @@ -340,4 +354,370 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { return [super canPerformAction:action withSender:sender]; } +#else // TARGET_OS_OSX + +- (void)layout { + [super layout]; + // Re-schedule a relayout so sizing is re-applied after AppKit finishes its + // own layout pass (mirrors the layoutSubviews override on iOS). + EnrichedTextInputView *input = (EnrichedTextInputView *)_input; + if (input != nil) { + [input scheduleRelayoutIfNeeded]; + } +} + +// On macOS focus events are tied to first-responder status instead of +// UITextViewDelegate's textViewDidBegin/EndEditing (whose AppKit counterparts +// only fire around actual edits). +- (BOOL)becomeFirstResponder { + BOOL result = [super becomeFirstResponder]; + EnrichedTextInputView *input = (EnrichedTextInputView *)_input; + if (result && input != nil) { + [input handleDidBeginEditing]; + } + return result; +} + +- (BOOL)resignFirstResponder { + BOOL result = [super resignFirstResponder]; + EnrichedTextInputView *input = (EnrichedTextInputView *)_input; + // resignFirstResponder also fires during window teardown; only emit for + // real focus changes. + if (result && input != nil && self.window != nil) { + [input handleDidEndEditing]; + } + return result; +} + +// NSParagraphStyle.textLists is often not persisted and stripped +// by AppKit. We manually persist that attribute and reapply it +// on the setter/getter level. +- (void)setTypingAttributes: + (NSDictionary *)typingAttributes { + NSParagraphStyle *intendedStyle = + typingAttributes[NSParagraphStyleAttributeName]; + _enrichedShadowTextLists = + intendedStyle != nil ? (intendedStyle.textLists ?: @[]) : nil; + [super setTypingAttributes:typingAttributes]; +} + +- (NSDictionary *)typingAttributes { + NSDictionary *attrs = [super typingAttributes]; + if (_enrichedShadowTextLists == nil) { + return attrs; + } + + NSParagraphStyle *currentStyle = attrs[NSParagraphStyleAttributeName]; + NSArray *currentLists = currentStyle.textLists ?: @[]; + if ([currentLists isEqualToArray:_enrichedShadowTextLists]) { + return attrs; + } + + NSMutableParagraphStyle *patchedStyle = + [currentStyle mutableCopy] ?: [[NSMutableParagraphStyle alloc] init]; + patchedStyle.textLists = _enrichedShadowTextLists; + NSMutableDictionary *patchedAttrs = + [attrs mutableCopy] ?: [NSMutableDictionary new]; + patchedAttrs[NSParagraphStyleAttributeName] = patchedStyle; + return patchedAttrs; +} + +- (void)mouseDown:(NSEvent *)event { + EnrichedTextInputView *input = (EnrichedTextInputView *)_input; + if (input != nil) { + NSPoint point = [self convertPoint:event.locationInWindow fromView:nil]; + NSInteger checkboxIndex = + [CheckboxHitTestUtils hitTestCheckboxAtPoint:point inInput:input]; + if (checkboxIndex >= 0) { + if (!self.enrichedIsFirstResponder) { + [self.window makeFirstResponder:self]; + } + [input handleCheckboxTapAtIndex:(NSUInteger)checkboxIndex]; + // Swallow the click so the caret does not additionally move to the + // clicked location (matches cancelsTouchesInView on iOS). + return; + } + } + [super mouseDown:event]; +} + +// NSTextView places the cursor at the leading edge when a paragraph contains +// zero (or invisible) glyphs because the layout engine has nothing to align. +// This mirrors the caretRectForPosition: override on iOS by repositioning the +// insertion point rect based on the active alignment. +- (NSRect)adjustedInsertionPointRect:(NSRect)rect { + NSUInteger idx = self.selectedRange.location; + NSString *text = self.textStorage.string; + NSRange paraRange = NSMakeRange(0, 0); + if (idx <= text.length) { + paraRange = [text paragraphRangeForRange:NSMakeRange(idx, 0)]; + } + + // Non-empty paragraph gets its caret drawn the usual way. + if (paraRange.length != 0) { + return rect; + } + + NSParagraphStyle *pStyle = + self.typingAttributes[NSParagraphStyleAttributeName]; + + if (pStyle == nil) { + return rect; + } + + NSString *marker = + [TextListsUtils firstTextListWithPrefix:@"EnrichedAlignment" + inArray:pStyle.textLists] + .markerFormat; + NSTextAlignment alignment = [AlignmentUtils markerToAlignment:marker]; + CGFloat containerWidth = self.textContainer.size.width; + + if (alignment == NSTextAlignmentCenter) { + rect.origin.x = (containerWidth - rect.size.width) / 2.0; + } else if (alignment == NSTextAlignmentRight) { + rect.origin.x = containerWidth - rect.size.width; + } + + return rect; +} + +- (void)drawInsertionPointInRect:(NSRect)rect + color:(NSColor *)color + turnedOn:(BOOL)flag { + [super drawInsertionPointInRect:[self adjustedInsertionPointRect:rect] + color:color + turnedOn:flag]; +} + +- (void)setNeedsDisplayInRect:(NSRect)rect avoidAdditionalLayout:(BOOL)flag { + // Widen caret invalidation to the full line width so a repositioned + // insertion point does not leave ghosts at its original location. + rect.origin.x = 0; + rect.size.width = self.bounds.size.width; + [super setNeedsDisplayInRect:rect avoidAdditionalLayout:flag]; +} + +- (void)copy:(id)sender { + EnrichedTextInputView *typedInput = (EnrichedTextInputView *)_input; + if (typedInput == nullptr) { + return; + } + + // remove zero width spaces before copying the text + NSString *plainText = [typedInput->textView.textStorage.string + substringWithRange:typedInput->textView.selectedRange]; + NSString *fixedPlainText = + [plainText stringByReplacingOccurrencesOfString:@"\u200B" withString:@""]; + + NSString *parsedHtml = + [HtmlParser parseToHtmlFromRange:typedInput->textView.selectedRange + host:typedInput]; + + NSMutableAttributedString *attrStr = [[typedInput->textView.textStorage + attributedSubstringFromRange:typedInput->textView.selectedRange] + mutableCopy]; + NSRange fullAttrStrRange = NSMakeRange(0, attrStr.length); + [attrStr.mutableString replaceOccurrencesOfString:@"\u200B" + withString:@"" + options:0 + range:fullAttrStrRange]; + + NSData *rtfData = + [attrStr dataFromRange:NSMakeRange(0, attrStr.length) + documentAttributes:@{ + NSDocumentTypeDocumentAttribute : NSRTFTextDocumentType + } + error:nullptr]; + + NSPasteboard *pasteboard = NSPasteboard.generalPasteboard; + [pasteboard clearContents]; + [pasteboard declareTypes:@[ + NSPasteboardTypeHTML, NSPasteboardTypeRTF, NSPasteboardTypeString + ] + owner:nil]; + [pasteboard setString:fixedPlainText forType:NSPasteboardTypeString]; + [pasteboard setString:parsedHtml forType:NSPasteboardTypeHTML]; + if (rtfData != nullptr) { + [pasteboard setData:rtfData forType:NSPasteboardTypeRTF]; + } +} + +- (void)cut:(id)sender { + EnrichedTextInputView *typedInput = (EnrichedTextInputView *)_input; + if (typedInput == nullptr) { + return; + } + + [self copy:sender]; + [TextInsertionUtils replaceText:@"" + at:typedInput->textView.selectedRange + additionalAttributes:nullptr + host:typedInput + withSelection:YES]; + + [typedInput anyTextMayHaveBeenModified]; +} + +- (void)paste:(id)sender { + EnrichedTextInputView *typedInput = (EnrichedTextInputView *)_input; + if (typedInput == nullptr) { + return; + } + + NSPasteboard *pasteboard = NSPasteboard.generalPasteboard; + NSRange currentRange = typedInput->textView.selectedRange; + + // Check the pasteboard for supported image formats. If found, save them to + // temporary storage then emit the 'onPasteImages' event and stop processing + // further (ignoring any HTML/Text). Modern NSPasteboard types are UTIs, so + // the same identifiers as on iOS apply. + NSMutableArray *foundImages = [NSMutableArray new]; + + for (NSPasteboardItem *item in pasteboard.pasteboardItems) { + NSData *imageData = nil; + NSString *ext = nil; + NSString *mimeType = nil; + + for (NSPasteboardType type in item.types) { + if ([type isEqual:UTTypeJPEG.identifier] || + [type isEqual:UTTypePNG.identifier] || + [type isEqual:UTTypeHEIC.identifier] || + [type isEqual:UTTypeTIFF.identifier] || + [type isEqual:UTTypeWebP.identifier] || + [type isEqual:UTTypeGIF.identifier]) { + NSData *typeData = [item dataForType:type]; + NSDictionary *info = [self detectImageFormat:type]; + if (typeData == nil || info == nil) { + continue; + } + imageData = typeData; + ext = info[@"ext"]; + mimeType = info[@"mime"]; + break; + } + + // Finder file copies arrive as file URLs instead of raw image bytes. + if ([type isEqual:NSPasteboardTypeFileURL]) { + NSString *urlString = [item stringForType:NSPasteboardTypeFileURL]; + NSURL *fileURL = + urlString != nil ? [NSURL URLWithString:urlString] : nil; + if (fileURL == nil) { + continue; + } + UTType *fileType = + [UTType typeWithFilenameExtension:fileURL.pathExtension]; + NSDictionary *info = [self detectImageFormat:fileType.identifier]; + if (info == nil) { + continue; + } + NSData *fileData = [NSData dataWithContentsOfURL:fileURL]; + if (fileData == nil) { + continue; + } + imageData = fileData; + ext = info[@"ext"]; + mimeType = info[@"mime"]; + break; + } + } + + if (imageData == nil) { + continue; + } + + UIImage *imageInfo = [UIImage imageWithData:imageData]; + if (imageInfo) { + NSString *path = [self saveToTempFile:imageData extension:ext]; + if (path) { + [foundImages addObject:@{ + @"uri" : path, + @"type" : mimeType, + @"width" : @(imageInfo.size.width), + @"height" : @(imageInfo.size.height) + }]; + } + } + } + + if (foundImages.count > 0) { + [typedInput emitOnPasteImagesEvent:foundImages]; + return; + } + + NSString *htmlString = [pasteboard stringForType:NSPasteboardTypeHTML]; + if (htmlString != nil) { + // we try processing the html contents + NSString *initiallyProcessedHtml = + [typedInput->parser initiallyProcessHtml:htmlString]; + + if (initiallyProcessedHtml != nullptr) { + // valid html, let's apply it + currentRange.length > 0 + ? [typedInput->parser replaceFromHtml:initiallyProcessedHtml + range:currentRange] + : [typedInput->parser insertFromHtml:initiallyProcessedHtml + location:currentRange.location]; + } else { + // fall back to plain text, otherwise do nothing + [self tryHandlingPlainTextItemsIn:pasteboard + range:currentRange + input:typedInput]; + } + } else { + [self tryHandlingPlainTextItemsIn:pasteboard + range:currentRange + input:typedInput]; + } + + [typedInput anyTextMayHaveBeenModified]; +} + +- (void)pasteAsPlainText:(id)sender { + [self paste:sender]; +} + +- (void)pasteAsRichText:(id)sender { + [self paste:sender]; +} + +- (void)tryHandlingPlainTextItemsIn:(NSPasteboard *)pasteboard + range:(NSRange)range + input:(EnrichedTextInputView *)input { + NSString *plainText = [pasteboard stringForType:NSPasteboardTypeString]; + if (plainText == nil) { + plainText = [pasteboard stringForType:NSPasteboardTypeURL]; + } + + if (!plainText) { + return; + } + + range.length > 0 ? [TextInsertionUtils replaceText:plainText + at:range + additionalAttributes:nullptr + host:input + withSelection:YES] + : [TextInsertionUtils insertText:plainText + at:range.location + additionalAttributes:nullptr + host:input + withSelection:YES]; +} + +- (BOOL)validateUserInterfaceItem:(id)item { + if (item.action == @selector(paste:)) { + NSPasteboard *pasteboard = NSPasteboard.generalPasteboard; + // Enable Paste if clipboard has Text OR Images + if ([pasteboard canReadItemWithDataConformingToTypes:@[ + UTTypeUTF8PlainText.identifier, UTTypeHTML.identifier, + UTTypeImage.identifier, NSPasteboardTypeFileURL + ]]) { + return YES; + } + } + return [super validateUserInterfaceItem:item]; +} + +#endif // TARGET_OS_OSX + @end diff --git a/ios/enrichedTextTextView/EnrichedTextTextView.h b/ios/enrichedTextTextView/EnrichedTextTextView.h index 5d74da22d..a3e497a84 100644 --- a/ios/enrichedTextTextView/EnrichedTextTextView.h +++ b/ios/enrichedTextTextView/EnrichedTextTextView.h @@ -1,6 +1,6 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @class EnrichedTextTouchHandler; @class EnrichedTextView; @@ -8,7 +8,7 @@ // Forwards single-finger touches to `EnrichedTextTouchHandler` before `super` // so link/mention pressed styling is not delayed by `UITextView` gesture // arbitration. -@interface EnrichedTextTextView : UITextView +@interface EnrichedTextTextView : EnrichedBaseTextView @property(nonatomic, weak) EnrichedTextTouchHandler *touchHandler; @property(nonatomic, weak) EnrichedTextView *host; diff --git a/ios/enrichedTextTextView/EnrichedTextTextView.mm b/ios/enrichedTextTextView/EnrichedTextTextView.mm index 83ca88561..e16d3945a 100644 --- a/ios/enrichedTextTextView/EnrichedTextTextView.mm +++ b/ios/enrichedTextTextView/EnrichedTextTextView.mm @@ -36,14 +36,29 @@ - (void)copy:(id)sender { } error:nullptr]; +#if !TARGET_OS_OSX UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; [pasteboard setItems:@[ @{ UTTypeUTF8PlainText.identifier : fixedPlainText, UTTypeHTML.identifier : parsedHtml, UTTypeRTF.identifier : rtfData } ]]; +#else + NSPasteboard *pasteboard = NSPasteboard.generalPasteboard; + [pasteboard clearContents]; + [pasteboard declareTypes:@[ + NSPasteboardTypeHTML, NSPasteboardTypeRTF, NSPasteboardTypeString + ] + owner:nil]; + [pasteboard setString:fixedPlainText forType:NSPasteboardTypeString]; + [pasteboard setString:parsedHtml forType:NSPasteboardTypeHTML]; + if (rtfData != nullptr) { + [pasteboard setData:rtfData forType:NSPasteboardTypeRTF]; + } +#endif } +#if !TARGET_OS_OSX - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { if (touches.count == 1) { UITouch *touch = touches.anyObject; @@ -67,5 +82,27 @@ - (void)touchesCancelled:(NSSet *)touches [self.touchHandler handleTouchCancelled]; [super touchesCancelled:touches withEvent:event]; } +#else +// The touch handler runs before `super` so link/mention pressed styling is +// not delayed (see header comment); the same ordering applies to mouseDown. +- (void)mouseDown:(NSEvent *)event { + NSPoint point = [self convertPoint:event.locationInWindow fromView:nil]; + [self.touchHandler handleTouchBeganAtPoint:point]; + [super mouseDown:event]; +} + +- (void)mouseUp:(NSEvent *)event { + NSPoint point = [self convertPoint:event.locationInWindow fromView:nil]; + [self.touchHandler handleTouchEndedAtPoint:point]; + [super mouseUp:event]; +} + +- (void)mouseDragged:(NSEvent *)event { + // Dragging away from the pressed element cancels the press, mirroring + // touchesCancelled on iOS. + [self.touchHandler handleTouchCancelled]; + [super mouseDragged:event]; +} +#endif @end diff --git a/ios/extensions/ColorExtension.h b/ios/extensions/ColorExtension.h index c3a2323c9..1fcc920a5 100644 --- a/ios/extensions/ColorExtension.h +++ b/ios/extensions/ColorExtension.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" #pragma once @interface UIColor (ColorExtension) diff --git a/ios/extensions/FontExtension.h b/ios/extensions/FontExtension.h index 1e00d586c..b954fcf83 100644 --- a/ios/extensions/FontExtension.h +++ b/ios/extensions/FontExtension.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" #pragma once @interface UIFont (FontExtension) diff --git a/ios/extensions/ImageExtension.h b/ios/extensions/ImageExtension.h index 43392150b..14181be4c 100644 --- a/ios/extensions/ImageExtension.h +++ b/ios/extensions/ImageExtension.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" /** UIImage (ImageExtension) diff --git a/ios/extensions/ImageExtension.mm b/ios/extensions/ImageExtension.mm index 75448adfd..fdd7f3690 100644 --- a/ios/extensions/ImageExtension.mm +++ b/ios/extensions/ImageExtension.mm @@ -15,6 +15,8 @@ // https://github.com/mayoff/uiimage-from-animated-gif/blob/master/uiimage-from-animated-gif/UIImage%2BanimatedGIF.m @implementation UIImage (ImageExtension) +#if !TARGET_OS_OSX + static int delayCentisecondsForImageAtIndex(CGImageSourceRef const source, size_t const i) { int delayCentiseconds = 1; @@ -173,4 +175,14 @@ + (UIImage *)animatedImageWithData:(NSData *)data { return animatedImageWithReleasingSource(source); } +#else // TARGET_OS_OSX + ++ (UIImage *)animatedImageWithData:(NSData *)data { + // NSImage keeps the animation frames internally; NSImageView plays them + // when its `animates` property is set (see AttachmentLayoutUtils). + return [[NSImage alloc] initWithData:data]; +} + +#endif + @end diff --git a/ios/extensions/LayoutManagerExtension.h b/ios/extensions/LayoutManagerExtension.h index e8e217a32..11b05a94d 100644 --- a/ios/extensions/LayoutManagerExtension.h +++ b/ios/extensions/LayoutManagerExtension.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface NSLayoutManager (LayoutManagerExtension) @property(nonatomic, weak) id input; diff --git a/ios/extensions/LayoutManagerExtension.mm b/ios/extensions/LayoutManagerExtension.mm index 19b19a120..90c9d7982 100644 --- a/ios/extensions/LayoutManagerExtension.mm +++ b/ios/extensions/LayoutManagerExtension.mm @@ -141,13 +141,10 @@ - (void)drawCodeBlocks:(id)host UIRectCornerBottomRight; } - UIBezierPath *path = [UIBezierPath - bezierPathWithRoundedRect:lineBgRect - byRoundingCorners: - cornersForThisLine - cornerRadii:CGSizeMake( - radius, - radius)]; + UIBezierPath *path = + EnrichedRoundedRectPath( + lineBgRect, cornersForThisLine, + radius); [path fill]; isFirstLineOfParagraph = NO; @@ -232,7 +229,7 @@ - (void)drawBlockQuotes:(id)host CGRectMake(x, y, width, height); [[host.config blockquoteBorderColor] setFill]; - UIRectFill(lineRect); + EnrichedRectFill(lineRect); }]; } } @@ -392,10 +389,10 @@ - (NSString *)getDecimalMarkerForList:(id)host // and text stays at the bottom. This strips that padding so markers align with // the text, not the full line box. - (CGRect)getTextAlignedUsedRect:(CGRect)usedRect font:(UIFont *)font { - if (font && usedRect.size.height > font.lineHeight) { - CGFloat extraSpace = usedRect.size.height - font.lineHeight; + if (font && usedRect.size.height > EnrichedFontLineHeight(font)) { + CGFloat extraSpace = usedRect.size.height - EnrichedFontLineHeight(font); usedRect.origin.y += extraSpace; - usedRect.size.height = font.lineHeight; + usedRect.size.height = EnrichedFontLineHeight(font); } return usedRect; } @@ -417,7 +414,7 @@ - (void)drawCheckbox:(id)host CGFloat boxX = origin.x + indent - gapWidth - boxSize; CGFloat boxY = centerY - boxSize / 2.0; - [image drawInRect:CGRectMake(boxX, boxY, boxSize, boxSize)]; + EnrichedDrawImageInRect(image, CGRectMake(boxX, boxY, boxSize, boxSize)); } - (void)drawBullet:(id)host diff --git a/ios/extensions/StringExtension.h b/ios/extensions/StringExtension.h index 365ae8ab1..5af061009 100644 --- a/ios/extensions/StringExtension.h +++ b/ios/extensions/StringExtension.h @@ -1,5 +1,5 @@ +#import "platform/EnrichedPlatform.h" #include "string" -#import #pragma once @interface NSString (StringExtension) diff --git a/ios/htmlParser/HtmlParser.h b/ios/htmlParser/HtmlParser.h index 4258a9eb1..c6d2ffd36 100644 --- a/ios/htmlParser/HtmlParser.h +++ b/ios/htmlParser/HtmlParser.h @@ -1,6 +1,6 @@ #pragma once #import "interfaces/EnrichedViewHost.h" -#import +#import "platform/EnrichedPlatform.h" @class EnrichedConfig; diff --git a/ios/inputAttributesManager/InputAttributesManager.h b/ios/inputAttributesManager/InputAttributesManager.h index b4ba67a7b..4f4c4f1cb 100644 --- a/ios/inputAttributesManager/InputAttributesManager.h +++ b/ios/inputAttributesManager/InputAttributesManager.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @class EnrichedTextInputView; diff --git a/ios/inputAttributesManager/InputAttributesManager.mm b/ios/inputAttributesManager/InputAttributesManager.mm index bcf793214..33eb4591a 100644 --- a/ios/inputAttributesManager/InputAttributesManager.mm +++ b/ios/inputAttributesManager/InputAttributesManager.mm @@ -3,6 +3,7 @@ #import "extensions/ArrayExtension.h" #import "interfaces/AttributeEntry.h" #import "interfaces/StyleHeaders.h" +#import "platform/EnrichedPlatform.h" #import "utils/AlignmentUtils.h" #import "utils/ParagraphAttributesUtils.h" #import "utils/RangeUtils.h" @@ -196,6 +197,20 @@ - (void)manageTypingAttributesWithOnlySelection:(BOOL)onlySelectionChanged { for (NSString *key in _input->textView.typingAttributes.allKeys) { if ([_customAttributesKeys containsObject:key]) { +#if TARGET_OS_OSX + // AppKit internally applies styles present in the previous character, + // we want the inline images and links to not be extendable + StyleBase *linkStyle = _input->stylesDict[@([LinkStyle getType])]; + if (linkStyle != nil && [[linkStyle getKey] isEqualToString:key]) { + continue; + } + + StyleBase *imageStyle = _input->stylesDict[@([ImageStyle getType])]; + if (imageStyle != nil && [[imageStyle getKey] isEqualToString:key]) { + continue; + } +#endif + if ([key isEqualToString:NSParagraphStyleAttributeName]) { // NSParagraphStyle for paragraph styles -> only keep the textLists // property @@ -230,9 +245,32 @@ - (void)manageTypingAttributesWithOnlySelection:(BOOL)onlySelectionChanged { // the cursor correctly reflects the current formatting state (e.g. heading // size). for (StyleBase *style in _input->stylesDict.allValues) { - if ([style appliesStylingToTyping] && [style detect:selectedRange]) { + BOOL isActive = [style detect:selectedRange]; + + if ([style appliesStylingToTyping] && isActive) { [style applyStylingToTypingAttrs:newAttrs]; } + +#if TARGET_OS_OSX + // AppKit often clears textLists from typingAttributes, so we can't trust + // the existing typingAttributes, grabbing the intact NSParagraphStyle + // directly from the current paragraph's text storage. + if ([style isParagraph] && isActive) { + NSRange paraRange = + [textView.textStorage.string paragraphRangeForRange:selectedRange]; + + if (paraRange.location < textView.textStorage.length) { + NSParagraphStyle *pStyle = + [textView.textStorage attribute:NSParagraphStyleAttributeName + atIndex:paraRange.location + effectiveRange:nil]; + + if (pStyle != nil && pStyle.textLists.count > 0) { + newAttrs[NSParagraphStyleAttributeName] = [pStyle mutableCopy]; + } + } + } +#endif } textView.typingAttributes = newAttrs; diff --git a/ios/inputHtmlParser/InputHtmlParser.h b/ios/inputHtmlParser/InputHtmlParser.h index 1de59e5af..cbd5f6d9b 100644 --- a/ios/inputHtmlParser/InputHtmlParser.h +++ b/ios/inputHtmlParser/InputHtmlParser.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface InputHtmlParser : NSObject - (instancetype _Nonnull)initWithInput:(id _Nonnull)input; diff --git a/ios/interfaces/AlignmentEntry.h b/ios/interfaces/AlignmentEntry.h index 129109462..8a35aa5b7 100644 --- a/ios/interfaces/AlignmentEntry.h +++ b/ios/interfaces/AlignmentEntry.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface AlignmentEntry : NSObject diff --git a/ios/interfaces/AttributeEntry.h b/ios/interfaces/AttributeEntry.h index 798823e7a..4e63ab8eb 100644 --- a/ios/interfaces/AttributeEntry.h +++ b/ios/interfaces/AttributeEntry.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface AttributeEntry : NSObject diff --git a/ios/interfaces/EnrichedViewHost.h b/ios/interfaces/EnrichedViewHost.h index 21bb01432..298b2ea88 100644 --- a/ios/interfaces/EnrichedViewHost.h +++ b/ios/interfaces/EnrichedViewHost.h @@ -2,11 +2,11 @@ #import "StyleTypeEnum.h" #import "config/EnrichedConfig.h" #import "inputAttributesManager/InputAttributesManager.h" -#import +#import "platform/EnrichedPlatform.h" @protocol EnrichedViewHost @required -@property(nonatomic, readonly) UITextView *_Nonnull textView; +@property(nonatomic, readonly) EnrichedBaseTextView *_Nonnull textView; @property(nonatomic, readonly) EnrichedConfig *_Nonnull config; @property(nonatomic, readonly) NSDictionary *_Nonnull stylesDict; diff --git a/ios/interfaces/ImageAttachment.mm b/ios/interfaces/ImageAttachment.mm index 491a20777..30647d0da 100644 --- a/ios/interfaces/ImageAttachment.mm +++ b/ios/interfaces/ImageAttachment.mm @@ -91,7 +91,12 @@ - (void)loadAsync { dispatch_async(dispatch_get_main_queue(), ^{ if (bytes != nil && img != nil && self.uri.length > 0) { +#if !TARGET_OS_OSX CGFloat scale = img.scale; +#else + // NSImage sizes are expressed in points already. + CGFloat scale = 1.0; +#endif // Calculate true byte cost based on pixels // Width (in pixels) * Height (in pixels) * 4 bytes (for RGBA channels) NSUInteger cost = (NSUInteger)(img.size.width * scale * diff --git a/ios/interfaces/ImageData.h b/ios/interfaces/ImageData.h index 266ec6262..c7f4a0a93 100644 --- a/ios/interfaces/ImageData.h +++ b/ios/interfaces/ImageData.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface ImageData : NSObject diff --git a/ios/interfaces/LinkData.h b/ios/interfaces/LinkData.h index 30b9d9ac5..730db6a35 100644 --- a/ios/interfaces/LinkData.h +++ b/ios/interfaces/LinkData.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface LinkData : NSObject diff --git a/ios/interfaces/LinkRegexConfig.h b/ios/interfaces/LinkRegexConfig.h index cf5df3410..fc2b6511b 100644 --- a/ios/interfaces/LinkRegexConfig.h +++ b/ios/interfaces/LinkRegexConfig.h @@ -1,6 +1,6 @@ #pragma once #import "generated/ReactCodegen/ReactNativeEnrichedSpec/Props.h" -#import +#import "platform/EnrichedPlatform.h" using namespace facebook::react; diff --git a/ios/interfaces/MediaAttachment.h b/ios/interfaces/MediaAttachment.h index 050a993f8..0d3e1499e 100644 --- a/ios/interfaces/MediaAttachment.h +++ b/ios/interfaces/MediaAttachment.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" @class MediaAttachment; diff --git a/ios/interfaces/MentionParams.h b/ios/interfaces/MentionParams.h index 698a31da9..476805d48 100644 --- a/ios/interfaces/MentionParams.h +++ b/ios/interfaces/MentionParams.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface MentionParams : NSObject @property NSString *text; diff --git a/ios/interfaces/MentionStyleProps.h b/ios/interfaces/MentionStyleProps.h index f83d1bc40..8d783d65b 100644 --- a/ios/interfaces/MentionStyleProps.h +++ b/ios/interfaces/MentionStyleProps.h @@ -1,7 +1,7 @@ #pragma once #import "TextDecorationLineEnum.h" +#import "platform/EnrichedPlatform.h" #import "string" -#import #import @interface MentionStyleProps : NSObject diff --git a/ios/interfaces/StyleBase.h b/ios/interfaces/StyleBase.h index 343f88de3..95b684b65 100644 --- a/ios/interfaces/StyleBase.h +++ b/ios/interfaces/StyleBase.h @@ -3,7 +3,7 @@ #import "EnrichedViewHost.h" #import "StylePair.h" #import "StyleTypeEnum.h" -#import +#import "platform/EnrichedPlatform.h" @interface StyleBase : NSObject @property(nonatomic, weak) id host; diff --git a/ios/interfaces/StylePair.h b/ios/interfaces/StylePair.h index e40265af4..5f401b053 100644 --- a/ios/interfaces/StylePair.h +++ b/ios/interfaces/StylePair.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface StylePair : NSObject diff --git a/ios/interfaces/StyleTypeEnum.h b/ios/interfaces/StyleTypeEnum.h index 701d79eaf..88e962e4a 100644 --- a/ios/interfaces/StyleTypeEnum.h +++ b/ios/interfaces/StyleTypeEnum.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" // the order is aligned with the order of tags in parser typedef NS_ENUM(NSInteger, StyleType) { diff --git a/ios/interfaces/TextDecorationLineEnum.h b/ios/interfaces/TextDecorationLineEnum.h index 726e3fff8..f338bde6a 100644 --- a/ios/interfaces/TextDecorationLineEnum.h +++ b/ios/interfaces/TextDecorationLineEnum.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" typedef NSString *TextDecorationLineEnum NS_TYPED_ENUM; extern TextDecorationLineEnum const DecorationUnderline; diff --git a/ios/platform/EnrichedPlatform.h b/ios/platform/EnrichedPlatform.h new file mode 100644 index 000000000..7749d70f4 --- /dev/null +++ b/ios/platform/EnrichedPlatform.h @@ -0,0 +1,166 @@ +#pragma once +#include + +// Cross-platform UIKit/AppKit compatibility layer. Every header in the +// library imports this instead of so the same sources +// compile on iOS and on macOS (react-native-macos). + +#if !TARGET_OS_OSX + +#import + +// The platform text view every host component builds upon. +typedef UITextView EnrichedBaseTextView; + +NS_INLINE void EnrichedRectFill(CGRect rect) { UIRectFill(rect); } + +NS_INLINE CGFloat EnrichedFontLineHeight(UIFont *font) { + return font.lineHeight; +} + +NS_INLINE CGFloat EnrichedFontScaledValue(CGFloat value) { + return [[UIFontMetrics defaultMetrics] scaledValueForValue:value]; +} + +NS_INLINE void EnrichedDrawImageInRect(UIImage *image, CGRect rect) { + [image drawInRect:rect]; +} + +NS_INLINE void EnrichedBringSubviewToFront(UIView *parent, UIView *child) { + [parent bringSubviewToFront:child]; +} + +@interface UITextView (EnrichedUIKitCompat) + +// UIKit/AppKit-neutral accessors used by code shared between platforms. +@property(nonatomic, readonly) UIEdgeInsets enrichedTextContainerInset; +@property(nonatomic, readonly) BOOL enrichedHasMarkedText; +@property(nonatomic, readonly) BOOL enrichedIsFirstResponder; + +- (void)enrichedEndEditing; +- (void)enrichedSetTintColor:(nullable UIColor *)color; +- (void)enrichedSetSelectedRange:(NSRange)range; + +@end + +#else // TARGET_OS_OSX + +#import + +#ifdef __cplusplus +extern "C" { +#endif +#import +#ifdef __cplusplus +} +#endif + +// RCTUIKit.h aliases UIFont/UIFontDescriptor/UIBezierPath/UIViewController and +// typedefs UIEdgeInsets, but leaves the rest to consumers. +@compatibility_alias UIColor NSColor; +@compatibility_alias UIImage NSImage; +@compatibility_alias UIImageView NSImageView; +// Not RCTUILabel: its `text` property only implements the setter (the +// auto-synthesized getter returns nil, never the stringValue), which breaks +// shared code that reads label.text. The category below provides both +// accessors on top of a plain NSTextField. +@compatibility_alias UILabel NSTextField; +@compatibility_alias UIView NSView; + +typedef NSTextView EnrichedBaseTextView; + +// Mirrors UIKit's UIRectCorner bit values. +typedef NS_OPTIONS(NSUInteger, UIRectCorner) { + UIRectCornerTopLeft = 1 << 0, + UIRectCornerTopRight = 1 << 1, + UIRectCornerBottomLeft = 1 << 2, + UIRectCornerBottomRight = 1 << 3, + UIRectCornerAllCorners = ~0UL, +}; + +NS_INLINE CGFloat EnrichedFontScaledValue(CGFloat value) { + // Dynamic Type does not exist on macOS. + return value; +} + +NS_INLINE CGFloat EnrichedFontLineHeight(NSFont *font) { + return UIFontLineHeight(font); +} + +#ifdef __cplusplus +extern "C" { +#endif +void EnrichedRectFill(CGRect rect); +void EnrichedDrawImageInRect(NSImage *image, CGRect rect); +void EnrichedBringSubviewToFront(NSView *parent, NSView *child); +#ifdef __cplusplus +} +#endif + +@interface NSTextView (EnrichedUIKitCompat) + +// UITextView.text +@property(nonatomic, copy, nullable) NSString *text; + +// UITextView.scrollEnabled — forwards to the enclosing NSScrollView. +@property(nonatomic, assign, getter=isScrollEnabled) BOOL scrollEnabled; + +// UITextView.textContainerInset expressed as UIEdgeInsets. NSTextView's own +// textContainerInset is a symmetric NSSize; the real drawing origin is +// textContainerOrigin. +@property(nonatomic, readonly) UIEdgeInsets enrichedTextContainerInset; + +// UITextView.markedTextRange != nil +@property(nonatomic, readonly) BOOL enrichedHasMarkedText; + +// UIResponder.isFirstResponder +@property(nonatomic, readonly) BOOL enrichedIsFirstResponder; + +// UIView.endEditing: +- (void)enrichedEndEditing; + +// UITextView.tintColor — maps to insertion point + selection highlight. +- (void)enrichedSetTintColor:(nullable NSColor *)color; + +// UITextView.selectedRange +- (void)enrichedSetSelectedRange:(NSRange)range; + +@end + +@interface NSTextField (EnrichedUIKitCompat) + +// UILabel.text +@property(nonatomic, copy, nullable) NSString *text; + +// UILabel.attributedText +@property(nonatomic, copy, nullable) NSAttributedString *attributedText; + +@end + +// Placeholder label that is transparent to mouse events. UILabel has +// userInteractionEnabled == NO by default, but NSTextField is an NSControl +// that participates in hit-testing and swallows every mouseDown — placed on +// top of the text view it would block clicks from ever focusing the input. +@interface EnrichedPlaceholderLabel : NSTextField +@end + +@interface NSImage (EnrichedUIKitCompat) + ++ (nullable NSImage *)imageWithData:(nonnull NSData *)data; ++ (nullable NSImage *)systemImageNamed:(nonnull NSString *)name; + +@end + +#endif // TARGET_OS_OSX + +#ifdef __cplusplus +extern "C" { +#endif +// UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii: has no +// AppKit equivalent, so both platforms go through this helper. +UIBezierPath *_Nonnull EnrichedRoundedRectPath(CGRect rect, + UIRectCorner corners, + CGFloat radius); +#ifdef __cplusplus +} +#endif diff --git a/ios/platform/EnrichedPlatform.mm b/ios/platform/EnrichedPlatform.mm new file mode 100644 index 000000000..c9d30c4d0 --- /dev/null +++ b/ios/platform/EnrichedPlatform.mm @@ -0,0 +1,211 @@ +#import "EnrichedPlatform.h" + +#import + +#if !TARGET_OS_OSX + +UIBezierPath *EnrichedRoundedRectPath(CGRect rect, UIRectCorner corners, + CGFloat radius) { + return [UIBezierPath bezierPathWithRoundedRect:rect + byRoundingCorners:corners + cornerRadii:CGSizeMake(radius, radius)]; +} + +@implementation UITextView (EnrichedUIKitCompat) + +- (UIEdgeInsets)enrichedTextContainerInset { + return self.textContainerInset; +} + +- (BOOL)enrichedHasMarkedText { + return self.markedTextRange != nil; +} + +- (BOOL)enrichedIsFirstResponder { + return self.isFirstResponder; +} + +- (void)enrichedEndEditing { + [self endEditing:NO]; +} + +- (void)enrichedSetTintColor:(UIColor *)color { + if (color != nil) { + self.tintColor = color; + } +} + +- (void)enrichedSetSelectedRange:(NSRange)range { + self.selectedRange = range; +} + +@end + +#else // TARGET_OS_OSX + +void EnrichedRectFill(CGRect rect) { + // NSRectFill uses copy blending which would erase underlying content on + // transparent backgrounds; source-over matches UIRectFill. + NSRectFillUsingOperation(rect, NSCompositingOperationSourceOver); +} + +void EnrichedDrawImageInRect(NSImage *image, CGRect rect) { + [image drawInRect:rect + fromRect:NSZeroRect + operation:NSCompositingOperationSourceOver + fraction:1.0 + respectFlipped:YES + hints:nil]; +} + +void EnrichedBringSubviewToFront(NSView *parent, NSView *child) { + if (child.superview == parent) { + [child removeFromSuperview]; + } + [parent addSubview:child positioned:NSWindowAbove relativeTo:nil]; +} + +UIBezierPath *EnrichedRoundedRectPath(CGRect rect, UIRectCorner corners, + CGFloat radius) { + NSBezierPath *path = [NSBezierPath bezierPath]; + CGFloat minX = NSMinX(rect), midX = NSMidX(rect), maxX = NSMaxX(rect); + CGFloat minY = NSMinY(rect), midY = NSMidY(rect), maxY = NSMaxY(rect); + + CGFloat topLeft = (corners & UIRectCornerTopLeft) ? radius : 0; + CGFloat topRight = (corners & UIRectCornerTopRight) ? radius : 0; + CGFloat bottomLeft = (corners & UIRectCornerBottomLeft) ? radius : 0; + CGFloat bottomRight = (corners & UIRectCornerBottomRight) ? radius : 0; + + // The library always draws into flipped (top-left origin) text view + // contexts, so "top" here means minY, matching UIKit's UIRectCorner. + [path moveToPoint:NSMakePoint(midX, minY)]; + [path appendBezierPathWithArcFromPoint:NSMakePoint(maxX, minY) + toPoint:NSMakePoint(maxX, midY) + radius:topRight]; + [path appendBezierPathWithArcFromPoint:NSMakePoint(maxX, maxY) + toPoint:NSMakePoint(midX, maxY) + radius:bottomRight]; + [path appendBezierPathWithArcFromPoint:NSMakePoint(minX, maxY) + toPoint:NSMakePoint(minX, midY) + radius:bottomLeft]; + [path appendBezierPathWithArcFromPoint:NSMakePoint(minX, minY) + toPoint:NSMakePoint(midX, minY) + radius:topLeft]; + [path closePath]; + return path; +} + +@implementation NSTextView (EnrichedUIKitCompat) + +- (NSString *)text { + return self.string; +} + +- (void)setText:(NSString *)text { + self.string = text ?: @""; +} + +- (BOOL)isScrollEnabled { + NSScrollView *scrollView = self.enclosingScrollView; + return scrollView != nil && scrollView.hasVerticalScroller; +} + +- (void)setScrollEnabled:(BOOL)scrollEnabled { + NSScrollView *scrollView = self.enclosingScrollView; + scrollView.hasVerticalScroller = scrollEnabled; + scrollView.verticalScrollElasticity = + scrollEnabled ? NSScrollElasticityAutomatic : NSScrollElasticityNone; +} + +- (UIEdgeInsets)enrichedTextContainerInset { + NSPoint origin = self.textContainerOrigin; + return NSEdgeInsetsMake(origin.y, origin.x, self.textContainerInset.height, + origin.x); +} + +- (BOOL)enrichedHasMarkedText { + return self.hasMarkedText; +} + +- (BOOL)enrichedIsFirstResponder { + return self.window.firstResponder == self; +} + +- (void)enrichedEndEditing { + if (self.enrichedIsFirstResponder) { + [self.window makeFirstResponder:nil]; + } +} + +- (void)enrichedSetTintColor:(NSColor *)color { + if (color == nil) { + return; + } + self.insertionPointColor = color; + NSMutableDictionary *attributes = + [self.selectedTextAttributes mutableCopy] ?: [NSMutableDictionary new]; + attributes[NSBackgroundColorAttributeName] = + [color colorWithAlphaComponent:0.25]; + self.selectedTextAttributes = attributes; +} + +- (void)enrichedSetSelectedRange:(NSRange)range { + // AppKit internally resets typingAttributes on selectedRange + // changes, so we skip it if not needed + if (!NSEqualRanges(self.selectedRange, range)) { + // AppKit internally resets typingAttributes on selectedRange changes, so we + // manually re-apply them + NSDictionary *preEditTypingAttrs = + [self.typingAttributes copy]; + + self.selectedRange = range; + self.typingAttributes = preEditTypingAttrs; + } +} + +@end + +@implementation NSTextField (EnrichedUIKitCompat) + +- (NSString *)text { + return self.stringValue; +} + +- (void)setText:(NSString *)text { + self.stringValue = text ?: @""; +} + +- (NSAttributedString *)attributedText { + return self.attributedStringValue; +} + +- (void)setAttributedText:(NSAttributedString *)attributedText { + self.attributedStringValue = attributedText ?: [NSAttributedString new]; +} + +@end + +@implementation EnrichedPlaceholderLabel + +// The label is constrained to cover the whole text view, so it must never win +// hit-testing — otherwise clicks would not reach (and focus) the NSTextView +// underneath it. +- (NSView *)hitTest:(NSPoint)point { + return nil; +} + +@end + +@implementation NSImage (EnrichedUIKitCompat) + ++ (NSImage *)imageWithData:(NSData *)data { + return [[NSImage alloc] initWithData:data]; +} + ++ (NSImage *)systemImageNamed:(NSString *)name { + return [NSImage imageWithSystemSymbolName:name accessibilityDescription:nil]; +} + +@end + +#endif // TARGET_OS_OSX diff --git a/ios/styles/AlignmentStyle.mm b/ios/styles/AlignmentStyle.mm index da7a4f15b..871a4cd53 100644 --- a/ios/styles/AlignmentStyle.mm +++ b/ios/styles/AlignmentStyle.mm @@ -93,7 +93,7 @@ - (void)reapplyFromStylePair:(StylePair *)pair { } - (NSString *)getStyleState { - UITextView *textView = self.host.textView; + EnrichedBaseTextView *textView = self.host.textView; NSParagraphStyle *paraStyle = textView.typingAttributes[NSParagraphStyleAttributeName]; diff --git a/ios/styles/LinkStyle.mm b/ios/styles/LinkStyle.mm index 488d5a23f..741cd4187 100644 --- a/ios/styles/LinkStyle.mm +++ b/ios/styles/LinkStyle.mm @@ -186,8 +186,10 @@ - (void)addLink:(LinkData *)linkData // don't need the selection fix if (linkData.isManual && withSelection) { [self.host.textView reactFocus]; - self.host.textView.selectedRange = - NSMakeRange(range.location + linkData.text.length, 0); + [self.host.textView + enrichedSetSelectedRange:NSMakeRange(range.location + + linkData.text.length, + 0)]; } } else { // replace text with link diff --git a/ios/styles/MentionStyle.mm b/ios/styles/MentionStyle.mm index aa625c960..d9aa419d7 100644 --- a/ios/styles/MentionStyle.mm +++ b/ios/styles/MentionStyle.mm @@ -256,7 +256,7 @@ - (void)startMentionWithIndicator:(NSString *)indicator { } [self.host.textView reactFocus]; - self.host.textView.selectedRange = newSelect; + [self.host.textView enrichedSetSelectedRange:newSelect]; } // handles removing no longer valid mentions diff --git a/ios/textHtmlParser/TextHtmlParser.h b/ios/textHtmlParser/TextHtmlParser.h index 55a640888..67ff13011 100644 --- a/ios/textHtmlParser/TextHtmlParser.h +++ b/ios/textHtmlParser/TextHtmlParser.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @class EnrichedTextView; diff --git a/ios/utils/AlignmentUtils.h b/ios/utils/AlignmentUtils.h index 42a8c0e78..966aeaba9 100644 --- a/ios/utils/AlignmentUtils.h +++ b/ios/utils/AlignmentUtils.h @@ -1,7 +1,7 @@ #import "EnrichedTextInputView.h" #import "interfaces/AlignmentEntry.h" #import "interfaces/StyleHeaders.h" -#import +#import "platform/EnrichedPlatform.h" @interface AlignmentUtils : NSObject diff --git a/ios/utils/AttachmentLayoutUtils.h b/ios/utils/AttachmentLayoutUtils.h index 6245302c2..4f32181cc 100644 --- a/ios/utils/AttachmentLayoutUtils.h +++ b/ios/utils/AttachmentLayoutUtils.h @@ -1,16 +1,16 @@ #pragma once #import "config/EnrichedConfig.h" #import "interfaces/ImageAttachment.h" -#import +#import "platform/EnrichedPlatform.h" @interface AttachmentLayoutUtils : NSObject + (void)handleAttachmentUpdate:(MediaAttachment *)attachment - textView:(UITextView *)textView + textView:(EnrichedBaseTextView *)textView onLayoutBlock:(dispatch_block_t)layoutBlock; + (NSMutableDictionary *) - layoutAttachmentsInTextView:(UITextView *)textView + layoutAttachmentsInTextView:(EnrichedBaseTextView *)textView config:(EnrichedConfig *)config existingViews: (NSMutableDictionary *) @@ -18,7 +18,7 @@ + (CGRect)frameForAttachment:(ImageAttachment *)attachment atRange:(NSRange)range - textView:(UITextView *)textView + textView:(EnrichedBaseTextView *)textView config:(EnrichedConfig *)config; @end diff --git a/ios/utils/AttachmentLayoutUtils.mm b/ios/utils/AttachmentLayoutUtils.mm index ace6ee346..8f5968120 100644 --- a/ios/utils/AttachmentLayoutUtils.mm +++ b/ios/utils/AttachmentLayoutUtils.mm @@ -3,7 +3,7 @@ @implementation AttachmentLayoutUtils + (void)handleAttachmentUpdate:(MediaAttachment *)attachment - textView:(UITextView *)textView + textView:(EnrichedBaseTextView *)textView onLayoutBlock:(dispatch_block_t)layoutBlock { NSTextStorage *storage = textView.textStorage; NSRange fullRange = NSMakeRange(0, storage.length); @@ -32,7 +32,7 @@ + (void)handleAttachmentUpdate:(MediaAttachment *)attachment } + (NSMutableDictionary *) - layoutAttachmentsInTextView:(UITextView *)textView + layoutAttachmentsInTextView:(EnrichedBaseTextView *)textView config:(EnrichedConfig *)config existingViews: (NSMutableDictionary *) @@ -64,9 +64,14 @@ + (void)handleAttachmentUpdate:(MediaAttachment *)attachment if (!imgView) { // It doesn't exist yet, create it imgView = [[UIImageView alloc] initWithFrame:rect]; +#if !TARGET_OS_OSX imgView.contentMode = UIViewContentModeScaleAspectFit; - imgView.tintColor = [UIColor labelColor]; +#else + imgView.imageScaling = NSImageScaleProportionallyUpOrDown; + // Enables animation of GIF images. + imgView.animates = YES; +#endif // Add it directly to the TextView [textView addSubview:imgView]; @@ -76,6 +81,13 @@ + (void)handleAttachmentUpdate:(MediaAttachment *)attachment if (!CGRectEqualToRect(imgView.frame, rect)) { imgView.frame = rect; } + +#if !TARGET_OS_OSX + imgView.tintColor = [config primaryColor]; +#else + imgView.contentTintColor = [config primaryColor]; +#endif + UIImage *targetImage = attachment.storedAnimatedImage ?: attachment.image; @@ -87,7 +99,7 @@ + (void)handleAttachmentUpdate:(MediaAttachment *)attachment // Ensure it is visible on top imgView.hidden = NO; - [textView bringSubviewToFront:imgView]; + EnrichedBringSubviewToFront(textView, imgView); activeAttachmentViews[key] = imgView; // Remove from the old map so we know it has been @@ -107,7 +119,7 @@ + (void)handleAttachmentUpdate:(MediaAttachment *)attachment + (CGRect)frameForAttachment:(ImageAttachment *)attachment atRange:(NSRange)range - textView:(UITextView *)textView + textView:(EnrichedBaseTextView *)textView config:(EnrichedConfig *)config { NSLayoutManager *layoutManager = textView.layoutManager; NSTextContainer *textContainer = textView.textContainer; @@ -134,8 +146,8 @@ + (CGRect)frameForAttachment:(ImageAttachment *)attachment CGFloat targetY = CGRectGetMaxY(lineRect) + font.descender - attachmentSize.height; CGRect rect = - CGRectMake(glyphRect.origin.x + textView.textContainerInset.left, - targetY + textView.textContainerInset.top, + CGRectMake(glyphRect.origin.x + textView.enrichedTextContainerInset.left, + targetY + textView.enrichedTextContainerInset.top, attachmentSize.width, attachmentSize.height); return CGRectIntegral(rect); diff --git a/ios/utils/CheckboxHitTestUtils.h b/ios/utils/CheckboxHitTestUtils.h index 31686fcb0..fbd2f3896 100644 --- a/ios/utils/CheckboxHitTestUtils.h +++ b/ios/utils/CheckboxHitTestUtils.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" @class EnrichedTextInputView; diff --git a/ios/utils/CheckboxHitTestUtils.mm b/ios/utils/CheckboxHitTestUtils.mm index 78fe181a5..9741fbcaf 100644 --- a/ios/utils/CheckboxHitTestUtils.mm +++ b/ios/utils/CheckboxHitTestUtils.mm @@ -11,15 +11,15 @@ @implementation CheckboxHitTestUtils // MARK: - Coordinate helpers + (CGPoint)containerPointFromViewPoint:(CGPoint)point - textView:(UITextView *)textView { - return CGPointMake(point.x - textView.textContainerInset.left, - point.y - textView.textContainerInset.top); + textView:(EnrichedBaseTextView *)textView { + return CGPointMake(point.x - textView.enrichedTextContainerInset.left, + point.y - textView.enrichedTextContainerInset.top); } // MARK: - Glyph lookup + (NSUInteger)glyphIndexAtContainerPoint:(CGPoint)point - textView:(UITextView *)textView { + textView:(EnrichedBaseTextView *)textView { return [textView.layoutManager glyphIndexForPoint:point inTextContainer:textView.textContainer fractionOfDistanceThroughGlyph:nil]; @@ -29,7 +29,7 @@ + (NSUInteger)glyphIndexAtContainerPoint:(CGPoint)point + (BOOL)isCheckboxGlyph:(NSUInteger)glyphIndex inInput:(EnrichedTextInputView *)input { - UITextView *textView = input->textView; + EnrichedBaseTextView *textView = input->textView; NSLayoutManager *layoutManager = textView.layoutManager; NSTextStorage *storage = textView.textStorage; @@ -54,7 +54,7 @@ + (BOOL)isCheckboxGlyph:(NSUInteger)glyphIndex + (CGRect)checkboxRectForGlyphIndex:(NSUInteger)glyphIndex inInput:(EnrichedTextInputView *)input { - UITextView *textView = input->textView; + EnrichedBaseTextView *textView = input->textView; NSLayoutManager *layoutManager = textView.layoutManager; EnrichedConfig *config = input->config; @@ -87,7 +87,7 @@ + (CGRect)expandedHitRectFromCheckboxRect:(CGRect)rect { + (NSInteger)hitTestCheckboxAtPoint:(CGPoint)point inInput:(EnrichedTextInputView *)input { - UITextView *textView = input->textView; + EnrichedBaseTextView *textView = input->textView; CGPoint containerPoint = [self containerPointFromViewPoint:point textView:textView]; diff --git a/ios/utils/DotReplacementUtils.h b/ios/utils/DotReplacementUtils.h index 5e4fc8225..a725dc9de 100644 --- a/ios/utils/DotReplacementUtils.h +++ b/ios/utils/DotReplacementUtils.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" #pragma once @interface DotReplacementUtils : NSObject diff --git a/ios/utils/EnrichedTextTouchHandler.h b/ios/utils/EnrichedTextTouchHandler.h index 8f59bf2f6..370579264 100644 --- a/ios/utils/EnrichedTextTouchHandler.h +++ b/ios/utils/EnrichedTextTouchHandler.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" @class EnrichedTextView; diff --git a/ios/utils/EnrichedTextTouchHandler.mm b/ios/utils/EnrichedTextTouchHandler.mm index c5b9cad69..c5692642e 100644 --- a/ios/utils/EnrichedTextTouchHandler.mm +++ b/ios/utils/EnrichedTextTouchHandler.mm @@ -53,12 +53,12 @@ - (void)handleTouchCancelled { } - (NSUInteger)characterIndexAtPoint:(CGPoint)point { - UITextView *tv = self.view.textView; + EnrichedBaseTextView *tv = self.view.textView; NSLayoutManager *lm = tv.layoutManager; NSTextContainer *tc = tv.textContainer; - CGPoint textOffset = - CGPointMake(tv.textContainerInset.left, tv.textContainerInset.top); + CGPoint textOffset = CGPointMake(tv.enrichedTextContainerInset.left, + tv.enrichedTextContainerInset.top); CGPoint locationInContainer = CGPointMake(point.x - textOffset.x, point.y - textOffset.y); diff --git a/ios/utils/ItalicUtils.h b/ios/utils/ItalicUtils.h index f1fa15113..051a33482 100644 --- a/ios/utils/ItalicUtils.h +++ b/ios/utils/ItalicUtils.h @@ -1,5 +1,5 @@ -#import #pragma once +#import "platform/EnrichedPlatform.h" typedef NS_ENUM(NSInteger, ItalicKind) { // character must not be slanted at all (whitespace, control characters, diff --git a/ios/utils/KeyboardUtils.h b/ios/utils/KeyboardUtils.h index 21e197a89..1ebfd4f73 100644 --- a/ios/utils/KeyboardUtils.h +++ b/ios/utils/KeyboardUtils.h @@ -1,7 +1,11 @@ -#import +#import "platform/EnrichedPlatform.h" #pragma once +#if !TARGET_OS_OSX + @interface KeyboardUtils : NSObject + (UIReturnKeyType)getUIReturnKeyTypeFromReturnKeyType: (NSString *)returnKeyType; @end + +#endif diff --git a/ios/utils/KeyboardUtils.mm b/ios/utils/KeyboardUtils.mm index 65b00a8d5..3e6b9f833 100644 --- a/ios/utils/KeyboardUtils.mm +++ b/ios/utils/KeyboardUtils.mm @@ -1,5 +1,7 @@ #import "KeyboardUtils.h" +#if !TARGET_OS_OSX + @implementation KeyboardUtils + (UIReturnKeyType)getUIReturnKeyTypeFromReturnKeyType: (NSString *)returnKeyType { @@ -28,3 +30,5 @@ + (UIReturnKeyType)getUIReturnKeyTypeFromReturnKeyType: } @end + +#endif diff --git a/ios/utils/ParagraphAttributesUtils.h b/ios/utils/ParagraphAttributesUtils.h index bef8b4587..9b0550b21 100644 --- a/ios/utils/ParagraphAttributesUtils.h +++ b/ios/utils/ParagraphAttributesUtils.h @@ -1,5 +1,5 @@ #import "EnrichedTextInputView.h" -#import +#import "platform/EnrichedPlatform.h" #pragma once @interface ParagraphAttributesUtils : NSObject diff --git a/ios/utils/ParagraphAttributesUtils.mm b/ios/utils/ParagraphAttributesUtils.mm index a8b6d3f3e..173845166 100644 --- a/ios/utils/ParagraphAttributesUtils.mm +++ b/ios/utils/ParagraphAttributesUtils.mm @@ -23,7 +23,7 @@ + (BOOL)handleBackspaceInRange:(NSRange)range // Do not manually intervene if the user is in the middle of IME // composition. Let the iOS system handle the backspace natively to prevent // state desync. - if (typedInput->textView.markedTextRange != nullptr) { + if (typedInput->textView.enrichedHasMarkedText) { return NO; } diff --git a/ios/utils/RangeUtils.h b/ios/utils/RangeUtils.h index 7d5211d09..8e73a77ed 100644 --- a/ios/utils/RangeUtils.h +++ b/ios/utils/RangeUtils.h @@ -1,10 +1,11 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface RangeUtils : NSObject -+ (NSArray *)getSeparateParagraphsRangesIn:(UITextView *)textView ++ (NSArray *)getSeparateParagraphsRangesIn:(EnrichedBaseTextView *)textView range:(NSRange)range; -+ (NSArray *)getNonNewlineRangesIn:(UITextView *)textView range:(NSRange)range; ++ (NSArray *)getNonNewlineRangesIn:(EnrichedBaseTextView *)textView + range:(NSRange)range; + (NSArray *)connectAndDedupeRanges:(NSArray *)ranges; + (NSArray *)shiftRanges:(NSArray *)ranges withEditedRange:(NSRange)editedRange diff --git a/ios/utils/RangeUtils.mm b/ios/utils/RangeUtils.mm index 1a4d79825..3f82bc6aa 100644 --- a/ios/utils/RangeUtils.mm +++ b/ios/utils/RangeUtils.mm @@ -2,7 +2,7 @@ @implementation RangeUtils -+ (NSArray *)getSeparateParagraphsRangesIn:(UITextView *)textView ++ (NSArray *)getSeparateParagraphsRangesIn:(EnrichedBaseTextView *)textView range:(NSRange)range { // just in case, get full paragraphs range NSRange fullRange = @@ -38,7 +38,8 @@ + (NSArray *)getSeparateParagraphsRangesIn:(UITextView *)textView return results; } -+ (NSArray *)getNonNewlineRangesIn:(UITextView *)textView range:(NSRange)range { ++ (NSArray *)getNonNewlineRangesIn:(EnrichedBaseTextView *)textView + range:(NSRange)range { NSMutableArray *nonNewlineRanges = [[NSMutableArray alloc] init]; int lastRangeLocation = int(range.location); diff --git a/ios/utils/ShortcutsUtils.h b/ios/utils/ShortcutsUtils.h index 5812c852b..06be40f03 100644 --- a/ios/utils/ShortcutsUtils.h +++ b/ios/utils/ShortcutsUtils.h @@ -2,7 +2,7 @@ #import "EnrichedTextInputView.h" #import "interfaces/StyleTypeEnum.h" -#import +#import "platform/EnrichedPlatform.h" NS_ASSUME_NONNULL_BEGIN diff --git a/ios/utils/ShortcutsUtils.mm b/ios/utils/ShortcutsUtils.mm index 9375debf6..57f604a02 100644 --- a/ios/utils/ShortcutsUtils.mm +++ b/ios/utils/ShortcutsUtils.mm @@ -252,8 +252,9 @@ + (void)applyInlineShortcutWithMatch:(const ShortcutsTriggerMatch *)match } [style add:ranges->finalContentRange withTyping:NO withDirtyRange:YES]; - input->textView.selectedRange = - NSMakeRange(NSMaxRange(ranges->finalContentRange), 0); + [input->textView + enrichedSetSelectedRange:NSMakeRange( + NSMaxRange(ranges->finalContentRange), 0)]; [style removeTyping]; } diff --git a/ios/utils/TextBlockTapGestureRecognizer.h b/ios/utils/TextBlockTapGestureRecognizer.h index 7bdb513fb..f5f900846 100644 --- a/ios/utils/TextBlockTapGestureRecognizer.h +++ b/ios/utils/TextBlockTapGestureRecognizer.h @@ -1,4 +1,5 @@ -#import +#pragma once +#import "platform/EnrichedPlatform.h" typedef NS_ENUM(NSInteger, TextBlockTapKind) { TextBlockTapKindNone = 0, @@ -7,6 +8,8 @@ typedef NS_ENUM(NSInteger, TextBlockTapKind) { @class EnrichedTextInputView; +#if !TARGET_OS_OSX + @interface TextBlockTapGestureRecognizer : UITapGestureRecognizer - (instancetype _Nonnull)initWithInput:(id _Nonnull)input action:(SEL _Nonnull)action; @@ -17,3 +20,5 @@ typedef NS_ENUM(NSInteger, TextBlockTapKind) { @property(nonatomic, assign, readonly) NSInteger characterIndex; @end + +#endif // !TARGET_OS_OSX diff --git a/ios/utils/TextBlockTapGestureRecognizer.mm b/ios/utils/TextBlockTapGestureRecognizer.mm index 16f6d23d4..16b9aef4b 100644 --- a/ios/utils/TextBlockTapGestureRecognizer.mm +++ b/ios/utils/TextBlockTapGestureRecognizer.mm @@ -2,6 +2,8 @@ #import "CheckboxHitTestUtils.h" #import "EnrichedTextInputView.h" +#if !TARGET_OS_OSX + @implementation TextBlockTapGestureRecognizer { TextBlockTapKind _tapKind; NSInteger _characterIndex; @@ -54,3 +56,5 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { } @end + +#endif // !TARGET_OS_OSX diff --git a/ios/utils/TextInsertionUtils.h b/ios/utils/TextInsertionUtils.h index ba72c8e39..e91a9c3f4 100644 --- a/ios/utils/TextInsertionUtils.h +++ b/ios/utils/TextInsertionUtils.h @@ -1,5 +1,5 @@ #import "interfaces/EnrichedViewHost.h" -#import +#import "platform/EnrichedPlatform.h" @interface TextInsertionUtils : NSObject + (void)insertText:(NSString *)text diff --git a/ios/utils/TextInsertionUtils.mm b/ios/utils/TextInsertionUtils.mm index 541926171..b17e94c49 100644 --- a/ios/utils/TextInsertionUtils.mm +++ b/ios/utils/TextInsertionUtils.mm @@ -12,7 +12,7 @@ + (void)insertText:(NSString *)text return; } - UITextView *textView = host.textView; + EnrichedBaseTextView *textView = host.textView; NSMutableDictionary *copiedAttrs = [textView.typingAttributes mutableCopy]; @@ -22,13 +22,23 @@ + (void)insertText:(NSString *)text NSAttributedString *newAttrStr = [[NSAttributedString alloc] initWithString:text attributes:copiedAttrs]; + +#if TARGET_OS_OSX + NSDictionary *preEditTypingAttrs = + [textView.typingAttributes copy]; +#endif + [textView.textStorage insertAttributedString:newAttrStr atIndex:index]; +#if TARGET_OS_OSX + textView.typingAttributes = preEditTypingAttrs; +#endif + if (withSelection) { - if (![textView isFirstResponder]) { + if (!textView.enrichedIsFirstResponder) { [textView reactFocus]; } - textView.selectedRange = NSMakeRange(index + text.length, 0); + [textView enrichedSetSelectedRange:NSMakeRange(index + text.length, 0)]; } } @@ -42,7 +52,12 @@ + (void)replaceText:(NSString *)text return; } - UITextView *textView = host.textView; + EnrichedBaseTextView *textView = host.textView; +#if TARGET_OS_OSX + NSDictionary *preEditTypingAttrs = + [textView.typingAttributes copy]; +#endif + [textView.textStorage replaceCharactersInRange:range withString:text]; if (additionalAttrs != nullptr) { [textView.textStorage @@ -50,11 +65,16 @@ + (void)replaceText:(NSString *)text range:NSMakeRange(range.location, [text length])]; } +#if TARGET_OS_OSX + textView.typingAttributes = preEditTypingAttrs; +#endif + if (withSelection) { - if (![textView isFirstResponder]) { + if (!textView.enrichedIsFirstResponder) { [textView reactFocus]; } - textView.selectedRange = NSMakeRange(range.location + text.length, 0); + [textView + enrichedSetSelectedRange:NSMakeRange(range.location + text.length, 0)]; } } @end diff --git a/ios/utils/TextListsUtils.h b/ios/utils/TextListsUtils.h index 1ed648402..79d78049e 100644 --- a/ios/utils/TextListsUtils.h +++ b/ios/utils/TextListsUtils.h @@ -1,5 +1,5 @@ #pragma once -#import +#import "platform/EnrichedPlatform.h" @interface TextListsUtils : NSObject diff --git a/ios/utils/WordsUtils.h b/ios/utils/WordsUtils.h index c442d11e6..1440cf2a5 100644 --- a/ios/utils/WordsUtils.h +++ b/ios/utils/WordsUtils.h @@ -1,4 +1,4 @@ -#import +#import "platform/EnrichedPlatform.h" @interface WordsUtils : NSObject + (NSArray *)getAffectedWordsFromText:(NSString *)text diff --git a/ios/utils/ZeroWidthSpaceUtils.h b/ios/utils/ZeroWidthSpaceUtils.h index fc8b543e8..cebd2d459 100644 --- a/ios/utils/ZeroWidthSpaceUtils.h +++ b/ios/utils/ZeroWidthSpaceUtils.h @@ -1,5 +1,5 @@ #import "interfaces/EnrichedViewHost.h" -#import +#import "platform/EnrichedPlatform.h" #pragma once @interface ZeroWidthSpaceUtils : NSObject diff --git a/ios/utils/ZeroWidthSpaceUtils.mm b/ios/utils/ZeroWidthSpaceUtils.mm index 13991a548..62d59df1a 100644 --- a/ios/utils/ZeroWidthSpaceUtils.mm +++ b/ios/utils/ZeroWidthSpaceUtils.mm @@ -73,10 +73,12 @@ + (void)removeSpacesIfNeededinHost:(id)host { } // fix the selection if needed - if ([host.textView isFirstResponder]) { - host.textView.selectedRange = - NSMakeRange(preRemoveSelection.location + postRemoveLocationOffset, - preRemoveSelection.length + postRemoveLengthOffset); + if (host.textView.enrichedIsFirstResponder) { + [host.textView + enrichedSetSelectedRange:NSMakeRange(preRemoveSelection.location + + postRemoveLocationOffset, + preRemoveSelection.length + + postRemoveLengthOffset)]; } } @@ -167,10 +169,12 @@ + (void)addSpacesIfNeededInHost:(id)host } // fix the selection if needed - if ([host.textView isFirstResponder]) { - host.textView.selectedRange = - NSMakeRange(preAddSelection.location + postAddLocationOffset, - preAddSelection.length + postAddLengthOffset); + if (host.textView.enrichedIsFirstResponder) { + [host.textView + enrichedSetSelectedRange:NSMakeRange(preAddSelection.location + + postAddLocationOffset, + preAddSelection.length + + postAddLengthOffset)]; } } diff --git a/package.json b/package.json index d73886315..b692c6ac1 100644 --- a/package.json +++ b/package.json @@ -47,12 +47,14 @@ "example-web": "yarn workspace react-native-enriched-web-example", "docs-install": "cd docs && yarn install", "docs-start": "cd docs && yarn start", + "example-macos": "yarn workspace react-native-enriched-macos-example", "test": "jest --passWithNoTests", - "typecheck": "yarn typecheck:lib && yarn typecheck:example && yarn typecheck:example-web", + "typecheck": "yarn typecheck:lib && yarn typecheck:example && yarn typecheck:example-web && yarn typecheck:example-macos", "typecheck:lib": "tsc -p tsconfig.build.json", "typecheck:example": "tsc -p apps/example/tsconfig.json", "typecheck:example-web": "tsc -p apps/example-web/tsconfig.app.json", "typecheck:docs": "cd docs && yarn typecheck", + "typecheck:example-macos": "tsc -p apps/example-macos/tsconfig.json", "lint": "eslint \"**/*.{js,ts,tsx}\"", "lint:android": "cd apps/example/android && ./gradlew lintVerify", "lint:android:fix": "cd apps/example/android && ./gradlew lintFormat", @@ -67,6 +69,7 @@ "release": "release-it", "android-studio": "open -a 'Android Studio' apps/example/android", "xcode": "open -a 'Xcode' apps/example/ios/EnrichedTextInputExample.xcworkspace", + "xcode:macos": "open -a 'Xcode' apps/example-macos/macos/EnrichedMacOSExample.xcworkspace", "test:e2e:mobile": ".maestro/scripts/run-tests-all.sh", "test:e2e:android": ".maestro/scripts/run-tests.sh --platform android", "test:e2e:ios": ".maestro/scripts/run-tests.sh --platform ios", @@ -76,7 +79,8 @@ "keywords": [ "react-native", "ios", - "android" + "android", + "macos" ], "repository": { "type": "git", @@ -151,6 +155,7 @@ }, "workspaces": [ "apps/example", + "apps/example-macos", "apps/example-web" ], "resolutions": { @@ -164,6 +169,7 @@ "preset": "@react-native/jest-preset", "modulePathIgnorePatterns": [ "/apps/example/node_modules", + "/apps/example-macos/node_modules", "/lib/" ], "testPathIgnorePatterns": [ @@ -181,6 +187,7 @@ ], "modulePathIgnorePatterns": [ "/apps/example/node_modules", + "/apps/example-macos/node_modules", "/lib/" ], "transform": { diff --git a/src/types.ts b/src/types.ts index d478b123c..244ac448e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -91,13 +91,13 @@ export interface EnrichedInputStyle { zIndex?: number; // Shadows - /** @platform ios */ + /** @platform ios macos */ shadowColor?: ColorValue; - /** @platform ios */ + /** @platform ios macos */ shadowOffset?: TextStyle['shadowOffset']; - /** @platform ios */ + /** @platform ios macos */ shadowOpacity?: TextStyle['shadowOpacity']; - /** @platform ios */ + /** @platform ios macos */ shadowRadius?: number; // Transforms @@ -105,56 +105,56 @@ export interface EnrichedInputStyle { transformOrigin?: TextStyle['transformOrigin']; // View appearance - /** @platform ios web */ + /** @platform ios macos web */ backfaceVisibility?: TextStyle['backfaceVisibility']; backgroundColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderBlockColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderBlockEndColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderBlockStartColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderBottomColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderBottomEndRadius?: TextStyle['borderBottomEndRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderBottomLeftRadius?: TextStyle['borderBottomLeftRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderBottomRightRadius?: TextStyle['borderBottomRightRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderBottomStartRadius?: TextStyle['borderBottomStartRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderEndColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderEndEndRadius?: TextStyle['borderEndEndRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderEndStartRadius?: TextStyle['borderEndStartRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderLeftColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderRadius?: TextStyle['borderRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderRightColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderStartColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderStartEndRadius?: TextStyle['borderStartEndRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderStartStartRadius?: TextStyle['borderStartStartRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderStyle?: TextStyle['borderStyle']; - /** @platform ios web */ + /** @platform ios macos web */ borderTopColor?: ColorValue; - /** @platform ios web */ + /** @platform ios macos web */ borderTopEndRadius?: TextStyle['borderTopEndRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderTopLeftRadius?: TextStyle['borderTopLeftRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderTopRightRadius?: TextStyle['borderTopRightRadius']; - /** @platform ios web */ + /** @platform ios macos web */ borderTopStartRadius?: TextStyle['borderTopStartRadius']; boxShadow?: TextStyle['boxShadow']; /** @platform web */ @@ -166,13 +166,13 @@ export interface EnrichedInputStyle { /** @platform android web */ mixBlendMode?: TextStyle['mixBlendMode']; opacity?: TextStyle['opacity']; - /** @platform ios web */ + /** @platform ios macos web */ outlineColor?: ColorValue; outlineOffset?: TextStyle['outlineOffset']; /** @platform android web */ outlineStyle?: TextStyle['outlineStyle']; outlineWidth?: TextStyle['outlineWidth']; - /** @platform ios web */ + /** @platform ios macos web */ pointerEvents?: TextStyle['pointerEvents']; // Typography @@ -666,7 +666,10 @@ export interface EnrichedTextInputProps extends Omit { /** Highlight color for selected text. */ selectionColor?: ColorValue; - /** Controls automatic capitalization of typed text. Defaults to `"sentences"`. */ + /** + * Controls automatic capitalization of typed text. Defaults to `"sentences"`. + * Ignored on macOS (no software keyboard). + */ autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters'; /** If false, disables auto-correct. Defaults `true`. */ @@ -697,7 +700,10 @@ export interface EnrichedTextInputProps extends Omit { */ linkRegex?: RegExp | null; - /** The label shown on the return key of the software keyboard. */ + /** + * The label shown on the return key of the software keyboard. + * Ignored on macOS (no software keyboard). + */ returnKeyType?: ReturnKeyTypeOptions; /** Custom text label for the return key (Android only). */ @@ -826,7 +832,7 @@ export interface EnrichedTextInputProps extends Omit { /** * If true, fonts will scale to respect the system's accessibility text size. - * Enabled by default. + * Enabled by default. Has no effect on macOS, which has no Dynamic Type. */ allowFontScaling?: boolean; } @@ -907,7 +913,7 @@ export interface EnrichedTextProps extends ViewProps { /** * If true, fonts will scale to respect the system's accessibility text size. - * Enabled by default. + * Enabled by default. Has no effect on macOS, which has no Dynamic Type. */ allowFontScaling?: boolean; diff --git a/src/web/nativeMappers/returnKeyTypeToEnterKeyHint.ts b/src/web/nativeMappers/returnKeyTypeToEnterKeyHint.ts index fc9fa37a4..d67fec7f9 100644 --- a/src/web/nativeMappers/returnKeyTypeToEnterKeyHint.ts +++ b/src/web/nativeMappers/returnKeyTypeToEnterKeyHint.ts @@ -2,13 +2,7 @@ import type { ReturnKeyTypeOptions } from 'react-native'; // Keywords for the HTML global [`enterkeyhint`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/enterkeyhint) attribute export type EnterKeyHint = - | 'enter' - | 'done' - | 'go' - | 'next' - | 'previous' - | 'search' - | 'send'; + 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; // Maps React Native `returnKeyType` to the HTML global `enterkeyhint` attribute // if possible, otherwise falls back to enter. diff --git a/src/web/utils/pasteImages.ts b/src/web/utils/pasteImages.ts index b1a9c3d4f..cd627d12c 100644 --- a/src/web/utils/pasteImages.ts +++ b/src/web/utils/pasteImages.ts @@ -64,8 +64,7 @@ export function handleClipboardPasteImages( event: ClipboardEvent, getEditor: () => Editor | null, getOnPasteImages: () => - | ((e: NativeSyntheticEvent) => void) - | undefined + ((e: NativeSyntheticEvent) => void) | undefined ): boolean { const clipboardData = event.clipboardData; if (!clipboardData) return false; diff --git a/turbo.json b/turbo.json index 7e1575db9..cad4500f9 100644 --- a/turbo.json +++ b/turbo.json @@ -41,6 +41,22 @@ "!apps/example/ios/Pods" ], "outputs": [] + }, + "build:macos": { + "env": ["RCT_NEW_ARCH_ENABLED"], + "inputs": [ + "package.json", + "*.podspec", + "ios", + "cpp", + "src/*.ts", + "src/*.tsx", + "apps/example-macos/package.json", + "apps/example-macos/macos", + "!apps/example-macos/macos/build", + "!apps/example-macos/macos/Pods" + ], + "outputs": [] } } } diff --git a/yarn.lock b/yarn.lock index fd571e102..09c1a1596 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,35 +5,19 @@ __metadata: version: 8 cacheKey: 10c0 -"@ark/schema@npm:0.56.0": - version: 0.56.0 - resolution: "@ark/schema@npm:0.56.0" +"@ark/schema@npm:0.56.2": + version: 0.56.2 + resolution: "@ark/schema@npm:0.56.2" dependencies: - "@ark/util": "npm:0.56.0" - checksum: 10c0/89fb7e4e1304ea9b34c834a8cb34bc05201b4e3a1b26277f7d74b9505a2d7ed398bb55a77e491e7a14a7f0807424a5467e1d32ee725ee2f7b9d158ae30d8121a + "@ark/util": "npm:0.56.2" + checksum: 10c0/0825c34969dcf3ff199a50b663eb792469f1c78b45f7dea565b2101fda9ab4e91eb5e088e0a5b6a667a05ddd1cc8b1bcbd6369ab2337655c40e680022fa00892 languageName: node linkType: hard -"@ark/schema@npm:0.56.1": - version: 0.56.1 - resolution: "@ark/schema@npm:0.56.1" - dependencies: - "@ark/util": "npm:0.56.1" - checksum: 10c0/bf3e6e60340795c22e37a701d916f880df357874321104d3c6b6a2f4e5406a13c45e670ff35b31c9e82e29649654ef1a23f6ab925bd3323371d57f4ebde6cfba - languageName: node - linkType: hard - -"@ark/util@npm:0.56.0": - version: 0.56.0 - resolution: "@ark/util@npm:0.56.0" - checksum: 10c0/dfef779c90f9f814ba97069c63bf91fa67569b87c5cd925d0e2d96b91aa677c019ed1dd5ff95332d9bb0598f785057439074b8cbfcaa2578770616e260fc5761 - languageName: node - linkType: hard - -"@ark/util@npm:0.56.1": - version: 0.56.1 - resolution: "@ark/util@npm:0.56.1" - checksum: 10c0/318754c883c3cb8f4fc3f255a1ced3e5325ea65f300235391d74d8e8625757199dad608e20a4955370c4ca6df6dd4fcb5dd87a7369cf016cf3013740c6084eac +"@ark/util@npm:0.56.2": + version: 0.56.2 + resolution: "@ark/util@npm:0.56.2" + checksum: 10c0/dc5757fa7281ec2f202c7b6df8ff3bb154ee6a027eb5c69e7bbc30596fe7385109347c6124bee1e9c3a30c8def3dee7aaaa963103abd4c91dfb4bb1433a537ca languageName: node linkType: hard @@ -92,16 +76,16 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.29.1, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": - version: 7.29.7 - resolution: "@babel/generator@npm:7.29.7" +"@babel/generator@npm:^7.29.1, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.29.8, @babel/generator@npm:^7.7.2": + version: 7.29.8 + resolution: "@babel/generator@npm:7.29.8" dependencies: - "@babel/parser": "npm:^7.29.7" - "@babel/types": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.8" + "@babel/types": "npm:^7.29.8" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 + checksum: 10c0/7b896696314a659652393b76d78276e236acd0f7fae40a9a1af7f01c76aeafc630dd0966aad6f9386d35d7c674a8e6e2d8e217c44d25fb11460e68afa9ba8441 languageName: node linkType: hard @@ -306,14 +290,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.29.0, @babel/parser@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/parser@npm:7.29.7" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.29.0, @babel/parser@npm:^7.29.7, @babel/parser@npm:^7.29.8": + version: 7.29.8 + resolution: "@babel/parser@npm:7.29.8" dependencies: - "@babel/types": "npm:^7.29.7" + "@babel/types": "npm:^7.29.8" bin: parser: ./bin/babel-parser.js - checksum: 10c0/65133038f80b54a714d6027cb77cee3f9a6b5c4c6842ce674301e13947cbcbfa8055e63acaf1b84c085d34226a14425b2c2b97b829e0e226d2e8f1299942a51d + checksum: 10c0/acc890c5e6a6dd40863a47b50bac111d7185ee6fbbe163ebe11d5214854ca2adb901462ad4d718a65090ef84bd2230e9e8ab45a2e0caccc685f1f57ab0bb1e28 languageName: node linkType: hard @@ -651,7 +635,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.29.7": +"@babel/plugin-transform-arrow-functions@npm:^7.24.7, @babel/plugin-transform-arrow-functions@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-arrow-functions@npm:7.29.7" dependencies: @@ -750,7 +734,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.29.7": +"@babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-computed-properties@npm:7.29.7" dependencies: @@ -878,7 +862,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.29.7": +"@babel/plugin-transform-function-name@npm:^7.25.1, @babel/plugin-transform-function-name@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-function-name@npm:7.29.7" dependencies: @@ -902,7 +886,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.29.7": +"@babel/plugin-transform-literals@npm:^7.25.2, @babel/plugin-transform-literals@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-literals@npm:7.29.7" dependencies: @@ -913,7 +897,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.29.7": +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.29.7" dependencies: @@ -960,16 +944,16 @@ __metadata: linkType: hard "@babel/plugin-transform-modules-systemjs@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.7" + version: 7.29.8 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.8" dependencies: "@babel/helper-module-transforms": "npm:^7.29.7" "@babel/helper-plugin-utils": "npm:^7.29.7" "@babel/helper-validator-identifier": "npm:^7.29.7" - "@babel/traverse": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.8" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7b950bcc4a4b077b742b9299c8c9d4285e15854e23816d0b1c1177fafda4c153f3c3c4487c1b965afbf7a69a8788fc75656d0c591b91f0a5a543faabe738ca58 + checksum: 10c0/18167443bae93f485a43a1acdba9e53ac143043b93553d2ca1178030b68d4c1a7d5f5e717198aa8d73f39f33c023090af2270da774484105307e0fada5654687 languageName: node linkType: hard @@ -1019,7 +1003,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.29.7": +"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-numeric-separator@npm:7.29.7" dependencies: @@ -1030,7 +1014,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.29.7": +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.29.7" dependencies: @@ -1080,7 +1064,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.29.7": +"@babel/plugin-transform-parameters@npm:^7.24.7, @babel/plugin-transform-parameters@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-parameters@npm:7.29.7" dependencies: @@ -1199,13 +1183,13 @@ __metadata: linkType: hard "@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/plugin-transform-regenerator@npm:7.29.7" + version: 7.29.8 + resolution: "@babel/plugin-transform-regenerator@npm:7.29.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.29.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b991ab501c1c2c323398054211f8cd992f1db438b5b5d548d63dc74ff9591d52a50385160fdba2b62aae4f9610a321355a8ff911f1c4bd80dc74b555cad61468 + checksum: 10c0/768da9bc3c8cbb0c591bc7db050215b8cea44df9df525d5cd6034aa179b091c2321a745b68139b3fc70b4493f2df1fc99a57acd4029c6d355d32a8ed8bd69f82 languageName: node linkType: hard @@ -1248,7 +1232,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.29.7": +"@babel/plugin-transform-shorthand-properties@npm:^7.24.7, @babel/plugin-transform-shorthand-properties@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.29.7" dependencies: @@ -1259,19 +1243,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/plugin-transform-spread@npm:7.29.7" +"@babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.29.7": + version: 7.29.8 + resolution: "@babel/plugin-transform-spread@npm:7.29.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.29.7" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.29.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a3a5639eac8cc4a9cb3d8b2098a0a341b36e3ae11d29729cac1042d07a31b5290c32fa2c12cd2f122bf581bd0a65fec6b7b6c7446eef5a81e657739a579c0d5c + checksum: 10c0/3af864918afb3389989b5ba5b196a376bb58d1c59657a978d12213766cf052bcf12e66165da6676e5aa08fa64f0c3ec78a124c38ce6b41b88810bb88ba9d0a89 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.29.7": +"@babel/plugin-transform-sticky-regex@npm:^7.24.7, @babel/plugin-transform-sticky-regex@npm:^7.29.7": version: 7.29.7 resolution: "@babel/plugin-transform-sticky-regex@npm:7.29.7" dependencies: @@ -1509,7 +1493,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.28.6, @babel/template@npm:^7.29.7, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.25.0, @babel/template@npm:^7.28.6, @babel/template@npm:^7.29.7, @babel/template@npm:^7.3.3": version: 7.29.7 resolution: "@babel/template@npm:7.29.7" dependencies: @@ -1520,28 +1504,28 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.29.0, @babel/traverse@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/traverse@npm:7.29.7" +"@babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.29.0, @babel/traverse@npm:^7.29.7, @babel/traverse@npm:^7.29.8": + version: 7.29.8 + resolution: "@babel/traverse@npm:7.29.8" dependencies: "@babel/code-frame": "npm:^7.29.7" - "@babel/generator": "npm:^7.29.7" + "@babel/generator": "npm:^7.29.8" "@babel/helper-globals": "npm:^7.29.7" - "@babel/parser": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.8" "@babel/template": "npm:^7.29.7" - "@babel/types": "npm:^7.29.7" + "@babel/types": "npm:^7.29.8" debug: "npm:^4.3.1" - checksum: 10c0/e256a1fbdb956555b76f3c285b1e453f6bedec8b3afb61751d99d933efd11c7d79caf5ddf2493570058a9f7deaa1b48324380d7c1aa1443fd9508becbf56331a + checksum: 10c0/87a28989c434add26d787776ac6d30f749b89cb030f2a605c89f671a516a6fa165ac0476f07e2b69feed70128b2734cae1cbbf41dfe95ccf22081bd8f8b91923 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.29.0, @babel/types@npm:^7.29.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.29.7 - resolution: "@babel/types@npm:7.29.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.29.0, @babel/types@npm:^7.29.7, @babel/types@npm:^7.29.8, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.29.8 + resolution: "@babel/types@npm:7.29.8" dependencies: "@babel/helper-string-parser": "npm:^7.29.7" "@babel/helper-validator-identifier": "npm:^7.29.7" - checksum: 10c0/b6623994c69717fa27294f5fa46d59140338e2d86c6c1c13085c84ef7d53086ee357fbf4fe9abe3dd3da75734dc77c4c0df2f90fb29e667558bb3b3fb705e88f + checksum: 10c0/be7c279f0abf2a086c633e21b49c7ca80275d05283cc5a268b67a708c9914bd0c944f1422b3eb3cb37682a2af5d560abf520ccf9b01b53ecbfe6b71fbc3fdde6 languageName: node linkType: hard @@ -1780,196 +1764,196 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/aix-ppc64@npm:0.27.7" +"@esbuild/aix-ppc64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/aix-ppc64@npm:0.28.2" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-arm64@npm:0.27.7" +"@esbuild/android-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/android-arm64@npm:0.28.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-arm@npm:0.27.7" +"@esbuild/android-arm@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/android-arm@npm:0.28.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-x64@npm:0.27.7" +"@esbuild/android-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/android-x64@npm:0.28.2" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/darwin-arm64@npm:0.27.7" +"@esbuild/darwin-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/darwin-arm64@npm:0.28.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/darwin-x64@npm:0.27.7" +"@esbuild/darwin-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/darwin-x64@npm:0.28.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/freebsd-arm64@npm:0.27.7" +"@esbuild/freebsd-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/freebsd-arm64@npm:0.28.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/freebsd-x64@npm:0.27.7" +"@esbuild/freebsd-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/freebsd-x64@npm:0.28.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-arm64@npm:0.27.7" +"@esbuild/linux-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-arm64@npm:0.28.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-arm@npm:0.27.7" +"@esbuild/linux-arm@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-arm@npm:0.28.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-ia32@npm:0.27.7" +"@esbuild/linux-ia32@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-ia32@npm:0.28.2" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-loong64@npm:0.27.7" +"@esbuild/linux-loong64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-loong64@npm:0.28.2" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-mips64el@npm:0.27.7" +"@esbuild/linux-mips64el@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-mips64el@npm:0.28.2" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-ppc64@npm:0.27.7" +"@esbuild/linux-ppc64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-ppc64@npm:0.28.2" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-riscv64@npm:0.27.7" +"@esbuild/linux-riscv64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-riscv64@npm:0.28.2" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-s390x@npm:0.27.7" +"@esbuild/linux-s390x@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-s390x@npm:0.28.2" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-x64@npm:0.27.7" +"@esbuild/linux-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/linux-x64@npm:0.28.2" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/netbsd-arm64@npm:0.27.7" +"@esbuild/netbsd-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/netbsd-arm64@npm:0.28.2" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/netbsd-x64@npm:0.27.7" +"@esbuild/netbsd-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/netbsd-x64@npm:0.28.2" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openbsd-arm64@npm:0.27.7" +"@esbuild/openbsd-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/openbsd-arm64@npm:0.28.2" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openbsd-x64@npm:0.27.7" +"@esbuild/openbsd-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/openbsd-x64@npm:0.28.2" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openharmony-arm64@npm:0.27.7" +"@esbuild/openharmony-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/openharmony-arm64@npm:0.28.2" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/sunos-x64@npm:0.27.7" +"@esbuild/sunos-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/sunos-x64@npm:0.28.2" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-arm64@npm:0.27.7" +"@esbuild/win32-arm64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/win32-arm64@npm:0.28.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-ia32@npm:0.27.7" +"@esbuild/win32-ia32@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/win32-ia32@npm:0.28.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-x64@npm:0.27.7" +"@esbuild/win32-x64@npm:0.28.2": + version: 0.28.2 + resolution: "@esbuild/win32-x64@npm:0.28.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": - version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1" + version: 4.10.1 + resolution: "@eslint-community/eslint-utils@npm:4.10.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 + checksum: 10c0/b514586655698bc6b74db72a496c77e813c78b63e36a83429845ac7057dd77113b0b6c31e6e590d5baaeee2abae6ea22363a41209bcafa078d895ab83ce83011 languageName: node linkType: hard @@ -2098,9 +2082,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.0, @eslint/eslintrc@npm:^3.3.5": - version: 3.3.5 - resolution: "@eslint/eslintrc@npm:3.3.5" +"@eslint/eslintrc@npm:^3.3.0, @eslint/eslintrc@npm:^3.3.6": + version: 3.3.7 + resolution: "@eslint/eslintrc@npm:3.3.7" dependencies: ajv: "npm:^6.14.0" debug: "npm:^4.3.2" @@ -2108,17 +2092,17 @@ __metadata: globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.1" + js-yaml: "npm:^4.3.2" minimatch: "npm:^3.1.5" strip-json-comments: "npm:^3.1.1" - checksum: 10c0/9fb9f1ca65e46d6173966e3aaa5bd353e3a65d7f1f582bebf77f578fab7d7960a399fac1ecfb1e7d52bd61f5cefd6531087ca52a3a3c388f2e1b4f1ebd3da8b7 + checksum: 10c0/010fca3403489ff109cfb5b9996142a2a4b4be28bbb233eda3c30ed004826aeab84d6914d0c5c4b1cd80add7051525adb7818268e0fb4775ddb6dbc620f00c72 languageName: node linkType: hard -"@eslint/js@npm:9.39.4, @eslint/js@npm:^9.22.0, @eslint/js@npm:^9.39.1": - version: 9.39.4 - resolution: "@eslint/js@npm:9.39.4" - checksum: 10c0/5aa7dea2cbc5decf7f5e3b0c6f86a084ccee0f792d288ca8e839f8bc1b64e03e227068968e49b26096e6f71fd857ab6e42691d1b993826b9a3883f1bdd7a0e46 +"@eslint/js@npm:9.39.5, @eslint/js@npm:^9.22.0, @eslint/js@npm:^9.39.1": + version: 9.39.5 + resolution: "@eslint/js@npm:9.39.5" + checksum: 10c0/49894e98ba313a7d3bfb1b20d55c0f9826be45a7db876fd84e533ac7f101b1d95b51cd22c6a6db3a45066b9c0d068c31b4a22fa0db8a6cc8744a25540efdb824 languageName: node linkType: hard @@ -2149,29 +2133,29 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.7.5": - version: 1.7.5 - resolution: "@floating-ui/core@npm:1.7.5" +"@floating-ui/core@npm:^1.8.0": + version: 1.8.0 + resolution: "@floating-ui/core@npm:1.8.0" dependencies: - "@floating-ui/utils": "npm:^0.2.11" - checksum: 10c0/f9c52205e198b231d63a387b09c659aab08c46a1899e0b0bbe147b8b4f048b546f15ba17cb5d2a471da9534f1883d979425e13e5c4ceee67be63e4b0abd4db5d + "@floating-ui/utils": "npm:^0.2.12" + checksum: 10c0/cece958f6fab0f8cd7740cd57988c4f8bc5356dca39dd4c093433d44c91952c3a02c7a54d93d7ed6c078b6544d531a29f66621d2839c8bfbb4467dca6aed7df0 languageName: node linkType: hard "@floating-ui/dom@npm:^1.0.0": - version: 1.7.6 - resolution: "@floating-ui/dom@npm:1.7.6" + version: 1.8.0 + resolution: "@floating-ui/dom@npm:1.8.0" dependencies: - "@floating-ui/core": "npm:^1.7.5" - "@floating-ui/utils": "npm:^0.2.11" - checksum: 10c0/5c098e0d7b58c9bc769f276cca1766994c2c9c70c92d091a61bba8b3e9be53c011e0a79a8457fc2fb2f3d91697a26eb52e0a4962ef936dc963b45f58613c212f + "@floating-ui/core": "npm:^1.8.0" + "@floating-ui/utils": "npm:^0.2.12" + checksum: 10c0/c32b2de7a596b69cfffa909c7028825e14f6319be1b45da529f8943c89fe16b75a49c214e800c87ded3f172353d3b99163d50072f11410488e756961b7b629cc languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.11": - version: 0.2.11 - resolution: "@floating-ui/utils@npm:0.2.11" - checksum: 10c0/f4bcea1559bdbb721ecc8e8ead423ac58d6a5b6e70b602cf0810ba6ad4ed1c77211b207faa88b278a9042f0c743133de08a203ed6741c1b6443423332884d5b3 +"@floating-ui/utils@npm:^0.2.12": + version: 0.2.12 + resolution: "@floating-ui/utils@npm:0.2.12" + checksum: 10c0/bb910b90d56991a62011afaf5f8e0c4b7fb6dab69403f4dd17fbd6eb25560b28d533dff9791f270b4f459852e9006a1077b5d73cbedb5e34d9424afc6a828314 languageName: node linkType: hard @@ -2580,9 +2564,9 @@ __metadata: linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": - version: 1.5.5 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" - checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + version: 1.6.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.6.0" + checksum: 10c0/b5be700e45a775f218589c3466c4ffea630582b4988657652da464e5ab8a7d18bf928ee4fd2363fb346ede4bea9c6ff0bae05a538358c4565ece6199531b5f72 languageName: node linkType: hard @@ -2596,6 +2580,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/lzma-linux-x64-gnu@npm:1.5.1": + version: 1.5.1 + resolution: "@napi-rs/lzma-linux-x64-gnu@npm:1.5.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": version: 5.1.1-v1 resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" @@ -2816,6 +2807,18 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-clean@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-clean@npm:20.0.0" + dependencies: + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + execa: "npm:^5.0.0" + fast-glob: "npm:^3.3.2" + checksum: 10c0/cd65907bf2bff82abe8a6616802cf1f756340983e9154a93e771710059ccbf863e45046d2568a6bcb85ef1b4e51b883866ce6371950ec27309a6d1e3fc10cbf4 + languageName: node + linkType: hard + "@react-native-community/cli-clean@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-clean@npm:20.2.0" @@ -2828,6 +2831,18 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-config-android@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-config-android@npm:20.0.0" + dependencies: + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + fast-glob: "npm:^3.3.2" + fast-xml-parser: "npm:^4.4.1" + checksum: 10c0/79298ecde495e0587585e8d67431e9543ac83392a06e5c8fb736853d199f0aae014858b1d3db81ce3decf58c2172c95c78eeb27e0f2be2b8a5ad43b96331d0ce + languageName: node + linkType: hard + "@react-native-community/cli-config-android@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-config-android@npm:20.2.0" @@ -2840,6 +2855,18 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-config-apple@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-config-apple@npm:20.0.0" + dependencies: + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + execa: "npm:^5.0.0" + fast-glob: "npm:^3.3.2" + checksum: 10c0/1b11e1dde776ccc3244eb3029eb49239120a89a12ed84bd4957e4e7b81bba4b332ed04a2fb081fd9a9711be65d1a85cf429247fa2daa4010ba4b42b5bf273c2f + languageName: node + linkType: hard + "@react-native-community/cli-config-apple@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-config-apple@npm:20.2.0" @@ -2852,6 +2879,20 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-config@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-config@npm:20.0.0" + dependencies: + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + cosmiconfig: "npm:^9.0.0" + deepmerge: "npm:^4.3.0" + fast-glob: "npm:^3.3.2" + joi: "npm:^17.2.1" + checksum: 10c0/766364c0c1d0f551a98b86317b74e7942521a05111f6c7e2898341c0413c6a55ae91d184bd549109edd61f02065662ada142788dba1090db200cbec00fdfeede + languageName: node + linkType: hard + "@react-native-community/cli-config@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-config@npm:20.2.0" @@ -2866,6 +2907,29 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-doctor@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-doctor@npm:20.0.0" + dependencies: + "@react-native-community/cli-config": "npm:20.0.0" + "@react-native-community/cli-platform-android": "npm:20.0.0" + "@react-native-community/cli-platform-apple": "npm:20.0.0" + "@react-native-community/cli-platform-ios": "npm:20.0.0" + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + command-exists: "npm:^1.2.8" + deepmerge: "npm:^4.3.0" + envinfo: "npm:^7.13.0" + execa: "npm:^5.0.0" + node-stream-zip: "npm:^1.9.1" + ora: "npm:^5.4.1" + semver: "npm:^7.5.2" + wcwidth: "npm:^1.0.1" + yaml: "npm:^2.2.1" + checksum: 10c0/843a7e8e5969154ed171616c3c556389d7debc30035bb6a9d6392876d22ef84d390d02673032bb8c8ac164380a97fe9f62971476aacb06ba3a3b849358e4cb99 + languageName: node + linkType: hard + "@react-native-community/cli-doctor@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-doctor@npm:20.2.0" @@ -2889,6 +2953,19 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-android@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-platform-android@npm:20.0.0" + dependencies: + "@react-native-community/cli-config-android": "npm:20.0.0" + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + execa: "npm:^5.0.0" + logkitty: "npm:^0.7.1" + checksum: 10c0/9c17cbc0661698dd8154286ce893205b91a9f71cb8af8505641fb82ab99217116300fe0dfb8b5e6e9270cf3917c0fb227d45f90322ad7e624d9c65aacf086012 + languageName: node + linkType: hard + "@react-native-community/cli-platform-android@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-platform-android@npm:20.2.0" @@ -2902,6 +2979,19 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-apple@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-platform-apple@npm:20.0.0" + dependencies: + "@react-native-community/cli-config-apple": "npm:20.0.0" + "@react-native-community/cli-tools": "npm:20.0.0" + chalk: "npm:^4.1.2" + execa: "npm:^5.0.0" + fast-xml-parser: "npm:^4.4.1" + checksum: 10c0/a6b2296d6291853f59d3c68302676fea54d68fa6626c14727b7db63280761714785fd70a75d7ae036644a7ea5ebd8211235c64d4dec5297565d734a1c5a3b6c9 + languageName: node + linkType: hard + "@react-native-community/cli-platform-apple@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-platform-apple@npm:20.2.0" @@ -2915,6 +3005,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-ios@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-platform-ios@npm:20.0.0" + dependencies: + "@react-native-community/cli-platform-apple": "npm:20.0.0" + checksum: 10c0/6eb77946cb3392cc548007723b790796360651e62422095da2bbc8a20b7c8e79d9fc32c0155ba669a10c556e6e7327964d59e5755c64f6099708701e4acf8fd3 + languageName: node + linkType: hard + "@react-native-community/cli-platform-ios@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-platform-ios@npm:20.2.0" @@ -2924,6 +3023,24 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-server-api@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-server-api@npm:20.0.0" + dependencies: + "@react-native-community/cli-tools": "npm:20.0.0" + body-parser: "npm:^1.20.3" + compression: "npm:^1.7.1" + connect: "npm:^3.6.5" + errorhandler: "npm:^1.5.1" + nocache: "npm:^3.0.1" + open: "npm:^6.2.0" + pretty-format: "npm:^29.7.0" + serve-static: "npm:^1.13.1" + ws: "npm:^6.2.3" + checksum: 10c0/105099a3b667978880144eb4e1ca1725c57f1fe6bb6f8d09b189f021ecc1ad70f8e865667ef1d921fb85f1bea8d1da766d713672dfde80d6d2cdde47e800d5a8 + languageName: node + linkType: hard + "@react-native-community/cli-server-api@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-server-api@npm:20.2.0" @@ -2942,6 +3059,24 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-tools@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-tools@npm:20.0.0" + dependencies: + "@vscode/sudo-prompt": "npm:^9.0.0" + appdirsjs: "npm:^1.2.4" + chalk: "npm:^4.1.2" + execa: "npm:^5.0.0" + find-up: "npm:^5.0.0" + launch-editor: "npm:^2.9.1" + mime: "npm:^2.4.1" + ora: "npm:^5.4.1" + prompts: "npm:^2.4.2" + semver: "npm:^7.5.2" + checksum: 10c0/3a379558f2673de68d872d740754e242d9dd84dd0a837f94910936faad632f35fc9b61dd9d256e635391815da7a4cbc42c3ca918371d60fb4d5a3b4acea6bffd + languageName: node + linkType: hard + "@react-native-community/cli-tools@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-tools@npm:20.2.0" @@ -2960,6 +3095,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-types@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli-types@npm:20.0.0" + dependencies: + joi: "npm:^17.2.1" + checksum: 10c0/328f623579b3b8e797d833aeb76fad86a75f9da84b45da1d9ffe4c6429a57cd3440d401d3448d15c2b44b69137459033522e3dff87767f887772d8f6055dccc9 + languageName: node + linkType: hard + "@react-native-community/cli-types@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli-types@npm:20.2.0" @@ -2969,6 +3113,31 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli@npm:20.0.0": + version: 20.0.0 + resolution: "@react-native-community/cli@npm:20.0.0" + dependencies: + "@react-native-community/cli-clean": "npm:20.0.0" + "@react-native-community/cli-config": "npm:20.0.0" + "@react-native-community/cli-doctor": "npm:20.0.0" + "@react-native-community/cli-server-api": "npm:20.0.0" + "@react-native-community/cli-tools": "npm:20.0.0" + "@react-native-community/cli-types": "npm:20.0.0" + chalk: "npm:^4.1.2" + commander: "npm:^9.4.1" + deepmerge: "npm:^4.3.0" + execa: "npm:^5.0.0" + find-up: "npm:^5.0.0" + fs-extra: "npm:^8.1.0" + graceful-fs: "npm:^4.1.3" + prompts: "npm:^2.4.2" + semver: "npm:^7.5.2" + bin: + rnc-cli: build/bin.js + checksum: 10c0/ccdbc8ba1f678274772237941993e68143707240762194842fa756fc7d53bcee9114e0b7d3eefaa750ccba41189909fbd7ceaa3a99f5ae781ccf2e98c5ff10b6 + languageName: node + linkType: hard + "@react-native-community/cli@npm:20.2.0": version: 20.2.0 resolution: "@react-native-community/cli@npm:20.2.0" @@ -2994,6 +3163,23 @@ __metadata: languageName: node linkType: hard +"@react-native-macos/virtualized-lists@npm:0.81.9": + version: 0.81.9 + resolution: "@react-native-macos/virtualized-lists@npm:0.81.9" + dependencies: + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@types/react": ^19.1.4 + react: "*" + react-native: "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/8817bed78d96fc645334bad126bf10d5e2cd3db8699786363c9b538af5641a666479c0c8ad782ce5a743675e7dfef134d66fdcf43fd7e212297888080d2a803e + languageName: node + linkType: hard + "@react-native/asset-utils@npm:0.87.0": version: 0.87.0 resolution: "@react-native/asset-utils@npm:0.87.0" @@ -3001,6 +3187,23 @@ __metadata: languageName: node linkType: hard +"@react-native/assets-registry@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/assets-registry@npm:0.81.6" + checksum: 10c0/b02921d95263d73bb584a41cf41bfc0e67b4e3b4a6237218eb9134f769a26abb12fbd16e87b44ecd199eb831665d94da29d52a70adb4c893ff32c5f63681361b + languageName: node + linkType: hard + +"@react-native/babel-plugin-codegen@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/babel-plugin-codegen@npm:0.81.6" + dependencies: + "@babel/traverse": "npm:^7.25.3" + "@react-native/codegen": "npm:0.81.6" + checksum: 10c0/2382139b3edecf2821d556bb8332a5c3710612046e09c9889c4444cb53eba34ef33d0a5a74057d26fa035c08dea98397f9cc455b4b3713a7a6bbc269f21b76b2 + languageName: node + linkType: hard + "@react-native/babel-plugin-codegen@npm:0.87.0": version: 0.87.0 resolution: "@react-native/babel-plugin-codegen@npm:0.87.0" @@ -3011,6 +3214,61 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-preset@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/babel-preset@npm:0.81.6" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" + "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.0" + "@babel/plugin-transform-class-properties": "npm:^7.25.4" + "@babel/plugin-transform-classes": "npm:^7.25.4" + "@babel/plugin-transform-computed-properties": "npm:^7.24.7" + "@babel/plugin-transform-destructuring": "npm:^7.24.8" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-for-of": "npm:^7.24.7" + "@babel/plugin-transform-function-name": "npm:^7.25.1" + "@babel/plugin-transform-literals": "npm:^7.25.2" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-react-display-name": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.2" + "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" + "@babel/plugin-transform-regenerator": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" + "@babel/plugin-transform-spread": "npm:^7.24.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" + "@babel/plugin-transform-typescript": "npm:^7.25.2" + "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" + "@babel/template": "npm:^7.25.0" + "@react-native/babel-plugin-codegen": "npm:0.81.6" + babel-plugin-syntax-hermes-parser: "npm:0.29.1" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + react-refresh: "npm:^0.14.0" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/9d629d786a7310b207222044d702604d3017325d74feb1c362e17e278059c794a2b3ec76271d6a6cbc42f91543e235adae2f6a545114fa9722e0ffe1fba646bd + languageName: node + linkType: hard + "@react-native/babel-preset@npm:0.87.0": version: 0.87.0 resolution: "@react-native/babel-preset@npm:0.87.0" @@ -3054,6 +3312,23 @@ __metadata: languageName: node linkType: hard +"@react-native/codegen@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/codegen@npm:0.81.6" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/parser": "npm:^7.25.3" + glob: "npm:^7.1.1" + hermes-parser: "npm:0.29.1" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + yargs: "npm:^17.6.2" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/1a6117949057f65476a95191137f0ff7799c11d6219e06e3b3c633174e62f3aa0bf06afc093be5a9fcab2ec1b3a4456446ef467b88714f686982f8834f79041b + languageName: node + linkType: hard + "@react-native/codegen@npm:0.87.0": version: 0.87.0 resolution: "@react-native/codegen@npm:0.87.0" @@ -3071,6 +3346,29 @@ __metadata: languageName: node linkType: hard +"@react-native/community-cli-plugin@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/community-cli-plugin@npm:0.81.6" + dependencies: + "@react-native/dev-middleware": "npm:0.81.6" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + metro: "npm:^0.83.1" + metro-config: "npm:^0.83.1" + metro-core: "npm:^0.83.1" + semver: "npm:^7.1.3" + peerDependencies: + "@react-native-community/cli": "*" + "@react-native/metro-config": "*" + peerDependenciesMeta: + "@react-native-community/cli": + optional: true + "@react-native/metro-config": + optional: true + checksum: 10c0/aa2c210421e6f963e3bfcfde37bd6ec0cfa7ec961d84c8e167754283fa288bfbce74cbeb90aabb70e041d4a593f65e10b4a8c668a78f6dcd61d5fde352a07604 + languageName: node + linkType: hard + "@react-native/community-cli-plugin@npm:0.87.0": version: 0.87.0 resolution: "@react-native/community-cli-plugin@npm:0.87.0" @@ -3093,6 +3391,13 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-frontend@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/debugger-frontend@npm:0.81.6" + checksum: 10c0/d0987d33e8ab8847bf9392eeb4bec6559970c82581ca5c0839ac234c3c88e2c0d87a8ae746c8597a4316faf27533c9165b9a18a305359e5968564ca5aaab385e + languageName: node + linkType: hard + "@react-native/debugger-frontend@npm:0.87.0": version: 0.87.0 resolution: "@react-native/debugger-frontend@npm:0.87.0" @@ -3111,6 +3416,25 @@ __metadata: languageName: node linkType: hard +"@react-native/dev-middleware@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/dev-middleware@npm:0.81.6" + dependencies: + "@isaacs/ttlcache": "npm:^1.4.1" + "@react-native/debugger-frontend": "npm:0.81.6" + chrome-launcher: "npm:^0.15.2" + chromium-edge-launcher: "npm:^0.2.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + open: "npm:^7.0.3" + serve-static: "npm:^1.16.2" + ws: "npm:^6.2.3" + checksum: 10c0/cc60df7eab7ca0af735499c3e3c7fb199bd75f7a9cef10fd2bc4a5f7aeb7147844e15320fe287704821e8fe4d20f8af5cfa722888aa1332459581edb9b84393c + languageName: node + linkType: hard + "@react-native/dev-middleware@npm:0.87.0": version: 0.87.0 resolution: "@react-native/dev-middleware@npm:0.87.0" @@ -3132,12 +3456,12 @@ __metadata: linkType: hard "@react-native/eslint-config@npm:^0.87.0": - version: 0.87.0 - resolution: "@react-native/eslint-config@npm:0.87.0" + version: 0.87.1 + resolution: "@react-native/eslint-config@npm:0.87.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/eslint-parser": "npm:^7.25.1" - "@react-native/eslint-plugin": "npm:0.87.0" + "@react-native/eslint-plugin": "npm:0.87.1" "@typescript-eslint/eslint-plugin": "npm:^8.59.2" "@typescript-eslint/parser": "npm:^8.59.2" eslint-config-prettier: "npm:^8.5.0" @@ -3150,14 +3474,21 @@ __metadata: peerDependencies: eslint: ^8.0.0 || ^9.0.0 prettier: ">=2" - checksum: 10c0/18878bd93328d0d663a327e2207ad7aae6bf88857ed94f8e8ddc19b8725ff8625fba5c311128f6758543a37ec63bea01493021c70a6c35cef6ca1264541668f1 + checksum: 10c0/fd8ca6d5253a2e1fe1e6d80a09939c6d579f49dfbbd069d60233524b6465fa8e3de3f88f3d051dd79b8f2d364b13bce9bdc89a52af2d7d0feff47c9494fc2f6d languageName: node linkType: hard -"@react-native/eslint-plugin@npm:0.87.0": - version: 0.87.0 - resolution: "@react-native/eslint-plugin@npm:0.87.0" - checksum: 10c0/080d8d7d6fccc778e9478e3d162df94835f1482781291658650c01fb8de99d356651b88ce6745b1ea1fba98dbd496f2e84529af9efc3be123fa724065162d7cd +"@react-native/eslint-plugin@npm:0.87.1": + version: 0.87.1 + resolution: "@react-native/eslint-plugin@npm:0.87.1" + checksum: 10c0/205eebeabb9bd17db76f141e56fafdd5f6c4b5253cf4e97f5f66f401e642c21501fb8624acba277a050f546f64e5dd4d240febc6ae5e31a6b00b829f30bfe385 + languageName: node + linkType: hard + +"@react-native/gradle-plugin@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/gradle-plugin@npm:0.81.6" + checksum: 10c0/a653380073af624bac408eb696fcf67f8500a7a4bf6cefa4a157a8db3d1bfad51d5f3abf942635e96e2aa4a20e56143a6f1a3f52ff027448775041ce80604ced languageName: node linkType: hard @@ -3168,7 +3499,7 @@ __metadata: languageName: node linkType: hard -"@react-native/jest-preset@npm:0.87.0, @react-native/jest-preset@npm:^0.87.0": +"@react-native/jest-preset@npm:0.87.0": version: 0.87.0 resolution: "@react-native/jest-preset@npm:0.87.0" dependencies: @@ -3183,6 +3514,28 @@ __metadata: languageName: node linkType: hard +"@react-native/jest-preset@npm:^0.87.0": + version: 0.87.1 + resolution: "@react-native/jest-preset@npm:0.87.1" + dependencies: + "@jest/create-cache-key-function": "npm:^29.7.0" + "@react-native/js-polyfills": "npm:0.87.1" + babel-jest: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + regenerator-runtime: "npm:^0.13.2" + peerDependencies: + react: ^19.2.3 + checksum: 10c0/68d3e8a082b9e37457c58e5f761327fd52517068b217f609a23f001b38de83065dddf2c51d0ab8f55a16dbee0a6a3d2ce862f6ca56d96daeeafb8656179be380 + languageName: node + linkType: hard + +"@react-native/js-polyfills@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/js-polyfills@npm:0.81.6" + checksum: 10c0/85fe2892b590eeb1cad627fe003bd8b617197fa82e820bbdf5dc15a008290d73d54f616e3d191e1dd4d52a06c0e70b175f22d127f06f74c9189e4159370e528b + languageName: node + linkType: hard + "@react-native/js-polyfills@npm:0.87.0": version: 0.87.0 resolution: "@react-native/js-polyfills@npm:0.87.0" @@ -3190,6 +3543,27 @@ __metadata: languageName: node linkType: hard +"@react-native/js-polyfills@npm:0.87.1": + version: 0.87.1 + resolution: "@react-native/js-polyfills@npm:0.87.1" + checksum: 10c0/698ae0c675d73833c36412678850bac3e6bb76593ff50d589cc1dffc1ca33bab47c5a451b409c292e1deeef3f40f6b192f1565861bf3336d67f3e5ce2d6a595a + languageName: node + linkType: hard + +"@react-native/metro-babel-transformer@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/metro-babel-transformer@npm:0.81.6" + dependencies: + "@babel/core": "npm:^7.25.2" + "@react-native/babel-preset": "npm:0.81.6" + hermes-parser: "npm:0.29.1" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/64c07342f6d3986f2e0520afb394c2acb0e4aa23821b63a33be5c4938be98166556a91eada6bba47b1f0ec1f13533dafa877b49365ca954e9d18f14114871d5e + languageName: node + linkType: hard + "@react-native/metro-babel-transformer@npm:0.87.0": version: 0.87.0 resolution: "@react-native/metro-babel-transformer@npm:0.87.0" @@ -3204,6 +3578,18 @@ __metadata: languageName: node linkType: hard +"@react-native/metro-config@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/metro-config@npm:0.81.6" + dependencies: + "@react-native/js-polyfills": "npm:0.81.6" + "@react-native/metro-babel-transformer": "npm:0.81.6" + metro-config: "npm:^0.83.1" + metro-runtime: "npm:^0.83.1" + checksum: 10c0/4f1cb9ae29c10758633d1cfd59f0b80547d294e8f1337a0d3132cf3f93dad7a1fd1c467b484c29cd9fbcfbfaf2f4ab552c3ac5c6c7bdf88a69eca2bb79e844fc + languageName: node + linkType: hard + "@react-native/metro-config@npm:0.87.0": version: 0.87.0 resolution: "@react-native/metro-config@npm:0.87.0" @@ -3216,6 +3602,13 @@ __metadata: languageName: node linkType: hard +"@react-native/normalize-colors@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/normalize-colors@npm:0.81.6" + checksum: 10c0/e1f35b9b44b76d16bfe299b44c37fd8699e435a76b22eaebb8450905b05b4a47a720fe14502a7014c19a024900fd9d1d193c7bb2a7e8011c72fa222cfed9028c + languageName: node + linkType: hard + "@react-native/normalize-colors@npm:0.87.0": version: 0.87.0 resolution: "@react-native/normalize-colors@npm:0.87.0" @@ -3223,6 +3616,13 @@ __metadata: languageName: node linkType: hard +"@react-native/typescript-config@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/typescript-config@npm:0.81.6" + checksum: 10c0/3bee67a258a5b68f596d998ba791873ea360f824431ff3794ec0d98ccc4db21d1180822d6433e1b7d0d8637a27e1af675056559c737a8cd97e6d46fc25afdc20 + languageName: node + linkType: hard + "@react-native/typescript-config@npm:0.87.0": version: 0.87.0 resolution: "@react-native/typescript-config@npm:0.87.0" @@ -3230,6 +3630,23 @@ __metadata: languageName: node linkType: hard +"@react-native/virtualized-lists@npm:0.81.6": + version: 0.81.6 + resolution: "@react-native/virtualized-lists@npm:0.81.6" + dependencies: + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@types/react": ^19.1.4 + react: "*" + react-native: "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/345e8b4b444364daa6d439821040180b11c4001c3b28e384a30f46dcc98cd64d98a7184b47282786e98513685457d78bb98f1a5b94284e46281b694956ca3319 + languageName: node + linkType: hard + "@react-native/virtualized-lists@npm:0.87.0": version: 0.87.0 resolution: "@react-native/virtualized-lists@npm:0.87.0" @@ -3269,177 +3686,177 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.62.2" +"@rollup/rollup-android-arm-eabi@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.63.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-android-arm64@npm:4.62.2" +"@rollup/rollup-android-arm64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-android-arm64@npm:4.63.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-darwin-arm64@npm:4.62.2" +"@rollup/rollup-darwin-arm64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.63.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-darwin-x64@npm:4.62.2" +"@rollup/rollup-darwin-x64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.63.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.62.2" +"@rollup/rollup-freebsd-arm64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.63.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-freebsd-x64@npm:4.62.2" +"@rollup/rollup-freebsd-x64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.63.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.62.2" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.63.2" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.62.2" +"@rollup/rollup-linux-arm-musleabihf@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.63.2" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.62.2" +"@rollup/rollup-linux-arm64-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.63.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.62.2" +"@rollup/rollup-linux-arm64-musl@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.63.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loong64-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.62.2" +"@rollup/rollup-linux-loong64-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.63.2" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-loong64-musl@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-loong64-musl@npm:4.62.2" +"@rollup/rollup-linux-loong64-musl@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-loong64-musl@npm:4.63.2" conditions: os=linux & cpu=loong64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.62.2" +"@rollup/rollup-linux-ppc64-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.63.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-musl@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.62.2" +"@rollup/rollup-linux-ppc64-musl@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.63.2" conditions: os=linux & cpu=ppc64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.62.2" +"@rollup/rollup-linux-riscv64-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.63.2" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.62.2" +"@rollup/rollup-linux-riscv64-musl@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.63.2" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.62.2" +"@rollup/rollup-linux-s390x-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.63.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.62.2" +"@rollup/rollup-linux-x64-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.63.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.62.2" +"@rollup/rollup-linux-x64-musl@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.63.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-openbsd-x64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-openbsd-x64@npm:4.62.2" +"@rollup/rollup-openbsd-x64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-openbsd-x64@npm:4.63.2" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-openharmony-arm64@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-openharmony-arm64@npm:4.62.2" +"@rollup/rollup-openharmony-arm64@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.63.2" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.62.2" +"@rollup/rollup-win32-arm64-msvc@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.63.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.62.2" +"@rollup/rollup-win32-ia32-msvc@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.63.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-gnu@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-win32-x64-gnu@npm:4.62.2" +"@rollup/rollup-win32-x64-gnu@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.63.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.62.2": - version: 4.62.2 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.62.2" +"@rollup/rollup-win32-x64-msvc@npm:4.63.2": + version: 4.63.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.63.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -3484,9 +3901,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.27.8": - version: 0.27.10 - resolution: "@sinclair/typebox@npm:0.27.10" - checksum: 10c0/ca42a02817656dbdae464ed4bb8aca6ad4718d7618e270760fea84a834ad0ecc1a22eba51421f09e5047174571131356ff3b5d80d609ced775d631df7b404b0d + version: 0.27.12 + resolution: "@sinclair/typebox@npm:0.27.12" + checksum: 10c0/f42565a8c1f71045af666a84c01dbab017b8086e3d7064dda86962265078f52220055c32f7e16e40b48958b4bce6a419c3ed1255a45aabbdae68597cddb9523e languageName: node linkType: hard @@ -3543,14 +3960,14 @@ __metadata: linkType: hard "@tiptap/extension-bubble-menu@npm:^3.27.1": - version: 3.27.1 - resolution: "@tiptap/extension-bubble-menu@npm:3.27.1" + version: 3.31.3 + resolution: "@tiptap/extension-bubble-menu@npm:3.31.3" dependencies: "@floating-ui/dom": "npm:^1.0.0" peerDependencies: - "@tiptap/core": 3.27.1 - "@tiptap/pm": 3.27.1 - checksum: 10c0/2bb7ff69ccc07c006e1456ff5a3d278d61696ac304a301ff975fadce86eae57c242c97323fca7c76dca3b9ff29003d60638e22a75cc582d3e17de9f0c8e613ec + "@tiptap/core": 3.31.3 + "@tiptap/pm": 3.31.3 + checksum: 10c0/954de025b0bd4f74127c3b7b01b0019f3bfc0efd602a3021f4ea0817a7259c5e95d213d182efd4544dfb206ee2fe18fa5a8665e3c0cb47631f5a42d5e79b386a languageName: node linkType: hard @@ -3573,13 +3990,13 @@ __metadata: linkType: hard "@tiptap/extension-floating-menu@npm:^3.27.1": - version: 3.27.1 - resolution: "@tiptap/extension-floating-menu@npm:3.27.1" + version: 3.31.3 + resolution: "@tiptap/extension-floating-menu@npm:3.31.3" peerDependencies: "@floating-ui/dom": ^1.0.0 - "@tiptap/core": 3.27.1 - "@tiptap/pm": 3.27.1 - checksum: 10c0/19e48f36be65a9ab31b410ed9c99502b4f782d6f01b545a57aff86c401d8778b056d7f710227ea8e59747947abe3bd7cf3999e1f0cc73cfce156122a2f232f52 + "@tiptap/core": 3.31.3 + "@tiptap/pm": 3.31.3 + checksum: 10c0/d02fb733538b59e5a37383bc9c90c0dededc4c1cece9a73186fe15ae2c29f83d6abfd7f0bba336024fd28894c891c3e574db520a90e90aa596d8f0cc24fc2ccc languageName: node linkType: hard @@ -3883,20 +4300,20 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 26.0.0 - resolution: "@types/node@npm:26.0.0" + version: 26.5.1 + resolution: "@types/node@npm:26.5.1" dependencies: - undici-types: "npm:~8.3.0" - checksum: 10c0/f36e21634fd8e8ded162ca486508bd8bb229d398a8d5541f6d8c1255968d4464e53327a77f403b216ef98e3b6f6956882eef83e4857d4bc2be9569dd55d37aae + undici-types: "npm:~8.9.0" + checksum: 10c0/40aa7aa4c099c8a08bf39b5bcb15eaf2cc073666c2191b1d9ac8243ce6b68b23ace904a044c521f6d310b70e94514b531be5f4fc184f141a7ce7f0679ebc7bb3 languageName: node linkType: hard "@types/node@npm:^24.10.1": - version: 24.13.2 - resolution: "@types/node@npm:24.13.2" + version: 24.13.4 + resolution: "@types/node@npm:24.13.4" dependencies: undici-types: "npm:~7.18.0" - checksum: 10c0/d7d48a88a4feb0a6aac3cbfaf9ef3b12752b4b09447f88dd0b4c77c03b281e3d4330fe6982a99aedcd63fc16c7540a0c248b91eb2abb0b3edd884d7fe684e9ea + checksum: 10c0/a12196e984cb09ead549651217b4b395961ea011f3a3791a9f78311d70b5f3be343c6fc935376553c06a34c14d963d4f637ad7829837b0c88cf441919f422893 languageName: node linkType: hard @@ -3908,27 +4325,27 @@ __metadata: linkType: hard "@types/react-dom@npm:^19.2.0, @types/react-dom@npm:^19.2.3": - version: 19.2.3 - resolution: "@types/react-dom@npm:19.2.3" + version: 19.3.0 + resolution: "@types/react-dom@npm:19.3.0" peerDependencies: - "@types/react": ^19.2.0 - checksum: 10c0/b486ebe0f4e2fb35e2e108df1d8fc0927ca5d6002d5771e8a739de11239fe62d0e207c50886185253c99eb9dedfeeb956ea7429e5ba17f6693c7acb4c02f8cd1 + "@types/react": ^19.3.0 + checksum: 10c0/ce0066d28b62bc6afdd17ca84756b8fbe0f6ffc0c8b1e60739abc30e81510da2edbc1007e6ab3d974d30f5a8c25bb0f7de8d7ce09736c909fe84c0f9aed0b946 languageName: node linkType: hard -"@types/react@npm:^19.1.0, @types/react@npm:^19.2.0": - version: 19.2.17 - resolution: "@types/react@npm:19.2.17" +"@types/react@npm:^19.1.0, @types/react@npm:^19.1.4, @types/react@npm:^19.2.0": + version: 19.3.0 + resolution: "@types/react@npm:19.3.0" dependencies: csstype: "npm:^3.2.2" - checksum: 10c0/bc2c4af96b3e480604424de70d5ebda90c5f4b485df471858c0bc2d7d70364b606ec3c4d8579f94f01aa0c6c0591f56bcf14cba5689f5eea4b74250ccdc3a232 + checksum: 10c0/fbcabf303f935ca9f36ed2dcf81751cf84744098c5a683c8a62a0fa7edd31714b48d5c46b12fd0014f7f2dfe4d9ec6de428a850748eec719a70294e51029551b languageName: node linkType: hard "@types/semver@npm:^7.5.5": - version: 7.7.1 - resolution: "@types/semver@npm:7.7.1" - checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 + version: 7.8.0 + resolution: "@types/semver@npm:7.8.0" + checksum: 10c0/46a1f38e36013448b279798e8b134e7e8de3b3630b1f40683903b9d57d36dd1d70838515570ed9a149fa09e9c381b9e39319b58d7b9f3b929b42ae2becff7aa3 languageName: node linkType: hard @@ -3963,286 +4380,118 @@ __metadata: "@types/yargs-parser@npm:*": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" - checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.35 - resolution: "@types/yargs@npm:17.0.35" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:8.62.0": - version: 8.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.62.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.62.0" - "@typescript-eslint/type-utils": "npm:8.62.0" - "@typescript-eslint/utils": "npm:8.62.0" - "@typescript-eslint/visitor-keys": "npm:8.62.0" - ignore: "npm:^7.0.5" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.5.0" - peerDependencies: - "@typescript-eslint/parser": ^8.62.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/2f257bb53a3b9b8b6f56f6b85c68ce193c7ba4cddf7d2d1995b0aec0591230859f808b3a1a85f0b7ed581f938a88efeacccc730aec307e80e1c14fc669222f9a - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:^8.59.2": - version: 8.67.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.67.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.67.0" - "@typescript-eslint/type-utils": "npm:8.67.0" - "@typescript-eslint/utils": "npm:8.67.0" - "@typescript-eslint/visitor-keys": "npm:8.67.0" - ignore: "npm:^7.0.5" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.5.0" - peerDependencies: - "@typescript-eslint/parser": ^8.67.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/5962baaa764cd6350dfdf51c9a09fdd9ee6be65982ac562ee9b732f851744158e5006bf8ce61556a93534d831be8300fd89d7b79b6b4d7170dc2381d987dc8d9 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:8.62.0": - version: 8.62.0 - resolution: "@typescript-eslint/parser@npm:8.62.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.62.0" - "@typescript-eslint/types": "npm:8.62.0" - "@typescript-eslint/typescript-estree": "npm:8.62.0" - "@typescript-eslint/visitor-keys": "npm:8.62.0" - debug: "npm:^4.4.3" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/eab526557fb679c862a0462e841581e3ca24a88b8f19764630e7d10e01ba01143906100a051c8bede36e3c6eb6bef21c14ac7dccf9d41e04c84448c058450a94 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^8.59.2": - version: 8.67.0 - resolution: "@typescript-eslint/parser@npm:8.67.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.67.0" - "@typescript-eslint/types": "npm:8.67.0" - "@typescript-eslint/typescript-estree": "npm:8.67.0" - "@typescript-eslint/visitor-keys": "npm:8.67.0" - debug: "npm:^4.4.3" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/8f6f8fbea429509ca0c95c4d48a45da0c890172a590606d65587e75a3ca762c3e5678a20a63fc9e386b0b21b7aa643ba9724354ceaa75bc8f62d0b22cb0198c8 - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.62.0": - version: 8.62.0 - resolution: "@typescript-eslint/project-service@npm:8.62.0" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.62.0" - "@typescript-eslint/types": "npm:^8.62.0" - debug: "npm:^4.4.3" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/4369e9ec0c8b2ce6e6cf90142ad781ef99b57350beb4ae48751871e8894e95a8f929de2f56d73849ec0166d2cdb345e3e7a42d30ea8463d3f1b65607648ac582 - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.62.1": - version: 8.62.1 - resolution: "@typescript-eslint/project-service@npm:8.62.1" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.62.1" - "@typescript-eslint/types": "npm:^8.62.1" - debug: "npm:^4.4.3" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/48af1ede4f491a8d499548ec82287e1fab0ea8ac48952a3be5b14c082a679d5e3b82d11a091ecde7ae1b327cb2d02e93255aa880fd86691392c6738b18baf38f - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/project-service@npm:8.67.0" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.67.0" - "@typescript-eslint/types": "npm:^8.67.0" - debug: "npm:^4.4.3" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/d8f89dc209f2186c04fb1c42c1a5c69c21696a7a57c5f2be2222682a6440b49ec32687ae85cbd1c1c164431635fbc37bb9404b336e5748966e270ee1347e028c - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.62.0, @typescript-eslint/scope-manager@npm:^8.55.0": - version: 8.62.0 - resolution: "@typescript-eslint/scope-manager@npm:8.62.0" - dependencies: - "@typescript-eslint/types": "npm:8.62.0" - "@typescript-eslint/visitor-keys": "npm:8.62.0" - checksum: 10c0/1e7192b6bf18955ee76861321a92e08815f1bc3feab23861b6330dde8343dfb346a47c7c8bf3d94b0897a98184adcf283568b5857a0e5d509ce0c21c6cf4cc44 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.62.1": - version: 8.62.1 - resolution: "@typescript-eslint/scope-manager@npm:8.62.1" - dependencies: - "@typescript-eslint/types": "npm:8.62.1" - "@typescript-eslint/visitor-keys": "npm:8.62.1" - checksum: 10c0/94cf3724b2fe2f068f357011efd3e42536e5431ee15dcf6dc80f36c842554f2de9a2f185bb3316a38a6e78a07206ffe16b723eb349157f35f820ba1ffe90830b - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/scope-manager@npm:8.67.0" - dependencies: - "@typescript-eslint/types": "npm:8.67.0" - "@typescript-eslint/visitor-keys": "npm:8.67.0" - checksum: 10c0/8f1fe7dffcb6929ad66dcdca77dd1e4a703f18ab3ab1d685458af74dad10b9be05795e64bd58ff60b45cda8d45737240c84874674d39140c2689e00e3ee82bb9 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.62.0, @typescript-eslint/tsconfig-utils@npm:^8.62.0": - version: 8.62.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.62.0" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/9423908009e95b8bba8ac2ad1e4bf4bc9dd7052fa44be613659f81aad363787bf7fa1ea017eb9dcb059fed41866bc2d8e50f1cf41c7dfad25a4431c333fbf2fa - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.62.1, @typescript-eslint/tsconfig-utils@npm:^8.62.1": - version: 8.62.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.62.1" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/42fb0efb857a6bc6a5b3fc654a2712e4106a75ae7ceb143754fba084f6a4d561adbf666fc334f3aabe6089adcd9a3a896c0009e08f1ef8447bf07900ada3ab66 + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.67.0, @typescript-eslint/tsconfig-utils@npm:^8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.67.0" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/c19161347ea3d7a0081653c4d399275a3e0d66f87a24131fb5a358e6b55bc27d709781dbda16382f3f721d790338dcf42c65c9e6c26077123e9f3d076d37a894 +"@types/yargs@npm:^17.0.8": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.62.0, @typescript-eslint/type-utils@npm:^8.0.0, @typescript-eslint/type-utils@npm:^8.55.0": - version: 8.62.0 - resolution: "@typescript-eslint/type-utils@npm:8.62.0" +"@typescript-eslint/eslint-plugin@npm:8.70.0, @typescript-eslint/eslint-plugin@npm:^8.59.2": + version: 8.70.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.70.0" dependencies: - "@typescript-eslint/types": "npm:8.62.0" - "@typescript-eslint/typescript-estree": "npm:8.62.0" - "@typescript-eslint/utils": "npm:8.62.0" - debug: "npm:^4.4.3" + "@eslint-community/regexpp": "npm:^4.12.2" + "@typescript-eslint/scope-manager": "npm:8.70.0" + "@typescript-eslint/type-utils": "npm:8.70.0" + "@typescript-eslint/utils": "npm:8.70.0" + "@typescript-eslint/visitor-keys": "npm:8.70.0" + ignore: "npm:^7.0.5" + natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.5.0" peerDependencies: + "@typescript-eslint/parser": ^8.70.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/caf6a0072ff48e9351564dbc856c095fd5233bf2176daf9e8361a534be9ded6835c984ff8867365ca3cba158189074b14cc199b19c1a2e20d09682170c3784db + checksum: 10c0/e69f6f697493f4b5cb0411498edd63d75afb3e6881c632f9b23c416e64dd06458956ae489a253f0d08b90645b935a32a509d1e2b17068974a2a34a5c2b3f334b languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/type-utils@npm:8.67.0" +"@typescript-eslint/parser@npm:8.70.0, @typescript-eslint/parser@npm:^8.59.2": + version: 8.70.0 + resolution: "@typescript-eslint/parser@npm:8.70.0" dependencies: - "@typescript-eslint/types": "npm:8.67.0" - "@typescript-eslint/typescript-estree": "npm:8.67.0" - "@typescript-eslint/utils": "npm:8.67.0" + "@typescript-eslint/scope-manager": "npm:8.70.0" + "@typescript-eslint/types": "npm:8.70.0" + "@typescript-eslint/typescript-estree": "npm:8.70.0" + "@typescript-eslint/visitor-keys": "npm:8.70.0" debug: "npm:^4.4.3" - ts-api-utils: "npm:^2.5.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/0970ea126f9b63a6eb9ca3525a6bf3065dffb3f61a00bd0ee84967140e7ecffe45cafda0cd2c90233dcc06b19c8fb98f4cd90ba8ebbb12deaf9501b9f5b54d8c + checksum: 10c0/6d35e0cad56902295599c3da7e4f4c97ebf6f19fcc4333100ad05ef757ba9c431db9cdbd886b6748eb88afd0bc64f8c1c7a81b37589bbd4cc346f6e9eb4e3d12 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.62.0, @typescript-eslint/types@npm:^8.55.0, @typescript-eslint/types@npm:^8.62.0": - version: 8.62.0 - resolution: "@typescript-eslint/types@npm:8.62.0" - checksum: 10c0/28d7a6851cb79301ef1ee004fb8d75811e52eb2a7258d7f8ad2f234886ab2faaf1888cbf5a71cb53afd4d1024c51f71ea359f3103ea70d6f7ccd626ffbfd49c1 +"@typescript-eslint/project-service@npm:8.70.0": + version: 8.70.0 + resolution: "@typescript-eslint/project-service@npm:8.70.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.70.0" + "@typescript-eslint/types": "npm:^8.70.0" + debug: "npm:^4.4.3" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/eb7d0b4c91015e9aa47672ba20dfda0717e5fa09afa7e28f25b5d7b7b0cd8af4b394f94c3a1528358a7d8c8be4165ed4291a345cbe19bb137a24c6a4f006b398 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.62.1, @typescript-eslint/types@npm:^8.62.1": - version: 8.62.1 - resolution: "@typescript-eslint/types@npm:8.62.1" - checksum: 10c0/dfa1c9ef016c867a57d3fbef89f7968f3135d8d4621de1a8d2818258f79ed61f26fb6a3381ef27dde0a880817bfd5883f642f03a027dc127d771007022d1d880 +"@typescript-eslint/scope-manager@npm:8.70.0, @typescript-eslint/scope-manager@npm:^8.55.0": + version: 8.70.0 + resolution: "@typescript-eslint/scope-manager@npm:8.70.0" + dependencies: + "@typescript-eslint/types": "npm:8.70.0" + "@typescript-eslint/visitor-keys": "npm:8.70.0" + checksum: 10c0/ca05825fb16266d90e73bd1745407f719fc6d5fdb33045cdae21d3259f13c9b54d8b956d5c64a3eb83baff7690527fb16d01a2d7318379f97fb79a1cbf8ca103 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.67.0, @typescript-eslint/types@npm:^8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/types@npm:8.67.0" - checksum: 10c0/b892a00d4cbea9604a0abf6eedd0ea019b27df4220a1d90e0035101cb4f846722c9e3eeadce40b423c1e0240709bbc787c6ca49bcc4f8c25ba23b4bd0436492a +"@typescript-eslint/tsconfig-utils@npm:8.70.0, @typescript-eslint/tsconfig-utils@npm:^8.70.0": + version: 8.70.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.70.0" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/925df7c1fbb4e8050dda3fa3dad4a6f515a1f7f2b43f5c145d9eaac856adb84bba04eb5038cc0f78c2307c1df4e2d64dbb4e2e47abffa4844e25cfe62ce402cf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.62.0, @typescript-eslint/typescript-estree@npm:^8.55.0": - version: 8.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.62.0" +"@typescript-eslint/type-utils@npm:8.70.0, @typescript-eslint/type-utils@npm:^8.0.0, @typescript-eslint/type-utils@npm:^8.55.0": + version: 8.70.0 + resolution: "@typescript-eslint/type-utils@npm:8.70.0" dependencies: - "@typescript-eslint/project-service": "npm:8.62.0" - "@typescript-eslint/tsconfig-utils": "npm:8.62.0" - "@typescript-eslint/types": "npm:8.62.0" - "@typescript-eslint/visitor-keys": "npm:8.62.0" + "@typescript-eslint/types": "npm:8.70.0" + "@typescript-eslint/typescript-estree": "npm:8.70.0" + "@typescript-eslint/utils": "npm:8.70.0" debug: "npm:^4.4.3" - minimatch: "npm:^10.2.2" - semver: "npm:^7.7.3" - tinyglobby: "npm:^0.2.15" ts-api-utils: "npm:^2.5.0" peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/c1b76203f37870e66487379c75b1d1a9af0a9c88e8e58a3d2fc106427ce42dce9bd7358a3d2cb7d344004cbb693dba899abf19391d853bbb9f345aa8683635c4 + checksum: 10c0/b745dc16a9ae50fc1bf7880388425d05d7d1775d23819dfcbdbe5930829fb426d7a011a9848494f427f61e236a4deeb9e8f0fd60db4b7a717a791c8454d63584 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.62.1": - version: 8.62.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.62.1" - dependencies: - "@typescript-eslint/project-service": "npm:8.62.1" - "@typescript-eslint/tsconfig-utils": "npm:8.62.1" - "@typescript-eslint/types": "npm:8.62.1" - "@typescript-eslint/visitor-keys": "npm:8.62.1" - debug: "npm:^4.4.3" - minimatch: "npm:^10.2.2" - semver: "npm:^7.7.3" - tinyglobby: "npm:^0.2.15" - ts-api-utils: "npm:^2.5.0" - peerDependencies: - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/e2f554a5a683ded80e010221de46229134717eb7b5ea41cf704b9b702c6e56a93aabc784cafa93fdbc4293f79c0adc1d15ac2915a489be8dee4e9434ab9975ff +"@typescript-eslint/types@npm:8.70.0, @typescript-eslint/types@npm:^8.55.0, @typescript-eslint/types@npm:^8.70.0": + version: 8.70.0 + resolution: "@typescript-eslint/types@npm:8.70.0" + checksum: 10c0/e3f98d0c0e708fcadebb3b457bf3f38a2512220b6bc9823212cacf310377539fb3c24f9e9e754d13b611a3ac6028a0bba16d02eeef03198c65e7ba605bb2036d languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.67.0" +"@typescript-eslint/typescript-estree@npm:8.70.0, @typescript-eslint/typescript-estree@npm:^8.55.0": + version: 8.70.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.70.0" dependencies: - "@typescript-eslint/project-service": "npm:8.67.0" - "@typescript-eslint/tsconfig-utils": "npm:8.67.0" - "@typescript-eslint/types": "npm:8.67.0" - "@typescript-eslint/visitor-keys": "npm:8.67.0" + "@typescript-eslint/project-service": "npm:8.70.0" + "@typescript-eslint/tsconfig-utils": "npm:8.70.0" + "@typescript-eslint/types": "npm:8.70.0" + "@typescript-eslint/visitor-keys": "npm:8.70.0" debug: "npm:^4.4.3" minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" @@ -4250,82 +4499,32 @@ __metadata: ts-api-utils: "npm:^2.5.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/449350fcf4f4ee55a6bb7a73302c4eef072a1282d366344cb625c0f17231eb4088251e6ce61fb48d0d536febb9a28f3725b9bd78ac8d0dbf9c161cf51745870c - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.62.0, @typescript-eslint/utils@npm:^8.55.0": - version: 8.62.0 - resolution: "@typescript-eslint/utils@npm:8.62.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.62.0" - "@typescript-eslint/types": "npm:8.62.0" - "@typescript-eslint/typescript-estree": "npm:8.62.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/5c5d1dd2c37d43ec913e4d144d071058701bf3548733671a05025fae306f7afdc4fdc3d9867d0eae32537eb68ecba046ab8aa6111a5d97497ec78fee98a25809 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/utils@npm:8.67.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.67.0" - "@typescript-eslint/types": "npm:8.67.0" - "@typescript-eslint/typescript-estree": "npm:8.67.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/cccaca1aeba52ec332ee95f3367b84eaf5dd9d60a0d1b4332ebe41b775fa7e8b8faf412de4d88b73a22f84b01f6ab48496c61863407b08fcbef9af429b6b89f1 + checksum: 10c0/11e6c9c0108184902bc229376cce00eb81ee2b88a7cc3bf02a8c159bf59b2c7af21d2b330976b1751fedd5c27e257731b0d60840268299582c458c2a0a29525e languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.0.0": - version: 8.62.1 - resolution: "@typescript-eslint/utils@npm:8.62.1" +"@typescript-eslint/utils@npm:8.70.0, @typescript-eslint/utils@npm:^8.0.0, @typescript-eslint/utils@npm:^8.55.0": + version: 8.70.0 + resolution: "@typescript-eslint/utils@npm:8.70.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.62.1" - "@typescript-eslint/types": "npm:8.62.1" - "@typescript-eslint/typescript-estree": "npm:8.62.1" + "@typescript-eslint/scope-manager": "npm:8.70.0" + "@typescript-eslint/types": "npm:8.70.0" + "@typescript-eslint/typescript-estree": "npm:8.70.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/c8970c25049bd4c562c0780f96c1ed50082103ecfc441ccc5be7afd1632883c97e258a6482b6e5998a2a51c3bd4dba6fd066709122108a3b71bc5433cd2fa7c8 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.62.0": - version: 8.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.62.0" - dependencies: - "@typescript-eslint/types": "npm:8.62.0" - eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/29102828fab6b060e607effee0d7666bc82aef269241c7c5c44ffb3386b3cb69ea585bf7c5d88d428c489f46d5888cbe90677e15cbad8cb27acfa1fc1661bd5b - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.62.1": - version: 8.62.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.62.1" - dependencies: - "@typescript-eslint/types": "npm:8.62.1" - eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/2ab6659c197280b5329be392f4bf3b69ac951e5ab3cc645d05d470381de7f017456938285693b2505f7c02ca56eadc734d55af85c8dee4173b11823c34e7d53c + checksum: 10c0/15353ecd0c5e29057e5846c6b84de601b679448e01293dbf1ae7dbe94ab6d4b586f8690a262630522441307fafad01ab3b0b46a85eb71907c19a2f124d7bba3f languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.67.0": - version: 8.67.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.67.0" +"@typescript-eslint/visitor-keys@npm:8.70.0": + version: 8.70.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.70.0" dependencies: - "@typescript-eslint/types": "npm:8.67.0" + "@typescript-eslint/types": "npm:8.70.0" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/d43e6151cd1cdbcfb2f9fa54946198baaebaf0b7a9057ccb2f1aeba1aa3eb46708a97cd7773dcfd0eba3bd45642a5520f4607001cd27d8958e41aa56b2fe7a35 + checksum: 10c0/43fe28dc1045a686deead8c9334f6e9d8b3fa8f84917147aabd9747783b8bc531254a95a9bfb33355b25cf5ec9a72c62bcde313f13869d7a5e5603d96be593a9 languageName: node linkType: hard @@ -4378,6 +4577,15 @@ __metadata: languageName: node linkType: hard +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + languageName: node + linkType: hard + "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -4427,11 +4635,11 @@ __metadata: linkType: hard "acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.8.1": - version: 8.17.0 - resolution: "acorn@npm:8.17.0" + version: 8.18.0 + resolution: "acorn@npm:8.18.0" bin: acorn: bin/acorn - checksum: 10c0/5dcefea5f8f023b6cc24cbe71fb5a8112b601d36c4fa07d14e4e6ffc2ee47383332c46b36c766d9437725aa6660156eae50efa0c838719823b50d7c327c4ed42 + checksum: 10c0/be771be2135cc07910cf76f444ad514d7dcfd6d4a8026e597e93155275abc8ef61eee12211d52146e9d962874269b634f397464942087be013c89d0c54c5f8e5 languageName: node linkType: hard @@ -4553,9 +4761,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.2.2": - version: 6.2.2 - resolution: "ansi-regex@npm:6.2.2" - checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f + version: 6.3.0 + resolution: "ansi-regex@npm:6.3.0" + checksum: 10c0/bc047786d0531f1f22d1e22e9863e8554488a399f1ee5270b753efa6de938a788d27456f2b256770f11fdd8b1e847483bc1b55ddc2b3ffe82ec45c875292c651 languageName: node linkType: hard @@ -4609,9 +4817,9 @@ __metadata: linkType: hard "appdirsjs@npm:^1.2.4": - version: 1.2.7 - resolution: "appdirsjs@npm:1.2.7" - checksum: 10c0/79dd8d7a764cdde2b47efc4383e054814be917ba0cd661ee324bdf3fd11542834548316faea31344f96a7ebc898b5f89c11d1418f825a1d40c396bf1ecb0902b + version: 1.2.8 + resolution: "appdirsjs@npm:1.2.8" + checksum: 10c0/dc16a9aa5e9fd2fc8c7a0daaa7184b74c6e4e52afe9242ae73b683af16468d55eb9325b03926721c77307de668696a2e2e935253d107babe8daed96f822d849b languageName: node linkType: hard @@ -4631,43 +4839,23 @@ __metadata: languageName: node linkType: hard -"arkregex@npm:0.0.6": - version: 0.0.6 - resolution: "arkregex@npm:0.0.6" - dependencies: - "@ark/util": "npm:0.56.0" - checksum: 10c0/3bc4c2d323bd39e46a826cfbddb48ac8ae8a7b243828eb01535132e6470aab99dd59b8caebd5a341221a4e3824949aa4861c132a3a6d3f2190a2d9ca1ec7e3c8 - languageName: node - linkType: hard - -"arkregex@npm:0.0.7": - version: 0.0.7 - resolution: "arkregex@npm:0.0.7" +"arkregex@npm:0.0.8": + version: 0.0.8 + resolution: "arkregex@npm:0.0.8" dependencies: - "@ark/util": "npm:0.56.1" - checksum: 10c0/ec1fee6f5511d1ab3315a235e3a5927e518f98896af5f25cefc15b349e86aac209cb4af12960221919226d6f5ae4e1be041351f1a4a76c490ba1ac073e843750 + "@ark/util": "npm:0.56.2" + checksum: 10c0/ea1385599fded2e4153ce5cfb75f86e18f221b9c73ddd4071ffe3f63cfffcacd7a16748f1588de48658f7def2069e2a6b7235c3da7f1e11f12d1b05d2c892f9a languageName: node linkType: hard -"arktype@npm:^2.1.15": - version: 2.2.1 - resolution: "arktype@npm:2.2.1" - dependencies: - "@ark/schema": "npm:0.56.0" - "@ark/util": "npm:0.56.0" - arkregex: "npm:0.0.6" - checksum: 10c0/c1c4e344c28c0f8ef88faffb0e7b31e31f67fd188a51c8b3b4790eecaae2707fef56383fd24c020b0c6231baa54e7147026c56c030e3db5aedaceb7e042a560d - languageName: node - linkType: hard - -"arktype@npm:^2.2.0": - version: 2.2.2 - resolution: "arktype@npm:2.2.2" +"arktype@npm:^2.1.15, arktype@npm:^2.2.0": + version: 2.2.3 + resolution: "arktype@npm:2.2.3" dependencies: - "@ark/schema": "npm:0.56.1" - "@ark/util": "npm:0.56.1" - arkregex: "npm:0.0.7" - checksum: 10c0/84341400ef0c60f287947aff13cc248d7ed30ef475520a50e9c48892f40e2c10cc57579766a62dfc60e7310bd7848ab510a78245f63aa2dda94d5693bcbd2bbd + "@ark/schema": "npm:0.56.2" + "@ark/util": "npm:0.56.2" + arkregex: "npm:0.0.8" + checksum: 10c0/01d6cd9f1c84807772623ad8df5825df9646de1aca4b17869604d523942c92c297b654c930f405338065e18ab52691e00da3e7e2b581039e4aded62d1a9c9e0f languageName: node linkType: hard @@ -4689,18 +4877,18 @@ __metadata: linkType: hard "array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": - version: 3.1.9 - resolution: "array-includes@npm:3.1.9" + version: 3.2.0 + resolution: "array-includes@npm:3.2.0" dependencies: - call-bind: "npm:^1.0.8" + call-bind: "npm:^1.0.9" call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.0" - es-object-atoms: "npm:^1.1.1" - get-intrinsic: "npm:^1.3.0" + es-abstract: "npm:^1.24.2" + es-object-atoms: "npm:^1.1.2" + es-shim-unscopables: "npm:^1.1.0" is-string: "npm:^1.1.1" math-intrinsics: "npm:^1.1.0" - checksum: 10c0/0235fa69078abeac05ac4250699c44996bc6f774a9cbe45db48674ce6bd142f09b327d31482ff75cf03344db4ea03eae23edb862d59378b484b47ed842574856 + checksum: 10c0/0a19b5152dfd53abfa45dd95f7f4911102c509add728581c1b3d5f5864fdcdc671aa9079b26581cb13c033081f989350777856965051eb0dca7f11e1951df74f languageName: node linkType: hard @@ -4960,6 +5148,15 @@ __metadata: languageName: node linkType: hard +"babel-plugin-syntax-hermes-parser@npm:0.29.1": + version: 0.29.1 + resolution: "babel-plugin-syntax-hermes-parser@npm:0.29.1" + dependencies: + hermes-parser: "npm:0.29.1" + checksum: 10c0/a6d95e4a7079976e477636d18509272a7a185930e143c61d0421a36096e85905563630ac4f0f317518b6db37f50daaefc1828d575b3d5fb090a55e9d39d2534c + languageName: node + linkType: hard + "babel-plugin-syntax-hermes-parser@npm:0.36.1": version: 0.36.1 resolution: "babel-plugin-syntax-hermes-parser@npm:0.36.1" @@ -5054,12 +5251,12 @@ __metadata: languageName: node linkType: hard -"baseline-browser-mapping@npm:^2.10.38": - version: 2.10.38 - resolution: "baseline-browser-mapping@npm:2.10.38" +"baseline-browser-mapping@npm:^2.11.20": + version: 2.11.23 + resolution: "baseline-browser-mapping@npm:2.11.23" bin: baseline-browser-mapping: dist/cli.cjs - checksum: 10c0/44bbea61ec54df6845f5f6f149c99057370081f1041d6e8dbc92835630ce37da9adc102528ebebd37f563342da2a5eea525d24698ced6674cdcfadb2ed613136 + checksum: 10c0/19ea2480d45823d25a94f848aab47f74882bb0715fb89fe11d82a1a470b856e56e6990f67401da94ad0f3c3bdac0aaea59310968526744c7e71ee441bdffe5cb languageName: node linkType: hard @@ -5088,6 +5285,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:^1.20.3": + version: 1.20.8 + resolution: "body-parser@npm:1.20.8" + dependencies: + bytes: "npm:~3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:~1.2.0" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + on-finished: "npm:~2.4.1" + qs: "npm:~6.16.0" + raw-body: "npm:~2.5.3" + type-is: "npm:~1.6.18" + unpipe: "npm:~1.0.0" + checksum: 10c0/7edc8c4762d52ff685af081b1d5ccad860edcec662c25893be452b16042fd55b9c9869a194bd282e0ad936c34eb07866b2b33f0cc02ff916597058fd229c13d2 + languageName: node + linkType: hard + "body-parser@npm:^2.2.2": version: 2.3.0 resolution: "body-parser@npm:2.3.0" @@ -5122,30 +5339,30 @@ __metadata: linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.15 - resolution: "brace-expansion@npm:1.1.15" + version: 1.1.18 + resolution: "brace-expansion@npm:1.1.18" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10c0/648e273f57cfa9ed67d8a77bdb15b408205465d33da9331808ee3c188d8b55674c9cdbf1f320b65bc562e485e1263360ae62ad355e128e0435891f6430e795d7 + checksum: 10c0/3432c18a9e2ebf94162d4effb62198bd0adea06a9f332b2c0188df5d5e30b1e51ea3c848b6608e47d0b857ebe1ea5b3888ed3326dd3c4f6f9645c94153cf9c14 languageName: node linkType: hard "brace-expansion@npm:^2.0.2": - version: 2.1.1 - resolution: "brace-expansion@npm:2.1.1" + version: 2.1.4 + resolution: "brace-expansion@npm:2.1.4" dependencies: balanced-match: "npm:^1.0.0" - checksum: 10c0/63b5ddce608b70b50a76817c0526faf8ea67a9180073d88bb402f6bbc22a22da6b1dfac4f65efc53e5faa80222fb7d44bbf2fc638c3f55365975573f671d0ccb + checksum: 10c0/6c0a0e2573eac1dc565b52b1e1bfbeba39bf1830d106ebbc61ff1eaefcf610e9111cd3baa091addd18e33292135c99e019d3184d966389d85dc958fdcdc1449f languageName: node linkType: hard -"brace-expansion@npm:^5.0.5": - version: 5.0.6 - resolution: "brace-expansion@npm:5.0.6" +"brace-expansion@npm:^5.0.8": + version: 5.0.9 + resolution: "brace-expansion@npm:5.0.9" dependencies: balanced-match: "npm:^4.0.2" - checksum: 10c0/8c919869b90f61d533b341d3340be5ee4413232ea89b8246cbc2f38eb014f1d8182785c98a006eaf6111d02dc9eeffefdc240d5ac158625b2ed084dccd4bbf9b + checksum: 10c0/3dea38884a1c3c8b1c9c44a7402a0c76fca460f70cffb3127242b0b4cbf4472019e022ade021eec44838ff19f1dac2625dfd11dd459d7e1e055b0698a8d52fec languageName: node linkType: hard @@ -5158,18 +5375,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.28.1, browserslist@npm:^4.28.2": - version: 4.28.4 - resolution: "browserslist@npm:4.28.4" +"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.28.2, browserslist@npm:^4.28.7": + version: 4.28.9 + resolution: "browserslist@npm:4.28.9" dependencies: - baseline-browser-mapping: "npm:^2.10.38" - caniuse-lite: "npm:^1.0.30001799" - electron-to-chromium: "npm:^1.5.376" - node-releases: "npm:^2.0.48" - update-browserslist-db: "npm:^1.2.3" + baseline-browser-mapping: "npm:^2.11.20" + caniuse-lite: "npm:^1.0.30001810" + electron-to-chromium: "npm:^1.5.420" + node-releases: "npm:^2.0.54" + update-browserslist-db: "npm:^1.3.2" bin: browserslist: cli.js - checksum: 10c0/d86f7319c0e3243ca5122335a98b9de8e007fb10fb5643e5f3ed69428fe81ee8646cf1a7663bcfb65bdfddbe505d39406da7ce30052e65c99df9d02336635a7c + checksum: 10c0/c4c7457cccb188bb904bb84566ff2d09e6f45ccf48619333111e5d60dfad456522a64e3e4af7c7608bc171371fc006f32bcc296877b0586bf80fb9f60841a110 languageName: node linkType: hard @@ -5287,10 +5504,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001799": - version: 1.0.30001799 - resolution: "caniuse-lite@npm:1.0.30001799" - checksum: 10c0/f24f9834edc7b60188f368ce44714695c3901bc4acb7f2a977dd9b7b697e39ddc0f9947fad6224a955b789f36a73432cb888d620aa7280d728f582d3bd8927a7 +"caniuse-lite@npm:^1.0.30001810": + version: 1.0.30001810 + resolution: "caniuse-lite@npm:1.0.30001810" + checksum: 10c0/d29bc73f33c888025d54c7ff2984372d3b350b15a6a9e174884fb40976175e9177f202e2a72c2d428dddfc032784bc8ba635a31d168fcab9fac65756d7b3d6b4 languageName: node linkType: hard @@ -5301,7 +5518,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -5353,6 +5570,20 @@ __metadata: languageName: node linkType: hard +"chromium-edge-launcher@npm:^0.2.0": + version: 0.2.0 + resolution: "chromium-edge-launcher@npm:0.2.0" + dependencies: + "@types/node": "npm:*" + escape-string-regexp: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + lighthouse-logger: "npm:^1.0.0" + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10c0/880972816dd9b95c0eb77d1f707569667a8cce7cc29fe9c8d199c47fdfbe4971e9da3e5a29f61c4ecec29437ac7cebbbb5afc30bec96306579d1121e7340606a + languageName: node + linkType: hard + "chromium-edge-launcher@npm:^0.3.0": version: 0.3.0 resolution: "chromium-edge-launcher@npm:0.3.0" @@ -5633,17 +5864,18 @@ __metadata: linkType: hard "compression@npm:^1.7.1": - version: 1.8.1 - resolution: "compression@npm:1.8.1" + version: 1.8.2 + resolution: "compression@npm:1.8.2" dependencies: bytes: "npm:3.1.2" compressible: "npm:~2.0.18" debug: "npm:2.6.9" + destroy: "npm:1.2.0" negotiator: "npm:~0.6.4" on-headers: "npm:~1.1.0" safe-buffer: "npm:5.2.1" vary: "npm:~1.1.2" - checksum: 10c0/85114b0b91c16594dc8c671cd9b05ef5e465066a60e5a4ed8b4551661303559a896ed17bb72c4234c04064e078f6ca86a34b8690349499a43f6fc4b844475da4 + checksum: 10c0/f95be7122323fdffcaadc807f42da38b5227eeac7d9997c1c4314abd7ca4a4de2daa3d5bd4e142706bef4d34fa0f64cd265c6f074b221143e18da1215c0a07ab languageName: node linkType: hard @@ -5700,10 +5932,17 @@ __metadata: languageName: node linkType: hard -"content-type@npm:^2.0.0": - version: 2.0.0 - resolution: "content-type@npm:2.0.0" - checksum: 10c0/491539fff707d7594b0ca4fabcc084bef2a31ffa754ff0a4f80c4377e3963cff0394317f9271c24087596c97fa675bc123d61fa34ffe65b4904e7d3d3098de72 +"content-type@npm:^2.0.0, content-type@npm:^2.1.0": + version: 2.1.0 + resolution: "content-type@npm:2.1.0" + checksum: 10c0/f5d420f55fd0c7a7f7cbae9637777ce67a074aa79b489d8d9fee8599089592b5f8bb194e1d6885741fee20271034baca0d68d5419535b52d070c4f7e39f4b448 + languageName: node + linkType: hard + +"content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af languageName: node linkType: hard @@ -5909,11 +6148,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": - version: 3.49.0 - resolution: "core-js-compat@npm:3.49.0" + version: 3.50.0 + resolution: "core-js-compat@npm:3.50.0" dependencies: - browserslist: "npm:^4.28.1" - checksum: 10c0/546e64b7ce45f724825bc13c1347f35c0459a6e71c0dcccff3ec21fbff463f5b0b97fc1220e6d90302153863489301793276fe2bf96f46001ff555ead4140308 + browserslist: "npm:^4.28.7" + checksum: 10c0/1ccfe07f47f7d8a14e615c5e7adb3b9d8b3dcb2f228fd0d00a59723dbf9b944a4a3f4ceb96c1861cb9fb9838d486163ceebaec3323d15c6d456b45d2a2a03583 languageName: node linkType: hard @@ -6081,9 +6320,9 @@ __metadata: linkType: hard "dayjs@npm:^1.8.15": - version: 1.11.21 - resolution: "dayjs@npm:1.11.21" - checksum: 10c0/bd97dfdc4bfea3c66268635690313828b386faa040fbc1f829ff42a2bd748b72c9d9b3c8f9616ce9e61fcb78923f1461a462c969c54b1084458ae1b715898fb0 + version: 1.11.23 + resolution: "dayjs@npm:1.11.23" + checksum: 10c0/69ab04bf19c676e44ab50cc2fca223d265f3dafd107151ef3b0f3ad74d360c37caa602abe62f87cb25d90bd9f6bee003698af47df5b0dbf10a998b7b5f3bb3f1 languageName: node linkType: hard @@ -6187,12 +6426,12 @@ __metadata: linkType: hard "default-browser@npm:^5.2.1": - version: 5.5.0 - resolution: "default-browser@npm:5.5.0" + version: 5.5.1 + resolution: "default-browser@npm:5.5.1" dependencies: bundle-name: "npm:^4.1.0" default-browser-id: "npm:^5.0.0" - checksum: 10c0/576593b617b17a7223014b4571bfe1c06a2581a4eb8b130985d90d253afa3f40999caec70eb0e5776e80d4af6a41cce91018cd3f86e57ad578bf59e46fb19abe + checksum: 10c0/feb5e7a6a6f2fcbc7a6c5c78e071a4f7a3ab136e6244b9637e58fe6170f6e1254ae099cbe2ebc2b2823c387ed50fda176ce31d386f4f2ebbd43d8fb1cb6aacf7 languageName: node linkType: hard @@ -6326,7 +6565,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0": +"destroy@npm:1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 @@ -6429,10 +6668,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.376": - version: 1.5.377 - resolution: "electron-to-chromium@npm:1.5.377" - checksum: 10c0/f5874a54c1a402d939f12e6f5db902b9777c4cdeb788b519e5945b655fec5acfc51ff2de9fa9e7d084fb9bea73bf22df6eeb28a030ee7a1eb737ed72918016ec +"electron-to-chromium@npm:^1.5.420": + version: 1.5.427 + resolution: "electron-to-chromium@npm:1.5.427" + checksum: 10c0/8ea673696c681be42e99c82e16221149f0eba9b1b9fecd7c7e4ebef153c87ebb0145a67f1305f530077313972ffa6ab6de6d2f13181c7954933e3e781e45d379 languageName: node linkType: hard @@ -6550,7 +6789,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.2": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.2": version: 1.24.2 resolution: "es-abstract@npm:1.24.2" dependencies: @@ -6627,8 +6866,8 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.3.3 - resolution: "es-iterator-helpers@npm:1.3.3" + version: 1.4.0 + resolution: "es-iterator-helpers@npm:1.4.0" dependencies: call-bind: "npm:^1.0.9" call-bound: "npm:^1.0.4" @@ -6646,7 +6885,7 @@ __metadata: internal-slot: "npm:^1.1.0" iterator.prototype: "npm:^1.1.5" math-intrinsics: "npm:^1.1.0" - checksum: 10c0/14d45ce96c1eeec1dfb76607f4277163c847cc799a417c69346bfd2a9cce04b1d1426e34cb867dbc3266d2ca516084259ff1836cd2da6bc70b3e25e02f3532a9 + checksum: 10c0/839a5e881446e1b4ab270a9ad5d01a23b83a38fadb9e526674df171357e90ad3111dc8c0b15e7d30db1958f2c3332dd963fab7d55f406a660d098b2b7eefb218 languageName: node linkType: hard @@ -6671,7 +6910,7 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.2": +"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": version: 1.1.0 resolution: "es-shim-unscopables@npm:1.1.0" dependencies: @@ -6681,48 +6920,49 @@ __metadata: linkType: hard "es-to-primitive@npm:^1.3.0": - version: 1.3.1 - resolution: "es-to-primitive@npm:1.3.1" + version: 1.3.4 + resolution: "es-to-primitive@npm:1.3.4" dependencies: es-abstract-get: "npm:^1.0.0" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" is-callable: "npm:^1.2.7" is-date-object: "npm:^1.1.0" is-symbol: "npm:^1.1.1" - checksum: 10c0/288ec25e5d08c2718bab9faa87924e11f42f2b0b59854fc241f1fbbedcadf2682ab3a9a9fb4676fa40c483ce563ea63cfd3e33777cbb53833e94d5f60a851cde - languageName: node - linkType: hard - -"esbuild@npm:^0.27.0": - version: 0.27.7 - resolution: "esbuild@npm:0.27.7" - dependencies: - "@esbuild/aix-ppc64": "npm:0.27.7" - "@esbuild/android-arm": "npm:0.27.7" - "@esbuild/android-arm64": "npm:0.27.7" - "@esbuild/android-x64": "npm:0.27.7" - "@esbuild/darwin-arm64": "npm:0.27.7" - "@esbuild/darwin-x64": "npm:0.27.7" - "@esbuild/freebsd-arm64": "npm:0.27.7" - "@esbuild/freebsd-x64": "npm:0.27.7" - "@esbuild/linux-arm": "npm:0.27.7" - "@esbuild/linux-arm64": "npm:0.27.7" - "@esbuild/linux-ia32": "npm:0.27.7" - "@esbuild/linux-loong64": "npm:0.27.7" - "@esbuild/linux-mips64el": "npm:0.27.7" - "@esbuild/linux-ppc64": "npm:0.27.7" - "@esbuild/linux-riscv64": "npm:0.27.7" - "@esbuild/linux-s390x": "npm:0.27.7" - "@esbuild/linux-x64": "npm:0.27.7" - "@esbuild/netbsd-arm64": "npm:0.27.7" - "@esbuild/netbsd-x64": "npm:0.27.7" - "@esbuild/openbsd-arm64": "npm:0.27.7" - "@esbuild/openbsd-x64": "npm:0.27.7" - "@esbuild/openharmony-arm64": "npm:0.27.7" - "@esbuild/sunos-x64": "npm:0.27.7" - "@esbuild/win32-arm64": "npm:0.27.7" - "@esbuild/win32-ia32": "npm:0.27.7" - "@esbuild/win32-x64": "npm:0.27.7" + checksum: 10c0/b10029f8b0b13841bade224ff39005a13d76d9cb803cd1efb18cc96a24414e83e2e7ed15d7ad9d0d0bda66884afd211b7b579b8fa31940e05b060934aa7077d8 + languageName: node + linkType: hard + +"esbuild@npm:^0.27.0 || ^0.28.0": + version: 0.28.2 + resolution: "esbuild@npm:0.28.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.28.2" + "@esbuild/android-arm": "npm:0.28.2" + "@esbuild/android-arm64": "npm:0.28.2" + "@esbuild/android-x64": "npm:0.28.2" + "@esbuild/darwin-arm64": "npm:0.28.2" + "@esbuild/darwin-x64": "npm:0.28.2" + "@esbuild/freebsd-arm64": "npm:0.28.2" + "@esbuild/freebsd-x64": "npm:0.28.2" + "@esbuild/linux-arm": "npm:0.28.2" + "@esbuild/linux-arm64": "npm:0.28.2" + "@esbuild/linux-ia32": "npm:0.28.2" + "@esbuild/linux-loong64": "npm:0.28.2" + "@esbuild/linux-mips64el": "npm:0.28.2" + "@esbuild/linux-ppc64": "npm:0.28.2" + "@esbuild/linux-riscv64": "npm:0.28.2" + "@esbuild/linux-s390x": "npm:0.28.2" + "@esbuild/linux-x64": "npm:0.28.2" + "@esbuild/netbsd-arm64": "npm:0.28.2" + "@esbuild/netbsd-x64": "npm:0.28.2" + "@esbuild/openbsd-arm64": "npm:0.28.2" + "@esbuild/openbsd-x64": "npm:0.28.2" + "@esbuild/openharmony-arm64": "npm:0.28.2" + "@esbuild/sunos-x64": "npm:0.28.2" + "@esbuild/win32-arm64": "npm:0.28.2" + "@esbuild/win32-ia32": "npm:0.28.2" + "@esbuild/win32-x64": "npm:0.28.2" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -6778,7 +7018,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/ccd51f0555708bc9ff4ec9dc3ac92d3daacd45ecaac949ca8645984c5c323bf8cefe98c2df307418685e0b4ce37f9a3bdbfe8e3651fe632a0059a436195a17d4 + checksum: 10c0/9b19edb63bd7780fd2e8e65a1394a0e8a05a17d697f73f0647ffe3c134709d8dbe744ab3fd57b35c9470db268cae7678fafd3dcd3ce1f34fc590568c2433f5d2 languageName: node linkType: hard @@ -6897,15 +7137,15 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^29.0.1": - version: 29.15.4 - resolution: "eslint-plugin-jest@npm:29.15.4" + version: 29.16.6 + resolution: "eslint-plugin-jest@npm:29.16.6" dependencies: "@typescript-eslint/utils": "npm:^8.0.0" peerDependencies: "@typescript-eslint/eslint-plugin": ^8.0.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 jest: "*" - typescript: ">=4.8.4 <7.0.0" + typescript: ">=4.8.4 <8.0.0" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true @@ -6913,7 +7153,7 @@ __metadata: optional: true typescript: optional: true - checksum: 10c0/4a32cd29cb67b54e5fb5f4acbc749e79c024f50099825e91c93d1d9674caf5b4bfe4810c7931e01d6b30e77cbf72d7619db785a12f459f2b23f5885d39cb1033 + checksum: 10c0/c483057f6b7c6500c6208eb965b61fe3a81dbd86123dd1a129584ed8c490336275a8815196922c20bd4895761a7d5b993f7b37869c69d57594b522fe318def8d languageName: node linkType: hard @@ -7101,16 +7341,16 @@ __metadata: linkType: hard "eslint@npm:^9.22.0": - version: 9.39.4 - resolution: "eslint@npm:9.39.4" + version: 9.39.5 + resolution: "eslint@npm:9.39.5" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" "@eslint-community/regexpp": "npm:^4.12.1" "@eslint/config-array": "npm:^0.21.2" "@eslint/config-helpers": "npm:^0.4.2" "@eslint/core": "npm:^0.17.0" - "@eslint/eslintrc": "npm:^3.3.5" - "@eslint/js": "npm:9.39.4" + "@eslint/eslintrc": "npm:^3.3.6" + "@eslint/js": "npm:9.39.5" "@eslint/plugin-kit": "npm:^0.4.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" @@ -7145,7 +7385,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/1955067c2d991f0c84f4c4abfafe31bb47fa3b717a7fd3e43fe1e511c6f859d7700cbca969f85661dc4c130f7aeced5e5444884314198a54428f5e5141db9337 + checksum: 10c0/46335bfcf180ffea9955b38122b578ac9e075b6220e5695be1c988354ea429b04f5db05edc132aa9019ce9847736e9ca0c9ea6d6cedda3c06209c9b52dbd0fd5 languageName: node linkType: hard @@ -7216,6 +7456,13 @@ __metadata: languageName: node linkType: hard +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + languageName: node + linkType: hard + "execa@npm:8.0.0": version: 8.0.0 resolution: "execa@npm:8.0.0" @@ -7320,9 +7567,9 @@ __metadata: linkType: hard "fast-equals@npm:^5.3.3": - version: 5.4.0 - resolution: "fast-equals@npm:5.4.0" - checksum: 10c0/4fdce3a8f814e78af7296ca4ebe82f4765074a6dfe557ee98c18f5d2958c3de59025fbff7556d65f250165ccef424d37f9952ee159400f8ebe5f2edb704ec80e + version: 5.4.2 + resolution: "fast-equals@npm:5.4.2" + checksum: 10c0/13d4f09fd919101f80072a82458c649236c4c990069bbb6bbe436b0950ea39874ba1357288bd8a9fe75985fa29ad523c4feddc81d375125bdc10dde6d803e3a8 languageName: node linkType: hard @@ -7354,44 +7601,55 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.1.2 - resolution: "fast-uri@npm:3.1.2" - checksum: 10c0/5b35641895959f3f7ab7a7b1b5542bded159346f25ec9f256817b206d50b64eda5828e90d605a2e2fc645c90519a7259c2bab2c942ee728c88b88e5be21b090d + version: 3.1.7 + resolution: "fast-uri@npm:3.1.7" + checksum: 10c0/ca2baa4bde48fc7322bdc692c6636975943ebe4f6dd97e07d70b14e0ab85af2ff30de90f550f5ec2956684fe208e150d85d6cb5f3c74438c8ac1bf86bd435c13 languageName: node linkType: hard "fast-xml-builder@npm:^1.2.0": - version: 1.3.0 - resolution: "fast-xml-builder@npm:1.3.0" + version: 1.3.1 + resolution: "fast-xml-builder@npm:1.3.1" dependencies: path-expression-matcher: "npm:^1.6.2" xml-naming: "npm:^0.3.0" - checksum: 10c0/3ab79c0da68dac4fccd6a92289b60a5ce7d2147f765db48b0a30263a814d21ce5173b6e3e6e1e728c982ef9642db4cc790e536c0d2a56d9c612e46d4286e2b74 + checksum: 10c0/5aaf30465e6ba4ae9780eb3916878d5bd40763a3fd6b8b079a76aabe8f3e9e852327280e7c1be2b63ec141424b6ec61b7ab8acca8b3948779b164b004a294b4c + languageName: node + linkType: hard + +"fast-xml-parser@npm:^4.4.1": + version: 4.5.7 + resolution: "fast-xml-parser@npm:4.5.7" + dependencies: + strnum: "npm:^1.0.5" + bin: + fxparser: src/cli/cli.js + checksum: 10c0/5fccf3f53d6b2b83143d73089f04ef5db5343422891193cf10d92d3eb856007b7337818494109e46f6fa47b31b9716be15c4b275ff87a0aeb6f7315aa2edc181 languageName: node linkType: hard "fast-xml-parser@npm:^5.3.6": - version: 5.10.1 - resolution: "fast-xml-parser@npm:5.10.1" + version: 5.11.1 + resolution: "fast-xml-parser@npm:5.11.1" dependencies: "@nodable/entities": "npm:^3.0.0" fast-xml-builder: "npm:^1.2.0" is-unsafe: "npm:^2.0.0" path-expression-matcher: "npm:^1.6.2" - strnum: "npm:^2.4.1" + strnum: "npm:^2.4.2" xml-naming: "npm:^0.3.0" bin: fxparser: src/cli/cli.js - checksum: 10c0/a7ef867ede5366b52efc8d490a5d39fa0afcdcb9d66e1f19296bea23dd304d167de0e61dbabb7138638fbbb099514b89e31710fd4ddc32559513ce1bdc776034 + checksum: 10c0/04a1cf600130c4fc146e9f5bcb0a0e88354c5b9725debfa849f9028afd90b77a3e4c9339a3a7f5d22d749b74ac78567428eb1385679319fabf4d6f03065248d6 languageName: node linkType: hard "fastq@npm:^1.6.0": - version: 1.20.1 - resolution: "fastq@npm:1.20.1" + version: 1.20.3 + resolution: "fastq@npm:1.20.3" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + checksum: 10c0/ad055a1b50f7ec9142d2e13699ad6c4d1fa9fea1d947fff89de1b5ea3825223e9a626c359b3a0f21aefbe093cc2a9e92a91e068f982a2b176af16b9ea430ffc5 languageName: node linkType: hard @@ -7507,9 +7765,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.4.2 - resolution: "flatted@npm:3.4.2" - checksum: 10c0/a65b67aae7172d6cdf63691be7de6c5cd5adbdfdfe2e9da1a09b617c9512ed794037741ee53d93114276bff3f93cd3b0d97d54f9b316e1e4885dde6e9ffdf7ed + version: 3.4.4 + resolution: "flatted@npm:3.4.4" + checksum: 10c0/a3a52a88ea5a4c333e5a1f097dcd87a037fa31c236a77cf46222c2aa4036ef895ab9bc76138a66d9dc22bdb3652128f9598cd26e7439561bf19f67276e2bc37e languageName: node linkType: hard @@ -7520,6 +7778,22 @@ __metadata: languageName: node linkType: hard +"flow-estree@npm:0.331.0": + version: 0.331.0 + resolution: "flow-estree@npm:0.331.0" + checksum: 10c0/3e967611d5e4f83a4fde886d90cffe48078702b51258eddcc2f6c2e5d8bca37986df5d890b9f787b0760bb35886bcc3aecd7db6f7db1fff0f9f2ef7b216cd281 + languageName: node + linkType: hard + +"flow-parser@npm:0.331.0": + version: 0.331.0 + resolution: "flow-parser@npm:0.331.0" + dependencies: + flow-estree: "npm:0.331.0" + checksum: 10c0/bfeb7652a3f82c6689b7290ec2e40973c0a665990a199fd160e16854f6f163449e348c296df218cebe303f5e547665a32131e4598a4eeba821ac72fd415e7134 + languageName: node + linkType: hard + "for-each@npm:^0.3.3, for-each@npm:^0.3.5": version: 0.3.5 resolution: "for-each@npm:0.3.5" @@ -7571,13 +7845,13 @@ __metadata: linkType: hard "fs-extra@npm:^11.3.4": - version: 11.3.6 - resolution: "fs-extra@npm:11.3.6" + version: 11.4.0 + resolution: "fs-extra@npm:11.4.0" dependencies: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 10c0/191c96bf71519fe08595f7920b6e568f6e44b48ed968624f35cb3bb7f4f9b05718b99cd6bf81938c0f7b1daa6d151383c33e0cbfdfe4d95419d7ea121de8e91a + checksum: 10c0/1e311eca820a12d3d795f2043dcd5628d017f4d21e634f3f9ef314ae68bee9979758262fb9cb35ffa6f26454c3fffe8b15558733e91e8fc729b07b10bb98d8b6 languageName: node linkType: hard @@ -7689,7 +7963,7 @@ __metadata: languageName: node linkType: hard -"get-east-asian-width@npm:^1.0.0": +"get-east-asian-width@npm:^1.0.0, get-east-asian-width@npm:^1.5.0": version: 1.6.0 resolution: "get-east-asian-width@npm:1.6.0" checksum: 10c0/7e72e9550fd49ca5b246f9af6bb2afc129c96412845ff6556b3274fd44817a381702ca17028efe9866b261a3d44254cbf21e6c90cf05b4b61675630af776d431 @@ -7880,7 +8154,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -8106,6 +8380,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.29.1": + version: 0.29.1 + resolution: "hermes-estree@npm:0.29.1" + checksum: 10c0/e6b01f79ba708697d61a74b871d5ebae5f863c6d782657d8e2d2256eb838f1eb86ff9c34773a81d9cc69e54be3a5059c686e0ab54a4afba903b40dde92dd0ccb + languageName: node + linkType: hard + "hermes-estree@npm:0.34.0": version: 0.34.0 resolution: "hermes-estree@npm:0.34.0" @@ -8113,6 +8394,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.35.0": + version: 0.35.0 + resolution: "hermes-estree@npm:0.35.0" + checksum: 10c0/a88c9dc63b8b3679b1aeb43e72e977597096c1bd7d59978c952f1d6df6d1a517c4a817c70b1b701854996b485adfa66c2fc7f80871029a7f0c04306f6717b59a + languageName: node + linkType: hard + "hermes-estree@npm:0.36.1": version: 0.36.1 resolution: "hermes-estree@npm:0.36.1" @@ -8129,6 +8417,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.29.1": + version: 0.29.1 + resolution: "hermes-parser@npm:0.29.1" + dependencies: + hermes-estree: "npm:0.29.1" + checksum: 10c0/7f40d9bdfb5acaa700f333a24c644b17f5f8d0e823b1e7a9fb6dcf253a54d54716ae63c74effa023688ee4f09013c80188c40d601570fee256a44954e04c2926 + languageName: node + linkType: hard + "hermes-parser@npm:0.34.0": version: 0.34.0 resolution: "hermes-parser@npm:0.34.0" @@ -8138,6 +8435,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.35.0": + version: 0.35.0 + resolution: "hermes-parser@npm:0.35.0" + dependencies: + hermes-estree: "npm:0.35.0" + checksum: 10c0/49d98093a2094758db5b536627c6cf5146b140f66e63143acf471c62f1d3fd8bd6ae10a33f2372f72e3653deda5d4615c6dae89d01248849440916209901fc4a + languageName: node + linkType: hard + "hermes-parser@npm:0.36.1": version: 0.36.1 resolution: "hermes-parser@npm:0.36.1" @@ -8274,7 +8580,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.4.24": +"iconv-lite@npm:^0.4.24, iconv-lite@npm:~0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -8307,20 +8613,9 @@ __metadata: linkType: hard "ignore@npm:^7.0.3, ignore@npm:^7.0.5": - version: 7.0.5 - resolution: "ignore@npm:7.0.5" - checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d - languageName: node - linkType: hard - -"image-size@npm:^1.0.2": - version: 1.2.1 - resolution: "image-size@npm:1.2.1" - dependencies: - queue: "npm:6.0.2" - bin: - image-size: bin/image-size.js - checksum: 10c0/f8b3c19d4476513f1d7e55c3e6db80997b315444743e2040d545cbcaee59be03d2eb40c46be949a8372697b7003fdb0c04925d704390a7f606bc8181e25c0ed4 + version: 7.0.9 + resolution: "ignore@npm:7.0.9" + checksum: 10c0/fec02e67b8c01a873d3b60eff6cce5e390365d7c45fea57f60f4ff52b9be5873c366867a3b8e154a3140330b72b41b94f19e1f28adfe0ef558c6b28bbf02a1b4 languageName: node linkType: hard @@ -8391,7 +8686,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -8460,9 +8755,9 @@ __metadata: linkType: hard "ip-address@npm:^10.1.1": - version: 10.2.0 - resolution: "ip-address@npm:10.2.0" - checksum: 10c0/5a00aada6e922c9c69dfc800ed5d0fa3348675ebdeed0e1575f503f27ca385b5f534363c9af7ad1daf64c1f1409388cdd3cc2e9b9b0fe1c924a431378d55075a + version: 10.7.0 + resolution: "ip-address@npm:10.7.0" + checksum: 10c0/bb6f514708b84ec75ad4d8156f3d571a5b8e592a15359386100f4f8d7366a4b7723d54b88a30d80b3f51ca5f4dee239e94ef4b53765b9c41a8ea46b421307d14 languageName: node linkType: hard @@ -8944,9 +9239,9 @@ __metadata: linkType: hard "is-unsafe@npm:^2.0.0": - version: 2.0.0 - resolution: "is-unsafe@npm:2.0.0" - checksum: 10c0/d7f721ae13e1abcec419e31f375b9b0840afc790250af3650709160ac9301d9f73e357b2ff832282258529b4f2d3cd622fcddd648f99704e686b2673f4e76a16 + version: 2.0.2 + resolution: "is-unsafe@npm:2.0.2" + checksum: 10c0/3f92f6534e326ae13f4a4733d0d6b9f06f2b7ab80d99c1973eb32b33b00cf9bc7a8505e3260f36209c9109f56a46bb64cc6bd0a27e37fee08cd35892a2b6ae44 languageName: node linkType: hard @@ -9604,15 +9899,15 @@ __metadata: linkType: hard "joi@npm:^17.2.1": - version: 17.13.4 - resolution: "joi@npm:17.13.4" + version: 17.13.8 + resolution: "joi@npm:17.13.8" dependencies: "@hapi/hoek": "npm:^9.3.0" "@hapi/topo": "npm:^5.1.0" "@sideway/address": "npm:^4.1.5" "@sideway/formula": "npm:^3.0.1" "@sideway/pinpoint": "npm:^2.0.0" - checksum: 10c0/5addfef638e90eb6a45a72e3884128d8d9a80c487cb8bfcb949be179b875ad1095af347fa1bd05c4ebec2b2ccbc3f3db5f34501c8672ecd16100de2b77087122 + checksum: 10c0/7fe2b38d26dfcbcf1836892384ba2f42f83058795f32dcb3733de4c3b97cac923a8b9053738f10701663872a994f77af351c71e1428117a20bbfc1f94768f648 languageName: node linkType: hard @@ -9624,25 +9919,25 @@ __metadata: linkType: hard "js-yaml@npm:^3.13.1": - version: 3.14.2 - resolution: "js-yaml@npm:3.14.2" + version: 3.15.2 + resolution: "js-yaml@npm:3.15.2" dependencies: argparse: "npm:^1.0.7" esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/3261f25912f5dd76605e5993d0a126c2b6c346311885d3c483706cd722efe34f697ea0331f654ce27c00a42b426e524518ec89d65ed02ea47df8ad26dcc8ce69 + checksum: 10c0/e341df211dece9d4b784849647ad7568b5b6a58a9ee58ead750482316d83276387343649fe4b71522705dc6c76acf97718588f23dc19443833ef3e75033af967 languageName: node linkType: hard -"js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": - version: 4.2.0 - resolution: "js-yaml@npm:4.2.0" +"js-yaml@npm:^4.1.0, js-yaml@npm:^4.3.2": + version: 4.3.2 + resolution: "js-yaml@npm:4.3.2" dependencies: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/1916456c118746603b067d74bbcbb0445d9a1d5e474ad4ae775e7b20525bed902e01d9d97dd0c81fcd8d4f596162309d0eb057f4aa38f3e9647f14075e9dea45 + checksum: 10c0/dedd34c2e8fef1d504687f1bc94ed0ee1311a1f78770fa2800352c6d59c635ccf555009d74e9afe529ae62199da2b1ccef30e53dc84dcd8d2d8187c22574bc97 languageName: node linkType: hard @@ -10084,9 +10379,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0": - version: 11.5.1 - resolution: "lru-cache@npm:11.5.1" - checksum: 10c0/7b341cea79a8efe9c6a6f20c8757a77eca5b25d7ff983ccf4e11e547b81f6787824baa1c84705251dff84ab4ffac85717ac354b9d02e465f86a9f8b166409979 + version: 11.5.2 + resolution: "lru-cache@npm:11.5.2" + checksum: 10c0/ece1ad731f5b655e85d67047d04bfc13823dc77aa61c5454924a9869ba600a0104e39cc33d726021feef812bc347ca34a5608a5eb1972a5dd0870b7ecd42c3f2 languageName: node linkType: hard @@ -10168,6 +10463,13 @@ __metadata: languageName: node linkType: hard +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + languageName: node + linkType: hard + "media-typer@npm:^1.1.0": version: 1.1.1 resolution: "media-typer@npm:1.1.1" @@ -10230,148 +10532,287 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.87.0": - version: 0.87.0 - resolution: "metro-babel-transformer@npm:0.87.0" +"metro-babel-transformer@npm:0.83.8": + version: 0.83.8 + resolution: "metro-babel-transformer@npm:0.83.8" dependencies: "@babel/core": "npm:^7.25.2" flow-enums-runtime: "npm:^0.0.6" - hermes-parser: "npm:0.36.1" - metro-cache-key: "npm:0.87.0" + hermes-parser: "npm:0.35.0" + metro-cache-key: "npm:0.83.8" + nullthrows: "npm:^1.1.1" + checksum: 10c0/16a6a91176e550d0a9b1e475c45a74af49fcb4e7a93bf8fd0146c649df11b1b11722b93e6426f34c5ed48557269a7d9057e254776da7f838e887c8cf3c6795cd + languageName: node + linkType: hard + +"metro-babel-transformer@npm:0.87.1": + version: 0.87.1 + resolution: "metro-babel-transformer@npm:0.87.1" + dependencies: + "@babel/core": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + flow-parser: "npm:0.331.0" + metro-cache-key: "npm:0.87.1" + nullthrows: "npm:^1.1.1" + checksum: 10c0/9ec68353af175188b642cd4f1101e020cfbb355d308ab4b5f0fded44918e186506f260b87cf41db88caea4b7d31b7e58ed27770f7063d0ddd40c41ad11626984 + languageName: node + linkType: hard + +"metro-cache-key@npm:0.83.8": + version: 0.83.8 + resolution: "metro-cache-key@npm:0.83.8" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/c558ef9d178b3ca32d481874ca6f6e6dee55d1efb5a0bcac0e0513fbab6cee10a858ab10db6db9e061a9dad4ed0b1ac9c2c76f73947bb7269c39e7bf214da5b0 + languageName: node + linkType: hard + +"metro-cache-key@npm:0.87.1": + version: 0.87.1 + resolution: "metro-cache-key@npm:0.87.1" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/2da75b15e9242fb3faebfc72574d5bd73c6873f80d3da0bece2fe1d4082d7d1977d59ad3a8c4f67627e85e93ea2a82edb2f53acae6c14d5791ad69d34e4c1742 + languageName: node + linkType: hard + +"metro-cache@npm:0.83.8": + version: 0.83.8 + resolution: "metro-cache@npm:0.83.8" + dependencies: + exponential-backoff: "npm:^3.1.1" + flow-enums-runtime: "npm:^0.0.6" + https-proxy-agent: "npm:^7.0.5" + metro-core: "npm:0.83.8" + checksum: 10c0/3cf6f3b7cb0349d4de824ec82a50e37fc4af7980fa537533688604091e68c13beb930f1776405b4888ba80b1937eebcdf03da197a115ea3434a81cc8459d8923 + languageName: node + linkType: hard + +"metro-cache@npm:0.87.1": + version: 0.87.1 + resolution: "metro-cache@npm:0.87.1" + dependencies: + exponential-backoff: "npm:^3.1.1" + flow-enums-runtime: "npm:^0.0.6" + https-proxy-agent: "npm:^7.0.5" + metro-core: "npm:0.87.1" + checksum: 10c0/f3fdb422c8512f9454d4eb672873814ea814d92b8d7ae8ffc16f2543f57631c87a09c8fbda54835a56e26a1e092bfec24a685e9b980480b6a89378911c3a338b + languageName: node + linkType: hard + +"metro-config@npm:0.83.8, metro-config@npm:^0.83.1": + version: 0.83.8 + resolution: "metro-config@npm:0.83.8" + dependencies: + connect: "npm:^3.6.5" + flow-enums-runtime: "npm:^0.0.6" + jest-validate: "npm:^29.7.0" + metro: "npm:0.83.8" + metro-cache: "npm:0.83.8" + metro-core: "npm:0.83.8" + metro-runtime: "npm:0.83.8" + yaml: "npm:^2.6.1" + checksum: 10c0/93ff4a14e64133bd37f2d090bbb70122d6d3d66b24c655cf0a474bbed07ae5dc03dee0cebe8463b440645f277e21f195c44337301ec0905e1a3c318feaa9b7b7 + languageName: node + linkType: hard + +"metro-config@npm:0.87.1, metro-config@npm:^0.87.0": + version: 0.87.1 + resolution: "metro-config@npm:0.87.1" + dependencies: + connect: "npm:^3.6.5" + flow-enums-runtime: "npm:^0.0.6" + jest-validate: "npm:^29.7.0" + metro: "npm:0.87.1" + metro-cache: "npm:0.87.1" + metro-core: "npm:0.87.1" + metro-runtime: "npm:0.87.1" + checksum: 10c0/2c6a10d5581197d467569a590a19b9f493b2691fd5bd9c29291fba7bf8f8c7e4f8dd7099f99d7c29aa56a5198b72ae3d3eefc1e94465d4abb40911c572469fe6 + languageName: node + linkType: hard + +"metro-core@npm:0.83.8, metro-core@npm:^0.83.1": + version: 0.83.8 + resolution: "metro-core@npm:0.83.8" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + lodash.throttle: "npm:^4.1.1" + metro-resolver: "npm:0.83.8" + checksum: 10c0/a394edf28a49c172cb5d14ea7c41b4699f507d64ff746d4d64a80854f8f45f4401da36f48904dfc8869e9565d215fc496010dd9e71f3e5426cfa0aaab9be0a40 + languageName: node + linkType: hard + +"metro-core@npm:0.87.1": + version: 0.87.1 + resolution: "metro-core@npm:0.87.1" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + lodash.throttle: "npm:^4.1.1" + metro-resolver: "npm:0.87.1" + checksum: 10c0/d945f4ddb9594c27c0c8bb21f819530ddbb9d83f3bdffbc6ef68161d195aa2385ab1cd1b21d1524dfd6fccda409404dd3e6237f065edc1bf1fa8f7a6868012d6 + languageName: node + linkType: hard + +"metro-file-map@npm:0.83.8": + version: 0.83.8 + resolution: "metro-file-map@npm:0.83.8" + dependencies: + debug: "npm:^4.4.0" + fb-watchman: "npm:^2.0.0" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + nullthrows: "npm:^1.1.1" + walker: "npm:^1.0.7" + checksum: 10c0/69dbbac5eea43f94493ac974ba05c0d4c7f7eaca9a4ff6823b341513ea4eee3d9f23f6ea0fb081a749aa445e49542da2933699c1f1205a29aca88c4d23efecdd + languageName: node + linkType: hard + +"metro-file-map@npm:0.87.1": + version: 0.87.1 + resolution: "metro-file-map@npm:0.87.1" + dependencies: + debug: "npm:^4.4.0" + fb-watchman: "npm:^2.0.0" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" nullthrows: "npm:^1.1.1" - checksum: 10c0/0a84ff061f0692f69738fd33d8e0571594c249cb03cd461c381a7dcea7c820ceefe84ee36a8aa57764aa64ddc25846bc1227769d4222bb2c18bac42982811b98 + checksum: 10c0/2adfe190819ce68ea96e92238bdbf3f5a4b544c1c89a74199c44411226f6088d8d8a06d425b2922046c20a4ba3548e7fd22c9650a842bbefebe5c2eb11b7419a languageName: node linkType: hard -"metro-cache-key@npm:0.87.0": - version: 0.87.0 - resolution: "metro-cache-key@npm:0.87.0" +"metro-minify-terser@npm:0.83.8": + version: 0.83.8 + resolution: "metro-minify-terser@npm:0.83.8" dependencies: flow-enums-runtime: "npm:^0.0.6" - checksum: 10c0/f75b20b43cd99f684d215c57b195611e04d2d2a9442ad4df17fa2a8929ec7f31a428331881ab950c25e585c65946dcda3c7377d58905c2c7b600a5b66286ec2d + terser: "npm:^5.15.0" + checksum: 10c0/5c6220b58af2d42395221ed963f00a56f9045eeae93a01d76645a8de85892d663f24ad31f138d88352304a9cfab433978d21b0753cf964035fe28f19e2efa2e3 languageName: node linkType: hard -"metro-cache@npm:0.87.0": - version: 0.87.0 - resolution: "metro-cache@npm:0.87.0" +"metro-minify-terser@npm:0.87.1": + version: 0.87.1 + resolution: "metro-minify-terser@npm:0.87.1" dependencies: - exponential-backoff: "npm:^3.1.1" flow-enums-runtime: "npm:^0.0.6" - https-proxy-agent: "npm:^7.0.5" - metro-core: "npm:0.87.0" - checksum: 10c0/150404598aa6ab7d2a98243214191009d698f841e8126dffe6de83d3861869bd7e4ab527ede6fdf6c738db9fff94f691998e9213fffe38cbc72dca8cd80a8f43 + terser: "npm:^5.15.0" + checksum: 10c0/8789263ce8767ab3b389423f974dbc88b57da7ebd3b5bfabb6e6334210c781a8e23802ec417f5140db3dca5509ef83cba0dc570544c9ab774e0c91c38ccff635 languageName: node linkType: hard -"metro-config@npm:0.87.0, metro-config@npm:^0.87.0": - version: 0.87.0 - resolution: "metro-config@npm:0.87.0" +"metro-resolver@npm:0.83.8": + version: 0.83.8 + resolution: "metro-resolver@npm:0.83.8" dependencies: - connect: "npm:^3.6.5" flow-enums-runtime: "npm:^0.0.6" - jest-validate: "npm:^29.7.0" - metro: "npm:0.87.0" - metro-cache: "npm:0.87.0" - metro-core: "npm:0.87.0" - metro-runtime: "npm:0.87.0" - checksum: 10c0/a3c5a131f875bf8a52cf9ccb528e0343abb501159a18c7985de218ce188768c91f66ce4348e5707eb885bcf09948219de76ece03498179ba4db5aeadf3ddf7ea + checksum: 10c0/81c2c296de29e93abb099bddd67367fe051454e87e14ab834bcbc1b66b028d44d6454604ca6e5a5f1997331cb4cbe6c556b253f2ab3813183ea6f243d2ce57df languageName: node linkType: hard -"metro-core@npm:0.87.0": - version: 0.87.0 - resolution: "metro-core@npm:0.87.0" +"metro-resolver@npm:0.87.1": + version: 0.87.1 + resolution: "metro-resolver@npm:0.87.1" dependencies: flow-enums-runtime: "npm:^0.0.6" - lodash.throttle: "npm:^4.1.1" - metro-resolver: "npm:0.87.0" - checksum: 10c0/3ddefabf34f98e757a8b95768982dc0eb11f15eed001a9063d0144529fd85bcf22b7c33b770636aec3e1ba5b50219143486b87dd2e54b04e4d5b027ae02642b0 + checksum: 10c0/1218f9a3a2b94d00bf256dd8963460900dad6570f5b4859ac03bf966570c500303576ad47d4616ae9226ce438abb285fcd5cd282862b16d7c2c2b8a22ab7dc44 languageName: node linkType: hard -"metro-file-map@npm:0.87.0": - version: 0.87.0 - resolution: "metro-file-map@npm:0.87.0" +"metro-runtime@npm:0.83.8, metro-runtime@npm:^0.83.1": + version: 0.83.8 + resolution: "metro-runtime@npm:0.83.8" dependencies: - debug: "npm:^4.4.0" - fb-watchman: "npm:^2.0.0" + "@babel/runtime": "npm:^7.25.0" flow-enums-runtime: "npm:^0.0.6" - graceful-fs: "npm:^4.2.4" - invariant: "npm:^2.2.4" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - nullthrows: "npm:^1.1.1" - walker: "npm:^1.0.7" - checksum: 10c0/49b9d859c3a7d6da277699a04c55db8a77f404cebec0cacfa7916664ebec607d8e57f8120e2ba28a4aec615d4af33fd5a3cdb164dc80d78b1d9b722f2351aadc + checksum: 10c0/9981c68ae626df06980a846dc237765000ad2765941a793c60dfa53c52056dc8670b7535dec2cab64ed372ce85987cecb90175a6b484e8a1a74750e9ad8ec069 languageName: node linkType: hard -"metro-minify-terser@npm:0.87.0": - version: 0.87.0 - resolution: "metro-minify-terser@npm:0.87.0" +"metro-runtime@npm:0.87.1, metro-runtime@npm:^0.87.0": + version: 0.87.1 + resolution: "metro-runtime@npm:0.87.1" dependencies: + "@babel/runtime": "npm:^7.25.0" flow-enums-runtime: "npm:^0.0.6" - terser: "npm:^5.15.0" - checksum: 10c0/db0cff372672b9de914be0d0c6440873df88ccbc38ed5e299cf534bc806c2cc0caa005098f0c498cc2d3e51e4f3f6e05f7671b9c48c873cf62709557cc07689d + checksum: 10c0/47ccc9aa8205475d11ea25c2f047fb0f870b8c81072adcd38d5e3fdaf8206f3828823e8720bcb7e5f8f7b940d757a127d18d7f48f0c2375a9094247946a8591d languageName: node linkType: hard -"metro-resolver@npm:0.87.0": - version: 0.87.0 - resolution: "metro-resolver@npm:0.87.0" +"metro-source-map@npm:0.83.8, metro-source-map@npm:^0.83.1": + version: 0.83.8 + resolution: "metro-source-map@npm:0.83.8" dependencies: + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" flow-enums-runtime: "npm:^0.0.6" - checksum: 10c0/e2283f83d14794948eb0153a3f9d8b39519be25d21f5d482f27972c47702d58ed340f49c6ab87a175e3a340c53878eff49b4764cffdd508f86bce30079914c58 + invariant: "npm:^2.2.4" + metro-symbolicate: "npm:0.83.8" + nullthrows: "npm:^1.1.1" + ob1: "npm:0.83.8" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + checksum: 10c0/42425068ea0acecbf9b91f8970c9ac800ce4c28d8520be234f11be612deb9346ea8ad988b006193ca7395c4f54e52e1d5b28611bd681494a12d0907503da90ae languageName: node linkType: hard -"metro-runtime@npm:0.87.0, metro-runtime@npm:^0.87.0": - version: 0.87.0 - resolution: "metro-runtime@npm:0.87.0" +"metro-source-map@npm:0.87.1, metro-source-map@npm:^0.87.0": + version: 0.87.1 + resolution: "metro-source-map@npm:0.87.1" dependencies: - "@babel/runtime": "npm:^7.25.0" + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" flow-enums-runtime: "npm:^0.0.6" - checksum: 10c0/6811ee32a759dbccaa3241d98ec26f3e26fd5e4a1cdd5929c98df94fd46329c20f026759da6ca055cb068f8a57dfc7054b6cfc7bb9fb7b3280144055d2f8d67f + invariant: "npm:^2.2.4" + metro-symbolicate: "npm:0.87.1" + nullthrows: "npm:^1.1.1" + ob1: "npm:0.87.1" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + checksum: 10c0/0344446175ea907cd075b6a6d47e31673b14c414fe16a3fd9005c969c9003ace86cfc4a7f73a75c4156da721a8246bbdb7ee5f7d0aa9c6081c80b1f01b0a766a languageName: node linkType: hard -"metro-source-map@npm:0.87.0, metro-source-map@npm:^0.87.0": - version: 0.87.0 - resolution: "metro-source-map@npm:0.87.0" +"metro-symbolicate@npm:0.83.8": + version: 0.83.8 + resolution: "metro-symbolicate@npm:0.83.8" dependencies: - "@babel/traverse": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" flow-enums-runtime: "npm:^0.0.6" invariant: "npm:^2.2.4" - metro-symbolicate: "npm:0.87.0" + metro-source-map: "npm:0.83.8" nullthrows: "npm:^1.1.1" - ob1: "npm:0.87.0" source-map: "npm:^0.5.6" vlq: "npm:^1.0.0" - checksum: 10c0/8074cf0bb4ea7f1027924155b57a0e1205ed9381611abebddd1d7e5a92d0c231cb5c6dd65964711a3a2a2757486b478869d971246158b28dd95232daaef18eff + bin: + metro-symbolicate: src/index.js + checksum: 10c0/d413119e97fc3b613fc8f87e18cd64490823fca26d39a622240d05e5cb2023a6849728cc98cd56190dfd90efae728c5e2dd6e9f6a90576b262666350258ba1b8 languageName: node linkType: hard -"metro-symbolicate@npm:0.87.0": - version: 0.87.0 - resolution: "metro-symbolicate@npm:0.87.0" +"metro-symbolicate@npm:0.87.1": + version: 0.87.1 + resolution: "metro-symbolicate@npm:0.87.1" dependencies: flow-enums-runtime: "npm:^0.0.6" invariant: "npm:^2.2.4" - metro-source-map: "npm:0.87.0" + metro-source-map: "npm:0.87.1" nullthrows: "npm:^1.1.1" source-map: "npm:^0.5.6" vlq: "npm:^1.0.0" bin: metro-symbolicate: src/index.js - checksum: 10c0/aacc80d9b46cefedd4078fd2fea0212978a570aa7f2eba6042b33d288858be1e5150d71320dd420bcc0d357c46237edb1b7312639693d288bf6d67fa502c4203 + checksum: 10c0/4c1b8bab66118bb82bd57b74875ad619b63846340799866b22b394a5f4056bde558c1ec880c8060d55484d0abc96d73bcd6f509bb9d73cc76349a711b5cc3895 languageName: node linkType: hard -"metro-transform-plugins@npm:0.87.0": - version: 0.87.0 - resolution: "metro-transform-plugins@npm:0.87.0" +"metro-transform-plugins@npm:0.83.8": + version: 0.83.8 + resolution: "metro-transform-plugins@npm:0.83.8" dependencies: "@babel/core": "npm:^7.25.2" "@babel/generator": "npm:^7.29.1" @@ -10379,34 +10820,69 @@ __metadata: "@babel/traverse": "npm:^7.29.0" flow-enums-runtime: "npm:^0.0.6" nullthrows: "npm:^1.1.1" - checksum: 10c0/66e622b701e3fcb3e7034b7ac008c34351381d27e76c712d332814fde05eb6f1d98268bce16b62933a591b81b123e26cdd536c9744c8fbf122c087e7275c4e83 + checksum: 10c0/f0864b531a55cf119ad3ae77fed178e967e38504c1b0c81e78872c8394b0cc80a8c3ca43a0d37256e145505316d7266e493275bfd10ce980c6c2c1209ce4771d languageName: node linkType: hard -"metro-transform-worker@npm:0.87.0": - version: 0.87.0 - resolution: "metro-transform-worker@npm:0.87.0" +"metro-transform-plugins@npm:0.87.1": + version: 0.87.1 + resolution: "metro-transform-plugins@npm:0.87.1" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + nullthrows: "npm:^1.1.1" + checksum: 10c0/6ffc825d59fb4af9198114063b27627522de5f6ec20a4c840fbae8b99b6a3896e45f4e53800435e824cac9b708c10af270a90aee98714fbfb2105d4724e5800a + languageName: node + linkType: hard + +"metro-transform-worker@npm:0.83.8": + version: 0.83.8 + resolution: "metro-transform-worker@npm:0.83.8" dependencies: "@babel/core": "npm:^7.25.2" "@babel/generator": "npm:^7.29.1" "@babel/parser": "npm:^7.29.0" "@babel/types": "npm:^7.29.0" flow-enums-runtime: "npm:^0.0.6" - metro: "npm:0.87.0" - metro-babel-transformer: "npm:0.87.0" - metro-cache: "npm:0.87.0" - metro-cache-key: "npm:0.87.0" - metro-minify-terser: "npm:0.87.0" - metro-source-map: "npm:0.87.0" - metro-transform-plugins: "npm:0.87.0" + metro: "npm:0.83.8" + metro-babel-transformer: "npm:0.83.8" + metro-cache: "npm:0.83.8" + metro-cache-key: "npm:0.83.8" + metro-minify-terser: "npm:0.83.8" + metro-source-map: "npm:0.83.8" + metro-transform-plugins: "npm:0.83.8" nullthrows: "npm:^1.1.1" - checksum: 10c0/2fc3d49874bc9f76a055e14e0a4c5e6c5659efdae148a275ef13a261a013975114c2aacdb5f42815da0be01196ecfcb3a722b6691752edda69110b655b8522ba + checksum: 10c0/acd248657cc2fc5bdcb5530ace9ac9dd7f4a46fca93d12a9235b161efb42f7ba268b5574e5f5f8bd612e3bc142ca04900fec06e59bfd77cfceda3779c22a952a languageName: node linkType: hard -"metro@npm:0.87.0, metro@npm:^0.87.0": - version: 0.87.0 - resolution: "metro@npm:0.87.0" +"metro-transform-worker@npm:0.87.1": + version: 0.87.1 + resolution: "metro-transform-worker@npm:0.87.1" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + metro: "npm:0.87.1" + metro-babel-transformer: "npm:0.87.1" + metro-cache: "npm:0.87.1" + metro-cache-key: "npm:0.87.1" + metro-minify-terser: "npm:0.87.1" + metro-source-map: "npm:0.87.1" + metro-transform-plugins: "npm:0.87.1" + nullthrows: "npm:^1.1.1" + checksum: 10c0/50401e5aa9249591d940140465c81c7c2088e8e925993a589f6e99a03c8b1cb3cd3ced8e0c5e528f9041a2d15b1904e5a972a1a2945298277d5ed6f9a0558440 + languageName: node + linkType: hard + +"metro@npm:0.83.8, metro@npm:^0.83.1": + version: 0.83.8 + resolution: "metro@npm:0.83.8" dependencies: "@babel/code-frame": "npm:^7.29.0" "@babel/core": "npm:^7.25.2" @@ -10422,24 +10898,70 @@ __metadata: error-stack-parser: "npm:^2.0.6" flow-enums-runtime: "npm:^0.0.6" graceful-fs: "npm:^4.2.4" - hermes-parser: "npm:0.36.1" - image-size: "npm:^1.0.2" + hermes-parser: "npm:0.35.0" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + jsc-safe-url: "npm:^0.2.2" + lodash.throttle: "npm:^4.1.1" + metro-babel-transformer: "npm:0.83.8" + metro-cache: "npm:0.83.8" + metro-cache-key: "npm:0.83.8" + metro-config: "npm:0.83.8" + metro-core: "npm:0.83.8" + metro-file-map: "npm:0.83.8" + metro-resolver: "npm:0.83.8" + metro-runtime: "npm:0.83.8" + metro-source-map: "npm:0.83.8" + metro-symbolicate: "npm:0.83.8" + metro-transform-plugins: "npm:0.83.8" + metro-transform-worker: "npm:0.83.8" + mime-types: "npm:^3.0.1" + nullthrows: "npm:^1.1.1" + serialize-error: "npm:^2.1.0" + source-map: "npm:^0.5.6" + throat: "npm:^5.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + bin: + metro: src/cli.js + checksum: 10c0/fdbf5e0aadb6ff228c7b1405386b83e9c254855400ec66344bacf07705c118c5004632f84fa3f3ae61de94299f5f7f75b6ab53fe408a7b146af8b1159e510246 + languageName: node + linkType: hard + +"metro@npm:0.87.1, metro@npm:^0.87.0": + version: 0.87.1 + resolution: "metro@npm:0.87.1" + dependencies: + "@babel/code-frame": "npm:^7.29.0" + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/parser": "npm:^7.29.0" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + accepts: "npm:^2.0.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + error-stack-parser: "npm:^2.0.6" + flow-enums-runtime: "npm:^0.0.6" + flow-parser: "npm:0.331.0" + graceful-fs: "npm:^4.2.4" invariant: "npm:^2.2.4" jest-worker: "npm:^29.7.0" jsc-safe-url: "npm:^0.2.2" lodash.throttle: "npm:^4.1.1" - metro-babel-transformer: "npm:0.87.0" - metro-cache: "npm:0.87.0" - metro-cache-key: "npm:0.87.0" - metro-config: "npm:0.87.0" - metro-core: "npm:0.87.0" - metro-file-map: "npm:0.87.0" - metro-resolver: "npm:0.87.0" - metro-runtime: "npm:0.87.0" - metro-source-map: "npm:0.87.0" - metro-symbolicate: "npm:0.87.0" - metro-transform-plugins: "npm:0.87.0" - metro-transform-worker: "npm:0.87.0" + metro-babel-transformer: "npm:0.87.1" + metro-cache: "npm:0.87.1" + metro-cache-key: "npm:0.87.1" + metro-config: "npm:0.87.1" + metro-core: "npm:0.87.1" + metro-file-map: "npm:0.87.1" + metro-resolver: "npm:0.87.1" + metro-runtime: "npm:0.87.1" + metro-source-map: "npm:0.87.1" + metro-symbolicate: "npm:0.87.1" + metro-transform-plugins: "npm:0.87.1" + metro-transform-worker: "npm:0.87.1" mime-types: "npm:^3.0.1" nullthrows: "npm:^1.1.1" serialize-error: "npm:^2.1.0" @@ -10449,7 +10971,7 @@ __metadata: yargs: "npm:^17.6.2" bin: metro: src/cli.js - checksum: 10c0/e7aa8b6968c45b4a68dfdf7f6d68e40be0ec888facd8d1bd304a2655ecec245533e9fbf525bd41bf01dd32a327c55a4fd81c229cd589d5796431a663777b0017 + checksum: 10c0/874637fb0eea6d7b2d970c2dd5c8e3b8dbcae92371b21b231d7bb95037e661db80a1a2f90ec2510d864e0abfe3d88947d256e60845b13436df6cf704a61ec4d1 languageName: node linkType: hard @@ -10477,7 +10999,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:2.1.35, mime-types@npm:^2.1.35, mime-types@npm:~2.1.34": +"mime-types@npm:2.1.35, mime-types@npm:^2.1.35, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -10535,11 +11057,11 @@ __metadata: linkType: hard "minimatch@npm:^10.2.2": - version: 10.2.5 - resolution: "minimatch@npm:10.2.5" + version: 10.2.6 + resolution: "minimatch@npm:10.2.6" dependencies: - brace-expansion: "npm:^5.0.5" - checksum: 10c0/6bb058bd6324104b9ec2f763476a35386d05079c1f5fe4fbf1f324a25237cd4534d6813ecd71f48208f4e635c1221899bef94c3c89f7df55698fe373aaae20fd + brace-expansion: "npm:^5.0.8" + checksum: 10c0/4559a836243b98bd4d17ea9f7edae698717c76399eea7be374f3737f33164e4907f19e9726891ddeb122f750a5a7fa80d2ac43e851d6e5984dc4ff42ec127d3a languageName: node linkType: hard @@ -10625,12 +11147,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.12": - version: 3.3.15 - resolution: "nanoid@npm:3.3.15" +"nanoid@npm:^3.3.18": + version: 3.3.19 + resolution: "nanoid@npm:3.3.19" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/e0b12e3a1d361f74150fa4b25631d0ae29f7162dab01a12f0f1be1f53b7a2a219f9b729504e474d4821207d0fe349bd3c97569ab5cf7ec2fff6aa94711956c93 + checksum: 10c0/ce7afa6258bfaa00bdc8de291cfe9913280eaa403b7d9cff3db4e4200c1913e7163577df74897958da144db473a96c67f74f57db0f542fbfe409df677bae3255 languageName: node linkType: hard @@ -10649,9 +11171,11 @@ __metadata: linkType: hard "negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + version: 1.1.0 + resolution: "negotiator@npm:1.1.0" + dependencies: + content-type: "npm:^2.1.0" + checksum: 10c0/656fa57de02f1a0c4c09f9e17eb78e8182547c07093e810ff8f16249b6ae31f2c546a3d457905e94f3276b25f0e2741ea1a3bc3912192932ed7e493adfea535e languageName: node linkType: hard @@ -10705,8 +11229,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 13.0.0 - resolution: "node-gyp@npm:13.0.0" + version: 13.0.2 + resolution: "node-gyp@npm:13.0.2" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -10716,11 +11240,11 @@ __metadata: semver: "npm:^7.3.5" tar: "npm:^7.5.4" tinyglobby: "npm:^0.2.12" - undici: "npm:^6.25.0" + undici: "npm:^8.4.1" which: "npm:^7.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/e7525c427db2d16aa368b8947187de83083d2a8dda23e3e096a71c22ae637ac5bb8ed7cf6c871f1b9118cd2729dbfee4ff3a4245e2b79226900227b15831b492 + checksum: 10c0/29d33ccf47ffeeb5e7af925550b416f698a26a72eb10975c7eb5775c1d0cecacd76d164a4aa45503d3ddcece209db65c712be00423c69381a4cd14e2e6540559 languageName: node linkType: hard @@ -10731,17 +11255,17 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.48": - version: 2.0.48 - resolution: "node-releases@npm:2.0.48" - checksum: 10c0/17eac8493c0be99130793e87fd67feb6291aecb9f4e473dea3b00f59c002cc8b9c0bdc923227c9aa84968da6b2e4c58e75251981503eb367ec9c742715175a34 +"node-releases@npm:^2.0.54": + version: 2.0.55 + resolution: "node-releases@npm:2.0.55" + checksum: 10c0/35a779a188b3c1801820b77ea3c429d0aacac346368016a92c357dfd781f2908540fc3782b25d41647c3334dec83c976890f40d254bfd788eb5e72c3730146d1 languageName: node linkType: hard "node-stream-zip@npm:^1.9.1": - version: 1.15.0 - resolution: "node-stream-zip@npm:1.15.0" - checksum: 10c0/429fce95d7e90e846adbe096c61d2ea8d18defc155c0345d25d0f98dd6fc72aeb95039318484a4e0a01dc3814b6d0d1ae0fe91847a29669dff8676ec064078c9 + version: 1.16.0 + resolution: "node-stream-zip@npm:1.16.0" + checksum: 10c0/3e201e39b42b46c2e543bd11c71821aa675a98d6cb4901840bd952281696599c9c29c630cd00e8da9bee4b02879fee2d0194a225b359d48a3bf966bdd63d8648 languageName: node linkType: hard @@ -10812,18 +11336,27 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.24 - resolution: "nwsapi@npm:2.2.24" - checksum: 10c0/9bc04ee9c7698f1b5506778d36f7382962f71667205d441d6a50f6180ee92328e770b76be78b907817ee103241b29984d3a17ae387e4723aebe0aeaed7a7c3a1 + version: 2.2.27 + resolution: "nwsapi@npm:2.2.27" + checksum: 10c0/14c1f6055dbe97b7564605ec7f39954f65ca47910345cf1e2aef7e6366276b9b12a0bad2d6090b418f78f9791a4f8d9ac098f94d85fd3acd7e3f491d75677476 languageName: node linkType: hard -"ob1@npm:0.87.0": - version: 0.87.0 - resolution: "ob1@npm:0.87.0" +"ob1@npm:0.83.8": + version: 0.83.8 + resolution: "ob1@npm:0.83.8" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/62e13c3ab3d821d43ac025e059a5f719081566a5d796741733e933243720857ba2b6a364a87e4925296ba37a02b78a631a67c9e1ca2ea20bc42a2819a83ebb51 + languageName: node + linkType: hard + +"ob1@npm:0.87.1": + version: 0.87.1 + resolution: "ob1@npm:0.87.1" dependencies: flow-enums-runtime: "npm:^0.0.6" - checksum: 10c0/917478964d9d0876fb0f1d07232ba02115589505972c98468780a174fc61b15ef8ffe322667836df385271db7b4beaf7916cd837b559776b601e3e6a46ca56c3 + checksum: 10c0/e75cfd9508668aefd23420f167f7305646f8515d71a8fa8d571f77f7c2b5b5862dd6171bf53d05be6061c32424306092bb8aeb359fa49e633d7d9fe40e6155da languageName: node linkType: hard @@ -11063,13 +11596,14 @@ __metadata: linkType: hard "own-keys@npm:^1.0.1": - version: 1.0.1 - resolution: "own-keys@npm:1.0.1" + version: 1.0.2 + resolution: "own-keys@npm:1.0.2" dependencies: - get-intrinsic: "npm:^1.2.6" + call-bound: "npm:^1.0.4" + get-intrinsic: "npm:^1.3.0" object-keys: "npm:^1.1.1" safe-push-apply: "npm:^1.0.0" - checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + checksum: 10c0/84b0d9959475231166c3d4b9abd1b8af8042911e2e5625761eed980d1a1e4381cf52b34d907cae21ee8766c79de943f3cd85eba636149dee5e64cceff3ccdb78 languageName: node linkType: hard @@ -11146,9 +11680,9 @@ __metadata: linkType: hard "p-map@npm:^7.0.2": - version: 7.0.5 - resolution: "p-map@npm:7.0.5" - checksum: 10c0/4ccbb67d36a8d6e2125ab64ccabee424d1c89b03c10afb43830523c7b9aacc1005e5d21ca7aea70bdc556bd548b7bde65df23c7a18091bbf2b5daf9b86fbc8c5 + version: 7.0.8 + resolution: "p-map@npm:7.0.8" + checksum: 10c0/1913c452dce4e17e87f7e91d998a191b9b44b97a81f5dd0c7154d2eb00179c41465f414fa23a5b2ef5644a4124cef348a88bbfc9cff6fd56551650a8c4ff1211 languageName: node linkType: hard @@ -11375,9 +11909,9 @@ __metadata: linkType: hard "picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": - version: 4.0.4 - resolution: "picomatch@npm:4.0.4" - checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0 + version: 4.0.7 + resolution: "picomatch@npm:4.0.7" + checksum: 10c0/beb6ae02c43ae44e84883b90830196d9046b1726ead292adcf7f57945e0bb0d992d68563d87e03b484b6f3c9a5c6defda7523477f047d7f0e663f126cc01787f languageName: node linkType: hard @@ -11429,13 +11963,13 @@ __metadata: linkType: hard "postcss@npm:^8.5.6": - version: 8.5.15 - resolution: "postcss@npm:8.5.15" + version: 8.5.28 + resolution: "postcss@npm:8.5.28" dependencies: - nanoid: "npm:^3.3.12" + nanoid: "npm:^3.3.18" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/7f2e63ae22fbe43aace1bf652bd99da4e90737c64194d49e51ddc9cd0f9e51ff2861a7d734379b494deffa03a880a5c65eec70bc29ee9ebaa7136dde3eee8f31 + checksum: 10c0/9fe44215a6628d89c8a75184b92f5b2f77e16f9e5b13b39b9009bb7e8e6eccddf82c8854bae922db1f17ace6ef3445073fe38abff513caeb03e5285b1b55620a languageName: node linkType: hard @@ -11463,11 +11997,11 @@ __metadata: linkType: hard "prettier@npm:^3.0.3": - version: 3.8.4 - resolution: "prettier@npm:3.8.4" + version: 3.9.6 + resolution: "prettier@npm:3.9.6" bin: prettier: bin/prettier.cjs - checksum: 10c0/b90a0cbe75b88ac0af9c13fe0f359bd19926fabccd88483227b21f71f0c1cc42da056fc1ac3a361e665577c568371d5ccfb2c62c31c8a1186f8d1bd531a063e9 + checksum: 10c0/9f7ddae234035868f3daab3dc34e6de7e54622185afb017378029f0c09a9c023248ccf6f34def0b17a0538e18c47aa1b3188bab72965d1bf735919baa0747e99 languageName: node linkType: hard @@ -11520,33 +12054,33 @@ __metadata: linkType: hard "prosemirror-changeset@npm:^2.3.0": - version: 2.4.1 - resolution: "prosemirror-changeset@npm:2.4.1" + version: 2.4.2 + resolution: "prosemirror-changeset@npm:2.4.2" dependencies: prosemirror-transform: "npm:^1.0.0" - checksum: 10c0/ca6b6bab73809dbb8554cddc0a3af666db8bcfed57938314ce6b04b28e41ea355441eaadabcddd9c785727219ad3779534dfa6e33521f0d333e90788b8dc9e3c + checksum: 10c0/41c1a75d63572283381800cef354fe66b35177d3a11c1effea9546cd89f153ab44ba387fdaa57316ecd10f1fd586757653a04f156272eb42bc73a0c54d9c81c5 languageName: node linkType: hard "prosemirror-commands@npm:^1.6.2": - version: 1.7.1 - resolution: "prosemirror-commands@npm:1.7.1" + version: 1.7.2 + resolution: "prosemirror-commands@npm:1.7.2" dependencies: prosemirror-model: "npm:^1.0.0" prosemirror-state: "npm:^1.0.0" prosemirror-transform: "npm:^1.10.2" - checksum: 10c0/4884ea7a66b79b51e72bb2ef358284d70e9a071deb4cbfab3dd8ee3449e9a0e34cb391d92f487c013d3716b823fc5568ad5e409a9444b3630ae0b87617c2fca1 + checksum: 10c0/50f5b7ddcd9dc497a3d2e672da87fd457dae4ed4d5e2af326f71dad66dfa2b7937162d32e5e118703d2234e1cc2596b23fc5fd05a917e9f7d89d6602e0480051 languageName: node linkType: hard "prosemirror-dropcursor@npm:^1.8.1": - version: 1.8.2 - resolution: "prosemirror-dropcursor@npm:1.8.2" + version: 1.8.3 + resolution: "prosemirror-dropcursor@npm:1.8.3" dependencies: prosemirror-state: "npm:^1.0.0" prosemirror-transform: "npm:^1.1.0" prosemirror-view: "npm:^1.1.0" - checksum: 10c0/c3d9e456a64fecc77a6e6a0350116598550dee8cb55f74e8b66fdb26150c48340ddd1f43184134b24d0f2e710b6879ff6ec72c215dc618a6a673320a91c90478 + checksum: 10c0/123381f83a1843ee97d98143bde070cef727dbd20228f63bf7ebf30446d4352baf6982702de9907b27b7958a33d46c8c3d1a274331862c8d7a5912c838a6abce languageName: node linkType: hard @@ -11595,11 +12129,11 @@ __metadata: linkType: hard "prosemirror-model@npm:^1.0.0, prosemirror-model@npm:^1.21.0, prosemirror-model@npm:^1.25.4, prosemirror-model@npm:^1.25.7, prosemirror-model@npm:^1.25.8": - version: 1.25.9 - resolution: "prosemirror-model@npm:1.25.9" + version: 1.25.11 + resolution: "prosemirror-model@npm:1.25.11" dependencies: orderedmap: "npm:^2.0.0" - checksum: 10c0/e8afcc02e9f64b366060212421b7ce1ad6b99f6b73381ee92358b1841e53359f0f8ba333af8a5a70bb12d06ad2464ab89ce72bfa49a09753e7f00ac9ec4da0c7 + checksum: 10c0/e41faa477414160a602289b778189163b39a4563799defea1862183087f9ec77f02c292e3e79dd32fcc1a8878aedbdcea50f0f752ee03fe64c24ce6780b82205 languageName: node linkType: hard @@ -11639,22 +12173,22 @@ __metadata: linkType: hard "prosemirror-transform@npm:^1.0.0, prosemirror-transform@npm:^1.1.0, prosemirror-transform@npm:^1.10.2, prosemirror-transform@npm:^1.10.5, prosemirror-transform@npm:^1.12.0, prosemirror-transform@npm:^1.7.3": - version: 1.12.0 - resolution: "prosemirror-transform@npm:1.12.0" + version: 1.12.1 + resolution: "prosemirror-transform@npm:1.12.1" dependencies: prosemirror-model: "npm:^1.21.0" - checksum: 10c0/e9e94fbb36fa53badc73d27833bac834835246f28a6176fb33c65a85c9025da0c08ac503f860898591a14fcacef58ba18a29e8df5a916cf376084bc17f324753 + checksum: 10c0/054373306017df90325c90c7edd86c312a4c5d436d05f330e5a2fb4d4a227929693c4464762cd238dc6615e5e6037253bdae0673f3292e2e4fd83dc112c138c7 languageName: node linkType: hard "prosemirror-view@npm:^1.0.0, prosemirror-view@npm:^1.1.0, prosemirror-view@npm:^1.27.0, prosemirror-view@npm:^1.31.0, prosemirror-view@npm:^1.41.4, prosemirror-view@npm:^1.41.8": - version: 1.41.9 - resolution: "prosemirror-view@npm:1.41.9" + version: 1.42.3 + resolution: "prosemirror-view@npm:1.42.3" dependencies: prosemirror-model: "npm:^1.25.8" prosemirror-state: "npm:^1.0.0" prosemirror-transform: "npm:^1.1.0" - checksum: 10c0/fe00947b6a54de50c4990505fd25dde236abcb031d484947b2fea079ae3bef94e04180363656f7a3aa7461ed09004e0c91d9ccc93a50f7ecfd8de02977c84f37 + checksum: 10c0/42fb27a28378ff843468caa1b99ecf9a74b3b170b25b7009954bcaa11379f6aa10e885c44fa29fe8dd2d892904890ade47952e61acc1512bda4dc926eb2a1bd9 languageName: node linkType: hard @@ -11737,13 +12271,13 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.15.2": - version: 6.15.3 - resolution: "qs@npm:6.15.3" +"qs@npm:^6.15.2, qs@npm:~6.16.0": + version: 6.16.0 + resolution: "qs@npm:6.16.0" dependencies: es-define-property: "npm:^1.0.1" side-channel: "npm:^1.1.1" - checksum: 10c0/8f3f6e45ece255347d57696628401cde29e9ec649fff698b53bd3150dea7cefdf33036e1bc1826b9f110bfa7cb0ec4ab9f5297eca628ce216c55af82c304e08e + checksum: 10c0/eb3e31992fbd70e31a1791e571ed817d70975de7d3bfcbbbec93d77d1dd305877e9e8fdbcc62303c228ee5c3606685622cd6231c042dbc4790bb4e7c65fcbe18 languageName: node linkType: hard @@ -11761,15 +12295,6 @@ __metadata: languageName: node linkType: hard -"queue@npm:6.0.2": - version: 6.0.2 - resolution: "queue@npm:6.0.2" - dependencies: - inherits: "npm:~2.0.3" - checksum: 10c0/cf987476cc72e7d3aaabe23ccefaab1cd757a2b5e0c8d80b67c9575a6b5e1198807ffd4f0948a3f118b149d1111d810ee773473530b77a5c606673cac2c9c996 - languageName: node - linkType: hard - "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" @@ -11796,6 +12321,18 @@ __metadata: languageName: node linkType: hard +"raw-body@npm:~2.5.3": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" + dependencies: + bytes: "npm:~3.1.2" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + unpipe: "npm:~1.0.0" + checksum: 10c0/449844344fc90547fb994383a494b83300e4f22199f146a79f68d78a199a8f2a923ea9fd29c3be979bfd50291a3884733619ffc15ba02a32e703b612f8d3f74a + languageName: node + linkType: hard + "rc@npm:1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -11832,13 +12369,13 @@ __metadata: linkType: hard "react-dom@npm:^19.1.0": - version: 19.2.7 - resolution: "react-dom@npm:19.2.7" + version: 19.3.0 + resolution: "react-dom@npm:19.3.0" dependencies: - scheduler: "npm:^0.27.0" + scheduler: "npm:^0.28.0" peerDependencies: - react: ^19.2.7 - checksum: 10c0/970ff600f6e80d47d39e2f226f12f226173b3cba3382efc97c5f0cd663de9af38c7a4c11c213fb936094faeac83060d660247accaa96b752180d5b951b9cfecb + react: ^19.3.0 + checksum: 10c0/c513044b724dd6bfe9500a9682d60973e7f8a48cffba00b6b16d3e910e27dcc459bf71bf0a5c33d7d62a3843ca30de1bd1e2098058aa4ed71f618a24b6061da5 languageName: node linkType: hard @@ -11889,8 +12426,8 @@ __metadata: linkType: hard "react-native-builder-bob@npm:^0.43.0": - version: 0.43.0 - resolution: "react-native-builder-bob@npm:0.43.0" + version: 0.43.1 + resolution: "react-native-builder-bob@npm:0.43.1" dependencies: "@babel/core": "npm:^7.29.0" "@babel/plugin-transform-flow-strip-types": "npm:^7.27.1" @@ -11916,7 +12453,7 @@ __metadata: yargs: "npm:^18.0.0" bin: bob: bin/bob - checksum: 10c0/b084598636b26bb6f1942c01b77d65d9bea09e148627c61bd9f79145ddb9ec947d7b004a718d14f3db2d4960d67c1e8c70fb0377864d6c3a572f611d489cb970 + checksum: 10c0/aa7423d549f3dedac66950482dd4c62c6ad42f3a04c47ac23e37bb454103b5fc18fc1bd889f0156d64c3e786f47f6046705736cbe43af9a0563ae90f14f41792 languageName: node linkType: hard @@ -12003,6 +12540,28 @@ __metadata: languageName: unknown linkType: soft +"react-native-enriched-macos-example@workspace:apps/example-macos": + version: 0.0.0-use.local + resolution: "react-native-enriched-macos-example@workspace:apps/example-macos" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/preset-env": "npm:^7.25.3" + "@babel/runtime": "npm:^7.25.0" + "@react-native-community/cli": "npm:20.0.0" + "@react-native-community/cli-platform-android": "npm:20.0.0" + "@react-native-community/cli-platform-ios": "npm:20.0.0" + "@react-native/babel-preset": "npm:0.81.6" + "@react-native/metro-config": "npm:0.81.6" + "@react-native/typescript-config": "npm:0.81.6" + "@types/react": "npm:^19.1.4" + react: "npm:19.1.4" + react-native: "npm:0.81.6" + react-native-builder-bob: "npm:^0.40.18" + react-native-macos: "npm:^0.81.8" + react-native-monorepo-config: "npm:0.3.3" + languageName: unknown + linkType: soft + "react-native-enriched-web-example@workspace:apps/example-web": version: 0.0.0-use.local resolution: "react-native-enriched-web-example@workspace:apps/example-web" @@ -12036,6 +12595,58 @@ __metadata: languageName: node linkType: hard +"react-native-macos@npm:^0.81.8": + version: 0.81.9 + resolution: "react-native-macos@npm:0.81.9" + dependencies: + "@jest/create-cache-key-function": "npm:^29.7.0" + "@react-native-macos/virtualized-lists": "npm:0.81.9" + "@react-native/assets-registry": "npm:0.81.6" + "@react-native/codegen": "npm:0.81.6" + "@react-native/community-cli-plugin": "npm:0.81.6" + "@react-native/gradle-plugin": "npm:0.81.6" + "@react-native/js-polyfills": "npm:0.81.6" + "@react-native/normalize-colors": "npm:0.81.6" + abort-controller: "npm:^3.0.0" + anser: "npm:^1.4.9" + ansi-regex: "npm:^5.0.0" + babel-jest: "npm:^29.7.0" + babel-plugin-syntax-hermes-parser: "npm:0.29.1" + base64-js: "npm:^1.5.1" + commander: "npm:^12.0.0" + flow-enums-runtime: "npm:^0.0.6" + glob: "npm:^7.1.1" + invariant: "npm:^2.2.4" + jest-environment-node: "npm:^29.7.0" + memoize-one: "npm:^5.0.0" + metro-runtime: "npm:^0.83.1" + metro-source-map: "npm:^0.83.1" + nullthrows: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + promise: "npm:^8.3.0" + react-devtools-core: "npm:^6.1.5" + react-refresh: "npm:^0.14.0" + regenerator-runtime: "npm:^0.13.2" + scheduler: "npm:0.26.0" + semver: "npm:^7.1.3" + stacktrace-parser: "npm:^0.1.10" + whatwg-fetch: "npm:^3.0.0" + ws: "npm:^6.2.3" + yargs: "npm:^17.6.2" + peerDependencies: + "@types/react": ^19.1.4 + react: ^19.1.4 + react-native: 0.81.6 + peerDependenciesMeta: + "@types/react": + optional: true + bin: + react-native: cli.js + react-native-macos: cli.js + checksum: 10c0/c658b232f3c99c35dcb4566e5e5e3b772aa18c765fa545704be6812148d535f100b29d76c612c8514ad7410d47f5c78ac6482833947c313d8a28ad436c940523 + languageName: node + linkType: hard + "react-native-monorepo-config@npm:0.3.3": version: 0.3.3 resolution: "react-native-monorepo-config@npm:0.3.3" @@ -12056,6 +12667,56 @@ __metadata: languageName: node linkType: hard +"react-native@npm:0.81.6": + version: 0.81.6 + resolution: "react-native@npm:0.81.6" + dependencies: + "@jest/create-cache-key-function": "npm:^29.7.0" + "@react-native/assets-registry": "npm:0.81.6" + "@react-native/codegen": "npm:0.81.6" + "@react-native/community-cli-plugin": "npm:0.81.6" + "@react-native/gradle-plugin": "npm:0.81.6" + "@react-native/js-polyfills": "npm:0.81.6" + "@react-native/normalize-colors": "npm:0.81.6" + "@react-native/virtualized-lists": "npm:0.81.6" + abort-controller: "npm:^3.0.0" + anser: "npm:^1.4.9" + ansi-regex: "npm:^5.0.0" + babel-jest: "npm:^29.7.0" + babel-plugin-syntax-hermes-parser: "npm:0.29.1" + base64-js: "npm:^1.5.1" + commander: "npm:^12.0.0" + flow-enums-runtime: "npm:^0.0.6" + glob: "npm:^7.1.1" + invariant: "npm:^2.2.4" + jest-environment-node: "npm:^29.7.0" + memoize-one: "npm:^5.0.0" + metro-runtime: "npm:^0.83.1" + metro-source-map: "npm:^0.83.1" + nullthrows: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + promise: "npm:^8.3.0" + react-devtools-core: "npm:^6.1.5" + react-refresh: "npm:^0.14.0" + regenerator-runtime: "npm:^0.13.2" + scheduler: "npm:0.26.0" + semver: "npm:^7.1.3" + stacktrace-parser: "npm:^0.1.10" + whatwg-fetch: "npm:^3.0.0" + ws: "npm:^6.2.3" + yargs: "npm:^17.6.2" + peerDependencies: + "@types/react": ^19.1.4 + react: ^19.1.4 + peerDependenciesMeta: + "@types/react": + optional: true + bin: + react-native: cli.js + checksum: 10c0/ff42d33412091c0e22d2366c9aea726e33637d2e34c6a5b2703687923078aeb615b3cd38da637ffd2105d681cecb9e2da0b371a77452931347dcc8171b9d7d72 + languageName: node + linkType: hard + "react-native@npm:0.87.0": version: 0.87.0 resolution: "react-native@npm:0.87.0" @@ -12116,6 +12777,13 @@ __metadata: languageName: node linkType: hard +"react@npm:19.1.4": + version: 19.1.4 + resolution: "react@npm:19.1.4" + checksum: 10c0/159257dbaf168facecc0a34825114e2b00624d315b7dca8468afcc790eadf5a49f90c0234be7492c7207239292e789e443ca419a83121898b82b0824454900f2 + languageName: node + linkType: hard + "react@npm:19.2.3": version: 19.2.3 resolution: "react@npm:19.2.3" @@ -12124,9 +12792,9 @@ __metadata: linkType: hard "react@npm:^19.1.0": - version: 19.2.7 - resolution: "react@npm:19.2.7" - checksum: 10c0/0bd0e2f1bbd4ba97561c6597bf8a5fec05e6476fe61e165c1065598d16668efc6715205599c94d3ddd49d36cb0f21cbf1b9bcc18ee840b805ce222c3e8d558ac + version: 19.3.0 + resolution: "react@npm:19.3.0" + checksum: 10c0/dd3099c3c43a7122bc01223bb26b0f8d5ba13cca569af6fb94a005fb54fa73223c9cb203bb226d40cfd49a82cbeef2e36ce84062a3a6d5b9fe8f4437694c7b52 languageName: node linkType: hard @@ -12246,7 +12914,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": +"regexp.prototype.flags@npm:^1.5.4": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: @@ -12508,37 +13176,40 @@ __metadata: linkType: hard "rollup@npm:^4.43.0": - version: 4.62.2 - resolution: "rollup@npm:4.62.2" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.62.2" - "@rollup/rollup-android-arm64": "npm:4.62.2" - "@rollup/rollup-darwin-arm64": "npm:4.62.2" - "@rollup/rollup-darwin-x64": "npm:4.62.2" - "@rollup/rollup-freebsd-arm64": "npm:4.62.2" - "@rollup/rollup-freebsd-x64": "npm:4.62.2" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.62.2" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.62.2" - "@rollup/rollup-linux-arm64-gnu": "npm:4.62.2" - "@rollup/rollup-linux-arm64-musl": "npm:4.62.2" - "@rollup/rollup-linux-loong64-gnu": "npm:4.62.2" - "@rollup/rollup-linux-loong64-musl": "npm:4.62.2" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.62.2" - "@rollup/rollup-linux-ppc64-musl": "npm:4.62.2" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.62.2" - "@rollup/rollup-linux-riscv64-musl": "npm:4.62.2" - "@rollup/rollup-linux-s390x-gnu": "npm:4.62.2" - "@rollup/rollup-linux-x64-gnu": "npm:4.62.2" - "@rollup/rollup-linux-x64-musl": "npm:4.62.2" - "@rollup/rollup-openbsd-x64": "npm:4.62.2" - "@rollup/rollup-openharmony-arm64": "npm:4.62.2" - "@rollup/rollup-win32-arm64-msvc": "npm:4.62.2" - "@rollup/rollup-win32-ia32-msvc": "npm:4.62.2" - "@rollup/rollup-win32-x64-gnu": "npm:4.62.2" - "@rollup/rollup-win32-x64-msvc": "npm:4.62.2" + version: 4.63.2 + resolution: "rollup@npm:4.63.2" + dependencies: + "@napi-rs/lzma-linux-x64-gnu": "npm:1.5.1" + "@rollup/rollup-android-arm-eabi": "npm:4.63.2" + "@rollup/rollup-android-arm64": "npm:4.63.2" + "@rollup/rollup-darwin-arm64": "npm:4.63.2" + "@rollup/rollup-darwin-x64": "npm:4.63.2" + "@rollup/rollup-freebsd-arm64": "npm:4.63.2" + "@rollup/rollup-freebsd-x64": "npm:4.63.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.63.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.63.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.63.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.63.2" + "@rollup/rollup-linux-loong64-gnu": "npm:4.63.2" + "@rollup/rollup-linux-loong64-musl": "npm:4.63.2" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.63.2" + "@rollup/rollup-linux-ppc64-musl": "npm:4.63.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.63.2" + "@rollup/rollup-linux-riscv64-musl": "npm:4.63.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.63.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.63.2" + "@rollup/rollup-linux-x64-musl": "npm:4.63.2" + "@rollup/rollup-openbsd-x64": "npm:4.63.2" + "@rollup/rollup-openharmony-arm64": "npm:4.63.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.63.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.63.2" + "@rollup/rollup-win32-x64-gnu": "npm:4.63.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.63.2" "@types/estree": "npm:1.0.9" fsevents: "npm:~2.3.2" dependenciesMeta: + "@napi-rs/lzma-linux-x64-gnu": + optional: true "@rollup/rollup-android-arm-eabi": optional: true "@rollup/rollup-android-arm64": @@ -12593,7 +13264,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/83ff5f4a1fea3fa05db2ef56beceee8c33d4a72b818e19c562f1e85c41076fe5b12aadc44048bb73e60b83336df82154b017fa6bf0186f3141643e6f215fbdcb + checksum: 10c0/3fc54d1ca6395b03a79594c0406e1f3549a96320d3f2261d0140c470977446d96d944d9728388fffeaa6cb605b125965c7d4aa224ab3ac05d0dac8c0c68ccc8e languageName: node linkType: hard @@ -12693,6 +13364,13 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: 10c0/5b8d5bfddaae3513410eda54f2268e98a376a429931921a81b5c3a2873aab7ca4d775a8caac5498f8cbc7d0daeab947cf923dbd8e215d61671f9f4e392d34356 + languageName: node + linkType: hard + "scheduler@npm:0.27.0, scheduler@npm:^0.27.0": version: 0.27.0 resolution: "scheduler@npm:0.27.0" @@ -12700,6 +13378,13 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.28.0": + version: 0.28.0 + resolution: "scheduler@npm:0.28.0" + checksum: 10c0/783c8e5ce89d41273a02ed6dc0e3d24bd60e05c9e8f7e3adfc6c82e7c69935500d90e343f1ee26d592fc7504e8a2532573c6368def3e93bfe812391fa53efaf4 + languageName: node + linkType: hard + "semver@npm:7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" @@ -12974,12 +13659,12 @@ __metadata: linkType: hard "socks@npm:^2.8.3": - version: 2.8.9 - resolution: "socks@npm:2.8.9" + version: 2.8.10 + resolution: "socks@npm:2.8.10" dependencies: ip-address: "npm:^10.1.1" smart-buffer: "npm:^4.2.0" - checksum: 10c0/2d4350c31142b0931eb1758825b426bcbf4bfb5eed682ca48bc46dc9e7d1930ec366ea574ad49fc6c1fd9e9e17ce243be0ef13e31fc4b0319d9093f1fb19743c + checksum: 10c0/9ac7f4329ed064585975206d9582119a1f168b249dd6119a939f839e0ea7a590d4fdccff9a4112f13b478177207959096f70224f021eaeb3ce69bc8129f80ef4 languageName: node linkType: hard @@ -13185,24 +13870,34 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^8.2.1": + version: 8.2.2 + resolution: "string-width@npm:8.2.2" + dependencies: + get-east-asian-width: "npm:^1.5.0" + strip-ansi: "npm:^7.1.2" + checksum: 10c0/895624534e4e2f229e880bbc30aa77bdeb758e1a0edce203e0a17b8b4f08b8d3c1156516efc50a35e3efd0052d938a73797692111250ac9f52ee384710a01714 + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.12": - version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12" + version: 4.1.0 + resolution: "string.prototype.matchall@npm:4.1.0" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.9" + call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" + es-abstract: "npm:^1.24.2" es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" + es-object-atoms: "npm:^1.1.2" + get-intrinsic: "npm:^1.3.0" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" internal-slot: "npm:^1.1.0" - regexp.prototype.flags: "npm:^1.5.3" + regexp.prototype.flags: "npm:^1.5.4" set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c + side-channel: "npm:^1.1.1" + checksum: 10c0/6bafcfc71b13082d0474c037e8fbd4d9c5e769eae1ba1f9d293666bc6385337c2af359604a68bc6afa18b9a71ab64ac431f49b8006db57ed118cde176bd3a7f6 languageName: node linkType: hard @@ -13282,7 +13977,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0, strip-ansi@npm:^7.1.2": version: 7.2.0 resolution: "strip-ansi@npm:7.2.0" dependencies: @@ -13333,12 +14028,19 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^2.4.1": - version: 2.4.1 - resolution: "strnum@npm:2.4.1" +"strnum@npm:^1.0.5": + version: 1.1.2 + resolution: "strnum@npm:1.1.2" + checksum: 10c0/a0fce2498fa3c64ce64a40dada41beb91cabe3caefa910e467dc0518ef2ebd7e4d10f8c2202a6104f1410254cae245066c0e94e2521fb4061a5cb41831952392 + languageName: node + linkType: hard + +"strnum@npm:^2.4.2": + version: 2.4.2 + resolution: "strnum@npm:2.4.2" dependencies: anynum: "npm:^1.0.1" - checksum: 10c0/0d6a42bf8a1ad74b0a6c048ecf3bea50757383bcf304877ebe6e62acca5574bc088ce71bfb4de4b89b2ab44c618834c76be5894da04b67c673ff6677788b2638 + checksum: 10c0/71a94dcc12cf3187e10089ed2ddcf7c289fed168ce4a33ee393bbd009a9199c237e3ef71597f3c91fac4203dd1e675c090eb4131226fd70af6fa2a31b0175de2 languageName: node linkType: hard @@ -13400,21 +14102,21 @@ __metadata: linkType: hard "tar@npm:^7.5.4": - version: 7.5.16 - resolution: "tar@npm:7.5.16" + version: 7.5.22 + resolution: "tar@npm:7.5.22" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/4f37f3c4bd2ca2755fd736a5df1d573c1a868ec1b1e893346aeafa95ac510f9e2fd1469420bd866cc7904799e5bd4ac62b5d4f03fe27747d6e1e373b44505c5c + checksum: 10c0/1311f6be85a8157ac4c9147bae43e13923d2a1aae15e4aa1bd5239e4e03d2cf53cfe103dde7f35832fbb4c938b042856bc8e9a0afd29abd05e2d1608788c4fea languageName: node linkType: hard "terser@npm:^5.15.0": - version: 5.48.0 - resolution: "terser@npm:5.48.0" + version: 5.51.2 + resolution: "terser@npm:5.51.2" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.15.0" @@ -13422,7 +14124,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/d6ee713ea09a2b83b461ccbf1b76bd673a5090b3076ec13db7edc6d6470ab940d21c87b8d1ad82523b7cf02d9be07393fcdd334bde8f589e9bc3804da6fc32d2 + checksum: 10c0/e6dd3d9152ad51b5a990e55bf0647701278970193d2ce2359a401623e65827a27a1803f5d58593a1f0b5e10ff3fa316a8d014d4f88a28d98ea94fb69359aeae5 languageName: node linkType: hard @@ -13459,9 +14161,9 @@ __metadata: linkType: hard "tinyexec@npm:^1.0.0": - version: 1.2.4 - resolution: "tinyexec@npm:1.2.4" - checksum: 10c0/153b8db6b080194b558ff145b9cffc36b80a6e07babd644dcfbe49c807eee668c876049d28bdee90b96304476f883352f2dad91b3f86bc23832532f4363e66ff + version: 1.3.1 + resolution: "tinyexec@npm:1.3.1" + checksum: 10c0/c590369cb3fa73cc18a3998caec8a00f9712d91309c881be3ac52b160fb2f80c7b1fbf3591858ab6abab47ad55385b0c86ec19982e32441a01f55298dab9ccd2 languageName: node linkType: hard @@ -13702,6 +14404,16 @@ __metadata: languageName: node linkType: hard +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + "typed-array-buffer@npm:^1.0.3": version: 1.0.3 resolution: "typed-array-buffer@npm:1.0.3" @@ -13763,17 +14475,17 @@ __metadata: linkType: hard "typescript-eslint@npm:^8.46.4": - version: 8.62.0 - resolution: "typescript-eslint@npm:8.62.0" + version: 8.70.0 + resolution: "typescript-eslint@npm:8.70.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.62.0" - "@typescript-eslint/parser": "npm:8.62.0" - "@typescript-eslint/typescript-estree": "npm:8.62.0" - "@typescript-eslint/utils": "npm:8.62.0" + "@typescript-eslint/eslint-plugin": "npm:8.70.0" + "@typescript-eslint/parser": "npm:8.70.0" + "@typescript-eslint/typescript-estree": "npm:8.70.0" + "@typescript-eslint/utils": "npm:8.70.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/263056d927b79c17b0c84849953642af202106e55914c5a606a4c76445b6428b2412e2d08cc20318b8aed9d1988e2a0cea60387e18ef0862beae13e8bc1df690 + checksum: 10c0/bf6625631bfcc7392bb1403681ef934f4f428c41a6a090b081a77ed0d342326c31097956900d701d078ac0c8a599d53377b504455fa9ce7214365c4c8d4635a3 languageName: node linkType: hard @@ -13852,17 +14564,17 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~8.3.0": - version: 8.3.0 - resolution: "undici-types@npm:8.3.0" - checksum: 10c0/c8aa7e2fbebfce519654dafadc0ece59be888d2ccaf180fb4495da875e7b536d2456345c384069c7e6f3e9c9ab7435f074957da306f142343eee86ff8048855a +"undici-types@npm:~8.9.0": + version: 8.9.0 + resolution: "undici-types@npm:8.9.0" + checksum: 10c0/51c712c20c087368f62c6fc0f2bc49fa76bfe5dec28ff01584bb677ff29b0622569783c02d43e151143808c48c0503f804093bd2c491b10f2a830138034cb451 languageName: node linkType: hard -"undici@npm:^6.25.0": - version: 6.27.0 - resolution: "undici@npm:6.27.0" - checksum: 10c0/f88c3dae3957dbf9d93cb481440aced317bd3c4941b5914fea5efba516d51138988cdb5c76006f0bb1337e41d56c3443351055d492e73af2428521c37ba2a76f +"undici@npm:^8.4.1": + version: 8.10.2 + resolution: "undici@npm:8.10.2" + checksum: 10c0/66d7fc69149207cab570d6abbc9e965b6afe1ae889a7d46945b431165c973d6a56f3dd8b70a856e7ae1e550b6366a1cde6f06e68640587f0dadca38de72995ee languageName: node linkType: hard @@ -13946,9 +14658,9 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.2.3": - version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3" +"update-browserslist-db@npm:^1.3.2": + version: 1.3.3 + resolution: "update-browserslist-db@npm:1.3.3" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -13956,7 +14668,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec + checksum: 10c0/07bab166c18f47ba51f3b755e42f109ef5069d0d7c7224887decbd523d5ccd404f63661ebd5a740099972ed47f41f0e28c04df8be31d76716a346f948ce2aa61 languageName: node linkType: hard @@ -14005,11 +14717,11 @@ __metadata: linkType: hard "use-sync-external-store@npm:^1.4.0": - version: 1.6.0 - resolution: "use-sync-external-store@npm:1.6.0" + version: 1.7.0 + resolution: "use-sync-external-store@npm:1.7.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/35e1179f872a53227bdf8a827f7911da4c37c0f4091c29b76b1e32473d1670ebe7bcd880b808b7549ba9a5605c233350f800ffab963ee4a4ee346ee983b6019b + checksum: 10c0/6bae7cb778ce611131ec830c4e469fbc2872acefc25d2e4cf1c28b8628690689770742a9f2f0642c95134f9c77041fee60f0352f81ca43f96643b0ed01774726 languageName: node linkType: hard @@ -14056,10 +14768,10 @@ __metadata: linkType: hard "vite@npm:^7.2.4": - version: 7.3.5 - resolution: "vite@npm:7.3.5" + version: 7.3.6 + resolution: "vite@npm:7.3.6" dependencies: - esbuild: "npm:^0.27.0" + esbuild: "npm:^0.27.0 || ^0.28.0" fdir: "npm:^6.5.0" fsevents: "npm:~2.3.3" picomatch: "npm:^4.0.3" @@ -14106,7 +14818,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/4ad700649ed2ebd1e726d32f3f6e41eecbec4e29bcb5977805f3d43a5659280518aa431b0fc61adc1879df4fe1978d7cfc7dbbe54cdf014022385052967721e8 + checksum: 10c0/c6d359f84ad362f5c97ff7988b77c90add04162c60cdf6059375a7d9e3217848c53a8cb6b6c48517bef84b6bba4c9bc85319a889b5236acb7d5a2bc8cb7b9a8d languageName: node linkType: hard @@ -14400,17 +15112,17 @@ __metadata: linkType: hard "ws@npm:^6.2.3": - version: 6.2.4 - resolution: "ws@npm:6.2.4" + version: 6.2.6 + resolution: "ws@npm:6.2.6" dependencies: async-limiter: "npm:~1.0.0" - checksum: 10c0/5c2b9474164f9cb68c7776a1d10b0461c186f3a69bffb1028fca33eba5ab7206a09173fb0b311d6c5a81c8cf148406f8deb0b7d899542ab8ca67407d99717dad + checksum: 10c0/24245efc3c09b6175df32ddb4a06f85432c4c88abb0e75f43f2551c1d5de456218b1b6c7685c414b8e03a68a167488e4aadf04a895681c8e01502025ce505742 languageName: node linkType: hard "ws@npm:^7, ws@npm:^7.5.10": - version: 7.5.11 - resolution: "ws@npm:7.5.11" + version: 7.5.13 + resolution: "ws@npm:7.5.13" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -14419,13 +15131,13 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/7972670b676fb1ccba73b0899ca3c2e04e8c2075629c2614cced7f556536f96a672bbf4619fc5a06c8b8720bb839a47ca88c69c95dc14c9c61a99fbecba1c866 + checksum: 10c0/e223726bbda5768ed58ec9252d04eda7018ef380ea122bb94e595a4d7a02b5baeb423933936576fddb8fa51b642375f7ae814bf0f6f5d9a3ce290566578a8c5a languageName: node linkType: hard "ws@npm:^8.11.0": - version: 8.21.0 - resolution: "ws@npm:8.21.0" + version: 8.21.3 + resolution: "ws@npm:8.21.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -14434,7 +15146,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/ef4a243476283fc49bc7550966c4af4aa0eef56273837211e700de3b664e08604a760cdddcb5ba43c049140e74ccfec5b0ee0bb439e08c2adf9138902fdde5f9 + checksum: 10c0/7b28dc2863ea0e2cece68d142a3eee90361021b73f750431e6d8076bb7dede5fdfdb75b3d29534b62f411261147b76b1bc80fb5cc63ab0aabd467280e85b22e0 languageName: node linkType: hard @@ -14501,12 +15213,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.1": - version: 2.9.0 - resolution: "yaml@npm:2.9.0" +"yaml@npm:^2.2.1, yaml@npm:^2.6.1": + version: 2.9.1 + resolution: "yaml@npm:2.9.1" bin: yaml: bin.mjs - checksum: 10c0/f340718df45e97a9551b9bf9dac61c80050bc464513b710debfb5067c380c8472e3b67809cffacb4ab5ffb5e66ef9310816c88b05f371cec60abfedd8c88e0a2 + checksum: 10c0/9d06676ef02b89559a8b10a71882bd2cdae81e8393dc8dbc871615c3259475d9609ad973d19cb3c9e71e72d6206e3d1e7aa241c7e55f3d16fd2e77db305827d6 languageName: node linkType: hard @@ -14576,16 +15288,16 @@ __metadata: linkType: hard "yargs@npm:^18.0.0": - version: 18.0.0 - resolution: "yargs@npm:18.0.0" + version: 18.1.0 + resolution: "yargs@npm:18.1.0" dependencies: cliui: "npm:^9.0.1" escalade: "npm:^3.1.1" get-caller-file: "npm:^2.0.5" - string-width: "npm:^7.2.0" + string-width: "npm:^8.2.1" y18n: "npm:^5.0.5" yargs-parser: "npm:^22.0.0" - checksum: 10c0/bf290e4723876ea9c638c786a5c42ac28e03c9ca2325e1424bf43b94e5876456292d3ed905b853ebbba6daf43ed29e772ac2a6b3c5fb1b16533245d6211778f3 + checksum: 10c0/86052bbed90a9aaaaf1eabe004f47c7420e1b7f8d314170cfb0ad4721f518ec2fb7ba5a6daa20708b1595aba257f1554b2d5b3f5606356f86aa9dae18de0bec5 languageName: node linkType: hard @@ -14620,8 +15332,8 @@ __metadata: linkType: hard "zod@npm:^3.25.0 || ^4.0.0": - version: 4.4.3 - resolution: "zod@npm:4.4.3" - checksum: 10c0/7ea31b558e88f9faf44f31dd185e2e1cbf51fed3081787fb96cc2534749b50c0acfc6da7f0922a7353ed092dd358c7d50c28ea96c94d04af64191bd33152eca3 + version: 4.6.4 + resolution: "zod@npm:4.6.4" + checksum: 10c0/c0b9f14353e7cbd7b984703b28ede906c0b6784ca4d0fdb0e0a371add14d6fc29ec4428ef5234a9189ef9db6cfb936cdc98201fb0d446e7521b81cabf627ea3d languageName: node linkType: hard