diff --git a/android/generated/jni/react/renderer/components/PasteTextInputSpecs/Props.cpp b/android/generated/jni/react/renderer/components/PasteTextInputSpecs/Props.cpp index d8de010..87ff90d 100644 --- a/android/generated/jni/react/renderer/components/PasteTextInputSpecs/Props.cpp +++ b/android/generated/jni/react/renderer/components/PasteTextInputSpecs/Props.cpp @@ -20,7 +20,7 @@ namespace facebook::react { #if RN_DEBUG_STRING_CONVERTIBLE SharedDebugStringConvertibleList PasteTextInputProps::getDebugProps() const { - return PasteTextInputProps::getDebugProps(); + return {}; } #endif @@ -361,15 +361,6 @@ folly::dynamic PasteTextInputProps::getDynamic() const { return props; } -static folly::dynamic toDynamic( - const std::vector& acceptDragAndDropTypes) { - folly::dynamic acceptDragAndDropTypesArray = folly::dynamic::array(); - for (const auto& acceptDragAndDropType : acceptDragAndDropTypes) { - acceptDragAndDropTypesArray.push_back(acceptDragAndDropType); - } - return acceptDragAndDropTypesArray; -} - ComponentName PasteTextInputProps::getDiffPropsImplementationTarget() const { return "TextInput"; } diff --git a/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.cpp b/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.cpp index 59b50e8..b3732b0 100644 --- a/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.cpp +++ b/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.cpp @@ -10,10 +10,6 @@ #include "ShadowNodes.h" -#include -#include -#include - #include #include #include @@ -22,7 +18,6 @@ #include #include #include -#include namespace facebook::react { @@ -34,61 +29,66 @@ void PasteTextInputShadowNode::setTextLayoutManager( textLayoutManager_ = std::move(textLayoutManager); } -Size PasteTextInputShadowNode::measureContent( - const LayoutContext& layoutContext, - const LayoutConstraints& layoutConstraints) const { - auto textConstraints = getTextConstraints(layoutConstraints); + Size PasteTextInputShadowNode::measureContent( + const LayoutContext& layoutContext, + const LayoutConstraints& layoutConstraints) const { + auto textConstraints = getTextConstraints(layoutConstraints); + + TextLayoutContext textLayoutContext{ + .pointScaleFactor = layoutContext.pointScaleFactor, + }; + + if (getStateData().cachedAttributedStringId != 0) { + auto textSize = textLayoutManager_ + ->measureCachedSpannableById( + getStateData().cachedAttributedStringId, + getConcreteProps().paragraphAttributes, + textLayoutContext, + textConstraints) + .size; + return layoutConstraints.clamp(textSize); + } + + // Layout is called right after measure. + // Measure is marked as `const`, and `layout` is not; so State can be + // updated during layout, but not during `measure`. If State is out-of-date + // in layout, it's too late: measure will have already operated on old + // State. Thus, we use the same value here that we *will* use in layout to + // update the state. + AttributedString attributedString = + getMostRecentAttributedString(layoutContext); + + if (attributedString.isEmpty()) { + attributedString = getPlaceholderAttributedString(layoutContext); + } + + if (attributedString.isEmpty() && getStateData().mostRecentEventCount != 0) { + return {.width = 0, .height = 0}; + } - if (getStateData().cachedAttributedStringId != 0) { auto textSize = textLayoutManager_ - ->measureCachedSpannableById( - getStateData().cachedAttributedStringId, + ->measure( + AttributedStringBox{attributedString}, getConcreteProps().paragraphAttributes, + textLayoutContext, textConstraints) .size; return layoutConstraints.clamp(textSize); } - // Layout is called right after measure. - // Measure is marked as `const`, and `layout` is not; so State can be - // updated during layout, but not during `measure`. If State is out-of-date - // in layout, it's too late: measure will have already operated on old - // State. Thus, we use the same value here that we *will* use in layout to - // update the state. - AttributedString attributedString = getMostRecentAttributedString(); - - if (attributedString.isEmpty()) { - attributedString = getPlaceholderAttributedString(); - } - - if (attributedString.isEmpty() && getStateData().mostRecentEventCount != 0) { - return {.width = 0, .height = 0}; - } - - TextLayoutContext textLayoutContext; - textLayoutContext.pointScaleFactor = layoutContext.pointScaleFactor; - auto textSize = textLayoutManager_ - ->measure( - AttributedStringBox{attributedString}, - getConcreteProps().paragraphAttributes, - textLayoutContext, - textConstraints) - .size; - return layoutConstraints.clamp(textSize); -} - void PasteTextInputShadowNode::layout(LayoutContext layoutContext) { - updateStateIfNeeded(); + updateStateIfNeeded(layoutContext); ConcreteViewShadowNode::layout(layoutContext); } Float PasteTextInputShadowNode::baseline( - const LayoutContext& /*layoutContext*/, + const LayoutContext& layoutContext, Size size) const { - AttributedString attributedString = getMostRecentAttributedString(); + AttributedString attributedString = + getMostRecentAttributedString(layoutContext); if (attributedString.isEmpty()) { - attributedString = getPlaceholderAttributedString(); + attributedString = getPlaceholderAttributedString(layoutContext); } // Yoga expects a baseline relative to the Node's border-box edge instead of @@ -98,10 +98,10 @@ Float PasteTextInputShadowNode::baseline( YGNodeLayoutGetPadding(&yogaNode_, YGEdgeTop); AttributedStringBox attributedStringBox{attributedString}; - return textLayoutManager_->baseline( + return LineMeasurement::baseline(textLayoutManager_->measureLines( attributedStringBox, getConcreteProps().paragraphAttributes, - size) + + size)) + top; } @@ -126,10 +126,12 @@ LayoutConstraints PasteTextInputShadowNode::getTextConstraints( } } -void PasteTextInputShadowNode::updateStateIfNeeded() { + +void PasteTextInputShadowNode::updateStateIfNeeded( + const LayoutContext& layoutContext) { ensureUnsealed(); const auto& stateData = getStateData(); - auto reactTreeAttributedString = getAttributedString(); + auto reactTreeAttributedString = getAttributedString(layoutContext); // Tree is often out of sync with the value of the TextInput. // This is by design - don't change the value of the TextInput in the State, @@ -153,7 +155,7 @@ void PasteTextInputShadowNode::updateStateIfNeeded() { reactTreeAttributedString) ? 0 : props.mostRecentEventCount; - auto newAttributedString = getMostRecentAttributedString(); + auto newAttributedString = getMostRecentAttributedString(layoutContext); setStateData(TextInputState{ AttributedStringBox(newAttributedString), @@ -162,9 +164,10 @@ void PasteTextInputShadowNode::updateStateIfNeeded() { newEventCount}); } -AttributedString PasteTextInputShadowNode::getAttributedString() const { +AttributedString PasteTextInputShadowNode::getAttributedString(const LayoutContext& layoutContext) const { // Use BaseTextShadowNode to get attributed string from children auto childTextAttributes = TextAttributes::defaultTextAttributes(); + childTextAttributes.fontSizeMultiplier = layoutContext.fontSizeMultiplier; childTextAttributes.apply(getConcreteProps().textAttributes); // Don't propagate the background color of the TextInput onto the attributed // string. Android tries to render shadow of the background alongside the @@ -173,19 +176,16 @@ AttributedString PasteTextInputShadowNode::getAttributedString() const { auto attributedString = AttributedString{}; auto attachments = BaseTextShadowNode::Attachments{}; - BaseTextShadowNode::buildAttributedString( childTextAttributes, *this, attributedString, attachments); attributedString.setBaseTextAttributes(childTextAttributes); - auto txt = attributedString.getString(); - - // BaseTextShadowNode only gets children. We must detect and prepend text // value attributes manually. if (!getConcreteProps().text.empty()) { auto textAttributes = TextAttributes::defaultTextAttributes(); textAttributes.apply(getConcreteProps().textAttributes); + textAttributes.fontSizeMultiplier = layoutContext.fontSizeMultiplier; auto fragment = AttributedString::Fragment{}; fragment.string = getConcreteProps().text; fragment.textAttributes = textAttributes; @@ -200,11 +200,11 @@ AttributedString PasteTextInputShadowNode::getAttributedString() const { return attributedString; } -AttributedString PasteTextInputShadowNode::getMostRecentAttributedString() -const { +AttributedString PasteTextInputShadowNode::getMostRecentAttributedString( + const LayoutContext& layoutContext) const { const auto& state = getStateData(); - auto reactTreeAttributedString = getAttributedString(); + auto reactTreeAttributedString = getAttributedString(layoutContext); // Sometimes the treeAttributedString will only differ from the state // not by inherent properties (string or prop attributes), but by the frame of @@ -225,22 +225,23 @@ const { // display at all. // TODO T67606511: We will redefine the measurement of empty strings as part // of T67606511 -AttributedString PasteTextInputShadowNode::getPlaceholderAttributedString() -const { - const auto& props = BaseShadowNode::getConcreteProps(); - - AttributedString attributedString; - auto placeholderString = !props.placeholder.empty() - ? props.placeholder - : BaseTextShadowNode::getEmptyPlaceholder(); - auto textAttributes = TextAttributes::defaultTextAttributes(); - textAttributes.apply(props.textAttributes); - attributedString.appendFragment( - {.string = std::move(placeholderString), - .textAttributes = textAttributes, - .parentShadowView = ShadowView(*this)}); - return attributedString; -} + AttributedString PasteTextInputShadowNode::getPlaceholderAttributedString( + const LayoutContext& layoutContext) const { + const auto& props = BaseShadowNode::getConcreteProps(); + + AttributedString attributedString; + auto placeholderString = !props.placeholder.empty() + ? props.placeholder + : BaseTextShadowNode::getEmptyPlaceholder(); + auto textAttributes = TextAttributes::defaultTextAttributes(); + textAttributes.fontSizeMultiplier = layoutContext.fontSizeMultiplier; + textAttributes.apply(props.textAttributes); + attributedString.appendFragment( + {.string = std::move(placeholderString), + .textAttributes = textAttributes, + .parentShadowView = ShadowView(*this)}); + return attributedString; + } } // namespace facebook::react diff --git a/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.h b/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.h index 29c97aa..4dd7409 100644 --- a/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.h +++ b/android/generated/jni/react/renderer/components/PasteTextInputSpecs/ShadowNodes.h @@ -14,10 +14,11 @@ #include "Props.h" #include "States.h" #include + #include -#include -#include #include +#include +#include namespace facebook::react { @@ -31,8 +32,7 @@ class PasteTextInputShadowNode final : public ConcreteViewShadowNode< PasteTextInputComponentName, PasteTextInputProps, PasteTextInputEventEmitter, - TextInputState, - true> { + TextInputState> { public: using ConcreteViewShadowNode::ConcreteViewShadowNode; @@ -74,19 +74,22 @@ class PasteTextInputShadowNode final : public ConcreteViewShadowNode< * Creates a `State` object (with `AttributedText` and * `TextLayoutManager`) if needed. */ - void updateStateIfNeeded(); + void updateStateIfNeeded(const LayoutContext& layoutContext); /* * Returns a `AttributedString` which represents text content of the node. */ - AttributedString getAttributedString() const; + AttributedString getAttributedString( + const LayoutContext& layoutContext) const; /** * Get the most up-to-date attributed string for measurement and State. */ - AttributedString getMostRecentAttributedString() const; + AttributedString getMostRecentAttributedString( + const LayoutContext& layoutContext) const; - AttributedString getPlaceholderAttributedString() const; + AttributedString getPlaceholderAttributedString( + const LayoutContext& layoutContext) const; }; } // namespace facebook::react diff --git a/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt b/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt index 4ed2307..1b815a3 100644 --- a/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt +++ b/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt @@ -54,7 +54,9 @@ class PasteTextInputManager(context: ReactApplicationContext) : ReactTextInputMa } override fun getExportedCustomBubblingEventTypeConstants(): MutableMap { - val map = super.getExportedCustomBubblingEventTypeConstants()!! + val map = super.getExportedCustomBubblingEventTypeConstants()?.toMutableMap() + ?: return mutableMapOf() + map["onPaste"] = MapBuilder.of( "phasedRegistrationNames", MapBuilder.of("bubbled", "onPaste") diff --git a/example/android/app/src/main/java/com/example/mattermostreactnativepasteinput/MainApplication.kt b/example/android/app/src/main/java/com/example/mattermostreactnativepasteinput/MainApplication.kt index 9c990d2..3272ebf 100644 --- a/example/android/app/src/main/java/com/example/mattermostreactnativepasteinput/MainApplication.kt +++ b/example/android/app/src/main/java/com/example/mattermostreactnativepasteinput/MainApplication.kt @@ -5,12 +5,10 @@ import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative import com.facebook.react.ReactPackage -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.soloader.OpenSourceMergedSoMapping -import com.facebook.soloader.SoLoader class MainApplication : Application(), ReactApplication { @@ -35,10 +33,6 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - SoLoader.init(this, OpenSourceMergedSoMapping) - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - load() - } + loadReactNative(this) } -} \ No newline at end of file +} diff --git a/example/android/build.gradle b/example/android/build.gradle index 02e5200..318fabc 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -7,7 +7,7 @@ buildscript { compileSdkVersion = 35 targetSdkVersion = 35 ndkVersion = "27.1.12297006" - kotlinVersion = "2.0.21" + kotlinVersion = "2.1.20" } repositories { google() diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar index 9bbc975..1b33c55 100644 Binary files a/example/android/gradle/wrapper/gradle-wrapper.jar and b/example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 37f853b..002b867 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/example/android/gradlew b/example/android/gradlew index f3b75f3..7f94d3d 100755 --- a/example/android/gradlew +++ b/example/android/gradlew @@ -114,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat index 9d21a21..db3a6ac 100644 --- a/example/android/gradlew.bat +++ b/example/android/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/example/package-lock.json b/example/package-lock.json index b7268ee..a8e2396 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,15 +9,15 @@ "version": "0.0.1", "dependencies": { "@mattermost/react-native-paste-input": "file://../", - "react": "19.0.0", - "react-native": "0.79.3" + "react": "19.1.0", + "react-native": "0.80.0" }, "devDependencies": { "@babel/runtime": "7.26.0", "@react-native-community/cli": "^18.0.0", "@react-native-community/cli-platform-android": "^18.0.0", "@react-native-community/cli-platform-ios": "^18.0.0", - "@react-native/babel-preset": "0.79.3", + "@react-native/babel-preset": "0.80.0", "babel-plugin-module-resolver": "5.0.2" }, "engines": { @@ -33,11 +33,11 @@ }, "devDependencies": { "@commitlint/config-conventional": "19.6.0", - "@react-native/eslint-config": "0.79.0", - "@react-native/metro-config": "0.79.0", - "@react-native/typescript-config": "0.79.0", + "@react-native/eslint-config": "0.80.0", + "@react-native/metro-config": "0.80.0", + "@react-native/typescript-config": "0.80.0", "@release-it/conventional-changelog": "9.0.3", - "@types/react": "19.0.0", + "@types/react": "19.1.0", "@typescript-eslint/eslint-plugin": "7.14.1", "@typescript-eslint/parser": "7.14.1", "commitlint": "19.6.1", @@ -53,8 +53,8 @@ "jest": "29.7.0", "pod-install": "0.3.2", "prettier": "3.4.2", - "react": "19.0.0", - "react-native": "0.79.3", + "react": "19.1.0", + "react-native": "0.80.0", "react-native-builder-bob": "0.40.12", "release-it": "17.10.0", "typescript": "5.7.2" @@ -2042,32 +2042,32 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.79.3.tgz", - "integrity": "sha512-Vy8DQXCJ21YSAiHxrNBz35VqVlZPpRYm50xRTWRf660JwHuJkFQG8cUkrLzm7AUriqUXxwpkQHcY+b0ibw9ejQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.80.0.tgz", + "integrity": "sha512-MlScsKAz99zoYghe5Rf5mUqsqz2rMB02640NxtPtBMSHNdGxxRlWu/pp1bFexDa1DYJwyIjnLgt3Z/Y90ikHfw==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.3.tgz", - "integrity": "sha512-Zb8F4bSEKKZfms5n1MQ0o5mudDcpAINkKiFuFTU0PErYGjY3kZ+JeIP+gS6KCXsckxCfMEKQwqKicP/4DWgsZQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.80.0.tgz", + "integrity": "sha512-LXd766LHCR/79WmhIg4zUB9jRosgw8xGJ1QnYOoef1rA7vCdubC23nhUxF+PJdfTdAl1cqX4u1dhZcjg6yXjRg==", "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.3" + "@react-native/codegen": "0.80.0" }, "engines": { "node": ">=18" } }, "node_modules/@react-native/babel-preset": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.79.3.tgz", - "integrity": "sha512-VHGNP02bDD2Ul1my0pLVwe/0dsEBHxR343ySpgnkCNEEm9C1ANQIL2wvnJrHZPcqfAkWfFQ8Ln3t+6fdm4A/Dg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.80.0.tgz", + "integrity": "sha512-ZgwbSOUPNKpIsZ6E0y3bncahh2vBf5V1URNV0tr9PBtu/LbGJ12nBKSH7gqrFdRzfEwKlhc0vP8p1oJt+A5mpw==", "dev": true, "license": "MIT", "dependencies": { @@ -2112,8 +2112,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.79.3", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "@react-native/babel-plugin-codegen": "0.80.0", + "babel-plugin-syntax-hermes-parser": "0.28.1", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -2125,13 +2125,13 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.3.tgz", - "integrity": "sha512-CZejXqKch/a5/s/MO5T8mkAgvzCXgsTkQtpCF15kWR9HN8T+16k0CsN7TXAxXycltoxiE3XRglOrZNEa/TiZUQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.80.0.tgz", + "integrity": "sha512-X9TsPgytoUkNrQjzAZh4dXa4AuouvYT0NzYyvnjw1ry4LESCZtKba+eY4x3+M30WPR52zjgu+UFL//14BSdCCA==", "license": "MIT", "dependencies": { "glob": "^7.1.1", - "hermes-parser": "0.25.1", + "hermes-parser": "0.28.1", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" @@ -2144,18 +2144,18 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.3.tgz", - "integrity": "sha512-N/+p4HQqN4yK6IRzn7OgMvUIcrmEWkecglk1q5nj+AzNpfIOzB+mqR20SYmnPfeXF+mZzYCzRANb3KiM+WsSDA==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.80.0.tgz", + "integrity": "sha512-uadfVvzZfz5tGpqwslL12i+rELK9m6cLhtqICX0JQvS7Bu12PJwrozhKzEzIYwN9i3wl2dWrKDUr08izt7S9Iw==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.79.3", + "@react-native/dev-middleware": "0.80.0", "chalk": "^4.0.0", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.82.0", - "metro-config": "^0.82.0", - "metro-core": "^0.82.0", + "metro": "^0.82.2", + "metro-config": "^0.82.2", + "metro-core": "^0.82.2", "semver": "^7.1.3" }, "engines": { @@ -2170,42 +2170,27 @@ } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/@react-native/debugger-frontend": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.79.3.tgz", - "integrity": "sha512-ImNDuEeKH6lEsLXms3ZsgIrNF94jymfuhPcVY5L0trzaYNo9ZFE9Ni2/18E1IbfXxdeIHrCSBJlWD6CTm7wu5A==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.80.0.tgz", + "integrity": "sha512-lpu9Z3xtKUaKFvEcm5HSgo1KGfkDa/W3oZHn22Zy0WQ9MiOu2/ar1txgd1wjkoNiK/NethKcRdCN7mqnc6y2mA==", "license": "BSD-3-Clause", "engines": { "node": ">=18" } }, "node_modules/@react-native/dev-middleware": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.79.3.tgz", - "integrity": "sha512-x88+RGOyG71+idQefnQg7wLhzjn/Scs+re1O5vqCkTVzRAc/f7SdHMlbmECUxJPd08FqMcOJr7/X3nsJBrNuuw==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.80.0.tgz", + "integrity": "sha512-lLyTnJ687A5jF3fn8yR/undlCis3FG+N/apQ+Q0Lcl+GV6FsZs0U5H28YmL6lZtjOj4TLek6uGPMPmZasHx7cQ==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.3", + "@react-native/debugger-frontend": "0.80.0", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", @@ -2216,15 +2201,6 @@ "node": ">=18" } }, - "node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, "node_modules/@react-native/dev-middleware/node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -2237,12 +2213,6 @@ "node": ">=8" } }, - "node_modules/@react-native/dev-middleware/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/@react-native/dev-middleware/node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -2260,29 +2230,52 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.79.3.tgz", - "integrity": "sha512-imfpZLhNBc9UFSzb/MOy2tNcIBHqVmexh/qdzw83F75BmUtLb/Gs1L2V5gw+WI1r7RqDILbWk7gXB8zUllwd+g==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.80.0.tgz", + "integrity": "sha512-drmS68rabSMOuDD+YsAY2luNT8br82ycodSDORDqAg7yWQcieHMp4ZUOcdOi5iW+JCqobablT/b6qxcrBg+RaA==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.79.3.tgz", - "integrity": "sha512-PEBtg6Kox6KahjCAch0UrqCAmHiNLEbp2SblUEoFAQnov4DSxBN9safh+QSVaCiMAwLjvNfXrJyygZz60Dqz3Q==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.80.0.tgz", + "integrity": "sha512-dMX7IcBuwghySTgIeK8q03tYz/epg5ScGmJEfBQAciuhzMDMV1LBR/9wwdgD73EXM/133yC5A+TlHb3KQil4Ew==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@react-native/normalize-colors": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.3.tgz", - "integrity": "sha512-T75NIQPRFCj6DFMxtcVMJTZR+3vHXaUMSd15t+CkJpc5LnyX91GVaPxpRSAdjFh7m3Yppl5MpdjV/fntImheYQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.80.0.tgz", + "integrity": "sha512-bJZDSopadjJxMDvysc634eTfLL4w7cAx5diPe14Ez5l+xcKjvpfofS/1Ja14DlgdMJhxGd03MTXlrxoWust3zg==", "license": "MIT" }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.80.0.tgz", + "integrity": "sha512-d9zZdPS/ZRexVAkxo1eRp85U7XnnEpXA1ZpSomRKxBuStYKky1YohfEX5YD5MhphemKK24tT7JR4UhaLlmeX8Q==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^19.0.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -2753,12 +2746,12 @@ } }, "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz", - "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.28.1.tgz", + "integrity": "sha512-meT17DOuUElMNsL5LZN56d+KBp22hb0EfxWfuPUeoSi54e40v1W4C2V36P75FpsH9fVEfDKpw5Nnkahc8haSsQ==", "license": "MIT", "dependencies": { - "hermes-parser": "0.25.1" + "hermes-parser": "0.28.1" } }, "node_modules/babel-plugin-transform-flow-enums": { @@ -4124,18 +4117,18 @@ } }, "node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", + "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", "license": "MIT" }, "node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", + "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "hermes-estree": "0.28.1" } }, "node_modules/http-errors": { @@ -5348,21 +5341,6 @@ "node": ">=18.18" } }, - "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", - "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", - "license": "MIT" - }, - "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", - "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.28.1" - } - }, "node_modules/metro-cache": { "version": "0.82.4", "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.82.4.tgz", @@ -5641,21 +5619,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "license": "MIT" }, - "node_modules/metro/node_modules/hermes-estree": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", - "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", - "license": "MIT" - }, - "node_modules/metro/node_modules/hermes-parser": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", - "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.28.1" - } - }, "node_modules/metro/node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", @@ -6348,9 +6311,9 @@ } }, "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6395,42 +6358,41 @@ "license": "MIT" }, "node_modules/react-native": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.3.tgz", - "integrity": "sha512-EzH1+9gzdyEo9zdP6u7Sh3Jtf5EOMwzy+TK65JysdlgAzfEVfq4mNeXcAZ6SmD+CW6M7ARJbvXLyTD0l2S5rpg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.80.0.tgz", + "integrity": "sha512-b9K1ygb2MWCBtKAodKmE3UsbUuC29Pt4CrJMR0ocTA8k+8HJQTPleBPDNKL4/p0P01QO9aL/gZUddoxHempLow==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.79.3", - "@react-native/codegen": "0.79.3", - "@react-native/community-cli-plugin": "0.79.3", - "@react-native/gradle-plugin": "0.79.3", - "@react-native/js-polyfills": "0.79.3", - "@react-native/normalize-colors": "0.79.3", - "@react-native/virtualized-lists": "0.79.3", + "@react-native/assets-registry": "0.80.0", + "@react-native/codegen": "0.80.0", + "@react-native/community-cli-plugin": "0.80.0", + "@react-native/gradle-plugin": "0.80.0", + "@react-native/js-polyfills": "0.80.0", + "@react-native/normalize-colors": "0.80.0", + "@react-native/virtualized-lists": "0.80.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "babel-plugin-syntax-hermes-parser": "0.28.1", "base64-js": "^1.5.1", "chalk": "^4.0.0", "commander": "^12.0.0", - "event-target-shim": "^5.0.1", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.82.0", - "metro-source-map": "^0.82.0", + "metro-runtime": "^0.82.2", + "metro-source-map": "^0.82.2", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.1", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.25.0", + "scheduler": "0.26.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", @@ -6444,31 +6406,8 @@ "node": ">=18" }, "peerDependencies": { - "@types/react": "^19.0.0", - "react": "^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-native/node_modules/@react-native/virtualized-lists": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.79.3.tgz", - "integrity": "sha512-/0rRozkn+iIHya2vnnvprDgT7QkfI54FLrACAN3BLP7MRlfOIGOrZsXpRLndnLBVnjNzkcre84i1RecjoXnwIA==", - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/react": "^19.0.0", - "react": "*", - "react-native": "*" + "@types/react": "^19.1.0", + "react": "^19.1.0" }, "peerDependenciesMeta": { "@types/react": { @@ -6772,9 +6711,9 @@ "license": "MIT" }, "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, "node_modules/semver": { diff --git a/example/package.json b/example/package.json index da32c9e..e761336 100644 --- a/example/package.json +++ b/example/package.json @@ -10,15 +10,15 @@ }, "dependencies": { "@mattermost/react-native-paste-input": "file://../", - "react": "19.0.0", - "react-native": "0.79.3" + "react": "19.1.0", + "react-native": "0.80.0" }, "devDependencies": { "@babel/runtime": "7.26.0", - "@react-native-community/cli": "^18.0.0", - "@react-native-community/cli-platform-android": "^18.0.0", - "@react-native-community/cli-platform-ios": "^18.0.0", - "@react-native/babel-preset": "0.79.3", + "@react-native-community/cli": "^19.0.0", + "@react-native-community/cli-platform-android": "^19.0.0", + "@react-native-community/cli-platform-ios": "^19.0.0", + "@react-native/babel-preset": "0.80.0", "babel-plugin-module-resolver": "5.0.2" }, "engines": { diff --git a/example/src/Details.tsx b/example/src/Details.tsx index afac7e4..58ab829 100644 --- a/example/src/Details.tsx +++ b/example/src/Details.tsx @@ -1,13 +1,12 @@ import React from 'react'; -import { Image, StyleSheet, Text, useColorScheme, View } from 'react-native'; +import { Image, StyleSheet, Text, View } from 'react-native'; import type { PastedFile } from '@mattermost/react-native-paste-input'; -import { Colors } from 'react-native/Libraries/NewAppScreen'; interface DetailsProps { file?: PastedFile; } -const getStyle = (isDarkMode: boolean) => { +const getStyle = () => { return StyleSheet.create({ container: { justifyContent: 'center', @@ -28,14 +27,12 @@ const getStyle = (isDarkMode: boolean) => { flexDirection: 'row', }, label: { - color: isDarkMode ? Colors.white : Colors.black, fontSize: 16, lineHeight: 18, fontWeight: '700', marginRight: 5, }, text: { - color: isDarkMode ? Colors.white : Colors.black, fontSize: 14, lineHeight: 16, flexWrap: 'wrap', @@ -45,13 +42,11 @@ const getStyle = (isDarkMode: boolean) => { }; const Details = ({ file }: DetailsProps) => { - const isDarkMode = useColorScheme() === 'dark'; - if (!file) { return null; } - const styles = getStyle(isDarkMode); + const styles = getStyle(); const isImage = file.type.includes('image'); let imageElement; if (isImage) { diff --git a/package-lock.json b/package-lock.json index c7d7717..2e50901 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,11 +13,11 @@ }, "devDependencies": { "@commitlint/config-conventional": "19.6.0", - "@react-native/eslint-config": "0.79.0", - "@react-native/metro-config": "0.79.0", - "@react-native/typescript-config": "0.79.0", + "@react-native/eslint-config": "0.80.0", + "@react-native/metro-config": "0.80.0", + "@react-native/typescript-config": "0.80.0", "@release-it/conventional-changelog": "9.0.3", - "@types/react": "19.0.0", + "@types/react": "19.1.0", "@typescript-eslint/eslint-plugin": "7.14.1", "@typescript-eslint/parser": "7.14.1", "commitlint": "19.6.1", @@ -33,8 +33,8 @@ "jest": "29.7.0", "pod-install": "0.3.2", "prettier": "3.4.2", - "react": "19.0.0", - "react-native": "0.79.3", + "react": "19.1.0", + "react-native": "0.80.0", "react-native-builder-bob": "0.40.12", "release-it": "17.10.0", "typescript": "5.7.2" @@ -530,6 +530,8 @@ }, "node_modules/@babel/plugin-proposal-export-default-from": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", + "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", "dev": true, "license": "MIT", "dependencies": { @@ -602,6 +604,8 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "license": "MIT", "dependencies": { @@ -613,6 +617,8 @@ }, "node_modules/@babel/plugin-syntax-export-default-from": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.27.1.tgz", + "integrity": "sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==", "dev": true, "license": "MIT", "dependencies": { @@ -1453,6 +1459,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "license": "MIT", "dependencies": { @@ -1467,6 +1475,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1539,6 +1549,8 @@ }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz", + "integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==", "dev": true, "license": "MIT", "dependencies": { @@ -1558,6 +1570,8 @@ }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -3154,9 +3168,9 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.79.3.tgz", - "integrity": "sha512-Vy8DQXCJ21YSAiHxrNBz35VqVlZPpRYm50xRTWRf660JwHuJkFQG8cUkrLzm7AUriqUXxwpkQHcY+b0ibw9ejQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.80.0.tgz", + "integrity": "sha512-MlScsKAz99zoYghe5Rf5mUqsqz2rMB02640NxtPtBMSHNdGxxRlWu/pp1bFexDa1DYJwyIjnLgt3Z/Y90ikHfw==", "dev": true, "license": "MIT", "engines": { @@ -3164,19 +3178,23 @@ } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.80.0.tgz", + "integrity": "sha512-LXd766LHCR/79WmhIg4zUB9jRosgw8xGJ1QnYOoef1rA7vCdubC23nhUxF+PJdfTdAl1cqX4u1dhZcjg6yXjRg==", "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.0" + "@react-native/codegen": "0.80.0" }, "engines": { "node": ">=18" } }, "node_modules/@react-native/babel-preset": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.80.0.tgz", + "integrity": "sha512-ZgwbSOUPNKpIsZ6E0y3bncahh2vBf5V1URNV0tr9PBtu/LbGJ12nBKSH7gqrFdRzfEwKlhc0vP8p1oJt+A5mpw==", "dev": true, "license": "MIT", "dependencies": { @@ -3221,8 +3239,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.79.0", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "@react-native/babel-plugin-codegen": "0.80.0", + "babel-plugin-syntax-hermes-parser": "0.28.1", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -3234,12 +3252,14 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.80.0.tgz", + "integrity": "sha512-X9TsPgytoUkNrQjzAZh4dXa4AuouvYT0NzYyvnjw1ry4LESCZtKba+eY4x3+M30WPR52zjgu+UFL//14BSdCCA==", "dev": true, "license": "MIT", "dependencies": { "glob": "^7.1.1", - "hermes-parser": "0.25.1", + "hermes-parser": "0.28.1", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" @@ -3252,19 +3272,19 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.3.tgz", - "integrity": "sha512-N/+p4HQqN4yK6IRzn7OgMvUIcrmEWkecglk1q5nj+AzNpfIOzB+mqR20SYmnPfeXF+mZzYCzRANb3KiM+WsSDA==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.80.0.tgz", + "integrity": "sha512-uadfVvzZfz5tGpqwslL12i+rELK9m6cLhtqICX0JQvS7Bu12PJwrozhKzEzIYwN9i3wl2dWrKDUr08izt7S9Iw==", "dev": true, "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.79.3", + "@react-native/dev-middleware": "0.80.0", "chalk": "^4.0.0", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.82.0", - "metro-config": "^0.82.0", - "metro-core": "^0.82.0", + "metro": "^0.82.2", + "metro-config": "^0.82.2", + "metro-core": "^0.82.2", "semver": "^7.1.3" }, "engines": { @@ -3279,27 +3299,10 @@ } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/@react-native/debugger-frontend": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.79.3.tgz", - "integrity": "sha512-ImNDuEeKH6lEsLXms3ZsgIrNF94jymfuhPcVY5L0trzaYNo9ZFE9Ni2/18E1IbfXxdeIHrCSBJlWD6CTm7wu5A==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.80.0.tgz", + "integrity": "sha512-lpu9Z3xtKUaKFvEcm5HSgo1KGfkDa/W3oZHn22Zy0WQ9MiOu2/ar1txgd1wjkoNiK/NethKcRdCN7mqnc6y2mA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3307,18 +3310,18 @@ } }, "node_modules/@react-native/dev-middleware": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.79.3.tgz", - "integrity": "sha512-x88+RGOyG71+idQefnQg7wLhzjn/Scs+re1O5vqCkTVzRAc/f7SdHMlbmECUxJPd08FqMcOJr7/X3nsJBrNuuw==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.80.0.tgz", + "integrity": "sha512-lLyTnJ687A5jF3fn8yR/undlCis3FG+N/apQ+Q0Lcl+GV6FsZs0U5H28YmL6lZtjOj4TLek6uGPMPmZasHx7cQ==", "dev": true, "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.3", + "@react-native/debugger-frontend": "0.80.0", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", @@ -3329,23 +3332,6 @@ "node": ">=18" } }, - "node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/@react-native/dev-middleware/node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -3374,13 +3360,15 @@ } }, "node_modules/@react-native/eslint-config": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.80.0.tgz", + "integrity": "sha512-bd0GOcG++qIKzEngeyeNrGaDWWHtB8CpC5zbpYho2TTWpJDxBRcoPAzBdpPkxQtpBMdXyYRZMENRp6Khrg0YYQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/eslint-plugin": "0.79.0", + "@react-native/eslint-plugin": "0.80.0", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "eslint-config-prettier": "^8.5.0", @@ -3388,7 +3376,7 @@ "eslint-plugin-ft-flow": "^2.0.1", "eslint-plugin-jest": "^27.9.0", "eslint-plugin-react": "^7.30.1", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-native": "^4.0.0" }, "engines": { @@ -3723,14 +3711,16 @@ } }, "node_modules/@react-native/eslint-config/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/@react-native/eslint-config/node_modules/minimatch": { @@ -3759,7 +3749,9 @@ } }, "node_modules/@react-native/eslint-plugin": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.80.0.tgz", + "integrity": "sha512-4kFD3M/zGqKdKyeevnTdhgAhNCj89VflDfv2wElo4jOb07xkR6VlEymv/6mZX3tdP/N5ukP2SZB+FDZH1GxBTg==", "dev": true, "license": "MIT", "engines": { @@ -3767,9 +3759,9 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.79.3.tgz", - "integrity": "sha512-imfpZLhNBc9UFSzb/MOy2tNcIBHqVmexh/qdzw83F75BmUtLb/Gs1L2V5gw+WI1r7RqDILbWk7gXB8zUllwd+g==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.80.0.tgz", + "integrity": "sha512-drmS68rabSMOuDD+YsAY2luNT8br82ycodSDORDqAg7yWQcieHMp4ZUOcdOi5iW+JCqobablT/b6qxcrBg+RaA==", "dev": true, "license": "MIT", "engines": { @@ -3777,7 +3769,9 @@ } }, "node_modules/@react-native/js-polyfills": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.80.0.tgz", + "integrity": "sha512-dMX7IcBuwghySTgIeK8q03tYz/epg5ScGmJEfBQAciuhzMDMV1LBR/9wwdgD73EXM/133yC5A+TlHb3KQil4Ew==", "dev": true, "license": "MIT", "engines": { @@ -3785,13 +3779,15 @@ } }, "node_modules/@react-native/metro-babel-transformer": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.80.0.tgz", + "integrity": "sha512-5TldnaJE15IUNnZhjAelRz4+6qATlSO9yuzLqN1Y47qfJrAl/2lrI4KdSjFfvUaWrhezi94Aly1OKSJm9fjrXg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.79.0", - "hermes-parser": "0.25.1", + "@react-native/babel-preset": "0.80.0", + "hermes-parser": "0.28.1", "nullthrows": "^1.1.1" }, "engines": { @@ -3802,31 +3798,59 @@ } }, "node_modules/@react-native/metro-config": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.80.0.tgz", + "integrity": "sha512-LJ1ZC9vs/B3wez6BsOIgJ3iw7N4QalMpiT/fb5b66L4vHUGqVucOWNUwpxbDb1m1/wlhTa8AljiAdjt401sFjA==", "dev": true, "license": "MIT", "dependencies": { - "@react-native/js-polyfills": "0.79.0", - "@react-native/metro-babel-transformer": "0.79.0", - "metro-config": "^0.82.0", - "metro-runtime": "^0.82.0" + "@react-native/js-polyfills": "0.80.0", + "@react-native/metro-babel-transformer": "0.80.0", + "metro-config": "^0.82.2", + "metro-runtime": "^0.82.2" }, "engines": { "node": ">=18" } }, "node_modules/@react-native/normalize-colors": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.3.tgz", - "integrity": "sha512-T75NIQPRFCj6DFMxtcVMJTZR+3vHXaUMSd15t+CkJpc5LnyX91GVaPxpRSAdjFh7m3Yppl5MpdjV/fntImheYQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.80.0.tgz", + "integrity": "sha512-bJZDSopadjJxMDvysc634eTfLL4w7cAx5diPe14Ez5l+xcKjvpfofS/1Ja14DlgdMJhxGd03MTXlrxoWust3zg==", "dev": true, "license": "MIT" }, "node_modules/@react-native/typescript-config": { - "version": "0.79.0", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.80.0.tgz", + "integrity": "sha512-mlZhlXnVsDFvetx2vnOEwspJ5qWLiH2JY7dhxMiT/N90uJZjgFFvRMAWWNeJ1zgZPQylEuHHUUlDoaDZ7tQbTA==", "dev": true, "license": "MIT" }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.80.0.tgz", + "integrity": "sha512-d9zZdPS/ZRexVAkxo1eRp85U7XnnEpXA1ZpSomRKxBuStYKky1YohfEX5YD5MhphemKK24tT7JR4UhaLlmeX8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^19.0.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@release-it/conventional-changelog": { "version": "9.0.3", "dev": true, @@ -3986,9 +4010,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.0.tgz", - "integrity": "sha512-MY3oPudxvMYyesqs/kW1Bh8y9VqSmf+tzqw3ae8a9DZW68pUe3zAdHeI1jc6iAysuRdACnVknHP8AhwD4/dxtg==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", + "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", "dev": true, "license": "MIT", "dependencies": { @@ -4732,15 +4756,19 @@ } }, "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.25.1", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.28.1.tgz", + "integrity": "sha512-meT17DOuUElMNsL5LZN56d+KBp22hb0EfxWfuPUeoSi54e40v1W4C2V36P75FpsH9fVEfDKpw5Nnkahc8haSsQ==", "dev": true, "license": "MIT", "dependencies": { - "hermes-parser": "0.25.1" + "hermes-parser": "0.28.1" } }, "node_modules/babel-plugin-transform-flow-enums": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7769,16 +7797,20 @@ } }, "node_modules/hermes-estree": { - "version": "0.25.1", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", + "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", "dev": true, "license": "MIT" }, "node_modules/hermes-parser": { - "version": "0.25.1", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", + "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", "dev": true, "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "hermes-estree": "0.28.1" } }, "node_modules/hosted-git-info": { @@ -10198,19 +10230,6 @@ "node": ">=18.18" } }, - "node_modules/metro-transform-worker/node_modules/hermes-estree": { - "version": "0.28.1", - "dev": true, - "license": "MIT" - }, - "node_modules/metro-transform-worker/node_modules/hermes-parser": { - "version": "0.28.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.28.1" - } - }, "node_modules/metro-transform-worker/node_modules/metro-babel-transformer": { "version": "0.82.4", "dev": true, @@ -10271,19 +10290,6 @@ "dev": true, "license": "MIT" }, - "node_modules/metro/node_modules/hermes-estree": { - "version": "0.28.1", - "dev": true, - "license": "MIT" - }, - "node_modules/metro/node_modules/hermes-parser": { - "version": "0.28.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.28.1" - } - }, "node_modules/metro/node_modules/metro-babel-transformer": { "version": "0.82.4", "dev": true, @@ -11415,7 +11421,9 @@ } }, "node_modules/react": { - "version": "19.0.0", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "dev": true, "license": "MIT", "engines": { @@ -11437,43 +11445,42 @@ "license": "MIT" }, "node_modules/react-native": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.3.tgz", - "integrity": "sha512-EzH1+9gzdyEo9zdP6u7Sh3Jtf5EOMwzy+TK65JysdlgAzfEVfq4mNeXcAZ6SmD+CW6M7ARJbvXLyTD0l2S5rpg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.80.0.tgz", + "integrity": "sha512-b9K1ygb2MWCBtKAodKmE3UsbUuC29Pt4CrJMR0ocTA8k+8HJQTPleBPDNKL4/p0P01QO9aL/gZUddoxHempLow==", "dev": true, "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.79.3", - "@react-native/codegen": "0.79.3", - "@react-native/community-cli-plugin": "0.79.3", - "@react-native/gradle-plugin": "0.79.3", - "@react-native/js-polyfills": "0.79.3", - "@react-native/normalize-colors": "0.79.3", - "@react-native/virtualized-lists": "0.79.3", + "@react-native/assets-registry": "0.80.0", + "@react-native/codegen": "0.80.0", + "@react-native/community-cli-plugin": "0.80.0", + "@react-native/gradle-plugin": "0.80.0", + "@react-native/js-polyfills": "0.80.0", + "@react-native/normalize-colors": "0.80.0", + "@react-native/virtualized-lists": "0.80.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "babel-plugin-syntax-hermes-parser": "0.28.1", "base64-js": "^1.5.1", "chalk": "^4.0.0", "commander": "^12.0.0", - "event-target-shim": "^5.0.1", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.82.0", - "metro-source-map": "^0.82.0", + "metro-runtime": "^0.82.2", + "metro-source-map": "^0.82.2", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.1", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.25.0", + "scheduler": "0.26.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", @@ -11487,8 +11494,8 @@ "node": ">=18" }, "peerDependencies": { - "@types/react": "^19.0.0", - "react": "^19.0.0" + "@types/react": "^19.1.0", + "react": "^19.1.0" }, "peerDependenciesMeta": { "@types/react": { @@ -11533,16 +11540,6 @@ "node": "^20.19.0 || ^22.12.0 || >= 23.4.0" } }, - "node_modules/react-native-builder-bob/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.28.1.tgz", - "integrity": "sha512-meT17DOuUElMNsL5LZN56d+KBp22hb0EfxWfuPUeoSi54e40v1W4C2V36P75FpsH9fVEfDKpw5Nnkahc8haSsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-parser": "0.28.1" - } - }, "node_modules/react-native-builder-bob/node_modules/glob": { "version": "8.1.0", "dev": true, @@ -11561,23 +11558,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/react-native-builder-bob/node_modules/hermes-estree": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", - "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-native-builder-bob/node_modules/hermes-parser": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", - "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.28.1" - } - }, "node_modules/react-native-builder-bob/node_modules/minimatch": { "version": "5.1.6", "dev": true, @@ -11613,60 +11593,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-native/node_modules/@react-native/codegen": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.3.tgz", - "integrity": "sha512-CZejXqKch/a5/s/MO5T8mkAgvzCXgsTkQtpCF15kWR9HN8T+16k0CsN7TXAxXycltoxiE3XRglOrZNEa/TiZUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.25.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/react-native/node_modules/@react-native/js-polyfills": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.79.3.tgz", - "integrity": "sha512-PEBtg6Kox6KahjCAch0UrqCAmHiNLEbp2SblUEoFAQnov4DSxBN9safh+QSVaCiMAwLjvNfXrJyygZz60Dqz3Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/react-native/node_modules/@react-native/virtualized-lists": { - "version": "0.79.3", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.79.3.tgz", - "integrity": "sha512-/0rRozkn+iIHya2vnnvprDgT7QkfI54FLrACAN3BLP7MRlfOIGOrZsXpRLndnLBVnjNzkcre84i1RecjoXnwIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/react": "^19.0.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/react-native/node_modules/semver": { "version": "7.7.2", "dev": true, @@ -12370,7 +12296,9 @@ "license": "MIT" }, "node_modules/scheduler": { - "version": "0.25.0", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index dff2e4f..593f1c2 100644 --- a/package.json +++ b/package.json @@ -56,11 +56,11 @@ }, "devDependencies": { "@commitlint/config-conventional": "19.6.0", - "@react-native/eslint-config": "0.79.0", - "@react-native/metro-config": "0.79.0", - "@react-native/typescript-config": "0.79.0", + "@react-native/eslint-config": "0.80.0", + "@react-native/metro-config": "0.80.0", + "@react-native/typescript-config": "0.80.0", "@release-it/conventional-changelog": "9.0.3", - "@types/react": "19.0.0", + "@types/react": "19.1.0", "@typescript-eslint/eslint-plugin": "7.14.1", "@typescript-eslint/parser": "7.14.1", "commitlint": "19.6.1", @@ -76,8 +76,8 @@ "jest": "29.7.0", "pod-install": "0.3.2", "prettier": "3.4.2", - "react": "19.0.0", - "react-native": "0.79.3", + "react": "19.1.0", + "react-native": "0.80.0", "react-native-builder-bob": "0.40.12", "release-it": "17.10.0", "typescript": "5.7.2" diff --git a/src/PasteTextInputNativeComponent.ts b/src/PasteTextInputNativeComponent.ts index a111ff1..b804a41 100644 --- a/src/PasteTextInputNativeComponent.ts +++ b/src/PasteTextInputNativeComponent.ts @@ -11,8 +11,8 @@ import type { Int32, WithDefault, } from 'react-native/Libraries/Types/CodegenTypes'; -import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; -import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands'; +import { codegenNativeComponent } from 'react-native'; +import { codegenNativeCommands } from 'react-native'; export interface PasteTextInputPasteEventData { data: Readonly<