react-native-windows 0.83.0-preview.2 → 0.84.0-preview.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +2 -2
- package/Folly/Folly.vcxproj +2 -0
- package/Libraries/Animated/AnimatedEvent.js +2 -2
- package/Libraries/Animated/animations/Animation.js +1 -3
- package/Libraries/Animated/createAnimatedComponent.js +8 -5
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +40 -4
- package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
- package/Libraries/Animated/nodes/AnimatedObject.js +16 -11
- package/Libraries/Animated/nodes/AnimatedProps.js +43 -12
- package/Libraries/Animated/nodes/AnimatedStyle.js +12 -12
- package/Libraries/Animated/nodes/AnimatedValue.js +6 -3
- package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
- package/Libraries/BatchedBridge/MessageQueue.js +24 -22
- package/Libraries/Blob/URL.js +34 -3
- package/Libraries/Blob/URLSearchParams.js +1 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +9 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +6 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +6 -1
- package/Libraries/Components/Button.js +2 -5
- package/Libraries/Components/Button.windows.js +2 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +4 -4
- package/Libraries/Components/Keyboard/Keyboard.js +2 -2
- package/Libraries/Components/Pressable/Pressable.js +8 -8
- package/Libraries/Components/Pressable/Pressable.windows.js +14 -13
- package/Libraries/Components/TextInput/TextInput.flow.js +13 -13
- package/Libraries/Components/TextInput/TextInput.flow.windows.js +19 -18
- package/Libraries/Components/TextInput/TextInput.js +33 -34
- package/Libraries/Components/TextInput/TextInput.windows.js +40 -39
- package/Libraries/Components/Touchable/PooledClass.js +2 -2
- package/Libraries/Components/Touchable/TouchableBounce.js +3 -3
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +3 -3
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +9 -9
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -9
- package/Libraries/Components/View/ViewPropTypes.js +16 -6
- package/Libraries/Components/View/ViewPropTypes.windows.js +21 -11
- package/Libraries/Core/Devtools/loadBundleFromServer.js +6 -3
- package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +6 -3
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +3 -3
- package/Libraries/Core/RawEventEmitter.js +1 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/setUpDeveloperTools.js +1 -1
- package/Libraries/Core/setUpErrorHandling.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +2 -2
- package/Libraries/Image/Image.android.js +2 -2
- package/Libraries/Image/Image.ios.js +2 -2
- package/Libraries/Image/Image.windows.js +2 -2
- package/Libraries/Image/ImageProps.js +1 -1
- package/Libraries/Image/ImageTypes.flow.js +2 -2
- package/Libraries/Interaction/InteractionManager.js +3 -3
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/LogBox/Data/LogBoxData.js +31 -4
- package/Libraries/LogBox/Data/LogBoxLog.js +2 -2
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -5
- package/Libraries/LogBox/LogBox.js +7 -7
- package/Libraries/NativeComponent/BaseViewConfig.android.js +12 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +4 -4
- package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
- package/Libraries/NativeComponent/ViewConfigIgnore.windows.js +1 -1
- package/Libraries/Network/RCTNetworking.android.js +3 -3
- package/Libraries/Network/RCTNetworking.ios.js +2 -2
- package/Libraries/Network/RCTNetworking.js.flow +2 -2
- package/Libraries/Network/RCTNetworking.windows.js +2 -2
- package/Libraries/Pressability/Pressability.js +9 -9
- package/Libraries/Pressability/Pressability.windows.js +17 -16
- package/Libraries/ReactNative/AppRegistry.flow.js +1 -1
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
- package/Libraries/ReactNative/FabricUIManager.js +1 -1
- package/Libraries/ReactNative/PaperUIManager.js +1 -1
- package/Libraries/ReactNative/PaperUIManager.windows.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +2 -2
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +1 -1
- package/Libraries/ReactNative/RendererImplementation.js +1 -1
- package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +11 -4
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +11 -4
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +11 -4
- package/Libraries/Renderer/shims/ReactFabric.js +3 -1
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
- package/Libraries/Renderer/shims/ReactNative.js +2 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
- package/Libraries/Settings/Settings.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +4 -2
- package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +99 -4
- package/Libraries/StyleSheet/StyleSheetTypes.js +6 -8
- package/Libraries/StyleSheet/processFilter.js +1 -1
- package/Libraries/Text/Text.js +46 -6
- package/Libraries/Text/Text.windows.js +46 -6
- package/Libraries/Text/TextNativeComponent.js +1 -1
- package/Libraries/Text/TextProps.js +7 -7
- package/Libraries/Text/TextProps.windows.js +7 -7
- package/Libraries/Types/CodegenTypes.js +1 -1
- package/Libraries/Types/CoreEventTypes.js +31 -0
- package/Libraries/Types/CoreEventTypes.windows.js +31 -13
- package/Libraries/Types/ReactDevToolsTypes.js +2 -2
- package/Libraries/Utilities/Appearance.js +2 -2
- package/Libraries/Utilities/DevLoadingView.js +8 -1
- package/Libraries/Utilities/DevSettings.js +3 -3
- package/Libraries/Utilities/HMRClient.js +4 -3
- package/Libraries/Utilities/RCTLog.js +3 -3
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +1 -1
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +3 -3
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +7 -7
- package/Libraries/Utilities/useRefEffect.js +1 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +3 -3
- package/Libraries/promiseRejectionTrackingOptions.js +8 -8
- package/Libraries/vendor/core/ErrorUtils.js +10 -10
- package/Libraries/vendor/emitter/EventEmitter.js +6 -6
- package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +5 -0
- package/Microsoft.ReactNative/Fabric/AbiViewProps.h +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +25 -5
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +2 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +9 -3
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +2 -3
- package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +2 -2
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +2 -0
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +6 -0
- package/Microsoft.ReactNative/ViewProps.idl +9 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +12 -2
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/ReactCommon/ReactCommon.vcxproj +7 -1
- package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSIndexedRAMBundle.cpp +5 -5
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ReactMarker.cpp +0 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsiexecutor/jsireact/JSIExecutor.cpp +2 -43
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +12 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/attributedstring/TextAttributes.cpp +291 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventDispatcher.cpp +0 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventQueueProcessor.cpp +1 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/propsConversions.h +199 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManager.cpp +6 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +17 -10
- package/Scripts/creaternwapp.cmd +8 -1
- package/Scripts/creaternwlib.cmd +21 -2
- package/Shared/DevSettings.h +0 -3
- package/Shared/Modules/WebSocketModule.cpp +0 -1
- package/Shared/Modules/WebSocketModule.h +62 -3
- package/Shared/OInstance.cpp +5 -0
- package/Shared/Shared.vcxitems +4 -6
- package/Shared/Shared.vcxitems.filters +218 -709
- package/codegen/NativeAccessibilityManagerSpec.g.h +2 -0
- package/codegen/NativeAnimatedModuleSpec.g.h +21 -15
- package/codegen/NativeDevLoadingViewSpec.g.h +3 -3
- package/codegen/NativeIntentAndroidSpec.g.h +16 -3
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +209 -191
- package/codegen/react/components/rnwcore/EventEmitters.h +1 -0
- package/codegen/react/components/rnwcore/Props.h +14 -0
- package/codegen/rnwcoreJSI.h +246 -211
- package/index.js +3 -0
- package/index.windows.js +3 -0
- package/jest/mock.js +2 -2
- package/jest/mockComponent.js +1 -1
- package/jest/setup.js +1 -1
- package/package.json +22 -21
- package/src/private/animated/NativeAnimatedHelper.js +130 -125
- package/src/private/animated/NativeAnimatedValidation.js +7 -4
- package/src/private/animated/createAnimatedPropsHook.js +13 -5
- package/src/private/animated/createAnimatedPropsMemoHook.js +10 -10
- package/src/private/components/virtualview/VirtualView.js +16 -9
- package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
- package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
- package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +6 -25
- package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -27
- package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +3 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +63 -42
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +12 -9
- package/src/private/renderer/errorhandling/ErrorHandlers.js +7 -4
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +4 -0
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -0
- package/src/private/webapis/dom/events/CustomEvent.js +3 -3
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +29 -29
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +1 -1
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
- package/src/private/webapis/geometry/DOMRectReadOnly.js +1 -1
- package/src/private/webapis/html/events/MessageEvent.js +3 -3
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +3 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +53 -5
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +2 -2
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +4 -4
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
- package/src/private/webapis/mutationobserver/MutationObserver.js +1 -1
- package/src/private/webapis/mutationobserver/MutationRecord.js +1 -1
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -4
- package/src/private/webapis/performance/Performance.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +3 -3
- package/src/private/webapis/structuredClone/structuredClone.js +3 -3
- package/src/types/globals.d.ts +30 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h +0 -178
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/imagemanager/primitives.h +0 -183
- package/Shared/Modules/WebSocketTurboModule.h +0 -71
- package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +0 -628
- package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +0 -66
package/index.js
CHANGED
|
@@ -341,6 +341,9 @@ module.exports = {
|
|
|
341
341
|
get useColorScheme() {
|
|
342
342
|
return require('./Libraries/Utilities/useColorScheme').default;
|
|
343
343
|
},
|
|
344
|
+
get usePressability() {
|
|
345
|
+
return require('./Libraries/Pressability/usePressability').default;
|
|
346
|
+
},
|
|
344
347
|
get useWindowDimensions() {
|
|
345
348
|
return require('./Libraries/Utilities/useWindowDimensions').default;
|
|
346
349
|
},
|
package/index.windows.js
CHANGED
|
@@ -341,6 +341,9 @@ module.exports = {
|
|
|
341
341
|
get useColorScheme() {
|
|
342
342
|
return require('./Libraries/Utilities/useColorScheme').default;
|
|
343
343
|
},
|
|
344
|
+
get usePressability() {
|
|
345
|
+
return require('./Libraries/Pressability/usePressability').default;
|
|
346
|
+
},
|
|
344
347
|
get useWindowDimensions() {
|
|
345
348
|
return require('./Libraries/Utilities/useWindowDimensions').default;
|
|
346
349
|
},
|
package/jest/mock.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* If `factoryRef` is provided, it is expected to reference a module that
|
|
17
17
|
* exports the same type signature as the module referenced by `moduleRef`.
|
|
18
18
|
*/
|
|
19
|
-
export default function mock<TModuleRef: $Flow$ModuleRef<
|
|
19
|
+
export default function mock<TModuleRef: $Flow$ModuleRef<unknown>>(
|
|
20
20
|
moduleRef: TModuleRef,
|
|
21
21
|
factoryRef?: NoInfer<TModuleRef>,
|
|
22
22
|
): void {
|
|
@@ -33,7 +33,7 @@ export default function mock<TModuleRef: $Flow$ModuleRef<mixed>>(
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
function deref(ref: $Flow$ModuleRef<
|
|
36
|
+
function deref(ref: $Flow$ModuleRef<unknown>): string {
|
|
37
37
|
// $FlowFixMe[incompatible-type]
|
|
38
38
|
return (ref as string).substring(2);
|
|
39
39
|
}
|
package/jest/mockComponent.js
CHANGED
|
@@ -39,7 +39,7 @@ export default function mockComponent<
|
|
|
39
39
|
|
|
40
40
|
const SuperClass: typeof React.Component<{...}> =
|
|
41
41
|
typeof RealComponent === 'function' &&
|
|
42
|
-
RealComponent.prototype
|
|
42
|
+
RealComponent.prototype?.constructor instanceof React.Component
|
|
43
43
|
? RealComponent
|
|
44
44
|
: React.Component;
|
|
45
45
|
|
package/jest/setup.js
CHANGED
|
@@ -51,7 +51,7 @@ Object.defineProperties(global, {
|
|
|
51
51
|
regeneratorRuntime: {
|
|
52
52
|
configurable: true,
|
|
53
53
|
enumerable: true,
|
|
54
|
-
value: jest.requireActual<
|
|
54
|
+
value: jest.requireActual<unknown>('regenerator-runtime/runtime'),
|
|
55
55
|
writable: true,
|
|
56
56
|
},
|
|
57
57
|
requestAnimationFrame: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-windows",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.0-preview.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,16 +26,16 @@
|
|
|
26
26
|
"@react-native-community/cli": "20.0.0",
|
|
27
27
|
"@react-native-community/cli-platform-android": "20.0.0",
|
|
28
28
|
"@react-native-community/cli-platform-ios": "20.0.0",
|
|
29
|
-
"@react-native-windows/cli": "0.
|
|
29
|
+
"@react-native-windows/cli": "0.84.0-preview.1",
|
|
30
30
|
"@react-native/assets": "1.0.0",
|
|
31
|
-
"@react-native/assets-registry": "0.
|
|
32
|
-
"@react-native/codegen": "0.
|
|
33
|
-
"@react-native/community-cli-plugin": "0.
|
|
34
|
-
"@react-native/gradle-plugin": "0.
|
|
35
|
-
"@react-native/js-polyfills": "0.
|
|
36
|
-
"@react-native/new-app-screen": "0.
|
|
37
|
-
"@react-native/normalize-colors": "0.
|
|
38
|
-
"@react-native/virtualized-lists": "0.
|
|
31
|
+
"@react-native/assets-registry": "0.84.1",
|
|
32
|
+
"@react-native/codegen": "0.84.1",
|
|
33
|
+
"@react-native/community-cli-plugin": "0.84.1",
|
|
34
|
+
"@react-native/gradle-plugin": "0.84.1",
|
|
35
|
+
"@react-native/js-polyfills": "0.84.1",
|
|
36
|
+
"@react-native/new-app-screen": "0.84.1",
|
|
37
|
+
"@react-native/normalize-colors": "0.84.1",
|
|
38
|
+
"@react-native/virtualized-lists": "0.84.1",
|
|
39
39
|
"abort-controller": "^3.0.0",
|
|
40
40
|
"anser": "^1.4.9",
|
|
41
41
|
"ansi-regex": "^5.0.0",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"event-target-shim": "^5.0.1",
|
|
48
48
|
"flow-enums-runtime": "^0.0.6",
|
|
49
49
|
"glob": "^7.1.1",
|
|
50
|
-
"hermes-compiler": "0.
|
|
50
|
+
"hermes-compiler": "250829098.0.9",
|
|
51
51
|
"invariant": "^2.2.4",
|
|
52
52
|
"jest-environment-node": "^29.7.0",
|
|
53
53
|
"memoize-one": "^5.0.0",
|
|
@@ -64,13 +64,14 @@
|
|
|
64
64
|
"semver": "^7.1.3",
|
|
65
65
|
"source-map-support": "^0.5.19",
|
|
66
66
|
"stacktrace-parser": "^0.1.10",
|
|
67
|
+
"tinyglobby": "^0.2.15",
|
|
67
68
|
"whatwg-fetch": "^3.0.0",
|
|
68
69
|
"ws": "^7.5.10",
|
|
69
70
|
"yargs": "^17.6.2"
|
|
70
71
|
},
|
|
71
72
|
"devDependencies": {
|
|
72
|
-
"@react-native-windows/codegen": "0.
|
|
73
|
-
"@react-native/metro-config": "0.
|
|
73
|
+
"@react-native-windows/codegen": "0.84.0-preview.1",
|
|
74
|
+
"@react-native/metro-config": "0.84.1",
|
|
74
75
|
"@rnw-scripts/babel-react-native-config": "0.0.0",
|
|
75
76
|
"@rnw-scripts/eslint-config": "1.2.38",
|
|
76
77
|
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.42",
|
|
@@ -78,22 +79,22 @@
|
|
|
78
79
|
"@rnw-scripts/metro-dev-config": "0.0.0",
|
|
79
80
|
"@rnx-kit/jest-preset": "^0.3.1",
|
|
80
81
|
"@types/node": "^22.14.0",
|
|
81
|
-
"@types/react": "^19.2.
|
|
82
|
+
"@types/react": "^19.2.3",
|
|
82
83
|
"eslint": "^8.19.0",
|
|
83
|
-
"flow-bin": "^0.
|
|
84
|
+
"flow-bin": "^0.295.0",
|
|
84
85
|
"jscodeshift": "^0.14.0",
|
|
85
86
|
"just-scripts": "^1.3.3",
|
|
86
|
-
"prettier": "
|
|
87
|
-
"react": "19.2.
|
|
88
|
-
"react-native": "0.
|
|
89
|
-
"react-native-platform-override": "0.
|
|
87
|
+
"prettier": "^3.6.2",
|
|
88
|
+
"react": "19.2.3",
|
|
89
|
+
"react-native": "0.84.1",
|
|
90
|
+
"react-native-platform-override": "0.84.0-preview.1",
|
|
90
91
|
"react-refresh": "^0.14.0",
|
|
91
92
|
"typescript": "5.0.4"
|
|
92
93
|
},
|
|
93
94
|
"peerDependencies": {
|
|
94
95
|
"@types/react": "^19.1.1",
|
|
95
|
-
"react": "^19.2.
|
|
96
|
-
"react-native": "0.
|
|
96
|
+
"react": "^19.2.3",
|
|
97
|
+
"react-native": "0.84.1"
|
|
97
98
|
},
|
|
98
99
|
"beachball": {
|
|
99
100
|
"defaultNpmTag": "preview",
|
|
@@ -17,6 +17,8 @@ import type {
|
|
|
17
17
|
AnimatedNodeConfig,
|
|
18
18
|
EventMapping,
|
|
19
19
|
} from '../../../Libraries/Animated/NativeAnimatedModule';
|
|
20
|
+
import type {Spec as NativeAnimatedTurboModuleSpec} from '../../../Libraries/Animated/NativeAnimatedTurboModule';
|
|
21
|
+
import type {Node} from '../../../Libraries/Renderer/shims/ReactNativeTypes';
|
|
20
22
|
import type {EventSubscription} from '../../../Libraries/vendor/emitter/EventEmitter';
|
|
21
23
|
|
|
22
24
|
import NativeAnimatedNonTurboModule from '../../../Libraries/Animated/NativeAnimatedModule';
|
|
@@ -28,8 +30,17 @@ import * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlag
|
|
|
28
30
|
import invariant from 'invariant';
|
|
29
31
|
import nullthrows from 'nullthrows';
|
|
30
32
|
|
|
33
|
+
interface NativeAnimatedModuleSpec extends NativeAnimatedTurboModuleSpec {
|
|
34
|
+
// connectAnimatedNodeToShadowNodeFamily is available only in NativeAnimatedNonTurboModule
|
|
35
|
+
+connectAnimatedNodeToShadowNodeFamily?: (
|
|
36
|
+
nodeTag: number,
|
|
37
|
+
// $FlowExpectedError[unclear-type].
|
|
38
|
+
shadowNode: Object,
|
|
39
|
+
) => void;
|
|
40
|
+
}
|
|
41
|
+
|
|
31
42
|
// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.
|
|
32
|
-
const NativeAnimatedModule:
|
|
43
|
+
const NativeAnimatedModule: ?NativeAnimatedModuleSpec =
|
|
33
44
|
NativeAnimatedNonTurboModule ?? NativeAnimatedTurboModule;
|
|
34
45
|
|
|
35
46
|
let __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */
|
|
@@ -37,10 +48,10 @@ let __nativeAnimationIdCount = 1; /* used for started animations */
|
|
|
37
48
|
|
|
38
49
|
let nativeEventEmitter;
|
|
39
50
|
|
|
40
|
-
|
|
51
|
+
const waitingForQueuedOperations = new Set<string>();
|
|
41
52
|
let queueOperations = false;
|
|
42
|
-
|
|
43
|
-
|
|
53
|
+
const queue: Array<() => void> = [];
|
|
54
|
+
const singleOpQueue: Array<unknown> = [];
|
|
44
55
|
|
|
45
56
|
const isSingleOpBatching =
|
|
46
57
|
Platform.OS === 'android' &&
|
|
@@ -60,7 +71,7 @@ let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;
|
|
|
60
71
|
const shouldSignalBatch: boolean =
|
|
61
72
|
ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
|
|
62
73
|
|
|
63
|
-
function createNativeOperations():
|
|
74
|
+
function createNativeOperations(): NonNullable<typeof NativeAnimatedModule> {
|
|
64
75
|
const methodNames = [
|
|
65
76
|
'createAnimatedNode', // 1
|
|
66
77
|
'updateAnimatedNodeConfig', // 2
|
|
@@ -84,8 +95,15 @@ function createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {
|
|
|
84
95
|
'addListener', // 20
|
|
85
96
|
'removeListener', // 21
|
|
86
97
|
];
|
|
98
|
+
if (
|
|
99
|
+
ReactNativeFeatureFlags.cxxNativeAnimatedEnabled() &&
|
|
100
|
+
//eslint-disable-next-line
|
|
101
|
+
ReactNativeFeatureFlags.useSharedAnimatedBackend()
|
|
102
|
+
) {
|
|
103
|
+
methodNames.push('connectAnimatedNodeToShadowNodeFamily');
|
|
104
|
+
}
|
|
87
105
|
const nativeOperations: {
|
|
88
|
-
[$Values<typeof methodNames>]: (...$ReadOnlyArray<
|
|
106
|
+
[$Values<typeof methodNames>]: (...$ReadOnlyArray<unknown>) => void,
|
|
89
107
|
} = {};
|
|
90
108
|
if (isSingleOpBatching) {
|
|
91
109
|
for (let ii = 0, length = methodNames.length; ii < length; ii++) {
|
|
@@ -138,49 +156,35 @@ const NativeOperations = createNativeOperations();
|
|
|
138
156
|
* the native module methods, and automatic queue management on Android
|
|
139
157
|
*/
|
|
140
158
|
const API = {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
/* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled
|
|
149
|
-
differently when `isSingleOpBatching` is enabled. */
|
|
150
|
-
NativeOperations.getValue(tag);
|
|
151
|
-
}
|
|
152
|
-
: (tag, saveValueCallback) => {
|
|
153
|
-
NativeOperations.getValue(tag, saveValueCallback);
|
|
154
|
-
}) as $NonMaybeType<typeof NativeAnimatedModule>['getValue'],
|
|
155
|
-
|
|
156
|
-
setWaitingForIdentifier(id: string): void {
|
|
157
|
-
if (shouldSignalBatch) {
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
waitingForQueuedOperations.add(id);
|
|
162
|
-
queueOperations = true;
|
|
163
|
-
if (
|
|
164
|
-
ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() &&
|
|
165
|
-
flushQueueImmediate
|
|
166
|
-
) {
|
|
167
|
-
clearImmediate(flushQueueImmediate);
|
|
168
|
-
}
|
|
159
|
+
addAnimatedEventToView(
|
|
160
|
+
viewTag: number,
|
|
161
|
+
eventName: string,
|
|
162
|
+
eventMapping: EventMapping,
|
|
163
|
+
) {
|
|
164
|
+
NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping);
|
|
169
165
|
},
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
166
|
+
connectAnimatedNodes(parentTag: number, childTag: number): void {
|
|
167
|
+
NativeOperations.connectAnimatedNodes(parentTag, childTag);
|
|
168
|
+
},
|
|
169
|
+
connectAnimatedNodeToShadowNodeFamily(
|
|
170
|
+
nodeTag: number,
|
|
171
|
+
shadowNode: Node,
|
|
172
|
+
): void {
|
|
173
|
+
NativeOperations.connectAnimatedNodeToShadowNodeFamily?.(
|
|
174
|
+
nodeTag,
|
|
175
|
+
shadowNode,
|
|
176
|
+
);
|
|
177
|
+
},
|
|
178
|
+
connectAnimatedNodeToView(nodeTag: number, viewTag: number): void {
|
|
179
|
+
NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag);
|
|
180
|
+
},
|
|
181
|
+
createAnimatedNode(tag: number, config: AnimatedNodeConfig): void {
|
|
182
|
+
if (config.disableBatchingForNativeCreate) {
|
|
183
|
+
NativeAnimatedModule?.createAnimatedNode(tag, config);
|
|
184
|
+
} else {
|
|
185
|
+
NativeOperations.createAnimatedNode(tag, config);
|
|
181
186
|
}
|
|
182
187
|
},
|
|
183
|
-
|
|
184
188
|
disableQueue(): void {
|
|
185
189
|
invariant(NativeAnimatedModule, 'Native animated module is not available');
|
|
186
190
|
|
|
@@ -192,7 +196,21 @@ const API = {
|
|
|
192
196
|
API.flushQueue();
|
|
193
197
|
}
|
|
194
198
|
},
|
|
195
|
-
|
|
199
|
+
disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void {
|
|
200
|
+
NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag);
|
|
201
|
+
},
|
|
202
|
+
disconnectAnimatedNodes(parentTag: number, childTag: number): void {
|
|
203
|
+
NativeOperations.disconnectAnimatedNodes(parentTag, childTag);
|
|
204
|
+
},
|
|
205
|
+
dropAnimatedNode(tag: number): void {
|
|
206
|
+
NativeOperations.dropAnimatedNode(tag);
|
|
207
|
+
},
|
|
208
|
+
extractAnimatedNodeOffset(nodeTag: number): void {
|
|
209
|
+
NativeOperations.extractAnimatedNodeOffset(nodeTag);
|
|
210
|
+
},
|
|
211
|
+
flattenAnimatedNodeOffset(nodeTag: number): void {
|
|
212
|
+
NativeOperations.flattenAnimatedNodeOffset(nodeTag);
|
|
213
|
+
},
|
|
196
214
|
flushQueue: (isSingleOpBatching
|
|
197
215
|
? (): void => {
|
|
198
216
|
invariant(
|
|
@@ -239,35 +257,54 @@ const API = {
|
|
|
239
257
|
NativeAnimatedModule?.finishOperationBatch?.();
|
|
240
258
|
}
|
|
241
259
|
}) as () => void,
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
260
|
+
getValue: (isSingleOpBatching
|
|
261
|
+
? (tag, saveValueCallback) => {
|
|
262
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
263
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
264
|
+
if (saveValueCallback) {
|
|
265
|
+
eventListenerGetValueCallbacks[tag] = saveValueCallback;
|
|
266
|
+
}
|
|
267
|
+
/* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled
|
|
268
|
+
differently when `isSingleOpBatching` is enabled. */
|
|
269
|
+
NativeOperations.getValue(tag);
|
|
270
|
+
}
|
|
271
|
+
: (tag, saveValueCallback) => {
|
|
272
|
+
NativeOperations.getValue(tag, saveValueCallback);
|
|
273
|
+
}) as NonNullable<typeof NativeAnimatedModule>['getValue'],
|
|
274
|
+
removeAnimatedEventFromView(
|
|
275
|
+
viewTag: number,
|
|
276
|
+
eventName: string,
|
|
277
|
+
animatedNodeTag: number,
|
|
278
|
+
) {
|
|
279
|
+
NativeOperations.removeAnimatedEventFromView(
|
|
280
|
+
viewTag,
|
|
281
|
+
eventName,
|
|
282
|
+
animatedNodeTag,
|
|
283
|
+
);
|
|
253
284
|
},
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
NativeOperations.startListeningToAnimatedNodeValue(tag);
|
|
285
|
+
restoreDefaultValues(nodeTag: number): void {
|
|
286
|
+
NativeOperations.restoreDefaultValues?.(nodeTag);
|
|
257
287
|
},
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
NativeOperations.stopListeningToAnimatedNodeValue(tag);
|
|
288
|
+
setAnimatedNodeOffset(nodeTag: number, offset: number): void {
|
|
289
|
+
NativeOperations.setAnimatedNodeOffset(nodeTag, offset);
|
|
261
290
|
},
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
NativeOperations.connectAnimatedNodes(parentTag, childTag);
|
|
291
|
+
setAnimatedNodeValue(nodeTag: number, value: number): void {
|
|
292
|
+
NativeOperations.setAnimatedNodeValue(nodeTag, value);
|
|
265
293
|
},
|
|
294
|
+
setWaitingForIdentifier(id: string): void {
|
|
295
|
+
if (shouldSignalBatch) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
266
298
|
|
|
267
|
-
|
|
268
|
-
|
|
299
|
+
waitingForQueuedOperations.add(id);
|
|
300
|
+
queueOperations = true;
|
|
301
|
+
if (
|
|
302
|
+
ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() &&
|
|
303
|
+
flushQueueImmediate
|
|
304
|
+
) {
|
|
305
|
+
clearImmediate(flushQueueImmediate);
|
|
306
|
+
}
|
|
269
307
|
},
|
|
270
|
-
|
|
271
308
|
startAnimatingNode: (isSingleOpBatching
|
|
272
309
|
? (animationId, nodeTag, config, endCallback) => {
|
|
273
310
|
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
@@ -286,62 +323,30 @@ const API = {
|
|
|
286
323
|
config,
|
|
287
324
|
endCallback,
|
|
288
325
|
);
|
|
289
|
-
}) as
|
|
290
|
-
|
|
326
|
+
}) as NonNullable<typeof NativeAnimatedModule>['startAnimatingNode'],
|
|
327
|
+
startListeningToAnimatedNodeValue(tag: number): void {
|
|
328
|
+
NativeOperations.startListeningToAnimatedNodeValue(tag);
|
|
329
|
+
},
|
|
291
330
|
stopAnimation(animationId: number) {
|
|
292
331
|
NativeOperations.stopAnimation(animationId);
|
|
293
332
|
},
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
NativeOperations.setAnimatedNodeValue(nodeTag, value);
|
|
297
|
-
},
|
|
298
|
-
|
|
299
|
-
setAnimatedNodeOffset(nodeTag: number, offset: number): void {
|
|
300
|
-
NativeOperations.setAnimatedNodeOffset(nodeTag, offset);
|
|
301
|
-
},
|
|
302
|
-
|
|
303
|
-
flattenAnimatedNodeOffset(nodeTag: number): void {
|
|
304
|
-
NativeOperations.flattenAnimatedNodeOffset(nodeTag);
|
|
305
|
-
},
|
|
306
|
-
|
|
307
|
-
extractAnimatedNodeOffset(nodeTag: number): void {
|
|
308
|
-
NativeOperations.extractAnimatedNodeOffset(nodeTag);
|
|
309
|
-
},
|
|
310
|
-
|
|
311
|
-
connectAnimatedNodeToView(nodeTag: number, viewTag: number): void {
|
|
312
|
-
NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag);
|
|
313
|
-
},
|
|
314
|
-
|
|
315
|
-
disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void {
|
|
316
|
-
NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag);
|
|
317
|
-
},
|
|
318
|
-
|
|
319
|
-
restoreDefaultValues(nodeTag: number): void {
|
|
320
|
-
NativeOperations.restoreDefaultValues?.(nodeTag);
|
|
333
|
+
stopListeningToAnimatedNodeValue(tag: number): void {
|
|
334
|
+
NativeOperations.stopListeningToAnimatedNodeValue(tag);
|
|
321
335
|
},
|
|
336
|
+
unsetWaitingForIdentifier(id: string): void {
|
|
337
|
+
if (shouldSignalBatch) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
322
340
|
|
|
323
|
-
|
|
324
|
-
NativeOperations.dropAnimatedNode(tag);
|
|
325
|
-
},
|
|
341
|
+
waitingForQueuedOperations.delete(id);
|
|
326
342
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
) {
|
|
332
|
-
NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping);
|
|
343
|
+
if (waitingForQueuedOperations.size === 0) {
|
|
344
|
+
queueOperations = false;
|
|
345
|
+
API.disableQueue();
|
|
346
|
+
}
|
|
333
347
|
},
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
viewTag: number,
|
|
337
|
-
eventName: string,
|
|
338
|
-
animatedNodeTag: number,
|
|
339
|
-
) {
|
|
340
|
-
NativeOperations.removeAnimatedEventFromView(
|
|
341
|
-
viewTag,
|
|
342
|
-
eventName,
|
|
343
|
-
animatedNodeTag,
|
|
344
|
-
);
|
|
348
|
+
updateAnimatedNodeConfig(tag: number, config: AnimatedNodeConfig): void {
|
|
349
|
+
NativeOperations.updateAnimatedNodeConfig?.(tag, config);
|
|
345
350
|
},
|
|
346
351
|
};
|
|
347
352
|
|
|
@@ -401,7 +406,7 @@ function assertNativeAnimatedModule(): void {
|
|
|
401
406
|
let _warnedMissingNativeAnimated = false;
|
|
402
407
|
|
|
403
408
|
function shouldUseNativeDriver(
|
|
404
|
-
config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<
|
|
409
|
+
config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<unknown>,
|
|
405
410
|
): boolean {
|
|
406
411
|
if (config.useNativeDriver == null) {
|
|
407
412
|
console.warn(
|
|
@@ -449,12 +454,9 @@ function transformDataType(value: number | string): number | string {
|
|
|
449
454
|
|
|
450
455
|
export default {
|
|
451
456
|
API,
|
|
452
|
-
generateNewNodeTag,
|
|
453
|
-
generateNewAnimationId,
|
|
454
457
|
assertNativeAnimatedModule,
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
transformDataType,
|
|
458
|
+
generateNewAnimationId,
|
|
459
|
+
generateNewNodeTag,
|
|
458
460
|
// $FlowExpectedError[unsafe-getters-setters] - unsafe getter lint suppression
|
|
459
461
|
// $FlowExpectedError[missing-type-arg] - unsafe getter lint suppression
|
|
460
462
|
get nativeEventEmitter(): NativeEventEmitter {
|
|
@@ -468,4 +470,7 @@ export default {
|
|
|
468
470
|
}
|
|
469
471
|
return nativeEventEmitter;
|
|
470
472
|
},
|
|
473
|
+
shouldSignalBatch,
|
|
474
|
+
shouldUseNativeDriver,
|
|
475
|
+
transformDataType,
|
|
471
476
|
};
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
11
|
+
import type {
|
|
12
|
+
InterpolationConfigSupportedOutputType,
|
|
13
|
+
InterpolationConfigType,
|
|
14
|
+
} from '../../../Libraries/Animated/nodes/AnimatedInterpolation';
|
|
12
15
|
|
|
13
16
|
import {
|
|
14
17
|
isSupportedInterpolationParam,
|
|
@@ -16,9 +19,9 @@ import {
|
|
|
16
19
|
isSupportedTransformProp,
|
|
17
20
|
} from '../../../Libraries/Animated/NativeAnimatedAllowlist';
|
|
18
21
|
|
|
19
|
-
export function validateInterpolation<
|
|
20
|
-
|
|
21
|
-
): void {
|
|
22
|
+
export function validateInterpolation<
|
|
23
|
+
OutputT: InterpolationConfigSupportedOutputType,
|
|
24
|
+
>(config: InterpolationConfigType<OutputT>): void {
|
|
22
25
|
for (const key in config) {
|
|
23
26
|
if (key !== 'debugID' && !isSupportedInterpolationParam(key)) {
|
|
24
27
|
console.error(
|
|
@@ -15,12 +15,14 @@ import AnimatedNode from '../../../Libraries/Animated/nodes/AnimatedNode';
|
|
|
15
15
|
import AnimatedProps from '../../../Libraries/Animated/nodes/AnimatedProps';
|
|
16
16
|
import AnimatedValue from '../../../Libraries/Animated/nodes/AnimatedValue';
|
|
17
17
|
import {isPublicInstance as isFabricPublicInstance} from '../../../Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils';
|
|
18
|
+
import {RootTagContext} from '../../../Libraries/ReactNative/RootTag';
|
|
18
19
|
import useRefEffect from '../../../Libraries/Utilities/useRefEffect';
|
|
19
20
|
import * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags';
|
|
20
21
|
import {createAnimatedPropsMemoHook} from './createAnimatedPropsMemoHook';
|
|
21
22
|
import NativeAnimatedHelper from './NativeAnimatedHelper';
|
|
22
23
|
import {
|
|
23
24
|
useCallback,
|
|
25
|
+
useContext,
|
|
24
26
|
useEffect,
|
|
25
27
|
useInsertionEffect,
|
|
26
28
|
useReducer,
|
|
@@ -32,7 +34,7 @@ type ReducedProps<TProps> = {
|
|
|
32
34
|
collapsable: boolean,
|
|
33
35
|
...
|
|
34
36
|
};
|
|
35
|
-
type CallbackRef<T> = T =>
|
|
37
|
+
type CallbackRef<T> = T => unknown;
|
|
36
38
|
|
|
37
39
|
export type AnimatedPropsHook = <TProps: {...}, TInstance>(
|
|
38
40
|
props: TProps,
|
|
@@ -60,8 +62,16 @@ export default function createAnimatedPropsHook(
|
|
|
60
62
|
const onUpdateRef = useRef<UpdateCallback | null>(null);
|
|
61
63
|
const timerRef = useRef<TimeoutID | null>(null);
|
|
62
64
|
|
|
65
|
+
const rootTag = useContext(RootTagContext);
|
|
66
|
+
|
|
63
67
|
const node = useAnimatedPropsMemo(
|
|
64
|
-
() =>
|
|
68
|
+
() =>
|
|
69
|
+
new AnimatedProps(
|
|
70
|
+
props,
|
|
71
|
+
() => onUpdateRef.current?.(),
|
|
72
|
+
allowlist,
|
|
73
|
+
rootTag,
|
|
74
|
+
),
|
|
65
75
|
props,
|
|
66
76
|
);
|
|
67
77
|
|
|
@@ -126,9 +136,7 @@ export default function createAnimatedPropsHook(
|
|
|
126
136
|
// Check 2: this is an animation driven by native.
|
|
127
137
|
// In native driven animations, this callback is only called once the animation completes.
|
|
128
138
|
const shouldRemoveJsSync =
|
|
129
|
-
ReactNativeFeatureFlags.cxxNativeAnimatedEnabled()
|
|
130
|
-
!ReactNativeFeatureFlags.disableFabricCommitInCXXAnimated() &&
|
|
131
|
-
ReactNativeFeatureFlags.cxxNativeAnimatedRemoveJsSync();
|
|
139
|
+
ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
|
|
132
140
|
if (isFabricNode && !shouldRemoveJsSync) {
|
|
133
141
|
// Call `scheduleUpdate` to synchronise Fiber and Shadow tree.
|
|
134
142
|
// Must not be called in Paper.
|
|
@@ -24,8 +24,8 @@ type CompositeKey = {
|
|
|
24
24
|
[string]:
|
|
25
25
|
| CompositeKeyComponent
|
|
26
26
|
| AnimatedEvent
|
|
27
|
-
| $ReadOnlyArray<
|
|
28
|
-
| $ReadOnly<{[string]:
|
|
27
|
+
| $ReadOnlyArray<unknown>
|
|
28
|
+
| $ReadOnly<{[string]: unknown}>,
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
type CompositeKeyComponent =
|
|
@@ -38,8 +38,8 @@ type $ReadOnlyCompositeKey = $ReadOnly<{
|
|
|
38
38
|
[string]:
|
|
39
39
|
| $ReadOnlyCompositeKeyComponent
|
|
40
40
|
| AnimatedEvent
|
|
41
|
-
| $ReadOnlyArray<
|
|
42
|
-
| $ReadOnly<{[string]:
|
|
41
|
+
| $ReadOnlyArray<unknown>
|
|
42
|
+
| $ReadOnly<{[string]: unknown}>,
|
|
43
43
|
}>;
|
|
44
44
|
|
|
45
45
|
type $ReadOnlyCompositeKeyComponent =
|
|
@@ -49,7 +49,7 @@ type $ReadOnlyCompositeKeyComponent =
|
|
|
49
49
|
|
|
50
50
|
type AnimatedPropsMemoHook = (
|
|
51
51
|
() => AnimatedProps,
|
|
52
|
-
props: $ReadOnly<{[string]:
|
|
52
|
+
props: $ReadOnly<{[string]: unknown}>,
|
|
53
53
|
) => AnimatedProps;
|
|
54
54
|
|
|
55
55
|
/**
|
|
@@ -62,7 +62,7 @@ export function createAnimatedPropsMemoHook(
|
|
|
62
62
|
): AnimatedPropsMemoHook {
|
|
63
63
|
return function useAnimatedPropsMemo(
|
|
64
64
|
create: () => AnimatedProps,
|
|
65
|
-
props: $ReadOnly<{[string]:
|
|
65
|
+
props: $ReadOnly<{[string]: unknown}>,
|
|
66
66
|
): AnimatedProps {
|
|
67
67
|
const compositeKey = useMemo(
|
|
68
68
|
() => createCompositeKeyForProps(props, allowlist),
|
|
@@ -107,7 +107,7 @@ export function createAnimatedPropsMemoHook(
|
|
|
107
107
|
* returns null.
|
|
108
108
|
*/
|
|
109
109
|
export function createCompositeKeyForProps(
|
|
110
|
-
props: $ReadOnly<{[string]:
|
|
110
|
+
props: $ReadOnly<{[string]: unknown}>,
|
|
111
111
|
allowlist: ?AnimatedPropsAllowlist,
|
|
112
112
|
): $ReadOnlyCompositeKey | null {
|
|
113
113
|
let compositeKey: CompositeKey | null = null;
|
|
@@ -122,7 +122,7 @@ export function createCompositeKeyForProps(
|
|
|
122
122
|
if (key === 'style') {
|
|
123
123
|
// $FlowFixMe[incompatible-call] - `style` is a valid argument.
|
|
124
124
|
// $FlowFixMe[incompatible-type] - `flattenStyle` returns an object.
|
|
125
|
-
const flatStyle: ?{[string]:
|
|
125
|
+
const flatStyle: ?{[string]: unknown} = flattenStyle(value);
|
|
126
126
|
if (flatStyle != null) {
|
|
127
127
|
compositeKeyComponent = createCompositeKeyForObject(
|
|
128
128
|
flatStyle,
|
|
@@ -160,7 +160,7 @@ export function createCompositeKeyForProps(
|
|
|
160
160
|
* If `array` contains no `AnimatedNode` instances, this returns null.
|
|
161
161
|
*/
|
|
162
162
|
function createCompositeKeyForArray(
|
|
163
|
-
array: $ReadOnlyArray<
|
|
163
|
+
array: $ReadOnlyArray<unknown>,
|
|
164
164
|
): $ReadOnlyArray<$ReadOnlyCompositeKeyComponent | null> | null {
|
|
165
165
|
let compositeKey: Array<$ReadOnlyCompositeKeyComponent | null> | null = null;
|
|
166
166
|
|
|
@@ -200,7 +200,7 @@ function createCompositeKeyForArray(
|
|
|
200
200
|
* If `object` contains no `AnimatedNode` instances, this returns null.
|
|
201
201
|
*/
|
|
202
202
|
function createCompositeKeyForObject(
|
|
203
|
-
object: $ReadOnly<{[string]:
|
|
203
|
+
object: $ReadOnly<{[string]: unknown}>,
|
|
204
204
|
allowlist?: ?AnimatedStyleAllowlist,
|
|
205
205
|
): $ReadOnly<{[string]: $ReadOnlyCompositeKeyComponent}> | null {
|
|
206
206
|
let compositeKey: {[string]: $ReadOnlyCompositeKeyComponent} | null = null;
|