Commit Graph
32601 Commits
Author SHA1 Message Date
Joe VilchesandFacebook GitHub Bot 4fef34e1fd Don't call cornerRadiiForBoxShadow if we don't have to (#45679)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45679

`cornerRadiiForBoxShadow(cornerRadii, 0)` no-ops since there is no spread, and it returns the same type as it takes as an input, so there is no point for this complexity

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D60203620

fbshipit-source-id: c1f86ce6e8fef07365ab57caa3e906f1601a0c2b
2024-07-31 10:13:20 -07:00
Joe VilchesandFacebook GitHub Bot e6ef47aff8 Simplify some clipping logic for inset shadows (#45678)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45678

This doesn't need to be an explicit path, its just tracing out a rect. CG has a method for that

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D60202842

fbshipit-source-id: 61faa21e57b1341c3b96961f12503eb4a7f3020b
2024-07-31 10:13:20 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 71b5f04986 HeadlessJsTaskSupportModule.java->.kt (#45816)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45816

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico, mdvacca

Differential Revision: D60446972

fbshipit-source-id: 318f091b0ee697ac241d73e309bd13ae2ffdbe19
2024-07-31 10:00:22 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 395f46c847 Convert ExceptionManagerModule to Kotlin (#45812)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45812

# Changelog:
[Internal] -

As in the title.

Reviewed By: mdvacca

Differential Revision: D60446630

fbshipit-source-id: 9d27e13735c7d2ae6f1d0e3259ef962513665050
2024-07-31 10:00:22 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 3735cb3d4f modules/core/TimingModule to Kotlin (#45815)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45815

# Changelog:
[Internal] -

As in the title.

Reviewed By: alanleedev

Differential Revision: D60446859

fbshipit-source-id: 0ca52c59e2bbaa18c751f4459afac811e9c89703
2024-07-31 08:38:18 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 6742af4a9d DeviceEventManagerModule.java->.kt (#45811)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45811

# Changelog:
[Internal] -

Converts both ReactChoreographer.java and ChoreographerCompat.java to Kotlin.

Reviewed By: alanleedev

Differential Revision: D60446332

fbshipit-source-id: b762dfcd53bb781483c8a1df19faa0c6a0065f11
2024-07-31 08:38:18 -07:00
Samuel SuslaandFacebook GitHub Bot 53d2f8e8d6 do a bounds check in TouchTargetHelper (#45824)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45824

changelog: [internal]

add a bounds check to prevent crash in TouchTargetHelper.

as it turns out, firstReactAncestor may be bigger than the size of pathAccumulator.

Reviewed By: christophpurrer

Differential Revision: D60449741

fbshipit-source-id: 4e981d06877e26d278c4567beebebd82262f60d0
2024-07-31 07:46:22 -07:00
Rubén NorteandFacebook GitHub Bot c3dbebff5a Force accesses to ReactFabric to always go through proxy (#45822)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45822

Changelog: [internal]

## Context

`react-native/Libraries/Renderer/shims/ReactFabric` is the default module to load the RN renderer and loading it has side-effects (among other things it sets `global.RN$stopSurface`.

We introduced a proxy module (`RendererProxy`) so we could use dependency injection to overwrite the renderer module with a custom implementation (the original goal was to be able to use a renderer version that didn't pull paper and only used Fabric).

Unfortunately, using both the proxy and the module directly in some places leads to race conditions setting `global.RN$stopSurface`, which causes some screens to be rendered with one renderer and unmounted/disposed with a different one (because we accessed `ReactFabric` later and set `RN$stopSurface` from a different renderer implementation). When this happens, the unmount request in the other renderer is a no-op because no surface was renderer in it.  This leads to surfaces not being disposed.

## Changes

This modifies the proxy to add additional functions and modifies all other modules in the package to make sure that all the accesses to the renderer go through the proxy.

Reviewed By: sammy-SC

Differential Revision: D60452544

fbshipit-source-id: 1b17a95ed9b1c529718f22983dde1f00f1b2adae
2024-07-31 07:02:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot f8f85be8b5 Migrate react/modules/fresco to Kotlin (#45750)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45750

# Changelog:
[Internal] -

This migrates the whole module of `react/modules/fresco` from Java to Kotlin.

Reviewed By: defHLT

Differential Revision: D60334554

fbshipit-source-id: b66695215b82495253aa2ac78b33c64c703347af
2024-07-31 06:52:50 -07:00
omer-ayhanandFacebook GitHub Bot 575ab78625 chore: ☂️ Migrate GenerateCodegenSchemaTaskTest.kt to AssertJ (#45807)
Summary:
Issue: https://github.com/facebook/react-native/issues/45596

## Changelog:
[INTERNAL] [CHANGED] - Migrate `GenerateCodegenSchemaTaskTest.kt` to AssertJ testing library

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests

Pull Request resolved: https://github.com/facebook/react-native/pull/45807

Test Plan: Run `./gradlew -p packages/gradle-plugin test`

Reviewed By: andrewdacenko

Differential Revision: D60509334

Pulled By: cortinico

fbshipit-source-id: 0702958f0c9d03994b0c9a6a1c743f5db84e5703
2024-07-31 04:53:18 -07:00
omer-ayhanandFacebook GitHub Bot 9cd3c57840 chore: ☂️ Migrate PreparePrefabHeadersTaskTest.kt to AssertJ (#45808)
Summary:
Issue: https://github.com/facebook/react-native/issues/45596

## Changelog:
[INTERNAL] [CHANGED] - Migrate `PreparePrefabHeadersTaskTest.kt` to AssertJ testing library

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests

Pull Request resolved: https://github.com/facebook/react-native/pull/45808

Test Plan: Run `./gradlew -p packages/gradle-plugin test`

Reviewed By: andrewdacenko

Differential Revision: D60509282

Pulled By: cortinico

fbshipit-source-id: 1b7d9f0c24bb0e8e573f685582c532a38e6b3b13
2024-07-31 04:45:02 -07:00
Nicola CortiandFacebook GitHub Bot 6484070ad7 Convert com.facebook.react.views.image to Kotlin (#45645)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45645

This converts the 3 remaining files inside `com.facebook.react.views.image` to Kotlin

Changelog:
[Internal] [Changed] - Convert com.facebook.react.views.image to Kotlin

Reviewed By: javache

Differential Revision: D60170084

fbshipit-source-id: 72450d37969b84e0d31d4902c0ef0d520419f7a9
2024-07-31 04:11:59 -07:00
Deepanshu.shuklaandFacebook GitHub Bot d88dd14507 fix: onChangeText should be called only once if changed via js in a multiline textinput (#45401)
Summary:
Fixes [44566](https://github.com/facebook/react-native/issues/44566)

Issue was onChangeText was called 5-6 times if maxLength was set in a multiline component and TextInput Value was changed via state update.
`if (_maxLength) {
    NSInteger allowedLength = MAX(
        _maxLength.integerValue - (NSInteger)backedTextInputView.attributedText.string.length + (NSInteger)range.length,
        0);

    if (text.length > allowedLength) {
      // If we typed/pasted more than one character, limit the text inputted.
      if (text.length > 1) {
        if (allowedLength > 0) {
          // make sure unicode characters that are longer than 16 bits (such as emojis) are not cut off
          NSRange cutOffCharacterRange = [text rangeOfComposedCharacterSequenceAtIndex:allowedLength - 1];
          if (cutOffCharacterRange.location + cutOffCharacterRange.length > allowedLength) {
            // the character at the length limit takes more than 16bits, truncation should end at the character before
            allowedLength = cutOffCharacterRange.location;
          }
        }
        // Truncate the input string so the result is exactly maxLength
        NSString *limitedString = [text substringToIndex:allowedLength];
        NSMutableAttributedString *newAttributedText = [backedTextInputView.attributedText mutableCopy];
        // Apply text attributes if original input view doesn't have text.
        if (backedTextInputView.attributedText.length == 0) {
          newAttributedText = [[NSMutableAttributedString alloc]
              initWithString:[self.textAttributes applyTextAttributesToText:limitedString]
                  attributes:self.textAttributes.effectiveTextAttributes];
        } else {
          [newAttributedText replaceCharactersInRange:range withString:limitedString];
        }
        backedTextInputView.attributedText = newAttributedText;
        _predictedText = newAttributedText.string;

        // Collapse selection at end of insert to match normal paste behavior.
        UITextPosition *insertEnd = [backedTextInputView positionFromPosition:backedTextInputView.beginningOfDocument
                                                                       offset:(range.location + allowedLength)];
        [backedTextInputView setSelectedTextRange:[backedTextInputView textRangeFromPosition:insertEnd
                                                                                  toPosition:insertEnd]
                                   notifyDelegate:YES];

        [self textInputDidChange];
      }

      return nil; // Rejecting the change.
    }}`

This is the original code snippet.
It was happening because of wrong check of maxLength with text length `if (text.length > allowedLength)` this  should be
`(text.length > _maxLength.integerValue)`  and `if (allowedLength <= 0)`  we should not change the string and fire `textInputDidChange`

## Changelog:
[IOS] [FIXED] : Fixing maxLength check which was firing onChange multiple times

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests

Pull Request resolved: https://github.com/facebook/react-native/pull/45401

Test Plan:
Tested in Ios
Ran yarn test
<img width="1661" alt="Screenshot 2024-07-12 at 1 00 28 PM" src="https://github.com/user-attachments/assets/fbad94a8-9989-4252-ad7d-e507d4eafd9e">

Reviewed By: sammy-SC

Differential Revision: D59911745

Pulled By: cipolleschi

fbshipit-source-id: 67410ec50d6a2415e568e1685699bfed02fd0a27
2024-07-31 04:06:14 -07:00
Riccardo CipolleschiandFacebook GitHub Bot f8c13f601d Declare onUserDrivenAnimationEnded on Old Arch (#45838)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45838

Some Internal tests in the old architecture were failing after landing [#45414](https://github.com/facebook/react-native/pull/45414) because the `RCTNativeAnimatedModule` in the old architecture was not declaring the event.

This change fixes it by declaring the event that is never fired in the Old Architecture as it is not needed.

## Changelog
[iOS][Added] - Declare the `onUserDrivenAnimationEnded` in the old Architecture

Reviewed By: sammy-SC

Differential Revision: D60507812

fbshipit-source-id: eb12563c6551204bcf98f3a2001e1efcf84ef05e
2024-07-31 03:47:33 -07:00
Arushi KesarwaniandFacebook GitHub Bot a5b84b9258 Migrate enableViewRecycling to ReactNativeFeatureFlags (#45654)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45654

Migrate enableViewRecycling to ReactNativeFeatureFlags

changelog: [internal] internal

Reviewed By: mdvacca

Differential Revision: D60153238

fbshipit-source-id: 14980174cb21833e35e107dc4cf52867cd0a5f8e
2024-07-31 00:14:55 -07:00
Nick GerlemanandFacebook GitHub Bot 59da1ab160 BackgroundStyleApplicator and boxShadow in horizontal scroll views (#45809)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45809

Port D60409795 from vertical scroll views to horizontal scroll views.

Changelog: [Internal]

Reviewed By: alanleedev

Differential Revision: D60410682

fbshipit-source-id: b26e1ce2614605d56671d3cbe8e1e385174d7d40
2024-07-30 15:46:28 -07:00
Nick GerlemanandFacebook GitHub Bot d842fc6293 BackgroundStyleApplicator and boxShadow in vertical scroll views (#45803)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45803

This makes the same rough changes as I made to images, to apply background styles in view manager layer, using BackgroundStyleApplicator, including new boxShadow style property.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D60409795

fbshipit-source-id: 304cb99855de72fe36af33cdda4a150e21b629b9
2024-07-30 15:46:28 -07:00
Nick GerlemanandFacebook GitHub Bot be3936762f Workaround gap between border and outer box shadow (#45797)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45797

Android borders are drawn using a path generated by `addRoundRect()` inset by half the border width, using the full border width as stoke width. The edges of the ellipsis drawn for rounded borders do not line up with the math used to trace the bounding border-box path.

In a relatively similar hack to elsewhere in border drawing code for gap between content and the border, we inset the clipOut path, as if its bounding rectangle were about half a subpixel smaller, to mininally overlap the border on these edges. We then place the outer box shadows under the border in z-ordering, so that the minimal extra insetting is only visible with transparent backgrounds.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D60389685

fbshipit-source-id: 8c449cc3eee1a3e4100f06fd87f27ae341e02eac
2024-07-30 15:46:28 -07:00
Nick GerlemanandFacebook GitHub Bot 32d040380f Add Image Box Shadow Examples (#45781)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45781

This adds some RNTester examples for `boxShadow`, that render correctly when `ReactNativeFeatureFlags.enableBackgroundStyleApplicator()` is set!

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D60367850

fbshipit-source-id: 3c9ae2bf906ae923c713b5f36cd2000f612fe3dc
2024-07-30 15:46:28 -07:00
Riccardo CipolleschiandFacebook GitHub Bot 23c5c42de0 Back out "React to onUserDrivenAnimationEnded event in JS"
Summary:
Backout of the [commit](https://github.com/facebook/react-native/commit/afa887b6225352d35ed99eb5271bef8a3fe1c7d6) to react to the new event as it is breaking internal tests.

## Changelog:
[General][Changed] - Revert React to onUserDrivenAnimationEnded event in JS

Reviewed By: mdvacca, arushikesarwani94

Differential Revision: D60467143

fbshipit-source-id: c70bb057adf49b5f26df4201f8b987bf6b876f46
2024-07-30 13:06:15 -07:00
Riccardo CipolleschiandFacebook GitHub Bot 488faaaddb Back out "Remove _shouldEmitEvent guardrails"
Summary:
Backout of this [commit]() as the previous one was making some E2E fail and need to investigate further.

## Changelog:
[Internal] - Add back `_shouldEmitEvent` guardrails

Reviewed By: mdvacca, arushikesarwani94

Differential Revision: D60467145

fbshipit-source-id: a703022aa74ca0ed0fed05b59da68918eb2001e1
2024-07-30 13:06:15 -07:00
Rubén NorteandFacebook GitHub Bot 48421df60a Refactor setup modules in src/private/setup as side-effect free modules (#45795)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45795

Changelog: [internal]

Our modules to set up the runtime have side-effects and depend on import order to work correctly. This is error-prone and complicates the migration to ESM in some cases, so this refactors all of them in `src/private/setup` to export a function instead.

Reviewed By: rshest

Differential Revision: D60382506

fbshipit-source-id: 9ac30b29659b74605d59eb97562d6cbf01f48e47
2024-07-30 10:08:22 -07:00
Rubén NorteandFacebook GitHub Bot b74c4f6643 Move setup files for PerformanceObserver to react-native/src/private/setup (#45793)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45793

Changelog: [internal]

These files are safe to move because they haven't been enabled in OSS and people shouldn't be importing them directly.

Reviewed By: rshest

Differential Revision: D60381603

fbshipit-source-id: bba62b56c42817b15bb28bce22d6c2cf668dc797
2024-07-30 10:08:22 -07:00
Rubén NorteandFacebook GitHub Bot 8a4ddab2c2 Move MutationObserver to react-native/src/private (#45791)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45791

Changelog: [internal]

These files are safe to move because they haven't been enabled in OSS and people shouldn't be importing them directly.

Reviewed By: rshest

Differential Revision: D60377869

fbshipit-source-id: 02bc0335385859c0589a494de9b59b0c2ebc06f6
2024-07-30 10:08:22 -07:00
Rubén NorteandFacebook GitHub Bot e84d313209 Move IntersectionObserver to react-native/src/private (#45792)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45792

Changelog: [internal]

These files are safe to move because they haven't been enabled in OSS and people shouldn't be importing them directly.

Reviewed By: rshest

Differential Revision: D60377868

fbshipit-source-id: db0ec2839af91620fe8b6d3927ad0b809d1bdf23
2024-07-30 10:08:22 -07:00
Rubén NorteandFacebook GitHub Bot 3917b71168 Restructure files in src/private/core (#45784)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45784

Changelog: [internal]

I originally created `src/private/core` as a directory to contain set up files for RN, but the name wasn't implying that and ended up holding more stuff.

This moves everything out of that directory and renames it as `src/private/setup` so it has a clearer scope.

Reviewed By: NickGerleman

Differential Revision: D60290620

fbshipit-source-id: b5dc27fbaa64df9a8a09a84f02023896f6fd2884
2024-07-30 10:08:22 -07:00
Riccardo CipolleschiandFacebook GitHub Bot dae9c5c0f7 Remove _shouldEmitEvent guardrails (#45476)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45476

Land this after [#45457](https://github.com/facebook/react-native/pull/45457) lands.

After [#45457](https://github.com/facebook/react-native/pull/45457) there is no need to check for listeners to the native event as we will have those listeners for sure.

## Changelog
[Internal] - Remove `_shouldEmitEvent` guardrails as we always have listeners

Reviewed By: sammy-SC

Differential Revision: D59811656

fbshipit-source-id: 91b572ea35562638ad64082b4b0d9af766ddc0bc
2024-07-30 08:25:22 -07:00
Riccardo CipolleschiandFacebook GitHub Bot afa887b622 React to onUserDrivenAnimationEnded event in JS (#45414)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45414

This change completes the fix for broken pressable when animations were applied to components with native driven animations.

When creating the AnimatedProps, if they are natively drive animation, we look for the AnimatedValue involved and we register a listener. This is needed to make sure that the NativeModule will send te updated value upon calling the `update` function.

Then, when observing the props lifecycle, it register a listener to the new `OnUserAnimationEnded` event, fired by the NativeAnimation module.

When the `OnUserAnimationEnded` event is fired, the AnimatedProps will update the props that depends on the user driven animation.

## Changelog
[General][Fixed] - reallign the shadow tree and the native tree when the user finishes interacting with the app.

Reviewed By: sammy-SC

Differential Revision: D59681428

fbshipit-source-id: c6690c41ea6d5517b7f8413e9dba1e12861a2400
2024-07-30 08:25:22 -07:00
Thibault MalbrancheandFacebook GitHub Bot 076c28ced9 chore: changelog for 0.74.4 (#45818)
Summary:
Adds changelog for the 0.74.4 patch.

bypass-github-export-checks

## Changelog:

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[Internal] [Changed] - Add 0.74.4 changelog

Pull Request resolved: https://github.com/facebook/react-native/pull/45818

Reviewed By: cortinico

Differential Revision: D60448807

Pulled By: cipolleschi

fbshipit-source-id: 9737523dccf767091a6f1c1e076f8a192d0e5136
2024-07-30 07:46:00 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 7903dba7ac Kotlinify FrameBasedAnimationDriver (#45764)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45764

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60348765

fbshipit-source-id: 1507d802044eb59c7d224ee313ae98c96468f0cd
2024-07-30 06:17:30 -07:00
Andrew DatsenkoandFacebook GitHub Bot df7e0d0fa5 //xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager:interfacesAndroid (#45740)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45740

Changelog: [Internal]

Reviewed By: tdn120

Differential Revision: D58743877

fbshipit-source-id: 57c338728d360556221a761435009cbc2f24e5d8
2024-07-30 05:45:47 -07:00
Andrew DatsenkoandFacebook GitHub Bot 995d4b4c36 xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/SimpleSpringInterpolator.java (#45739)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45739

Changelog: [Internal]

Reviewed By: tdn120

Differential Revision: D60233508

fbshipit-source-id: fcf666cb5d2a935c85b0b4507739d002b58f8141
2024-07-30 05:40:59 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 4d647be848 Kotlinify modules/core interfaces (#45787)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45787

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60377675

fbshipit-source-id: 80670c6a996ea3bbc4adce9733be0e0f81223514
2024-07-30 05:29:58 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 3c6ea7e7ce Kotlinify EventAnimationDriver (#45766)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45766

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60348157

fbshipit-source-id: 02a7053025ede3662473c5fa2cfadd637e2413b2
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 163db1dab1 Kotlinify InterpolationAnimatedNode (#45759)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45759

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60348112

fbshipit-source-id: dad6089ba2deeb99c293eecbd663b17258f0a1f0
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot c1e0e3b09d Migrate SpringAnimation to Kotlin (#45760)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45760

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60347906

fbshipit-source-id: c4cc9303aee823b2105cb871d7681a101fcdef0a
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 2e3fa241e3 TransformAnimatedNode Java->Kotlin (#45765)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45765

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60347833

fbshipit-source-id: 81a98b1e90fe6408f540741b96a15072c329f793
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot d61834c924 Kotlinify SubtractionAnimatedNode (#45763)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45763

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60347765

fbshipit-source-id: 3cf367b363f6831f0e7506b4c81c7c4ae9ba5ad6
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot ef9149b4fc ve[RN][Android] Convert StyleAnimatedNode.java->.kt (#45761)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45761

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60342089

fbshipit-source-id: b780506c925e62d0b861a0c5d50794f617ab51f9
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot e51658abef Migrate DivisionAnimatedNode, Java->Kotlin (#45762)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45762

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60341635

fbshipit-source-id: 2d897ee0727ba7608eced9c3b22bac852c22254f
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 675a2a1d76 PropsAnimatedNode.java->.kt (#45757)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45757

# Changelog:
[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60341400

fbshipit-source-id: 4c9e530cfce025815dd35a750a4f41960091472e
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 23472279ca Migrate MultiplicationAnimatedNode to Kotlin (#45756)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45756

# Changelog:
[Internal] -
As in the title.

Reviewed By: cortinico

Differential Revision: D60340884

fbshipit-source-id: df1e797d20abe87569288715923df3105f14075b
2024-07-30 05:22:16 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot c707027c21 ColorAnimatedNode convert Java->Kotlin (#45752)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45752

# Changelog:

[Internal] -

As in the title.

Reviewed By: cortinico

Differential Revision: D60336724

fbshipit-source-id: 57c25014f1e00ccc340051ca64ba15900478082d
2024-07-30 05:22:16 -07:00
Riccardo CipolleschiandFacebook GitHub Bot bd51fcd58e Add changelog for 0.75-RC6 (#45802)
Summary:
Changelog PR for 0.75.0-RC.6

## Changelog:
[Internal] - Changelog

Pull Request resolved: https://github.com/facebook/react-native/pull/45802

Test Plan: N/A

Reviewed By: blakef

Differential Revision: D60409741

Pulled By: cipolleschi

fbshipit-source-id: 3f95c9cfcc6ba80c9287f3a72effcfe332d9f68d
2024-07-30 02:38:14 -07:00
Nick GerlemanandFacebook GitHub Bot 1c1c8335db Enable box shadows for Image (#45693)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45693

This wires box shadow application for `ReactImageViewManager` to `BackgroundStyleApplicator` for setting shadows. This same logic will get copy-pasted to other view managers later up the stack (including Vito images, ScrollViews, etc, then eventually View), until we are able to consolidate to BaseViewManager.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D60266016

fbshipit-source-id: eaa842f539ee1654ab719c7d341b4b748db7a15c
2024-07-29 20:02:55 -07:00
Nick GerlemanandFacebook GitHub Bot 496e77b85c Fix crash from boxShadow conditional canvas.save() (#45780)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45780

D59300215 noticed that the drawable was leaking a clipping rect for the rest of the operations, and added a `save/restore` pair, but the save happens conditionally, so we can restore more often than we save, if we hit a fast path of not needing to invalidate the shadow RenderNode when drawing. This leads to the following unhandled exception:

```
java.lang.IllegalStateException: Underflow in restore - more restores than saves
    at android.graphics.Canvas.restore(Canvas.java:647)
    at com.facebook.react.uimanager.drawable.OutsetBoxShadowDrawable.draw(OutsetBoxShadowDrawable.kt:110)
    at android.graphics.drawable.LayerDrawable.draw(LayerDrawable.java:1019)
```

This change moves saving canvas context to before setting state and drawing onto the canvas, instead of the area manipulating the RenderNode.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D60375357

fbshipit-source-id: 773c733fce11ce89ab6741589eea19b6f060f9a3
2024-07-29 16:10:37 -07:00
Nick GerlemanandFacebook GitHub Bot cf9bad0aae Revert D60291091: Invert podspec to allowlist platform files
Differential Revision:
D60291091

Original commit changeset: a0f7e3181ec5

Original Phabricator Diff: D60291091

fbshipit-source-id: 79c9a0510cddc06af499ab8dcdb8512aa718a07c
2024-07-29 15:54:47 -07:00
Nick GerlemanandFacebook GitHub Bot 76e8245846 Use BackgroundStyleApplicator for Image (#45692)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45692

This moves to using `BackgroundStyleApplicator` instead of `ReactViewBackgroundManager`, or Fresco based drawing, for setting background/border style props when the feature gates are right.

This will be ported to Vito (and... all the other built-in views) later up the stack.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D60265326

fbshipit-source-id: d9dea8d35eeb09a10d012c3ab93957dbf2ebfdd7
2024-07-29 15:12:28 -07:00
Nick GerlemanandFacebook GitHub Bot c9145cd6fe Add "enableBackgroundStyleApplicator" feature flag (#45689)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45689

Going to use this to gate usage of the applicator, for each of the components, including `<View>`, which

This also conveniently sidesteps some unsavory reflection on View member happening that we can't clean up yet.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D60265327

fbshipit-source-id: fabac3ac8479ff359ae6d798407047287dc712f9
2024-07-29 15:12:28 -07:00
Nick GerlemanandFacebook GitHub Bot 1a78477ce5 Add CompositeBackgroundDrawable and BackgroundStyleApplicator (#45688)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45688

Box shadows are handled as part of different drawables. We have other cases where we want to show multiple drawables at once, such as for ripple feedback, or more commonly, for app-wide TextInput styles (which adds padding).

With more multi-background scenarios in the future, and CSSBackgroundDrawable already way overloaded, the arch here I want to go towards is less drawables, as hidden implementation details, with single responsibilities, more often switched out. Once path logic is extracted, this would also allow for better fast-paths, like not needing to create a (heavy) CSSBackgroundDrawable, for simple views with a color background.

`CompositeBackgroundDrawable` is then a more structured LayerDrawable, which also lets us mutate or retrieve information from specific layers, and enforces the different types of layers are correctly z-ordered.

`BackgroundStyleApplicator` is the public API for manipulating these styles, inspired by the existing `ReactViewBackgroundManager`. There are some important design differences.

1. The only per-view state is the publicly accessible background drawable. This means the applicator can be used on arbitrary views, and eventually used in BaseViewManager for all views (once all the QEs settle)
2. We have reliable accessors for every setter, which seem to be what folks use externally for animation
3. We work consistently in CSS device independent pixels (for the most part...)
4. More structure/safety in how we refer to edges vs uniform
5. Overflow state is not kept on the applicator, so views can set/keep their own defaults

Overflow clipping must still be implemented per-view, during drawing unfortunately.

Changelog:
[Android][Added] - Add BackgroundStyleApplicator for managing view backgrounds

Reviewed By: joevilches

Differential Revision: D60252279

fbshipit-source-id: 4c6da3e128d4da94f35d50c30c7c412cb513cc12
2024-07-29 15:12:28 -07:00