diff --git a/FabricExample/App.tsx b/FabricExample/App.tsx index 2d3ebc8cc5..25e58c7052 100644 --- a/FabricExample/App.tsx +++ b/FabricExample/App.tsx @@ -1,12 +1,13 @@ import App from '../apps'; import { featureFlags } from 'react-native-screens'; -featureFlags.experiment.synchronousScreenUpdatesEnabled = false -featureFlags.experiment.synchronousHeaderConfigUpdatesEnabled = false -featureFlags.experiment.synchronousHeaderSubviewUpdatesEnabled = false -featureFlags.experiment.androidResetScreenShadowStateOnOrientationChangeEnabled = true +featureFlags.experiment.synchronousScreenUpdatesEnabled = false; +featureFlags.experiment.synchronousHeaderConfigUpdatesEnabled = false; +featureFlags.experiment.synchronousHeaderSubviewUpdatesEnabled = false; +featureFlags.experiment.androidResetScreenShadowStateOnOrientationChangeEnabled = + true; // TODO: @t0maboro - remove ts-ignore after release // @ts-ignore - will be present since react-native-screens 4.21.0 -featureFlags.experiment.iosPreventReattachmentOfDismissedScreens = false +featureFlags.experiment.iosPreventReattachmentOfDismissedScreens = false; export default App; diff --git a/FabricExample/android/app/src/main/java/com/fabricexample/MainActivity.kt b/FabricExample/android/app/src/main/java/com/fabricexample/MainActivity.kt index 88e11498da..c1c71a1e78 100644 --- a/FabricExample/android/app/src/main/java/com/fabricexample/MainActivity.kt +++ b/FabricExample/android/app/src/main/java/com/fabricexample/MainActivity.kt @@ -1,6 +1,8 @@ package com.fabricexample +import android.content.res.Configuration import android.os.Bundle +import android.util.Log import com.facebook.react.ReactActivity import com.facebook.react.ReactActivityDelegate import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled @@ -15,6 +17,11 @@ class MainActivity : ReactActivity() { */ override fun getMainComponentName(): String = "FabricExample" + override fun onConfigurationChanged(configuration: Configuration) { + super.onConfigurationChanged(configuration) + Log.d("SCREENS", "activity id ${this} orientation = ${configuration.orientation}") + } + /** * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] diff --git a/FabricExample/android/settings.gradle b/FabricExample/android/settings.gradle index 98477550f6..1a55becadb 100644 --- a/FabricExample/android/settings.gradle +++ b/FabricExample/android/settings.gradle @@ -4,3 +4,12 @@ extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> ex.autol rootProject.name = 'FabricExample' include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') + +includeBuild('../node_modules/react-native') { + dependencySubstitution { + substitute(module("com.facebook.react:react-android")).using(project(":packages:react-native:ReactAndroid")) + substitute(module("com.facebook.react:react-native")).using(project(":packages:react-native:ReactAndroid")) + substitute(module("com.facebook.react:hermes-android")).using(project(":packages:react-native:ReactAndroid:hermes-engine")) + substitute(module("com.facebook.react:hermes-engine")).using(project(":packages:react-native:ReactAndroid:hermes-engine")) + } +} diff --git a/FabricExample/package.json b/FabricExample/package.json index cac3c43a2e..4830591222 100644 --- a/FabricExample/package.json +++ b/FabricExample/package.json @@ -25,7 +25,7 @@ "@react-navigation/stack": "link:../react-navigation/packages/stack/", "nanoid": "^4.0.2", "react": "19.2.3", - "react-native": "0.84.0-rc.1", + "react-native": "0.83", "react-native-gesture-handler": "^2.29.0", "react-native-reanimated": "~4.2.1", "react-native-restart": "^0.0.27", @@ -43,10 +43,10 @@ "@react-native-community/cli": "20.1.0", "@react-native-community/cli-platform-android": "20.1.0", "@react-native-community/cli-platform-ios": "20.1.0", - "@react-native/babel-preset": "0.84.0-rc.1", - "@react-native/eslint-config": "0.84.0-rc.1", - "@react-native/metro-config": "0.84.0-rc.1", - "@react-native/typescript-config": "0.84.0-rc.1", + "@react-native/babel-preset": "0.83", + "@react-native/eslint-config": "0.83", + "@react-native/metro-config": "0.83", + "@react-native/typescript-config": "0.83", "@types/jest": "^29.5.13", "@types/react": "^19.2.0", "@types/react-test-renderer": "^19.1.0", diff --git a/FabricExample/yarn.lock b/FabricExample/yarn.lock index 6f822ecc98..8bac93d10b 100644 --- a/FabricExample/yarn.lock +++ b/FabricExample/yarn.lock @@ -37,6 +37,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/code-frame@npm:7.28.6" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.28.5" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/ed5d57f99455e3b1c23e75ebb8430c6b9800b4ecd0121b4348b97cecb65406a47778d6db61f0d538a4958bb01b4b277e90348a68d39bd3beff1d7c940ed6dd66 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.26.5, @babel/compat-data@npm:^7.26.8": version: 7.26.8 resolution: "@babel/compat-data@npm:7.26.8" @@ -51,6 +62,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/compat-data@npm:7.28.6" + checksum: 10c0/2d047431041281eaf33e9943d1a269d3374dbc9b498cafe6a18f5ee9aee7bb96f7f6cac0304eab4d13c41fc4db00fe4ca16c7aa44469ca6a211b8b6343b78fc4 + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": version: 7.26.9 resolution: "@babel/core@npm:7.26.9" @@ -150,6 +168,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/generator@npm:7.28.6" + dependencies: + "@babel/parser": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/162fa358484a9a18e8da1235d998f10ea77c63bab408c8d3e327d5833f120631a77ff022c5ed1d838ee00523f8bb75df1f08196d3657d0bca9f2cfeb8503cc12 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" @@ -181,6 +212,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-compilation-targets@npm:7.28.6" + dependencies: + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/3fcdf3b1b857a1578e99d20508859dbd3f22f3c87b8a0f3dc540627b4be539bae7f6e61e49d931542fe5b557545347272bbdacd7f58a5c77025a18b745593a50 + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" @@ -374,6 +418,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-plugin-utils@npm:7.28.6" + checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" @@ -557,6 +608,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/parser@npm:7.28.6" + dependencies: + "@babel/types": "npm:^7.28.6" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/d6bfe8aa8e067ef58909e9905496157312372ca65d8d2a4f2b40afbea48d59250163755bba8ae626a615da53d192b084bcfc8c9dad8b01e315b96967600de581 + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" @@ -901,7 +963,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:7.27.1": +"@babel/plugin-transform-arrow-functions@npm:7.27.1, @babel/plugin-transform-arrow-functions@npm:^7.24.7": version: 7.27.1 resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" dependencies: @@ -1039,6 +1101,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1e9893503ae6d651125701cc29450e87c0b873c8febebff19da75da9c40cfb7968c52c28bf948244e461110aeb7b3591f2cc199b7406ff74a24c50c7a5729f39 + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" @@ -1062,6 +1136,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/288207f488412b23bb206c7c01ba143714e2506b72a9ec09e993f28366cc8188d121bde714659b3437984a86d2881d9b1b06de3089d5582823ccf2f3b3eaa2c4 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" @@ -1154,6 +1240,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5abdc7b5945fbd807269dcc6e76e52b69235056023b0b35d311e8f5dfd6c09d9f225839798998fc3b663f50cf701457ddb76517025a0d7a5474f3fe56e567a4c + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-function-name@npm:7.25.9" @@ -1178,6 +1277,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c40dc3eb2f45a92ee476412314a40e471af51a0f51a24e91b85cef5fc59f4fe06758088f541643f07f949d2c67ee7bdce10e11c5ec56791ae09b15c3b451eeca + languageName: node + linkType: hard + "@babel/plugin-transform-literals@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-literals@npm:7.25.9" @@ -1189,6 +1299,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4632a35453d2131f0be466681d0a33e3db44d868ff51ec46cd87e0ebd1e47c6a39b894f7d1c9b06f931addf6efa9d30e60c4cdedeb4f69d426f683e11f8490cf + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" @@ -1318,6 +1439,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/191097d8d2753cdd16d1acca65a945d1645ab20b65655c2f5b030a9e38967a52e093dcb21ebf391e342222705c6ffe5dea15dafd6257f7b51b77fb64a830b637 + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" @@ -1329,6 +1461,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f55334352d4fcde385f2e8a58836687e71ff668c9b6e4c34d52575bf2789cdde92d9d3116edba13647ac0bc3e51fb2a6d1e8fb822dce7e8123334b82600bc4c3 + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" @@ -1389,6 +1536,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-parameters@npm:^7.24.7, @babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-parameters@npm:7.25.9" @@ -1535,7 +1693,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:7.27.1": +"@babel/plugin-transform-shorthand-properties@npm:7.27.1, @babel/plugin-transform-shorthand-properties@npm:^7.24.7": version: 7.27.1 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" dependencies: @@ -1557,6 +1715,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-spread@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bcac50e558d6f0c501cbce19ec197af558cef51fe3b3a6eba27276e323e57a5be28109b4264a5425ac12a67bf95d6af9c2a42b05e79c522ce913fb9529259d76 + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-spread@npm:7.25.9" @@ -1569,6 +1739,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5698df2d924f0b1b7bdb7ef370e83f99ed3f0964eb3b9c27d774d021bee7f6d45f9a73e2be369d90b4aff1603ce29827f8743f091789960e7669daf9c3cda850 + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" @@ -1860,6 +2041,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/template@npm:7.28.6" + dependencies: + "@babel/code-frame": "npm:^7.28.6" + "@babel/parser": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/66d87225ed0bc77f888181ae2d97845021838c619944877f7c4398c6748bcf611f216dfd6be74d39016af502bca876e6ce6873db3c49e4ac354c56d34d57e9f5 + languageName: node + linkType: hard + "@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9": version: 7.26.9 resolution: "@babel/traverse@npm:7.26.9" @@ -1905,6 +2097,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/traverse@npm:7.28.6" + dependencies: + "@babel/code-frame": "npm:^7.28.6" + "@babel/generator": "npm:^7.28.6" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + debug: "npm:^4.3.1" + checksum: 10c0/ed5deb9c3f03e2d1ad2d44b9c92c84cce24593245c3f7871ce27ee1b36d98034e6cd895fa98a94eb44ebabe1d22f51b10b09432939d1c51a0fcaab98f17a97bc + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.26.9 resolution: "@babel/types@npm:7.26.9" @@ -1945,6 +2152,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/types@npm:7.28.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/54a6a9813e48ef6f35aa73c03b3c1572cad7fa32b61b35dd07e4230bc77b559194519c8a4d8106a041a27cc7a94052579e238a30a32d5509aa4da4d6fd83d990 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2701,26 +2918,26 @@ __metadata: languageName: node linkType: hard -"@react-native/assets-registry@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/assets-registry@npm:0.84.0-rc.1" - checksum: 10c0/da75e38d0500fea1f03462140d8161803e1452da209413158e18688e2f8cc8075d60e96fc8cb0795cf170a73c5de2e24b4d9adc7ec63eeb4b509ee2f3e94fa12 +"@react-native/assets-registry@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/assets-registry@npm:0.83.1" + checksum: 10c0/284ec022bc91fdc8f2dc14d92cb52247ad42b076fb12997cd089d0ea594f628425fb631d3abcf91a97bbe4f28e84ce5bcecd44ea0db86a51f821602ef54dc73c languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/babel-plugin-codegen@npm:0.84.0-rc.1" +"@react-native/babel-plugin-codegen@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/babel-plugin-codegen@npm:0.83.1" dependencies: "@babel/traverse": "npm:^7.25.3" - "@react-native/codegen": "npm:0.84.0-rc.1" - checksum: 10c0/4249f97c5827f09092ac18f3c3abd0ee529a7be8f0a38fb98819c70027649314d22f6d0ff61513a40e360235c03caf93dc177d7d6a0bf3c62ab5dc9b65888b44 + "@react-native/codegen": "npm:0.83.1" + checksum: 10c0/fa08bf71cf4f4f70d8a0167ad8f91b47e270ab2879e745d63ce599406f9bb92b38100b9e0cea42dff8f8f17a5ea64826921f73f04535b4f09b77e53376cc043d languageName: node linkType: hard -"@react-native/babel-preset@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/babel-preset@npm:0.84.0-rc.1" +"@react-native/babel-preset@npm:0.83, @react-native/babel-preset@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/babel-preset@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" @@ -2728,19 +2945,27 @@ __metadata: "@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" @@ -2749,40 +2974,44 @@ __metadata: "@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" - "@react-native/babel-plugin-codegen": "npm:0.84.0-rc.1" + "@babel/template": "npm:^7.25.0" + "@react-native/babel-plugin-codegen": "npm:0.83.1" babel-plugin-syntax-hermes-parser: "npm:0.32.0" babel-plugin-transform-flow-enums: "npm:^0.0.2" react-refresh: "npm:^0.14.0" peerDependencies: "@babel/core": "*" - checksum: 10c0/4af7342b315f59141d948e4f43efa80a1b3c348f30ab07153a56d939336e76fe30a841db178c7d35991c5e00d6525a2eb63a80ab368b55a4e29d5980aefb38a5 + checksum: 10c0/6662b4b427c7c95eae069e1395e92a2cd618926e22c515bb9f088ac1dde1c9c1ee707334658be68db4da5fd2e17a5d8735f9dbe455e5b454e73cca846e44050a languageName: node linkType: hard -"@react-native/codegen@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/codegen@npm:0.84.0-rc.1" +"@react-native/codegen@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/codegen@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/parser": "npm:^7.25.3" + glob: "npm:^7.1.1" hermes-parser: "npm:0.32.0" invariant: "npm:^2.2.4" nullthrows: "npm:^1.1.1" - tinyglobby: "npm:^0.2.15" yargs: "npm:^17.6.2" peerDependencies: "@babel/core": "*" - checksum: 10c0/6bd16c184f83c547c15b56587c124e666121384d03e59a827553d56d90c74702060823d7c44371744bb8b6849938a62d4d8be1b731bd8a997aa641288094294a + checksum: 10c0/8c9846ff210adc38fdc87dee3a1eff62d6e29781e3aea678069e73b27c50710c5ee38083cc4168c631118f0f4c98bd5343825e270b44a189845b358e86e1395b languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/community-cli-plugin@npm:0.84.0-rc.1" +"@react-native/community-cli-plugin@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/community-cli-plugin@npm:0.83.1" dependencies: - "@react-native/dev-middleware": "npm:0.84.0-rc.1" + "@react-native/dev-middleware": "npm:0.83.1" debug: "npm:^4.4.0" invariant: "npm:^2.2.4" metro: "npm:^0.83.3" @@ -2797,35 +3026,34 @@ __metadata: optional: true "@react-native/metro-config": optional: true - checksum: 10c0/ed13eca2ba4254b09883963989cc0abb8d3562eb98ebf4b442afb264b0514360e6c5d2b4f6d775a630d917777f9081efa7fa1d21cb3c6cabb519276ff76fa621 + checksum: 10c0/9c39e186769322ab74b1f777b488452b4f891fc6a3e716155bedf6dd30e3dbd5153c07f8d0cde20407885bc3d308572b595e3f2bf7e718653731089012cd91e8 languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/debugger-frontend@npm:0.84.0-rc.1" - checksum: 10c0/527cb27c871940fa8eff175de391e6db2015e3b499be4d9e638068031b83ddee507525391ed92c381406dd1a54c4949216e2b692939dee769cebabc1860d3316 +"@react-native/debugger-frontend@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/debugger-frontend@npm:0.83.1" + checksum: 10c0/83a2a7a56b7cbe47771dd84ff99478ba76a4fe50a24b5c356dbceeb20a589c35334d6d321dea7bf34a04185857112bdbbb93c5edbe3512c20ef1ba1ecb4cf8b6 languageName: node linkType: hard -"@react-native/debugger-shell@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/debugger-shell@npm:0.84.0-rc.1" +"@react-native/debugger-shell@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/debugger-shell@npm:0.83.1" dependencies: cross-spawn: "npm:^7.0.6" - debug: "npm:^4.4.0" fb-dotslash: "npm:0.5.8" - checksum: 10c0/9b80445a2865045375ff5b9ae0773eb7e7fe3670e99b43afa5ac197b3c82029b33fc87e6824d32cf07439677cefffe4bd2d851f3a306af5931dc242617df66fc + checksum: 10c0/a98b870f1741f476dade84cb770a090e30a82712caef7589b9a5ffc7b5fde18acb270950c57dc03301c2fe091bbe9edc5b2ebfe699d7e07ba8df4a7ccbf4863e languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/dev-middleware@npm:0.84.0-rc.1" +"@react-native/dev-middleware@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/dev-middleware@npm:0.83.1" dependencies: "@isaacs/ttlcache": "npm:^1.4.1" - "@react-native/debugger-frontend": "npm:0.84.0-rc.1" - "@react-native/debugger-shell": "npm:0.84.0-rc.1" + "@react-native/debugger-frontend": "npm:0.83.1" + "@react-native/debugger-shell": "npm:0.83.1" chrome-launcher: "npm:^0.15.2" chromium-edge-launcher: "npm:^0.2.0" connect: "npm:^3.6.5" @@ -2835,17 +3063,17 @@ __metadata: open: "npm:^7.0.3" serve-static: "npm:^1.16.2" ws: "npm:^7.5.10" - checksum: 10c0/35094c8040f964bd6b42773da8cf4187bdee59bead503ead425fd04ce22b89254ff350ff8879d511cff0f7f7e2e9763aafe800f40b074c40778e5918caf8180a + checksum: 10c0/b9697e8729a74daf21338e2f3b69c1a542a9023cffe7b045537e2bd66d55397544b47b6980120207bf4dac5add986bcb0aed9a41608f74df3f9210d1f5d9f604 languageName: node linkType: hard -"@react-native/eslint-config@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/eslint-config@npm:0.84.0-rc.1" +"@react-native/eslint-config@npm:0.83": + version: 0.83.1 + resolution: "@react-native/eslint-config@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/eslint-parser": "npm:^7.25.1" - "@react-native/eslint-plugin": "npm:0.84.0-rc.1" + "@react-native/eslint-plugin": "npm:0.83.1" "@typescript-eslint/eslint-plugin": "npm:^8.36.0" "@typescript-eslint/parser": "npm:^8.36.0" eslint-config-prettier: "npm:^8.5.0" @@ -2854,78 +3082,78 @@ __metadata: eslint-plugin-jest: "npm:^29.0.1" eslint-plugin-react: "npm:^7.30.1" eslint-plugin-react-hooks: "npm:^7.0.1" - eslint-plugin-react-native: "npm:^5.0.0" + eslint-plugin-react-native: "npm:^4.0.0" peerDependencies: - eslint: ^8.0.0 || ^9.0.0 + eslint: ">=8" prettier: ">=2" - checksum: 10c0/b7379d0e8592e82e94d545e359a490e52bf4a03341ba27941607bf477f0eae6b53fd54018ad98f70c0b96a5d1b1365da8086549781e741f1a0a9a73cd36259ae + checksum: 10c0/c6df159a86abd073e4093a1b32f5c410cb698d4f4b9996256c0027acd986007985a79fc44a85ff2752bbcdea3a1131b84dcdeccc9a1b8dac8b06487e1590e9a0 languageName: node linkType: hard -"@react-native/eslint-plugin@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/eslint-plugin@npm:0.84.0-rc.1" - checksum: 10c0/16b65b3e5991ea8063ae9b2362c7f3ac6df792325c049786ce6c21ea8d7de4d0a4e15aff688da0689a00a2d80add712f240102fd31751561a99b3ff8a89b6c16 +"@react-native/eslint-plugin@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/eslint-plugin@npm:0.83.1" + checksum: 10c0/11ed1b8162d0a31ba854d41e2e9009418cf4a2a85188c542f2491316b2718808e53f788529d79f0a143d5a17d8b6f92c074303b9490ca44f546d7f344b0e925c languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/gradle-plugin@npm:0.84.0-rc.1" - checksum: 10c0/54623d7ab7e6eb17fad242e95b110bc3950be2d0b83d5bce88abad8cb71e05f7cb4534c1f0cbbe44ccef6c5943c811316e5cb6363386a58f2a08405ca06447f5 +"@react-native/gradle-plugin@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/gradle-plugin@npm:0.83.1" + checksum: 10c0/3f55ea53fbb3ac1892c2d442a6649e779290e49667d887f613dd28b7d6d2dd73b33b5dbbe03bcfa1f730bf151dd05b9770631f6c66177162483a75ebb1a85c36 languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/js-polyfills@npm:0.84.0-rc.1" - checksum: 10c0/8d0e0bba3c67cfea439847211f9d44a8b1ad96cdd5b65658eb73f031d14a52ac3a464af54e9f655f121c523b7fb59658239687eaef7d3ee1a509e62b128920d3 +"@react-native/js-polyfills@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/js-polyfills@npm:0.83.1" + checksum: 10c0/f79a6ccf0ba7206bbb0d0653c3a0da8d8bb9c064cf2614c04b69204a4b36f047bd4d00f835114f0f7f0bf37c0c9c388eea6baedbf2eeec1fbc7cdbbb76d12e7d languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/metro-babel-transformer@npm:0.84.0-rc.1" +"@react-native/metro-babel-transformer@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/metro-babel-transformer@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.84.0-rc.1" + "@react-native/babel-preset": "npm:0.83.1" hermes-parser: "npm:0.32.0" nullthrows: "npm:^1.1.1" peerDependencies: "@babel/core": "*" - checksum: 10c0/9e3494eb71fffb85d75000896174414394cd8fa9cabf6ee44a70fdf6df2b1d823e90de39fd5c348e05468110910c9f12c64ca0e301d5125af50882ca0d69f3e2 + checksum: 10c0/be9c900d6c303202839cdb9009349e389b8850eda0805080428d1ed9a95113c653a653639ffb9e1bbeba047196359f3fe1c1afe9e0e0e308d13850570ef7184a languageName: node linkType: hard -"@react-native/metro-config@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/metro-config@npm:0.84.0-rc.1" +"@react-native/metro-config@npm:0.83": + version: 0.83.1 + resolution: "@react-native/metro-config@npm:0.83.1" dependencies: - "@react-native/js-polyfills": "npm:0.84.0-rc.1" - "@react-native/metro-babel-transformer": "npm:0.84.0-rc.1" + "@react-native/js-polyfills": "npm:0.83.1" + "@react-native/metro-babel-transformer": "npm:0.83.1" metro-config: "npm:^0.83.3" metro-runtime: "npm:^0.83.3" - checksum: 10c0/5e94a9410eec96f57c446a3e015ccb99a1acdef9f6226c064f0ad1d4de25f73bb9e47ef1c79f5c49696d404ac61cc03db45d46d0b1c5cf0483517e0d35053bb6 + checksum: 10c0/5aa6d30a96a04ec21c8fe6640843014a6a45659b7013b690843f42ede7b7ba340bd452bca80b5a430d3eb3d62fdcb6ab6fd83447782da1b50e1dd3c04f994d2d languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/normalize-colors@npm:0.84.0-rc.1" - checksum: 10c0/cfd1d7905fcdbd479b7b0b4078980bb2313a1fac0511d8d711e33683c85617598b1d5ea80a58c235009fb06480a0937ad0173601e472c9d04c59b7dd4244de5c +"@react-native/normalize-colors@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/normalize-colors@npm:0.83.1" + checksum: 10c0/e1bb0b1b6d098513dd493b1ea926a8db57e96132be75525c8d03008453a48a2f09a12d8b059ef49fcb6ae05f0decc1a9120825ea5c845a4aeedd6e4b1596d75b languageName: node linkType: hard -"@react-native/typescript-config@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/typescript-config@npm:0.84.0-rc.1" - checksum: 10c0/2467f7b0c90d870633ef71fa060c409f00de9a3578f129e646aca7a7a176fe5094c1b7ba87f0a1f5906f2f36b3c695bafb9057d3fc8555b25520f517ccdfcc7b +"@react-native/typescript-config@npm:0.83": + version: 0.83.1 + resolution: "@react-native/typescript-config@npm:0.83.1" + checksum: 10c0/d630758fa5e081d39a6c665068576574cfad08d7d0971a4de25a95bd9e3547ab28aa8e57543ba741569c4c9adf37587e80ac1ef2971cc1e6d2bbfd0c326edb1a languageName: node linkType: hard -"@react-native/virtualized-lists@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/virtualized-lists@npm:0.84.0-rc.1" +"@react-native/virtualized-lists@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/virtualized-lists@npm:0.83.1" dependencies: invariant: "npm:^2.2.4" nullthrows: "npm:^1.1.1" @@ -2936,7 +3164,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/0467997af2f7e96aef9e906dbf280a40495f67b7423ec6cef9f4c2c6af029955ecf401230e93644ff0a6c0f396fe1464bc6baa2436206bfe76970d450c554ffa + checksum: 10c0/722a2939dc056fda700935026d6d2d6ac26ddc98a06370d96e3d97d254bda321e4c5ec3ccca64e97f119d9a56eb707ffb35100ae377431e69427550c68ee4709 languageName: node linkType: hard @@ -3389,10 +3617,10 @@ __metadata: "@react-native-community/cli": "npm:20.1.0" "@react-native-community/cli-platform-android": "npm:20.1.0" "@react-native-community/cli-platform-ios": "npm:20.1.0" - "@react-native/babel-preset": "npm:0.84.0-rc.1" - "@react-native/eslint-config": "npm:0.84.0-rc.1" - "@react-native/metro-config": "npm:0.84.0-rc.1" - "@react-native/typescript-config": "npm:0.84.0-rc.1" + "@react-native/babel-preset": "npm:0.83" + "@react-native/eslint-config": "npm:0.83" + "@react-native/metro-config": "npm:0.83" + "@react-native/typescript-config": "npm:0.83" "@react-navigation/bottom-tabs": "link:../react-navigation/packages/bottom-tabs/" "@react-navigation/core": "link:../react-navigation/packages/core/" "@react-navigation/drawer": "link:../react-navigation/packages/drawer/" @@ -3412,7 +3640,7 @@ __metadata: patch-package: "npm:^8.0.0" prettier: "npm:2.8.8" react: "npm:19.2.3" - react-native: "npm:0.84.0-rc.1" + react-native: "npm:0.83" react-native-gesture-handler: "npm:^2.29.0" react-native-reanimated: "npm:~4.2.1" react-native-restart: "npm:^0.0.27" @@ -5221,14 +5449,14 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-native@npm:^5.0.0": - version: 5.0.0 - resolution: "eslint-plugin-react-native@npm:5.0.0" +"eslint-plugin-react-native@npm:^4.0.0": + version: 4.1.0 + resolution: "eslint-plugin-react-native@npm:4.1.0" dependencies: eslint-plugin-react-native-globals: "npm:^0.1.1" peerDependencies: - eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 10c0/c7c927bc743abf0cb367cc64fea5b28b28ea0c58be2990cab858a050b4855e89d90513afa44d73012c9fd670810ad0da2ac72e3e4bdfedf0ce0cbb65e901af7f + eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/9aedccde6227b78bad7c243844aca0860fca2dccd635e91e745bcd617c1e7fb889fa212917cf7b56860335a147fc7c8dc339d1976330ec4f896fe9156b35b162 languageName: node linkType: hard @@ -5560,18 +5788,6 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.5.0": - version: 6.5.0 - resolution: "fdir@npm:6.5.0" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f - languageName: node - linkType: hard - "fecha@npm:^4.2.0": version: 4.2.3 resolution: "fecha@npm:4.2.3" @@ -5935,7 +6151,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4": +"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: @@ -6066,10 +6282,10 @@ __metadata: languageName: node linkType: hard -"hermes-compiler@npm:250829098.0.6": - version: 250829098.0.6 - resolution: "hermes-compiler@npm:250829098.0.6" - checksum: 10c0/ca565183f28fb6ee079ba1232ab005be8a2af49ac0db45e912b23a90cc44e8202a1f808a059d6c1601bcc9b976caac356639dc59d7eb5897cb2ecb1ef3661a23 +"hermes-compiler@npm:0.14.0": + version: 0.14.0 + resolution: "hermes-compiler@npm:0.14.0" + checksum: 10c0/672036528448e8af5895c9d8c5dfd6012b76e92a5a187caf3143925e358bfc81b993a0cd50bbae7518c01fe6dc4fdc882e25cd623219a4d33f56d5f7abe6918b languageName: node linkType: hard @@ -8686,13 +8902,6 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 - languageName: node - linkType: hard - "pirates@npm:^4.0.4": version: 4.0.6 resolution: "pirates@npm:4.0.6" @@ -8998,18 +9207,18 @@ __metadata: languageName: node linkType: hard -"react-native@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "react-native@npm:0.84.0-rc.1" +"react-native@npm:0.83": + version: 0.83.1 + resolution: "react-native@npm:0.83.1" dependencies: "@jest/create-cache-key-function": "npm:^29.7.0" - "@react-native/assets-registry": "npm:0.84.0-rc.1" - "@react-native/codegen": "npm:0.84.0-rc.1" - "@react-native/community-cli-plugin": "npm:0.84.0-rc.1" - "@react-native/gradle-plugin": "npm:0.84.0-rc.1" - "@react-native/js-polyfills": "npm:0.84.0-rc.1" - "@react-native/normalize-colors": "npm:0.84.0-rc.1" - "@react-native/virtualized-lists": "npm:0.84.0-rc.1" + "@react-native/assets-registry": "npm:0.83.1" + "@react-native/codegen": "npm:0.83.1" + "@react-native/community-cli-plugin": "npm:0.83.1" + "@react-native/gradle-plugin": "npm:0.83.1" + "@react-native/js-polyfills": "npm:0.83.1" + "@react-native/normalize-colors": "npm:0.83.1" + "@react-native/virtualized-lists": "npm:0.83.1" abort-controller: "npm:^3.0.0" anser: "npm:^1.4.9" ansi-regex: "npm:^5.0.0" @@ -9018,7 +9227,8 @@ __metadata: base64-js: "npm:^1.5.1" commander: "npm:^12.0.0" flow-enums-runtime: "npm:^0.0.6" - hermes-compiler: "npm:250829098.0.6" + glob: "npm:^7.1.1" + hermes-compiler: "npm:0.14.0" invariant: "npm:^2.2.4" jest-environment-node: "npm:^29.7.0" memoize-one: "npm:^5.0.0" @@ -9033,19 +9243,18 @@ __metadata: scheduler: "npm:0.27.0" semver: "npm:^7.1.3" stacktrace-parser: "npm:^0.1.10" - tinyglobby: "npm:^0.2.15" whatwg-fetch: "npm:^3.0.0" ws: "npm:^7.5.10" yargs: "npm:^17.6.2" peerDependencies: "@types/react": ^19.1.1 - react: ^19.2.3 + react: ^19.2.0 peerDependenciesMeta: "@types/react": optional: true bin: react-native: cli.js - checksum: 10c0/d35814637f8fb9059f57fb75f92d16c9e350066c428dc3da26abf00e6322a1c00440659b570c392715fb6e74be683a5346c784ae634d11e7410822cfd00aa49a + checksum: 10c0/3a2202ea6e69c1f612b71d31a664eeda2b79811e560aab280c2fa5738d5e285c52d3b6d1820bb1652dd0d78f5ac0f7f183535b5585e29f8cc8298723aa834999 languageName: node linkType: hard @@ -10141,16 +10350,6 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" - dependencies: - fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 - languageName: node - linkType: hard - "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" diff --git a/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt b/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt index a15ed76841..df21435274 100644 --- a/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +++ b/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt @@ -1,5 +1,6 @@ package com.swmansion.rnscreens +import android.util.Log import android.view.ViewGroup import androidx.annotation.UiThread import com.facebook.react.bridge.ReactContext @@ -50,6 +51,19 @@ abstract class FabricEnabledViewGroup( return } + Log.d( + "SCREENS", + "FabricEnabledViewGroup // updateState lastWidth = %f, lastHeight = %f, lastHeader = %f, newWidth = %f, newHeight = %f, newHeader = %f" + .format( + lastWidth, + lastHeight, + lastHeaderHeight, + realWidth, + realHeight, + realHeaderHeight, + ), + ) + lastWidth = realWidth lastHeight = realHeight lastHeaderHeight = realHeaderHeight diff --git a/android/src/main/java/com/swmansion/rnscreens/CustomAppBarLayout.kt b/android/src/main/java/com/swmansion/rnscreens/CustomAppBarLayout.kt index 68740757b7..ad83ecf3d1 100644 --- a/android/src/main/java/com/swmansion/rnscreens/CustomAppBarLayout.kt +++ b/android/src/main/java/com/swmansion/rnscreens/CustomAppBarLayout.kt @@ -2,6 +2,7 @@ package com.swmansion.rnscreens import android.annotation.SuppressLint import android.content.Context +import android.util.Log import com.google.android.material.appbar.AppBarLayout @SuppressLint("ViewConstructor") @@ -12,6 +13,7 @@ class CustomAppBarLayout( * Handles the layout correction from the child Toolbar. */ internal fun applyToolbarLayoutCorrection(toolbarPaddingTop: Int) { + Log.d("SCREENS", "CustomAppBarLayout // applyToolbarLayoutCorrection paddingTop = %d".format(toolbarPaddingTop)); applyFrameCorrectionByTopInset(toolbarPaddingTop) } diff --git a/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt b/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt index 0ecc2fc36e..d3a170c4bd 100644 --- a/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +++ b/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt @@ -3,6 +3,7 @@ package com.swmansion.rnscreens import android.annotation.SuppressLint import android.content.Context import android.os.Build +import android.util.Log import android.view.Choreographer import android.view.WindowInsets import android.view.WindowManager @@ -116,6 +117,8 @@ open class CustomToolbar( override fun onApplyWindowInsets(insets: WindowInsets?): WindowInsets? { val unhandledInsets = super.onApplyWindowInsets(insets) + Log.d("SCREENS", "onApplyWindowInsets") + // There are few UI modes we could be running in // // 1. legacy non edge-to-edge mode, @@ -153,6 +156,7 @@ open class CustomToolbar( val newInsets = InsetsCompat.add(horizontalInsets, verticalInsets) if (lastInsets != newInsets) { + Log.d("SCREENS", "applyExactPadding lastInsets.top = %d, newInsets.top = %d".format(lastInsets.top, newInsets.top)) lastInsets = newInsets applyExactPadding( lastInsets.left, @@ -174,6 +178,10 @@ open class CustomToolbar( ) { super.onLayout(hasSizeChanged, l, t, r, b) + Log.d("SCREENS", "CustomToolbar // onLayout hasSizeChanged = %b, l = %d, t = %d, r = %d, b = %d".format( + hasSizeChanged, l, t, r, b + )) + config.onNativeToolbarLayout( this, hasSizeChanged || isForceShadowStateUpdateOnLayoutRequested, diff --git a/android/src/main/java/com/swmansion/rnscreens/Screen.kt b/android/src/main/java/com/swmansion/rnscreens/Screen.kt index 6b3a81bcc3..bcbf05d475 100644 --- a/android/src/main/java/com/swmansion/rnscreens/Screen.kt +++ b/android/src/main/java/com/swmansion/rnscreens/Screen.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.content.pm.ActivityInfo import android.graphics.Paint import android.os.Parcelable +import android.util.Log import android.util.SparseArray import android.view.MotionEvent import android.view.View @@ -350,6 +351,7 @@ class Screen( r: Int, b: Int, ) { + Log.d("SCREENS", "Screen // onLayout top = %d, width = %d, height = %d".format(t, r - l, b - t)); // In case of form sheet we get layout notification a bit later, in `onBottomSheetBehaviorDidLayout` // after the attached behaviour laid out this view. if (changed && isNativeStackScreen && !usesFormSheetPresentation()) { diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt index 9a9cbf312f..cb6c161243 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt @@ -4,6 +4,7 @@ import android.content.Context import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter import android.text.TextUtils +import android.util.Log import android.util.TypedValue import android.view.Gravity import android.view.View.OnClickListener @@ -128,6 +129,7 @@ class ScreenStackHeaderConfig( val contentInsetEnd = toolbar.currentContentInsetEnd + toolbar.paddingEnd + Log.d("SCREENS", "ScreenStackHeaderConfig // onNativeToolbarLayout") headerHeightUpdateProxy.updateHeaderHeightIfNeeded(this, screen) // Note that implementation of the callee differs between architectures. @@ -342,6 +344,7 @@ class ScreenStackHeaderConfig( i++ } + Log.d("SCREENS", "ScreenStackHeaderConfig.onUpdate") headerHeightUpdateProxy.updateHeaderHeightIfNeeded(this, screen) } diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderHeightUpdateProxy.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderHeightUpdateProxy.kt index 5485c80a72..df8ef5d4ba 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderHeightUpdateProxy.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderHeightUpdateProxy.kt @@ -1,5 +1,7 @@ package com.swmansion.rnscreens +import android.util.Log + class ScreenStackHeaderHeightUpdateProxy { var previousHeaderHeightInPx: Int? = null @@ -9,6 +11,8 @@ class ScreenStackHeaderHeightUpdateProxy { ) { val currentHeaderHeightInPx = if (config.isHeaderHidden) 0 else config.toolbar.height + Log.d("SCREENS", "ScreenStackHeaderHeightUpdateProxy // updateHeaderHeightIfNeeded %d".format(currentHeaderHeightInPx)) + if (currentHeaderHeightInPx != previousHeaderHeightInPx) { previousHeaderHeightInPx = currentHeaderHeightInPx screen?.notifyHeaderHeightChange(currentHeaderHeightInPx) diff --git a/android/src/main/java/com/swmansion/rnscreens/utils/InsetsUtils.kt b/android/src/main/java/com/swmansion/rnscreens/utils/InsetsUtils.kt new file mode 100644 index 0000000000..666aed96ee --- /dev/null +++ b/android/src/main/java/com/swmansion/rnscreens/utils/InsetsUtils.kt @@ -0,0 +1,17 @@ +package com.swmansion.rnscreens.utils + +import android.app.Activity +import android.os.Build +import android.view.WindowInsets +import androidx.annotation.RequiresApi + +@RequiresApi(Build.VERSION_CODES.R) +internal fun getWindowManagerTopInset(activity: Activity): Int { + val windowMetrics = activity.windowManager.maximumWindowMetrics + val insets = + windowMetrics.windowInsets.getInsetsIgnoringVisibility( + WindowInsets.Type.statusBars() or WindowInsets.Type.displayCutout(), + ) + + return insets.top +} diff --git a/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt b/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt index 47cde4986e..4bb0a4e3cc 100644 --- a/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +++ b/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt @@ -2,6 +2,8 @@ package com.swmansion.rnscreens.utils import android.app.Activity import android.content.Context +import android.content.pm.ActivityInfo +import android.os.Build import android.util.Log import android.view.View import androidx.appcompat.widget.Toolbar @@ -32,8 +34,6 @@ internal class ScreenDummyLayoutHelper( private lateinit var toolbar: Toolbar private var defaultFontSize: Float = 0f private var defaultContentInsetStartWithNavigation: Int = 0 - - // LRU with size 1 private var cache: CacheEntry = CacheEntry.EMPTY // We do not want to be responsible for the context lifecycle. If it's null, we're fine. @@ -87,6 +87,8 @@ internal class ScreenDummyLayoutHelper( } synchronized(this) { + Log.d("SCREENS", "ScreenDummyLayoutHelper // activity id ${reactContext.currentActivity}") + // The layout could have been initialised when this thread waited for access to critical section. if (isLayoutInitialized) { return true @@ -174,12 +176,19 @@ internal class ScreenDummyLayoutHelper( } } - if (cache.hasKey(CacheKey(fontSize, isTitleEmpty))) { + val activity = requireActivity() + + Log.d("SCREENS", "orientation = %d".format(activity.resources.configuration.orientation)) + + if (cache.hasKey(CacheKey(fontSize, isTitleEmpty, activity.resources.configuration.orientation))) { return cache.headerHeight } - val topLevelDecorView = requireActivity().window.decorView - val topInset = getDecorViewTopInset(topLevelDecorView) + val topLevelDecorView = activity.window.decorView + val topInset = getCachedTopInset() + + Log.d("SCREENS", "ScreenDummyLayoutHelper // decorView.width = %d, decorView.height = %d".format(topLevelDecorView.width, topLevelDecorView.height)) + Log.d("SCREENS", "ScreenDummyLayoutHelper // topInset = %d".format(topInset)) // These dimensions are not accurate, as they do include navigation bar, however // it is ok for our purposes. @@ -213,10 +222,21 @@ internal class ScreenDummyLayoutHelper( val totalAppBarLayoutHeight = appBarLayout.height.toFloat() + topInset val headerHeight = PixelUtil.toDIPFromPixel(totalAppBarLayoutHeight) - cache = CacheEntry(CacheKey(fontSize, isTitleEmpty), headerHeight) return headerHeight } + private fun getCachedTopInset(): Int { + requireActivity().let { + // If build version allows, use insets retrieved from window manager + // They are correctly updated and available during orientation change + // which prevents content from jumping when calculating new layout + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) + getWindowManagerTopInset(it) + else + getDecorViewTopInset(it.window.decorView) + } + } + private fun requireReactContext(lazyMessage: (() -> Any)? = null): ReactApplicationContext = requireNotNull( reactContextRef.get(), @@ -275,6 +295,7 @@ internal class ScreenDummyLayoutHelper( private data class CacheKey( val fontSize: Int, val isTitleEmpty: Boolean, + val orientation: Int, ) private class CacheEntry( @@ -284,6 +305,6 @@ private class CacheEntry( fun hasKey(key: CacheKey) = cacheKey.fontSize != Int.MIN_VALUE && cacheKey == key companion object { - val EMPTY = CacheEntry(CacheKey(Int.MIN_VALUE, false), 0f) + val EMPTY = CacheEntry(CacheKey(Int.MIN_VALUE, false, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT), 0f) } } diff --git a/android/src/main/jni/CMakeLists.txt b/android/src/main/jni/CMakeLists.txt index b2dfc56afc..e872033609 100644 --- a/android/src/main/jni/CMakeLists.txt +++ b/android/src/main/jni/CMakeLists.txt @@ -44,6 +44,7 @@ target_link_libraries( ReactAndroid::reactnative ReactAndroid::jsi fbjni::fbjni + log ) if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 80) diff --git a/apps/App.tsx b/apps/App.tsx index 7a999525a1..897329f82f 100644 --- a/apps/App.tsx +++ b/apps/App.tsx @@ -1,11 +1,11 @@ import React from 'react'; import { enableFreeze } from 'react-native-screens'; -import Example from './Example'; -// import * as Test from './src/tests/issue-tests'; +// import Example from './Example'; +import * as Test from './src/tests/issue-tests'; enableFreeze(true); export default function App() { - return ; - // return ; + // return ; + return ; } diff --git a/apps/src/tests/issue-tests/Test3578.tsx b/apps/src/tests/issue-tests/Test3578.tsx new file mode 100644 index 0000000000..05d61625aa --- /dev/null +++ b/apps/src/tests/issue-tests/Test3578.tsx @@ -0,0 +1,157 @@ +import React, { useEffect, useState } from 'react'; +import type { PropsWithChildren } from 'react'; +import { Button, StyleSheet, Text, View } from 'react-native'; + +import { + Screen, + ScreenStack, + ScreenStackHeaderConfig, +} from 'react-native-screens'; + +type SectionProps = PropsWithChildren<{ + title: string; +}>; + +function Section({ children, title }: SectionProps): React.JSX.Element { + return ( + + {title} + {children} + + ); +} + +function floodJsThread() { + setInterval(() => { + const end = Date.now() + 10; + while (Date.now() < end) { + // Intentionally do nothing; just burn CPU cycles. + Math.sqrt(Math.random()); + } + }, 12); +} + +function AppMain(): React.JSX.Element { + const backgroundStyle = { + flex: 1, + backgroundColor: 'white', + }; + + const [num, setNum] = useState(0); + + useEffect(() => { + let i = 0; + setInterval(() => { + i++; + setNum(i); + }, 2); + }, []); + + /* + * To keep the template simple and small we're adding padding to prevent view + * from rendering under the System UI. + * For bigger apps the reccomendation is to use `react-native-safe-area-context`: + * https://github.com/AppAndFlow/react-native-safe-area-context + * + * You can read more about it here: + * https://github.com/react-native-community/discussions-and-proposals/discussions/827 + */ + const safePadding = '5%'; + + return ( + + + {/*
+ This test shows how the native layout update triggers a layout shift. +
*/} + {/*
+ There is a view with a blue background. We don't expect to ever see + flashes of the blue background. +
*/} +
{num}
+ +
+ To better show off the problem, you can add extra computation to the + JS thread, so that the commits are likely further apart from each + other. +
+
+
+ ); +} + +const styles = StyleSheet.create({ + sectionContainer: { + marginTop: 32, + paddingHorizontal: 24, + }, + sectionTitle: { + fontSize: 24, + fontWeight: '600', + }, + sectionDescription: { + marginTop: 8, + fontSize: 18, + fontWeight: '400', + }, + highlight: { + fontWeight: '700', + }, +}); + +function InnerStack() { + return ( + + + + + + + ); +} + +function App() { + return ( + + + + + + + ); +} + +export default App; diff --git a/apps/src/tests/issue-tests/index.ts b/apps/src/tests/issue-tests/index.ts index e1272038e0..852ebae4cf 100644 --- a/apps/src/tests/issue-tests/index.ts +++ b/apps/src/tests/issue-tests/index.ts @@ -179,6 +179,7 @@ export { default as Test3522 } from './Test3522'; export { default as Test3564 } from './Test3564'; export { default as Test3566 } from './Test3566'; export { default as Test3576 } from './Test3576'; +export { default as Test3578 } from './Test3578'; export { default as Test3596 } from './Test3596'; export { default as Test3617 } from './Test3617'; export { default as TestScreenAnimation } from './TestScreenAnimation'; diff --git a/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h b/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h index 2389f94a28..115890e9fd 100644 --- a/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +++ b/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h @@ -5,6 +5,7 @@ #include #include "RNSScreenShadowNodeCommitHook.h" #endif // ANDROID +#include #include #include #include @@ -45,6 +46,10 @@ class RNSScreenComponentDescriptor final std::static_pointer_cast( shadowNode.getState()); auto stateData = state->getData(); + + __android_log_print( + ANDROID_LOG_INFO, "SCREENS", "RNSScreenComponentDescriptor // adopt"); + #ifdef ANDROID // get // featureFlags.experiment.androidResetScreenShadowStateOnOrientationChange @@ -108,6 +113,7 @@ class RNSScreenComponentDescriptor final // The if condition holds true on first render and when it is reset inside // RNSScreenShadowNodeCommitHook. layoutableShadowNode.setSize({YGUndefined, YGUndefined}); + screenShadowNode.applyHeaderPadding(); } #else if (stateData.frameSize.width != 0 && stateData.frameSize.height != 0) { diff --git a/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp b/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp index e69df80b12..409240155e 100644 --- a/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +++ b/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp @@ -1,4 +1,6 @@ #include "RNSScreenShadowNode.h" +#include +#include "YLSN.h" namespace facebook { namespace react { @@ -96,19 +98,7 @@ void RNSScreenShadowNode::appendChild( // During creation of the shadow node children are not attached yet. // We also do not want to set any padding in case. if (headerConfigChildOpt) { - const auto &headerConfigChild = headerConfigChildOpt->get(); - const auto &headerProps = - *std::static_pointer_cast( - headerConfigChild->getProps()); - - const auto headerHeight = headerProps.hidden - ? 0.f - : findHeaderHeight( - headerProps.titleFontSize, headerProps.title.empty()) - .value_or(0.f); - - screenShadowNode.setPadding({0, 0, 0, headerHeight}); - screenShadowNode.setHeaderHeight(headerHeight); + doApplyHeaderPadding(headerConfigChildOpt); screenShadowNode.getFrameCorrectionModes().set( FrameCorrectionModes::Mode( FrameCorrectionModes::Mode::FrameHeightCorrection | @@ -119,6 +109,15 @@ void RNSScreenShadowNode::appendChild( } void RNSScreenShadowNode::layout(facebook::react::LayoutContext layoutContext) { + yoga::Node yogaNode = ((YLSN *)this)->yogaNode_; + float padding = yogaNode.style().padding(yoga::Edge::Bottom).value().unwrap(); + __android_log_print( + ANDROID_LOG_INFO, + "SCREENS", + "RNSScreenShadowNode // origin.y = %f height = %f, padding = %f", + layoutMetrics_.frame.origin.y, + layoutMetrics_.frame.size.height, + padding); YogaLayoutableShadowNode::layout(layoutContext); #ifdef ANDROID @@ -147,6 +146,43 @@ void RNSScreenShadowNode::applyFrameCorrections() { FrameCorrectionModes::Mode::FrameHeightCorrection); } +void RNSScreenShadowNode::applyHeaderPadding() { + auto headerConfigChildOpt = findHeaderConfigChild(*this); + + if (headerConfigChildOpt) { + doApplyHeaderPadding(headerConfigChildOpt); + } +}; + +void RNSScreenShadowNode::doApplyHeaderPadding( + std::optional< + const std::reference_wrapper>> + headerConfigRef) { + if (!headerConfigRef) { + return; + } + + const auto &headerConfigChild = headerConfigRef->get(); + const auto &headerProps = + *std::static_pointer_cast( + headerConfigChild->getProps()); + + const auto headerHeight = headerProps.hidden + ? 0.f + : findHeaderHeight(headerProps.titleFontSize, headerProps.title.empty()) + .value_or(0.f); + + __android_log_print( + ANDROID_LOG_INFO, + "SCREENS", + "RNSScreenShadowNode // doApplyHeaderPadding headerHeight = %f", + headerHeight); + + auto &screenShadowNode = static_cast(*this); + screenShadowNode.setPadding({0, 0, 0, headerHeight}); + screenShadowNode.setHeaderHeight(headerHeight); +}; + void RNSScreenShadowNode::setHeaderHeight(float headerHeight) { getStateDataMutable().setHeaderHeight(headerHeight); } diff --git a/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h b/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h index 93c9f4ba6c..0dea723d9f 100644 --- a/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +++ b/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h @@ -4,8 +4,10 @@ #include #include #include +#include #include #include "FrameCorrectionModes.h" +#include "RNSScreenStackHeaderConfigShadowNode.h" #include "RNSScreenState.h" namespace facebook { @@ -41,10 +43,16 @@ class JSI_EXPORT RNSScreenShadowNode final : public ConcreteViewShadowNode< #ifdef ANDROID void resetFrameSizeState(); + void applyHeaderPadding(); + private: void applyFrameCorrections(); StateData &getStateDataMutable(); + + void doApplyHeaderPadding( + std::optional>>); #endif // ANDROID }; diff --git a/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNodeCommitHook.cpp b/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNodeCommitHook.cpp index b0ec6ee1e9..39fb320ec0 100644 --- a/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNodeCommitHook.cpp +++ b/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNodeCommitHook.cpp @@ -35,6 +35,10 @@ RootShadowNode::Unshared RNSScreenShadowNodeCommitHook::shadowTreeWillCommit( // Check if screen area has changed size (either because of orientation // change, or application resize with floating window / split screen) if (_screenSizeChanged(*oldRootProps, *newRootProps)) { + __android_log_print( + ANDROID_LOG_INFO, + "SCREENS", + "RNSScreenShadowNodeCommitHook // orientation change detected"); return newRootShadowNodeWithScreenFrameSizesReset(newRootShadowNode); } diff --git a/common/cpp/react/renderer/components/rnscreens/YLSN.h b/common/cpp/react/renderer/components/rnscreens/YLSN.h new file mode 100644 index 0000000000..fe80d60ff6 --- /dev/null +++ b/common/cpp/react/renderer/components/rnscreens/YLSN.h @@ -0,0 +1,236 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +class YLSN : public LayoutableShadowNode { + public: + using Shared = std::shared_ptr; + using ListOfShared = std::vector; + +#pragma mark - Constructors + + YLSN( + const ShadowNodeFragment &fragment, + const ShadowNodeFamily::Shared &family, + ShadowNodeTraits traits); + + YLSN(const ShadowNode &sourceShadowNode, const ShadowNodeFragment &fragment); + + void completeClone( + const ShadowNode &sourceShadowNode, + const ShadowNodeFragment &fragment) override; + +#pragma mark - Mutating Methods + + /* + * Connects `measureFunc` function of Yoga node with + * `LayoutableShadowNode::measure()` method. + */ + void enableMeasurement(); + + void appendChild(const std::shared_ptr &child) override; + void replaceChild( + const ShadowNode &oldChild, + const std::shared_ptr &newChild, + size_t suggestedIndex = SIZE_MAX) override; + + void updateYogaChildren(); + + void updateYogaProps(); + + /* + * Sets layoutable size of node. + */ + void setSize(Size size) const; + + void setPadding(RectangleEdges padding) const; + + /* + * Sets position type of Yoga node (relative, absolute). + */ + void setPositionType(YGPositionType positionType) const; + +#pragma mark - LayoutableShadowNode + + void dirtyLayout() override; + bool getIsLayoutClean() const override; + + /* + * Computes layout using Yoga layout engine. + * See `LayoutableShadowNode` for more details. + */ + void layoutTree( + LayoutContext layoutContext, + LayoutConstraints layoutConstraints) override; + + void layout(LayoutContext layoutContext) override; + + Rect getContentBounds() const; + + /** + * Subclasses which provide MeasurableYogaNode may override to signal that a + * new ShadowNode revision does not need to invalidate existing measurements. + */ + virtual bool shouldNewRevisionDirtyMeasurement( + const ShadowNode &sourceShadowNode, + const ShadowNodeFragment &fragment) const; + + /* + * Yoga config associated (only) with this particular node. + */ + yoga::Config yogaConfig_; + + /* + * All Yoga functions only accept non-const arguments, so we have to mark + * Yoga node as `mutable` here to avoid `static_cast`ing the pointer to this + * all the time. + */ + mutable yoga::Node yogaNode_; + + private: + /* + * Goes over `yogaNode_.getChildren()` and in case child's owner is + * equal to address of `yogaNode_`, it sets child's owner address + * to `0xBADC0FFEE0DDF00D`. This is magic constant, the intention + * is to make debugging easier when the address pops up in debugger. + * This prevents ABA problem where child yoga node goes from owned -> unowned + * -> back to owned because its parent is allocated at the same address. + */ + void updateYogaChildrenOwnersIfNeeded(); + + /* + * Return true if child's yogaNode's owner is this->yogaNode_. Otherwise + * returns false. + */ + bool doesOwn(const YLSN &child) const; + + /* + * Appends a Yoga node to the Yoga node associated with this node. + * The method does *not* do anything besides that (no cloning or `owner` field + * adjustment). + */ + void appendYogaChild(const YLSN::Shared &childNode); + + /* + * Makes the child node with a given `index` (and Yoga node associated with) a + * valid child node satisfied requirements of the Concurrent Layout approach. + */ + void adoptYogaChild(size_t index); + + /** + * Applies contextual values to the ShadowNode's Yoga tree after the + * ShadowTree has been constructed, but before it has been is laid out or + * committed. + */ + void configureYogaTree( + float pointScaleFactor, + YGErrata defaultErrata, + bool swapLeftAndRight); + + /** + * Return an errata based on a `layoutConformance` prop if given, otherwise + * the passed default + */ + YGErrata resolveErrata(YGErrata defaultErrata) const; + + /** + * Replcaes a child with a mutable clone of itself, returning the clone. + */ + YLSN &cloneChildInPlace(size_t layoutableChildIndex); + + static yoga::Config &initializeYogaConfig( + yoga::Config &config, + YGConfigConstRef previousConfig = nullptr); + static YGNodeRef yogaNodeCloneCallbackConnector( + YGNodeConstRef oldYogaNode, + YGNodeConstRef parentYogaNode, + size_t childIndex); + static YGSize yogaNodeMeasureCallbackConnector( + YGNodeConstRef yogaNode, + float width, + YGMeasureMode widthMode, + float height, + YGMeasureMode heightMode); + static float yogaNodeBaselineCallbackConnector( + YGNodeConstRef yogaNode, + float width, + float height); + static YLSN &shadowNodeFromContext(YGNodeConstRef yogaNode); + +#pragma mark - RTL Legacy Autoflip + + /* + * Reassigns the following values: + * - (left|right) → (start|end) + * - margin(Left|Right) → margin(Start|End) + * - padding(Left|Right) → padding(Start|End) + * - borderTop(Left|Right)Radius → borderTop(Start|End)Radius + * - borderBottom(Left|Right)Radius → borderBottom(Start|End)Radius + * - border(Left|Right)Width → border(Start|End)Width + * - border(Left|Right)Color → border(Start|End)Color + * This is neccesarry to be backwards compatible with old renderer, it swaps + * the values as well in https://fburl.com/diffusion/kl7bjr3h + */ + void swapStyleLeftAndRight(); + /* + * In shadow node passed as argument, reassigns following values + * - borderTop(Left|Right)Radius → borderTop(Start|End)Radius + * - borderBottom(Left|Right)Radius → borderBottom(Start|End)Radius + * - border(Left|Right)Width → border(Start|End)Width + * - border(Left|Right)Color → border(Start|End)Color + */ + void swapLeftAndRightInViewProps(); + /* + * In yoga node passed as argument, reassigns following values + * - (left|right) → (start|end) + * - margin(Left|Right) → margin(Start|End) + * - padding(Left|Right) → padding(Start|End) + */ + void swapLeftAndRightInYogaStyleProps(); + + /* + * Combine a base yoga::Style with aliased properties which should be + * flattened into it. E.g. reconciling "marginInlineStart" and "marginStart". + */ + static yoga::Style applyAliasedProps( + const yoga::Style &baseStyle, + const YogaStylableProps &props); + +#pragma mark - Consistency Ensuring Helpers + + void ensureConsistency() const; + void ensureYogaChildrenAlignment() const; + void ensureYogaChildrenLookFine() const; + +#pragma mark - Private member variables + /* + * List of children which derive from YLSN + */ + ListOfShared yogaLayoutableChildren_; + + /* + * Whether the full Yoga subtree of this Node has been configured. + */ + bool yogaTreeHasBeenConfigured_{false}; +}; + +} // namespace facebook::react diff --git a/package.json b/package.json index 965c2def26..f39783816b 100644 --- a/package.json +++ b/package.json @@ -86,10 +86,10 @@ "@react-native-community/cli": "20.1.0", "@react-native-community/cli-platform-android": "20.1.0", "@react-native-community/cli-platform-ios": "20.1.0", - "@react-native/babel-preset": "0.84.0-rc.1", - "@react-native/eslint-config": "0.84.0-rc.1", - "@react-native/metro-config": "0.84.0-rc.1", - "@react-native/typescript-config": "0.84.0-rc.1", + "@react-native/babel-preset": "0.83", + "@react-native/eslint-config": "0.83", + "@react-native/metro-config": "0.83", + "@react-native/typescript-config": "0.83", "@react-navigation/native": "^5.8.0", "@react-navigation/stack": "^5.10.0", "@types/jest": "^29.5.13", @@ -112,7 +112,7 @@ "prettier": "^2.8.8", "react": "19.2.3", "react-dom": "^19.1.0", - "react-native": "0.84.0-rc.1", + "react-native": "0.83", "react-native-builder-bob": "^0.23.2", "react-native-gesture-handler": "^2.28.0", "react-native-reanimated": "^3.19.0", diff --git a/yarn.lock b/yarn.lock index 273c589dd5..fc9c2d2a69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,6 +37,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/code-frame@npm:7.28.6" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.28.5" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/ed5d57f99455e3b1c23e75ebb8430c6b9800b4ecd0121b4348b97cecb65406a47778d6db61f0d538a4958bb01b4b277e90348a68d39bd3beff1d7c940ed6dd66 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.26.5, @babel/compat-data@npm:^7.26.8": version: 7.26.8 resolution: "@babel/compat-data@npm:7.26.8" @@ -51,6 +62,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/compat-data@npm:7.28.6" + checksum: 10c0/2d047431041281eaf33e9943d1a269d3374dbc9b498cafe6a18f5ee9aee7bb96f7f6cac0304eab4d13c41fc4db00fe4ca16c7aa44469ca6a211b8b6343b78fc4 + languageName: node + linkType: hard + "@babel/core@npm:^7.0.0, @babel/core@npm:^7.1.6, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": version: 7.26.9 resolution: "@babel/core@npm:7.26.9" @@ -200,6 +218,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/generator@npm:7.28.6" + dependencies: + "@babel/parser": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/162fa358484a9a18e8da1235d998f10ea77c63bab408c8d3e327d5833f120631a77ff022c5ed1d838ee00523f8bb75df1f08196d3657d0bca9f2cfeb8503cc12 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -253,6 +284,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-compilation-targets@npm:7.28.6" + dependencies: + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/3fcdf3b1b857a1578e99d20508859dbd3f22f3c87b8a0f3dc540627b4be539bae7f6e61e49d931542fe5b557545347272bbdacd7f58a5c77025a18b745593a50 + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" @@ -544,6 +588,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-plugin-utils@npm:7.28.6" + checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" @@ -817,6 +868,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/parser@npm:7.28.6" + dependencies: + "@babel/types": "npm:^7.28.6" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/d6bfe8aa8e067ef58909e9905496157312372ca65d8d2a4f2b40afbea48d59250163755bba8ae626a615da53d192b084bcfc8c9dad8b01e315b96967600de581 + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" @@ -1258,7 +1320,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.0.0-0": +"@babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.24.7": version: 7.27.1 resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" dependencies: @@ -1397,6 +1459,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1e9893503ae6d651125701cc29450e87c0b873c8febebff19da75da9c40cfb7968c52c28bf948244e461110aeb7b3591f2cc199b7406ff74a24c50c7a5729f39 + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" @@ -1408,6 +1482,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/288207f488412b23bb206c7c01ba143714e2506b72a9ec09e993f28366cc8188d121bde714659b3437984a86d2881d9b1b06de3089d5582823ccf2f3b3eaa2c4 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" @@ -1513,6 +1599,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5abdc7b5945fbd807269dcc6e76e52b69235056023b0b35d311e8f5dfd6c09d9f225839798998fc3b663f50cf701457ddb76517025a0d7a5474f3fe56e567a4c + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" @@ -1535,6 +1634,28 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c40dc3eb2f45a92ee476412314a40e471af51a0f51a24e91b85cef5fc59f4fe06758088f541643f07f949d2c67ee7bdce10e11c5ec56791ae09b15c3b451eeca + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4632a35453d2131f0be466681d0a33e3db44d868ff51ec46cd87e0ebd1e47c6a39b894f7d1c9b06f931addf6efa9d30e60c4cdedeb4f69d426f683e11f8490cf + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" @@ -1677,6 +1798,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/191097d8d2753cdd16d1acca65a945d1645ab20b65655c2f5b030a9e38967a52e093dcb21ebf391e342222705c6ffe5dea15dafd6257f7b51b77fb64a830b637 + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" @@ -1699,6 +1831,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f55334352d4fcde385f2e8a58836687e71ff668c9b6e4c34d52575bf2789cdde92d9d3116edba13647ac0bc3e51fb2a6d1e8fb822dce7e8123334b82600bc4c3 + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" @@ -1770,6 +1917,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-parameters@npm:^7.24.7, @babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f + languageName: node + linkType: hard + "@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" @@ -1939,7 +2097,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0-0": +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.24.7": version: 7.27.1 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" dependencies: @@ -1962,6 +2120,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-transform-spread@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bcac50e558d6f0c501cbce19ec197af558cef51fe3b3a6eba27276e323e57a5be28109b4264a5425ac12a67bf95d6af9c2a42b05e79c522ce913fb9529259d76 + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" @@ -1973,6 +2143,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5698df2d924f0b1b7bdb7ef370e83f99ed3f0964eb3b9c27d774d021bee7f6d45f9a73e2be369d90b4aff1603ce29827f8743f091789960e7669daf9c3cda850 + languageName: node + linkType: hard + "@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.26.8": version: 7.26.8 resolution: "@babel/plugin-transform-template-literals@npm:7.26.8" @@ -2345,6 +2526,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/template@npm:7.28.6" + dependencies: + "@babel/code-frame": "npm:^7.28.6" + "@babel/parser": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/66d87225ed0bc77f888181ae2d97845021838c619944877f7c4398c6748bcf611f216dfd6be74d39016af502bca876e6ce6873db3c49e4ac354c56d34d57e9f5 + languageName: node + linkType: hard + "@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9": version: 7.26.9 resolution: "@babel/traverse@npm:7.26.9" @@ -2405,6 +2597,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/traverse@npm:7.28.6" + dependencies: + "@babel/code-frame": "npm:^7.28.6" + "@babel/generator": "npm:^7.28.6" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + debug: "npm:^4.3.1" + checksum: 10c0/ed5deb9c3f03e2d1ad2d44b9c92c84cce24593245c3f7871ce27ee1b36d98034e6cd895fa98a94eb44ebabe1d22f51b10b09432939d1c51a0fcaab98f17a97bc + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.26.9 resolution: "@babel/types@npm:7.26.9" @@ -2467,6 +2674,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/types@npm:7.28.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/54a6a9813e48ef6f35aa73c03b3c1572cad7fa32b61b35dd07e4230bc77b559194519c8a4d8106a041a27cc7a94052579e238a30a32d5509aa4da4d6fd83d990 + languageName: node + linkType: hard + "@babel/types@npm:^7.8.3": version: 7.24.0 resolution: "@babel/types@npm:7.24.0" @@ -3627,10 +3844,10 @@ __metadata: languageName: node linkType: hard -"@react-native/assets-registry@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/assets-registry@npm:0.84.0-rc.1" - checksum: 10c0/da75e38d0500fea1f03462140d8161803e1452da209413158e18688e2f8cc8075d60e96fc8cb0795cf170a73c5de2e24b4d9adc7ec63eeb4b509ee2f3e94fa12 +"@react-native/assets-registry@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/assets-registry@npm:0.83.1" + checksum: 10c0/284ec022bc91fdc8f2dc14d92cb52247ad42b076fb12997cd089d0ea594f628425fb631d3abcf91a97bbe4f28e84ce5bcecd44ea0db86a51f821602ef54dc73c languageName: node linkType: hard @@ -3641,19 +3858,19 @@ __metadata: languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/babel-plugin-codegen@npm:0.84.0-rc.1" +"@react-native/babel-plugin-codegen@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/babel-plugin-codegen@npm:0.83.1" dependencies: "@babel/traverse": "npm:^7.25.3" - "@react-native/codegen": "npm:0.84.0-rc.1" - checksum: 10c0/4249f97c5827f09092ac18f3c3abd0ee529a7be8f0a38fb98819c70027649314d22f6d0ff61513a40e360235c03caf93dc177d7d6a0bf3c62ab5dc9b65888b44 + "@react-native/codegen": "npm:0.83.1" + checksum: 10c0/fa08bf71cf4f4f70d8a0167ad8f91b47e270ab2879e745d63ce599406f9bb92b38100b9e0cea42dff8f8f17a5ea64826921f73f04535b4f09b77e53376cc043d languageName: node linkType: hard -"@react-native/babel-preset@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/babel-preset@npm:0.84.0-rc.1" +"@react-native/babel-preset@npm:0.83, @react-native/babel-preset@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/babel-preset@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" @@ -3661,19 +3878,27 @@ __metadata: "@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" @@ -3682,40 +3907,44 @@ __metadata: "@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" - "@react-native/babel-plugin-codegen": "npm:0.84.0-rc.1" + "@babel/template": "npm:^7.25.0" + "@react-native/babel-plugin-codegen": "npm:0.83.1" babel-plugin-syntax-hermes-parser: "npm:0.32.0" babel-plugin-transform-flow-enums: "npm:^0.0.2" react-refresh: "npm:^0.14.0" peerDependencies: "@babel/core": "*" - checksum: 10c0/4af7342b315f59141d948e4f43efa80a1b3c348f30ab07153a56d939336e76fe30a841db178c7d35991c5e00d6525a2eb63a80ab368b55a4e29d5980aefb38a5 + checksum: 10c0/6662b4b427c7c95eae069e1395e92a2cd618926e22c515bb9f088ac1dde1c9c1ee707334658be68db4da5fd2e17a5d8735f9dbe455e5b454e73cca846e44050a languageName: node linkType: hard -"@react-native/codegen@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/codegen@npm:0.84.0-rc.1" +"@react-native/codegen@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/codegen@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/parser": "npm:^7.25.3" + glob: "npm:^7.1.1" hermes-parser: "npm:0.32.0" invariant: "npm:^2.2.4" nullthrows: "npm:^1.1.1" - tinyglobby: "npm:^0.2.15" yargs: "npm:^17.6.2" peerDependencies: "@babel/core": "*" - checksum: 10c0/6bd16c184f83c547c15b56587c124e666121384d03e59a827553d56d90c74702060823d7c44371744bb8b6849938a62d4d8be1b731bd8a997aa641288094294a + checksum: 10c0/8c9846ff210adc38fdc87dee3a1eff62d6e29781e3aea678069e73b27c50710c5ee38083cc4168c631118f0f4c98bd5343825e270b44a189845b358e86e1395b languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/community-cli-plugin@npm:0.84.0-rc.1" +"@react-native/community-cli-plugin@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/community-cli-plugin@npm:0.83.1" dependencies: - "@react-native/dev-middleware": "npm:0.84.0-rc.1" + "@react-native/dev-middleware": "npm:0.83.1" debug: "npm:^4.4.0" invariant: "npm:^2.2.4" metro: "npm:^0.83.3" @@ -3730,35 +3959,34 @@ __metadata: optional: true "@react-native/metro-config": optional: true - checksum: 10c0/ed13eca2ba4254b09883963989cc0abb8d3562eb98ebf4b442afb264b0514360e6c5d2b4f6d775a630d917777f9081efa7fa1d21cb3c6cabb519276ff76fa621 + checksum: 10c0/9c39e186769322ab74b1f777b488452b4f891fc6a3e716155bedf6dd30e3dbd5153c07f8d0cde20407885bc3d308572b595e3f2bf7e718653731089012cd91e8 languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/debugger-frontend@npm:0.84.0-rc.1" - checksum: 10c0/527cb27c871940fa8eff175de391e6db2015e3b499be4d9e638068031b83ddee507525391ed92c381406dd1a54c4949216e2b692939dee769cebabc1860d3316 +"@react-native/debugger-frontend@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/debugger-frontend@npm:0.83.1" + checksum: 10c0/83a2a7a56b7cbe47771dd84ff99478ba76a4fe50a24b5c356dbceeb20a589c35334d6d321dea7bf34a04185857112bdbbb93c5edbe3512c20ef1ba1ecb4cf8b6 languageName: node linkType: hard -"@react-native/debugger-shell@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/debugger-shell@npm:0.84.0-rc.1" +"@react-native/debugger-shell@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/debugger-shell@npm:0.83.1" dependencies: cross-spawn: "npm:^7.0.6" - debug: "npm:^4.4.0" fb-dotslash: "npm:0.5.8" - checksum: 10c0/9b80445a2865045375ff5b9ae0773eb7e7fe3670e99b43afa5ac197b3c82029b33fc87e6824d32cf07439677cefffe4bd2d851f3a306af5931dc242617df66fc + checksum: 10c0/a98b870f1741f476dade84cb770a090e30a82712caef7589b9a5ffc7b5fde18acb270950c57dc03301c2fe091bbe9edc5b2ebfe699d7e07ba8df4a7ccbf4863e languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/dev-middleware@npm:0.84.0-rc.1" +"@react-native/dev-middleware@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/dev-middleware@npm:0.83.1" dependencies: "@isaacs/ttlcache": "npm:^1.4.1" - "@react-native/debugger-frontend": "npm:0.84.0-rc.1" - "@react-native/debugger-shell": "npm:0.84.0-rc.1" + "@react-native/debugger-frontend": "npm:0.83.1" + "@react-native/debugger-shell": "npm:0.83.1" chrome-launcher: "npm:^0.15.2" chromium-edge-launcher: "npm:^0.2.0" connect: "npm:^3.6.5" @@ -3768,17 +3996,17 @@ __metadata: open: "npm:^7.0.3" serve-static: "npm:^1.16.2" ws: "npm:^7.5.10" - checksum: 10c0/35094c8040f964bd6b42773da8cf4187bdee59bead503ead425fd04ce22b89254ff350ff8879d511cff0f7f7e2e9763aafe800f40b074c40778e5918caf8180a + checksum: 10c0/b9697e8729a74daf21338e2f3b69c1a542a9023cffe7b045537e2bd66d55397544b47b6980120207bf4dac5add986bcb0aed9a41608f74df3f9210d1f5d9f604 languageName: node linkType: hard -"@react-native/eslint-config@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/eslint-config@npm:0.84.0-rc.1" +"@react-native/eslint-config@npm:0.83": + version: 0.83.1 + resolution: "@react-native/eslint-config@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" "@babel/eslint-parser": "npm:^7.25.1" - "@react-native/eslint-plugin": "npm:0.84.0-rc.1" + "@react-native/eslint-plugin": "npm:0.83.1" "@typescript-eslint/eslint-plugin": "npm:^8.36.0" "@typescript-eslint/parser": "npm:^8.36.0" eslint-config-prettier: "npm:^8.5.0" @@ -3787,58 +4015,58 @@ __metadata: eslint-plugin-jest: "npm:^29.0.1" eslint-plugin-react: "npm:^7.30.1" eslint-plugin-react-hooks: "npm:^7.0.1" - eslint-plugin-react-native: "npm:^5.0.0" + eslint-plugin-react-native: "npm:^4.0.0" peerDependencies: - eslint: ^8.0.0 || ^9.0.0 + eslint: ">=8" prettier: ">=2" - checksum: 10c0/b7379d0e8592e82e94d545e359a490e52bf4a03341ba27941607bf477f0eae6b53fd54018ad98f70c0b96a5d1b1365da8086549781e741f1a0a9a73cd36259ae + checksum: 10c0/c6df159a86abd073e4093a1b32f5c410cb698d4f4b9996256c0027acd986007985a79fc44a85ff2752bbcdea3a1131b84dcdeccc9a1b8dac8b06487e1590e9a0 languageName: node linkType: hard -"@react-native/eslint-plugin@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/eslint-plugin@npm:0.84.0-rc.1" - checksum: 10c0/16b65b3e5991ea8063ae9b2362c7f3ac6df792325c049786ce6c21ea8d7de4d0a4e15aff688da0689a00a2d80add712f240102fd31751561a99b3ff8a89b6c16 +"@react-native/eslint-plugin@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/eslint-plugin@npm:0.83.1" + checksum: 10c0/11ed1b8162d0a31ba854d41e2e9009418cf4a2a85188c542f2491316b2718808e53f788529d79f0a143d5a17d8b6f92c074303b9490ca44f546d7f344b0e925c languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/gradle-plugin@npm:0.84.0-rc.1" - checksum: 10c0/54623d7ab7e6eb17fad242e95b110bc3950be2d0b83d5bce88abad8cb71e05f7cb4534c1f0cbbe44ccef6c5943c811316e5cb6363386a58f2a08405ca06447f5 +"@react-native/gradle-plugin@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/gradle-plugin@npm:0.83.1" + checksum: 10c0/3f55ea53fbb3ac1892c2d442a6649e779290e49667d887f613dd28b7d6d2dd73b33b5dbbe03bcfa1f730bf151dd05b9770631f6c66177162483a75ebb1a85c36 languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/js-polyfills@npm:0.84.0-rc.1" - checksum: 10c0/8d0e0bba3c67cfea439847211f9d44a8b1ad96cdd5b65658eb73f031d14a52ac3a464af54e9f655f121c523b7fb59658239687eaef7d3ee1a509e62b128920d3 +"@react-native/js-polyfills@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/js-polyfills@npm:0.83.1" + checksum: 10c0/f79a6ccf0ba7206bbb0d0653c3a0da8d8bb9c064cf2614c04b69204a4b36f047bd4d00f835114f0f7f0bf37c0c9c388eea6baedbf2eeec1fbc7cdbbb76d12e7d languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/metro-babel-transformer@npm:0.84.0-rc.1" +"@react-native/metro-babel-transformer@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/metro-babel-transformer@npm:0.83.1" dependencies: "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.84.0-rc.1" + "@react-native/babel-preset": "npm:0.83.1" hermes-parser: "npm:0.32.0" nullthrows: "npm:^1.1.1" peerDependencies: "@babel/core": "*" - checksum: 10c0/9e3494eb71fffb85d75000896174414394cd8fa9cabf6ee44a70fdf6df2b1d823e90de39fd5c348e05468110910c9f12c64ca0e301d5125af50882ca0d69f3e2 + checksum: 10c0/be9c900d6c303202839cdb9009349e389b8850eda0805080428d1ed9a95113c653a653639ffb9e1bbeba047196359f3fe1c1afe9e0e0e308d13850570ef7184a languageName: node linkType: hard -"@react-native/metro-config@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/metro-config@npm:0.84.0-rc.1" +"@react-native/metro-config@npm:0.83": + version: 0.83.1 + resolution: "@react-native/metro-config@npm:0.83.1" dependencies: - "@react-native/js-polyfills": "npm:0.84.0-rc.1" - "@react-native/metro-babel-transformer": "npm:0.84.0-rc.1" + "@react-native/js-polyfills": "npm:0.83.1" + "@react-native/metro-babel-transformer": "npm:0.83.1" metro-config: "npm:^0.83.3" metro-runtime: "npm:^0.83.3" - checksum: 10c0/5e94a9410eec96f57c446a3e015ccb99a1acdef9f6226c064f0ad1d4de25f73bb9e47ef1c79f5c49696d404ac61cc03db45d46d0b1c5cf0483517e0d35053bb6 + checksum: 10c0/5aa6d30a96a04ec21c8fe6640843014a6a45659b7013b690843f42ede7b7ba340bd452bca80b5a430d3eb3d62fdcb6ab6fd83447782da1b50e1dd3c04f994d2d languageName: node linkType: hard @@ -3849,10 +4077,10 @@ __metadata: languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/normalize-colors@npm:0.84.0-rc.1" - checksum: 10c0/cfd1d7905fcdbd479b7b0b4078980bb2313a1fac0511d8d711e33683c85617598b1d5ea80a58c235009fb06480a0937ad0173601e472c9d04c59b7dd4244de5c +"@react-native/normalize-colors@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/normalize-colors@npm:0.83.1" + checksum: 10c0/e1bb0b1b6d098513dd493b1ea926a8db57e96132be75525c8d03008453a48a2f09a12d8b059ef49fcb6ae05f0decc1a9120825ea5c845a4aeedd6e4b1596d75b languageName: node linkType: hard @@ -3863,16 +4091,16 @@ __metadata: languageName: node linkType: hard -"@react-native/typescript-config@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/typescript-config@npm:0.84.0-rc.1" - checksum: 10c0/2467f7b0c90d870633ef71fa060c409f00de9a3578f129e646aca7a7a176fe5094c1b7ba87f0a1f5906f2f36b3c695bafb9057d3fc8555b25520f517ccdfcc7b +"@react-native/typescript-config@npm:0.83": + version: 0.83.1 + resolution: "@react-native/typescript-config@npm:0.83.1" + checksum: 10c0/d630758fa5e081d39a6c665068576574cfad08d7d0971a4de25a95bd9e3547ab28aa8e57543ba741569c4c9adf37587e80ac1ef2971cc1e6d2bbfd0c326edb1a languageName: node linkType: hard -"@react-native/virtualized-lists@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "@react-native/virtualized-lists@npm:0.84.0-rc.1" +"@react-native/virtualized-lists@npm:0.83.1": + version: 0.83.1 + resolution: "@react-native/virtualized-lists@npm:0.83.1" dependencies: invariant: "npm:^2.2.4" nullthrows: "npm:^1.1.1" @@ -3883,7 +4111,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/0467997af2f7e96aef9e906dbf280a40495f67b7423ec6cef9f4c2c6af029955ecf401230e93644ff0a6c0f396fe1464bc6baa2436206bfe76970d450c554ffa + checksum: 10c0/722a2939dc056fda700935026d6d2d6ac26ddc98a06370d96e3d97d254bda321e4c5ec3ccca64e97f119d9a56eb707ffb35100ae377431e69427550c68ee4709 languageName: node linkType: hard @@ -7542,14 +7770,14 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-native@npm:^5.0.0": - version: 5.0.0 - resolution: "eslint-plugin-react-native@npm:5.0.0" +"eslint-plugin-react-native@npm:^4.0.0": + version: 4.1.0 + resolution: "eslint-plugin-react-native@npm:4.1.0" dependencies: eslint-plugin-react-native-globals: "npm:^0.1.1" peerDependencies: - eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 10c0/c7c927bc743abf0cb367cc64fea5b28b28ea0c58be2990cab858a050b4855e89d90513afa44d73012c9fd670810ad0da2ac72e3e4bdfedf0ce0cbb65e901af7f + eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/9aedccde6227b78bad7c243844aca0860fca2dccd635e91e745bcd617c1e7fb889fa212917cf7b56860335a147fc7c8dc339d1976330ec4f896fe9156b35b162 languageName: node linkType: hard @@ -8012,18 +8240,6 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.5.0": - version: 6.5.0 - resolution: "fdir@npm:6.5.0" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f - languageName: node - linkType: hard - "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -8807,10 +9023,10 @@ __metadata: languageName: node linkType: hard -"hermes-compiler@npm:250829098.0.6": - version: 250829098.0.6 - resolution: "hermes-compiler@npm:250829098.0.6" - checksum: 10c0/ca565183f28fb6ee079ba1232ab005be8a2af49ac0db45e912b23a90cc44e8202a1f808a059d6c1601bcc9b976caac356639dc59d7eb5897cb2ecb1ef3661a23 +"hermes-compiler@npm:0.14.0": + version: 0.14.0 + resolution: "hermes-compiler@npm:0.14.0" + checksum: 10c0/672036528448e8af5895c9d8c5dfd6012b76e92a5a187caf3143925e358bfc81b993a0cd50bbae7518c01fe6dc4fdc882e25cd623219a4d33f56d5f7abe6918b languageName: node linkType: hard @@ -13012,13 +13228,6 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 - languageName: node - linkType: hard - "pidtree@npm:0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -13537,10 +13746,10 @@ __metadata: "@react-native-community/cli": "npm:20.1.0" "@react-native-community/cli-platform-android": "npm:20.1.0" "@react-native-community/cli-platform-ios": "npm:20.1.0" - "@react-native/babel-preset": "npm:0.84.0-rc.1" - "@react-native/eslint-config": "npm:0.84.0-rc.1" - "@react-native/metro-config": "npm:0.84.0-rc.1" - "@react-native/typescript-config": "npm:0.84.0-rc.1" + "@react-native/babel-preset": "npm:0.83" + "@react-native/eslint-config": "npm:0.83" + "@react-native/metro-config": "npm:0.83" + "@react-native/typescript-config": "npm:0.83" "@react-navigation/native": "npm:^5.8.0" "@react-navigation/stack": "npm:^5.10.0" "@types/jest": "npm:^29.5.13" @@ -13564,7 +13773,7 @@ __metadata: react: "npm:19.2.3" react-dom: "npm:^19.1.0" react-freeze: "npm:^1.0.0" - react-native: "npm:0.84.0-rc.1" + react-native: "npm:0.83" react-native-builder-bob: "npm:^0.23.2" react-native-gesture-handler: "npm:^2.28.0" react-native-reanimated: "npm:^3.19.0" @@ -13626,18 +13835,18 @@ __metadata: languageName: node linkType: hard -"react-native@npm:0.84.0-rc.1": - version: 0.84.0-rc.1 - resolution: "react-native@npm:0.84.0-rc.1" +"react-native@npm:0.83": + version: 0.83.1 + resolution: "react-native@npm:0.83.1" dependencies: "@jest/create-cache-key-function": "npm:^29.7.0" - "@react-native/assets-registry": "npm:0.84.0-rc.1" - "@react-native/codegen": "npm:0.84.0-rc.1" - "@react-native/community-cli-plugin": "npm:0.84.0-rc.1" - "@react-native/gradle-plugin": "npm:0.84.0-rc.1" - "@react-native/js-polyfills": "npm:0.84.0-rc.1" - "@react-native/normalize-colors": "npm:0.84.0-rc.1" - "@react-native/virtualized-lists": "npm:0.84.0-rc.1" + "@react-native/assets-registry": "npm:0.83.1" + "@react-native/codegen": "npm:0.83.1" + "@react-native/community-cli-plugin": "npm:0.83.1" + "@react-native/gradle-plugin": "npm:0.83.1" + "@react-native/js-polyfills": "npm:0.83.1" + "@react-native/normalize-colors": "npm:0.83.1" + "@react-native/virtualized-lists": "npm:0.83.1" abort-controller: "npm:^3.0.0" anser: "npm:^1.4.9" ansi-regex: "npm:^5.0.0" @@ -13646,7 +13855,8 @@ __metadata: base64-js: "npm:^1.5.1" commander: "npm:^12.0.0" flow-enums-runtime: "npm:^0.0.6" - hermes-compiler: "npm:250829098.0.6" + glob: "npm:^7.1.1" + hermes-compiler: "npm:0.14.0" invariant: "npm:^2.2.4" jest-environment-node: "npm:^29.7.0" memoize-one: "npm:^5.0.0" @@ -13661,19 +13871,18 @@ __metadata: scheduler: "npm:0.27.0" semver: "npm:^7.1.3" stacktrace-parser: "npm:^0.1.10" - tinyglobby: "npm:^0.2.15" whatwg-fetch: "npm:^3.0.0" ws: "npm:^7.5.10" yargs: "npm:^17.6.2" peerDependencies: "@types/react": ^19.1.1 - react: ^19.2.3 + react: ^19.2.0 peerDependenciesMeta: "@types/react": optional: true bin: react-native: cli.js - checksum: 10c0/d35814637f8fb9059f57fb75f92d16c9e350066c428dc3da26abf00e6322a1c00440659b570c392715fb6e74be683a5346c784ae634d11e7410822cfd00aa49a + checksum: 10c0/3a2202ea6e69c1f612b71d31a664eeda2b79811e560aab280c2fa5738d5e285c52d3b6d1820bb1652dd0d78f5ac0f7f183535b5585e29f8cc8298723aa834999 languageName: node linkType: hard @@ -15397,16 +15606,6 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" - dependencies: - fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 - languageName: node - linkType: hard - "titleize@npm:^3.0.0": version: 3.0.0 resolution: "titleize@npm:3.0.0"