From dda339754579589f7f5207ffde0cabf92da697ab Mon Sep 17 00:00:00 2001 From: Tim Yung Date: Wed, 4 Sep 2024 02:54:57 -0700 Subject: [PATCH] Animated: Make `NativeAnimatedHelper` Private (#46311) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/46311 A straightforward move of `NativeAnimatedHelper` into the private directory, so that it does not impact our Public API. Changelog: [Internal] Reviewed By: javache Differential Revision: D62142349 fbshipit-source-id: c93979e26e290d13e2a19fbe40d8f460ebea15fd --- .../Libraries/Animated/AnimatedEvent.js | 2 +- .../Animated/animations/Animation.js | 2 +- .../Animated/animations/DecayAnimation.js | 2 +- .../Animated/animations/SpringAnimation.js | 2 +- .../Animated/animations/TimingAnimation.js | 2 +- .../Libraries/Animated/nodes/AnimatedColor.js | 2 +- .../Animated/nodes/AnimatedInterpolation.js | 2 +- .../Libraries/Animated/nodes/AnimatedNode.js | 2 +- .../Libraries/Animated/nodes/AnimatedProps.js | 2 +- .../Animated/nodes/AnimatedTracking.js | 2 +- .../Animated/nodes/AnimatedTransform.js | 2 +- .../Libraries/Animated/nodes/AnimatedValue.js | 2 +- .../Animated/nodes/AnimatedWithChildren.js | 2 +- .../Libraries/Animated/useAnimatedProps.js | 2 +- .../__snapshots__/public-api-test.js.snap | 62 ------------------- .../private/animated}/NativeAnimatedHelper.js | 23 ++++--- .../__tests__/AnimatedNative-test.js | 17 ++--- 17 files changed, 37 insertions(+), 93 deletions(-) rename packages/react-native/{Libraries/Animated => src/private/animated}/NativeAnimatedHelper.js (94%) rename packages/react-native/{Libraries/Animated => src/private/animated}/__tests__/AnimatedNative-test.js (98%) diff --git a/packages/react-native/Libraries/Animated/AnimatedEvent.js b/packages/react-native/Libraries/Animated/AnimatedEvent.js index 7279c2af4de..39b25807b9b 100644 --- a/packages/react-native/Libraries/Animated/AnimatedEvent.js +++ b/packages/react-native/Libraries/Animated/AnimatedEvent.js @@ -13,7 +13,7 @@ import type {PlatformConfig} from './AnimatedPlatformConfig'; import {findNodeHandle} from '../ReactNative/RendererProxy'; -import NativeAnimatedHelper from './NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper'; import AnimatedValue from './nodes/AnimatedValue'; import AnimatedValueXY from './nodes/AnimatedValueXY'; import invariant from 'invariant'; diff --git a/packages/react-native/Libraries/Animated/animations/Animation.js b/packages/react-native/Libraries/Animated/animations/Animation.js index 357af8c30fb..8152fa30bcc 100644 --- a/packages/react-native/Libraries/Animated/animations/Animation.js +++ b/packages/react-native/Libraries/Animated/animations/Animation.js @@ -15,7 +15,7 @@ import type AnimatedNode from '../nodes/AnimatedNode'; import type AnimatedValue from '../nodes/AnimatedValue'; import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedProps from '../nodes/AnimatedProps'; export type EndResult = {finished: boolean, value?: number, ...}; diff --git a/packages/react-native/Libraries/Animated/animations/DecayAnimation.js b/packages/react-native/Libraries/Animated/animations/DecayAnimation.js index cc6a37bfaa3..915d913b6d8 100644 --- a/packages/react-native/Libraries/Animated/animations/DecayAnimation.js +++ b/packages/react-native/Libraries/Animated/animations/DecayAnimation.js @@ -14,7 +14,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; import type AnimatedValue from '../nodes/AnimatedValue'; import type {AnimationConfig, EndCallback} from './Animation'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import Animation from './Animation'; export type DecayAnimationConfig = { diff --git a/packages/react-native/Libraries/Animated/animations/SpringAnimation.js b/packages/react-native/Libraries/Animated/animations/SpringAnimation.js index 49855295b47..d5641ad95a2 100644 --- a/packages/react-native/Libraries/Animated/animations/SpringAnimation.js +++ b/packages/react-native/Libraries/Animated/animations/SpringAnimation.js @@ -16,7 +16,7 @@ import type AnimatedValue from '../nodes/AnimatedValue'; import type AnimatedValueXY from '../nodes/AnimatedValueXY'; import type {AnimationConfig, EndCallback} from './Animation'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedColor from '../nodes/AnimatedColor'; import * as SpringConfig from '../SpringConfig'; import Animation from './Animation'; diff --git a/packages/react-native/Libraries/Animated/animations/TimingAnimation.js b/packages/react-native/Libraries/Animated/animations/TimingAnimation.js index cbcc81629c4..c4436f25ffc 100644 --- a/packages/react-native/Libraries/Animated/animations/TimingAnimation.js +++ b/packages/react-native/Libraries/Animated/animations/TimingAnimation.js @@ -17,7 +17,7 @@ import type AnimatedValue from '../nodes/AnimatedValue'; import type AnimatedValueXY from '../nodes/AnimatedValueXY'; import type {AnimationConfig, EndCallback} from './Animation'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedColor from '../nodes/AnimatedColor'; import Animation from './Animation'; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedColor.js b/packages/react-native/Libraries/Animated/nodes/AnimatedColor.js index ebf986093b1..4485df1f3fd 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedColor.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedColor.js @@ -17,7 +17,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; import normalizeColor from '../../StyleSheet/normalizeColor'; import {processColorObject} from '../../StyleSheet/PlatformColorValueTypes'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedValue, {flushValue} from './AnimatedValue'; import AnimatedWithChildren from './AnimatedWithChildren'; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js b/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js index 34344ece769..7d191938ab0 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js @@ -19,7 +19,7 @@ import {validateInterpolation} from '../../../src/private/animated/NativeAnimate import normalizeColor from '../../StyleSheet/normalizeColor'; import processColor from '../../StyleSheet/processColor'; import Easing from '../Easing'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedWithChildren from './AnimatedWithChildren'; import invariant from 'invariant'; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedNode.js b/packages/react-native/Libraries/Animated/nodes/AnimatedNode.js index bd9d7b032e8..519d03380ef 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedNode.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedNode.js @@ -12,7 +12,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import invariant from 'invariant'; const NativeAnimatedAPI = NativeAnimatedHelper.API; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedProps.js b/packages/react-native/Libraries/Animated/nodes/AnimatedProps.js index d8a048e82eb..042838aebfc 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedProps.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedProps.js @@ -14,7 +14,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; import {findNodeHandle} from '../../ReactNative/RendererProxy'; import {AnimatedEvent} from '../AnimatedEvent'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedNode from './AnimatedNode'; import AnimatedObject, {hasAnimatedNode} from './AnimatedObject'; import AnimatedStyle from './AnimatedStyle'; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedTracking.js b/packages/react-native/Libraries/Animated/nodes/AnimatedTracking.js index bfaeafed47c..057ad0f8468 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedTracking.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedTracking.js @@ -14,7 +14,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; import type {EndCallback} from '../animations/Animation'; import type AnimatedValue from './AnimatedValue'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedNode from './AnimatedNode'; export default class AnimatedTracking extends AnimatedNode { diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js b/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js index 810fcc10c5e..43d4294812e 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js @@ -13,7 +13,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; import {validateTransform} from '../../../src/private/animated/NativeAnimatedValidation'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedNode from './AnimatedNode'; import AnimatedWithChildren from './AnimatedWithChildren'; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedValue.js b/packages/react-native/Libraries/Animated/nodes/AnimatedValue.js index 52c8126e093..15fcd4ec381 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedValue.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedValue.js @@ -16,7 +16,7 @@ import type AnimatedNode from './AnimatedNode'; import type AnimatedTracking from './AnimatedTracking'; import InteractionManager from '../../Interaction/InteractionManager'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedInterpolation from './AnimatedInterpolation'; import AnimatedWithChildren from './AnimatedWithChildren'; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedWithChildren.js b/packages/react-native/Libraries/Animated/nodes/AnimatedWithChildren.js index 93d88497648..2c54d0263d8 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedWithChildren.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedWithChildren.js @@ -12,7 +12,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig'; -import NativeAnimatedHelper from '../NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper'; import AnimatedNode from './AnimatedNode'; export default class AnimatedWithChildren extends AnimatedNode { diff --git a/packages/react-native/Libraries/Animated/useAnimatedProps.js b/packages/react-native/Libraries/Animated/useAnimatedProps.js index ee38357e2d0..0ed02fb7b66 100644 --- a/packages/react-native/Libraries/Animated/useAnimatedProps.js +++ b/packages/react-native/Libraries/Animated/useAnimatedProps.js @@ -17,7 +17,7 @@ import useDebouncedEffect from '../../src/private/hooks/useDebouncedEffect'; import {isPublicInstance as isFabricPublicInstance} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils'; import useRefEffect from '../Utilities/useRefEffect'; import {AnimatedEvent} from './AnimatedEvent'; -import NativeAnimatedHelper from './NativeAnimatedHelper'; +import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper'; import AnimatedNode from './nodes/AnimatedNode'; import AnimatedProps from './nodes/AnimatedProps'; import AnimatedValue from './nodes/AnimatedValue'; diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 69e3686cd6c..1c51017ab8a 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -383,68 +383,6 @@ declare export function isSupportedTransformProp(prop: string): boolean; " `; -exports[`public API should not change unintentionally Libraries/Animated/NativeAnimatedHelper.js 1`] = ` -"declare const API: { - getValue: (tag: number, saveValueCallback: (value: number) => void) => void, - setWaitingForIdentifier: (id: string) => void, - unsetWaitingForIdentifier: (id: string) => void, - disableQueue: () => void, - flushQueue: () => void, - queueOperation: , Fn: (...Args) => void>( - fn: Fn, - ...args: Args - ) => void, - createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void, - updateAnimatedNodeConfig: (tag: number, config: AnimatedNodeConfig) => void, - startListeningToAnimatedNodeValue: (tag: number) => void, - stopListeningToAnimatedNodeValue: (tag: number) => void, - connectAnimatedNodes: (parentTag: number, childTag: number) => void, - disconnectAnimatedNodes: (parentTag: number, childTag: number) => void, - startAnimatingNode: ( - animationId: number, - nodeTag: number, - config: AnimatingNodeConfig, - endCallback: EndCallback - ) => void, - stopAnimation: (animationId: number) => void, - setAnimatedNodeValue: (nodeTag: number, value: number) => void, - setAnimatedNodeOffset: (nodeTag: number, offset: number) => void, - flattenAnimatedNodeOffset: (nodeTag: number) => void, - extractAnimatedNodeOffset: (nodeTag: number) => void, - connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void, - disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void, - restoreDefaultValues: (nodeTag: number) => void, - dropAnimatedNode: (tag: number) => void, - addAnimatedEventToView: ( - viewTag: number, - eventName: string, - eventMapping: EventMapping - ) => void, - removeAnimatedEventFromView( - viewTag: number, - eventName: string, - animatedNodeTag: number - ): void, -}; -declare function generateNewNodeTag(): number; -declare function generateNewAnimationId(): number; -declare function assertNativeAnimatedModule(): void; -declare function shouldUseNativeDriver( - config: $ReadOnly<{ ...AnimationConfig, ... }> | EventConfig -): boolean; -declare function transformDataType(value: number | string): number | string; -declare export default { - API: API, - generateNewNodeTag: generateNewNodeTag, - generateNewAnimationId: generateNewAnimationId, - assertNativeAnimatedModule: assertNativeAnimatedModule, - shouldUseNativeDriver: shouldUseNativeDriver, - transformDataType: transformDataType, - get nativeEventEmitter(): NativeEventEmitter, -}; -" -`; - exports[`public API should not change unintentionally Libraries/Animated/NativeAnimatedModule.js 1`] = ` "export * from \\"../../src/private/specs/modules/NativeAnimatedModule\\"; declare export default typeof NativeAnimatedModule; diff --git a/packages/react-native/Libraries/Animated/NativeAnimatedHelper.js b/packages/react-native/src/private/animated/NativeAnimatedHelper.js similarity index 94% rename from packages/react-native/Libraries/Animated/NativeAnimatedHelper.js rename to packages/react-native/src/private/animated/NativeAnimatedHelper.js index 421dbc08b30..913c84bf7bc 100644 --- a/packages/react-native/Libraries/Animated/NativeAnimatedHelper.js +++ b/packages/react-native/src/private/animated/NativeAnimatedHelper.js @@ -8,21 +8,24 @@ * @format */ -import type {EventSubscription} from '../vendor/emitter/EventEmitter'; -import type {EventConfig} from './AnimatedEvent'; -import type {AnimationConfig, EndCallback} from './animations/Animation'; +import type {EventSubscription} from '../../../Libraries/vendor/emitter/EventEmitter'; +import type {EventConfig} from '../../../Libraries/Animated/AnimatedEvent'; +import type { + AnimationConfig, + EndCallback, +} from '../../../Libraries/Animated/animations/Animation'; import type { AnimatedNodeConfig, AnimatingNodeConfig, EventMapping, -} from './NativeAnimatedModule'; +} from '../../../Libraries/Animated/NativeAnimatedModule'; -import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags'; -import NativeEventEmitter from '../EventEmitter/NativeEventEmitter'; -import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter'; -import Platform from '../Utilities/Platform'; -import NativeAnimatedNonTurboModule from './NativeAnimatedModule'; -import NativeAnimatedTurboModule from './NativeAnimatedTurboModule'; +import * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags'; +import NativeEventEmitter from '../../../Libraries/EventEmitter/NativeEventEmitter'; +import RCTDeviceEventEmitter from '../../../Libraries/EventEmitter/RCTDeviceEventEmitter'; +import Platform from '../../../Libraries/Utilities/Platform'; +import NativeAnimatedNonTurboModule from '../../../Libraries/Animated/NativeAnimatedModule'; +import NativeAnimatedTurboModule from '../../../Libraries/Animated/NativeAnimatedTurboModule'; import invariant from 'invariant'; // TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%. diff --git a/packages/react-native/Libraries/Animated/__tests__/AnimatedNative-test.js b/packages/react-native/src/private/animated/__tests__/AnimatedNative-test.js similarity index 98% rename from packages/react-native/Libraries/Animated/__tests__/AnimatedNative-test.js rename to packages/react-native/src/private/animated/__tests__/AnimatedNative-test.js index 99012efd940..3c5ea6ee396 100644 --- a/packages/react-native/Libraries/Animated/__tests__/AnimatedNative-test.js +++ b/packages/react-native/src/private/animated/__tests__/AnimatedNative-test.js @@ -10,7 +10,7 @@ jest .clearAllMocks() - .mock('../../BatchedBridge/NativeModules', () => ({ + .mock('../../../../Libraries/BatchedBridge/NativeModules', () => ({ NativeAnimatedModule: {}, PlatformConstants: { getConstants() { @@ -18,21 +18,24 @@ jest }, }, })) - .mock('../NativeAnimatedModule') - .mock('../../EventEmitter/NativeEventEmitter') + .mock('../../specs/modules/NativeAnimatedModule') + .mock('../../../../Libraries/EventEmitter/NativeEventEmitter') // findNodeHandle is imported from RendererProxy so mock that whole module. - .setMock('../../ReactNative/RendererProxy', {findNodeHandle: () => 1}); + .setMock('../../../../Libraries/ReactNative/RendererProxy', { + findNodeHandle: () => 1, + }); import {format} from 'node:util'; import * as React from 'react'; import {createRef} from 'react'; -const {create, unmount, update} = require('../../../jest/renderer'); -const Animated = require('../Animated').default; +const {create, unmount, update} = require('../../../../jest/renderer'); +const Animated = require('../../../../Libraries/Animated/Animated').default; const NativeAnimatedHelper = require('../NativeAnimatedHelper').default; describe('Native Animated', () => { - const NativeAnimatedModule = require('../NativeAnimatedModule').default; + const NativeAnimatedModule = + require('../../specs/modules/NativeAnimatedModule').default; beforeEach(() => { Object.assign(NativeAnimatedModule, {