react-native-windows 0.76.3 → 0.77.0-preview.1
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 +5 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
- package/Libraries/Animated/NativeAnimatedAllowlist.windows.js +122 -0
- package/Libraries/Animated/animations/Animation.js +60 -25
- package/Libraries/Animated/animations/DecayAnimation.js +26 -38
- package/Libraries/Animated/animations/SpringAnimation.js +33 -39
- package/Libraries/Animated/animations/TimingAnimation.js +34 -42
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
- package/Libraries/Animated/createAnimatedComponent.js +60 -33
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
- package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
- package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
- package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
- package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
- package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
- package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
- package/Libraries/Animated/useAnimatedProps.js +41 -35
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
- package/Libraries/Components/Button.js +9 -4
- package/Libraries/Components/Button.windows.js +19 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +2 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
- package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
- package/Libraries/Components/Pressable/Pressable.js +4 -4
- package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
- package/Libraries/Components/ScrollView/ScrollView.js +49 -88
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
- package/Libraries/Components/Switch/Switch.js +8 -6
- package/Libraries/Components/Switch/Switch.windows.js +8 -6
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
- package/Libraries/Components/TextInput/TextInput.js +37 -13
- package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
- package/Libraries/Components/TextInput/TextInputState.js +11 -13
- package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
- package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
- package/Libraries/Components/Touchable/Position.js +7 -2
- package/Libraries/Components/Touchable/Touchable.js +4 -0
- package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
- package/Libraries/Components/View/View.js +4 -4
- package/Libraries/Components/View/View.windows.js +12 -5
- package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
- package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
- package/Libraries/Components/View/ViewNativeComponent.js +6 -98
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +0 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
- package/Libraries/Core/ExceptionsManager.js +50 -29
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -10
- package/Libraries/Core/setUpDeveloperTools.js +1 -5
- package/Libraries/Core/setUpErrorHandling.js +20 -18
- package/Libraries/Core/setUpReactDevTools.js +107 -8
- package/Libraries/Core/setUpSegmentFetcher.js +1 -0
- package/Libraries/Core/setUpTimers.js +21 -18
- package/Libraries/Debugging/DebuggingOverlay.js +4 -5
- package/Libraries/Image/AssetSourceResolver.js +12 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
- package/Libraries/Image/Image.android.js +1 -5
- package/Libraries/Image/Image.d.ts +20 -29
- package/Libraries/Image/Image.ios.js +0 -2
- package/Libraries/Image/Image.windows.js +5 -1
- package/Libraries/Image/ImageBackground.js +2 -5
- package/Libraries/Image/ImageProps.js +7 -6
- package/Libraries/Image/ImageResizeMode.d.ts +8 -1
- package/Libraries/Image/ImageResizeMode.js +4 -1
- package/Libraries/Image/ImageSource.d.ts +0 -2
- package/Libraries/Image/ImageSource.js +0 -2
- package/Libraries/Image/ImageTypes.flow.js +11 -9
- package/Libraries/Image/ImageUtils.js +6 -3
- package/Libraries/Image/ImageViewNativeComponent.js +5 -3
- package/Libraries/Inspector/Inspector.js +1 -0
- package/Libraries/Inspector/NetworkOverlay.js +4 -0
- package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/InteractionManagerStub.js +176 -0
- package/Libraries/Interaction/TouchHistoryMath.js +22 -19
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +1 -2
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +7 -7
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +3 -3
- package/Libraries/LogBox/LogBox.js +18 -5
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
- package/Libraries/Modal/Modal.d.ts +12 -0
- package/Libraries/Modal/Modal.js +31 -4
- package/Libraries/Modal/Modal.windows.js +18 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
- package/Libraries/Network/XHRInterceptor.js +63 -14
- package/Libraries/Network/XMLHttpRequest.js +26 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
- package/Libraries/Pressability/HoverState.js +2 -0
- package/Libraries/Pressability/Pressability.js +2 -3
- package/Libraries/Pressability/Pressability.windows.js +2 -3
- package/Libraries/Pressability/usePressability.js +4 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
- package/Libraries/ReactNative/RendererImplementation.js +18 -17
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
- package/Libraries/ReactNative/renderApplication.js +9 -8
- package/Libraries/ReactNative/requireNativeComponent.js +5 -2
- package/Libraries/Renderer/shims/ReactFabric.js +3 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +3 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/StyleSheet/StyleSheet.js +7 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
- package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
- package/Libraries/StyleSheet/processTransform.js +3 -34
- package/Libraries/Text/Text.js +248 -249
- package/Libraries/Text/Text.windows.js +298 -292
- package/Libraries/Text/TextNativeComponent.js +0 -1
- package/Libraries/Text/TextProps.windows.js +2 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
- package/Libraries/Types/CoreEventTypes.d.ts +3 -10
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Types/CoreEventTypes.windows.js +4 -6
- package/Libraries/Utilities/Appearance.js +3 -1
- package/Libraries/Utilities/BackHandler.android.js +6 -18
- package/Libraries/Utilities/BackHandler.d.ts +0 -4
- package/Libraries/Utilities/BackHandler.ios.js +0 -7
- package/Libraries/Utilities/BackHandler.windows.js +6 -18
- package/Libraries/Utilities/HMRClient.js +3 -4
- package/Libraries/Utilities/Platform.flow.js +2 -2
- package/Libraries/Utilities/Platform.flow.windows.js +3 -2
- package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
- package/Libraries/Utilities/codegenNativeComponent.js +1 -1
- package/Libraries/Utilities/useMergeRefs.js +26 -7
- package/Libraries/WebSocket/WebSocketEvent.js +4 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
- package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
- package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
- package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
- package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
- package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
- package/PropertySheets/Bundle.Common.targets +1 -1
- package/PropertySheets/Bundle.props +3 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/PropertySheets/OutputMSBuildProperties.targets +3 -1
- package/ReactCommon/ReactCommon.vcxproj +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
- package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
- package/Shared/InspectorPackagerConnection.cpp +3 -6
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/InstanceManager.h +1 -1
- package/Shared/OInstance.h +1 -1
- package/Shared/Shared.vcxitems +17 -2
- package/Shared/Shared.vcxitems.filters +3 -1
- package/Shared/TurboModuleManager.cpp +29 -4
- package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
- package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
- package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
- package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
- package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
- package/codegen/NativePerformanceSpec.g.h +127 -3
- package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
- package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/Props.cpp +1 -0
- package/codegen/react/components/rnwcore/Props.h +1 -0
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
- package/codegen/react/components/rnwcore/States.h +0 -12
- package/codegen/rnwcoreJSI-generated.cpp +219 -186
- package/codegen/rnwcoreJSI.h +942 -511
- package/index.js +10 -3
- package/index.windows.js +10 -3
- package/jest/setup.js +36 -1
- package/just-task.js +15 -0
- package/package.json +22 -22
- package/src/private/animated/NativeAnimatedHelper.js +18 -16
- package/src/private/animated/useAnimatedPropsMemo.js +348 -0
- package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
- package/src/private/components/HScrollViewNativeComponents.js +1 -27
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
- package/src/private/components/VScrollViewNativeComponents.js +2 -25
- package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
- package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
- package/src/private/devmenu/DevMenu.d.ts +20 -0
- package/src/private/devmenu/DevMenu.js +31 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
- package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
- package/src/private/setup/setUpDOM.js +14 -6
- package/src/private/setup/setUpMutationObserver.js +5 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
- package/src/private/specs/modules/NativeAppearance.js +4 -10
- package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
- package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
- package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
- package/src/private/webapis/performance/EventTiming.js +13 -8
- package/src/private/webapis/performance/Performance.js +66 -73
- package/src/private/webapis/performance/PerformanceEntry.js +2 -5
- package/src/private/webapis/performance/PerformanceObserver.js +65 -164
- package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +11 -7
- package/src/private/webapis/performance/Utilities.js +18 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
- package/templates/cpp-lib/template.config.js +13 -7
- package/templates/templateUtils.js +10 -0
- package/types/index.d.ts +1 -1
- package/types/public/ReactNativeTypes.d.ts +4 -8
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
- package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
- package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
- package/codegen/NativePerformanceObserverSpec.g.h +0 -131
- package/src/private/components/useSyncOnScroll.js +0 -48
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
- package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
- package/types/experimental.d.ts +0 -59
- /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
package/.flowconfig
CHANGED
|
@@ -85,6 +85,9 @@
|
|
|
85
85
|
; helloworld
|
|
86
86
|
<PROJECT_ROOT>/packages/helloworld/ios/Pods/
|
|
87
87
|
|
|
88
|
+
; Ignore rn-tester Pods
|
|
89
|
+
<PROJECT_ROOT>/packages/rn-tester/Pods/
|
|
90
|
+
|
|
88
91
|
[untyped]
|
|
89
92
|
.*/node_modules/@react-native-community/cli/.*/.*
|
|
90
93
|
|
|
@@ -131,6 +134,7 @@ suppress_type=$FlowFixMeProps
|
|
|
131
134
|
suppress_type=$FlowFixMeState
|
|
132
135
|
suppress_type=$FlowFixMeEmpty
|
|
133
136
|
|
|
137
|
+
ban_spread_key_props=true
|
|
134
138
|
sharedmemory.hash_table_pow=21
|
|
135
139
|
|
|
136
140
|
[lints]
|
|
@@ -154,4 +158,4 @@ untyped-import
|
|
|
154
158
|
untyped-type-import
|
|
155
159
|
|
|
156
160
|
[version]
|
|
157
|
-
^0.
|
|
161
|
+
^0.253.0
|
|
@@ -22,6 +22,7 @@ export interface ActionSheetIOSOptions {
|
|
|
22
22
|
anchor?: number | undefined;
|
|
23
23
|
tintColor?: ColorValue | ProcessedColorValue | undefined;
|
|
24
24
|
cancelButtonTintColor?: ColorValue | ProcessedColorValue | undefined;
|
|
25
|
+
disabledButtonTintColor?: ColorValue | ProcessedColorValue | undefined;
|
|
25
26
|
userInterfaceStyle?: 'light' | 'dark' | undefined;
|
|
26
27
|
disabledButtonIndices?: number[] | undefined;
|
|
27
28
|
}
|
|
@@ -49,6 +49,7 @@ const ActionSheetIOS = {
|
|
|
49
49
|
+anchor?: ?number,
|
|
50
50
|
+tintColor?: ColorValue | ProcessedColorValue,
|
|
51
51
|
+cancelButtonTintColor?: ColorValue | ProcessedColorValue,
|
|
52
|
+
+disabledButtonTintColor?: ColorValue | ProcessedColorValue,
|
|
52
53
|
+userInterfaceStyle?: string,
|
|
53
54
|
+disabledButtonIndices?: Array<number>,
|
|
54
55
|
|},
|
|
@@ -64,6 +65,7 @@ const ActionSheetIOS = {
|
|
|
64
65
|
const {
|
|
65
66
|
tintColor,
|
|
66
67
|
cancelButtonTintColor,
|
|
68
|
+
disabledButtonTintColor,
|
|
67
69
|
destructiveButtonIndex,
|
|
68
70
|
...remainingOptions
|
|
69
71
|
} = options;
|
|
@@ -77,6 +79,10 @@ const ActionSheetIOS = {
|
|
|
77
79
|
|
|
78
80
|
const processedTintColor = processColor(tintColor);
|
|
79
81
|
const processedCancelButtonTintColor = processColor(cancelButtonTintColor);
|
|
82
|
+
const processedDisabledButtonTintColor = processColor(
|
|
83
|
+
disabledButtonTintColor,
|
|
84
|
+
);
|
|
85
|
+
|
|
80
86
|
invariant(
|
|
81
87
|
processedTintColor == null || typeof processedTintColor === 'number',
|
|
82
88
|
'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions tintColor',
|
|
@@ -86,6 +92,11 @@ const ActionSheetIOS = {
|
|
|
86
92
|
typeof processedCancelButtonTintColor === 'number',
|
|
87
93
|
'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions cancelButtonTintColor',
|
|
88
94
|
);
|
|
95
|
+
invariant(
|
|
96
|
+
processedDisabledButtonTintColor == null ||
|
|
97
|
+
typeof processedDisabledButtonTintColor === 'number',
|
|
98
|
+
'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions disabledButtonTintColor',
|
|
99
|
+
);
|
|
89
100
|
RCTActionSheetManager.showActionSheetWithOptions(
|
|
90
101
|
{
|
|
91
102
|
...remainingOptions,
|
|
@@ -93,6 +104,8 @@ const ActionSheetIOS = {
|
|
|
93
104
|
tintColor: processedTintColor,
|
|
94
105
|
// $FlowFixMe[incompatible-call]
|
|
95
106
|
cancelButtonTintColor: processedCancelButtonTintColor,
|
|
107
|
+
// $FlowFixMe[incompatible-call]
|
|
108
|
+
disabledButtonTintColor: processedDisabledButtonTintColor,
|
|
96
109
|
destructiveButtonIndices,
|
|
97
110
|
},
|
|
98
111
|
callback,
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
import type {PlatformConfig} from './AnimatedPlatformConfig';
|
|
14
14
|
|
|
15
|
-
import {findNodeHandle} from '../ReactNative/RendererProxy';
|
|
16
15
|
import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper';
|
|
16
|
+
import {findNodeHandle} from '../ReactNative/RendererProxy';
|
|
17
17
|
import AnimatedValue from './nodes/AnimatedValue';
|
|
18
18
|
import AnimatedValueXY from './nodes/AnimatedValueXY';
|
|
19
19
|
import invariant from 'invariant';
|
|
@@ -373,7 +373,7 @@ const parallel = function (
|
|
|
373
373
|
const stopTogether = !(config && config.stopTogether === false);
|
|
374
374
|
|
|
375
375
|
const result = {
|
|
376
|
-
start: function (callback?: ?EndCallback) {
|
|
376
|
+
start: function (callback?: ?EndCallback, isLooping?: boolean) {
|
|
377
377
|
if (doneCount === animations.length) {
|
|
378
378
|
callback && callback({finished: true});
|
|
379
379
|
return;
|
|
@@ -397,7 +397,7 @@ const parallel = function (
|
|
|
397
397
|
if (!animation) {
|
|
398
398
|
cb({finished: true});
|
|
399
399
|
} else {
|
|
400
|
-
animation.start(cb);
|
|
400
|
+
animation.start(cb, isLooping);
|
|
401
401
|
}
|
|
402
402
|
});
|
|
403
403
|
},
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';
|
|
12
|
+
|
|
11
13
|
import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
12
14
|
|
|
13
15
|
/**
|
|
@@ -16,7 +18,7 @@ import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNa
|
|
|
16
18
|
* In general native animated implementation should support any numeric or color property that
|
|
17
19
|
* doesn't need to be updated through the shadow view hierarchy (all non-layout properties).
|
|
18
20
|
*/
|
|
19
|
-
const SUPPORTED_COLOR_STYLES: {[string]:
|
|
21
|
+
const SUPPORTED_COLOR_STYLES: {[string]: true} = {
|
|
20
22
|
backgroundColor: true,
|
|
21
23
|
borderBottomColor: true,
|
|
22
24
|
borderColor: true,
|
|
@@ -29,7 +31,7 @@ const SUPPORTED_COLOR_STYLES: {[string]: boolean} = {
|
|
|
29
31
|
tintColor: true,
|
|
30
32
|
};
|
|
31
33
|
|
|
32
|
-
const SUPPORTED_STYLES: {[string]:
|
|
34
|
+
const SUPPORTED_STYLES: {[string]: true} = {
|
|
33
35
|
...SUPPORTED_COLOR_STYLES,
|
|
34
36
|
borderBottomEndRadius: true,
|
|
35
37
|
borderBottomLeftRadius: true,
|
|
@@ -58,7 +60,7 @@ const SUPPORTED_STYLES: {[string]: boolean} = {
|
|
|
58
60
|
translateY: true,
|
|
59
61
|
};
|
|
60
62
|
|
|
61
|
-
const SUPPORTED_TRANSFORMS: {[string]:
|
|
63
|
+
const SUPPORTED_TRANSFORMS: {[string]: true} = {
|
|
62
64
|
translateX: true,
|
|
63
65
|
translateY: true,
|
|
64
66
|
scale: true,
|
|
@@ -71,10 +73,12 @@ const SUPPORTED_TRANSFORMS: {[string]: boolean} = {
|
|
|
71
73
|
perspective: true,
|
|
72
74
|
skewX: true,
|
|
73
75
|
skewY: true,
|
|
74
|
-
|
|
76
|
+
...(ReactNativeFeatureFlags.shouldUseAnimatedObjectForTransform()
|
|
77
|
+
? {matrix: true}
|
|
78
|
+
: {}),
|
|
75
79
|
};
|
|
76
80
|
|
|
77
|
-
const SUPPORTED_INTERPOLATION_PARAMS: {[string]:
|
|
81
|
+
const SUPPORTED_INTERPOLATION_PARAMS: {[string]: true} = {
|
|
78
82
|
inputRange: true,
|
|
79
83
|
outputRange: true,
|
|
80
84
|
extrapolate: true,
|
|
@@ -82,6 +86,13 @@ const SUPPORTED_INTERPOLATION_PARAMS: {[string]: boolean} = {
|
|
|
82
86
|
extrapolateLeft: true,
|
|
83
87
|
};
|
|
84
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Default allowlist for component props that support native animated values.
|
|
91
|
+
*/
|
|
92
|
+
export default {
|
|
93
|
+
style: SUPPORTED_STYLES,
|
|
94
|
+
} as AnimatedPropsAllowlist;
|
|
95
|
+
|
|
85
96
|
export function allowInterpolationParam(param: string): void {
|
|
86
97
|
SUPPORTED_INTERPOLATION_PARAMS[param] = true;
|
|
87
98
|
}
|
|
@@ -95,17 +106,17 @@ export function allowTransformProp(prop: string): void {
|
|
|
95
106
|
}
|
|
96
107
|
|
|
97
108
|
export function isSupportedColorStyleProp(prop: string): boolean {
|
|
98
|
-
return SUPPORTED_COLOR_STYLES
|
|
109
|
+
return Object.hasOwn(SUPPORTED_COLOR_STYLES, prop);
|
|
99
110
|
}
|
|
100
111
|
|
|
101
112
|
export function isSupportedInterpolationParam(param: string): boolean {
|
|
102
|
-
return SUPPORTED_INTERPOLATION_PARAMS
|
|
113
|
+
return Object.hasOwn(SUPPORTED_INTERPOLATION_PARAMS, param);
|
|
103
114
|
}
|
|
104
115
|
|
|
105
116
|
export function isSupportedStyleProp(prop: string): boolean {
|
|
106
|
-
return SUPPORTED_STYLES
|
|
117
|
+
return Object.hasOwn(SUPPORTED_STYLES, prop);
|
|
107
118
|
}
|
|
108
119
|
|
|
109
120
|
export function isSupportedTransformProp(prop: string): boolean {
|
|
110
|
-
return SUPPORTED_TRANSFORMS
|
|
121
|
+
return Object.hasOwn(SUPPORTED_TRANSFORMS, prop);
|
|
111
122
|
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';
|
|
12
|
+
|
|
13
|
+
import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Styles allowed by the native animated implementation.
|
|
17
|
+
*
|
|
18
|
+
* In general native animated implementation should support any numeric or color property that
|
|
19
|
+
* doesn't need to be updated through the shadow view hierarchy (all non-layout properties).
|
|
20
|
+
*/
|
|
21
|
+
const SUPPORTED_COLOR_STYLES: {[string]: true} = {
|
|
22
|
+
backgroundColor: true,
|
|
23
|
+
borderBottomColor: true,
|
|
24
|
+
borderColor: true,
|
|
25
|
+
borderEndColor: true,
|
|
26
|
+
borderLeftColor: true,
|
|
27
|
+
borderRightColor: true,
|
|
28
|
+
borderStartColor: true,
|
|
29
|
+
borderTopColor: true,
|
|
30
|
+
color: true,
|
|
31
|
+
tintColor: true,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const SUPPORTED_STYLES: {[string]: true} = {
|
|
35
|
+
...SUPPORTED_COLOR_STYLES,
|
|
36
|
+
borderBottomEndRadius: true,
|
|
37
|
+
borderBottomLeftRadius: true,
|
|
38
|
+
borderBottomRightRadius: true,
|
|
39
|
+
borderBottomStartRadius: true,
|
|
40
|
+
borderEndEndRadius: true,
|
|
41
|
+
borderEndStartRadius: true,
|
|
42
|
+
borderRadius: true,
|
|
43
|
+
borderTopEndRadius: true,
|
|
44
|
+
borderTopLeftRadius: true,
|
|
45
|
+
borderTopRightRadius: true,
|
|
46
|
+
borderTopStartRadius: true,
|
|
47
|
+
borderStartEndRadius: true,
|
|
48
|
+
borderStartStartRadius: true,
|
|
49
|
+
elevation: true,
|
|
50
|
+
opacity: true,
|
|
51
|
+
transform: true,
|
|
52
|
+
zIndex: true,
|
|
53
|
+
/* ios styles */
|
|
54
|
+
shadowOpacity: true,
|
|
55
|
+
shadowRadius: true,
|
|
56
|
+
/* legacy android transform properties */
|
|
57
|
+
scaleX: true,
|
|
58
|
+
scaleY: true,
|
|
59
|
+
translateX: true,
|
|
60
|
+
translateY: true,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const SUPPORTED_TRANSFORMS: {[string]: true} = {
|
|
64
|
+
translateX: true,
|
|
65
|
+
translateY: true,
|
|
66
|
+
scale: true,
|
|
67
|
+
scaleX: true,
|
|
68
|
+
scaleY: true,
|
|
69
|
+
rotate: true,
|
|
70
|
+
rotateX: true,
|
|
71
|
+
rotateY: true,
|
|
72
|
+
rotateZ: true,
|
|
73
|
+
perspective: true,
|
|
74
|
+
skewX: true,
|
|
75
|
+
skewY: true,
|
|
76
|
+
...(ReactNativeFeatureFlags.shouldUseAnimatedObjectForTransform()
|
|
77
|
+
? {matrix: true}
|
|
78
|
+
: {}),
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const SUPPORTED_INTERPOLATION_PARAMS: {[string]: true} = {
|
|
82
|
+
inputRange: true,
|
|
83
|
+
outputRange: true,
|
|
84
|
+
extrapolate: true,
|
|
85
|
+
extrapolateRight: true,
|
|
86
|
+
extrapolateLeft: true,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Default allowlist for component props that support native animated values.
|
|
91
|
+
*/
|
|
92
|
+
export default {
|
|
93
|
+
style: SUPPORTED_STYLES,
|
|
94
|
+
} as AnimatedPropsAllowlist;
|
|
95
|
+
|
|
96
|
+
export function allowInterpolationParam(param: string): void {
|
|
97
|
+
SUPPORTED_INTERPOLATION_PARAMS[param] = true;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function allowStyleProp(prop: string): void {
|
|
101
|
+
SUPPORTED_STYLES[prop] = true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function allowTransformProp(prop: string): void {
|
|
105
|
+
SUPPORTED_TRANSFORMS[prop] = true;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function isSupportedColorStyleProp(prop: string): boolean {
|
|
109
|
+
return SUPPORTED_COLOR_STYLES.hasOwnProperty(prop);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function isSupportedInterpolationParam(param: string): boolean {
|
|
113
|
+
return SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(param);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function isSupportedStyleProp(prop: string): boolean {
|
|
117
|
+
return SUPPORTED_STYLES.hasOwnProperty(prop);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function isSupportedTransformProp(prop: string): boolean {
|
|
121
|
+
return SUPPORTED_TRANSFORMS.hasOwnProperty(prop);
|
|
122
|
+
}
|
|
@@ -4,31 +4,30 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @flow
|
|
7
|
+
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
11
|
import type {PlatformConfig} from '../AnimatedPlatformConfig';
|
|
14
12
|
import type AnimatedNode from '../nodes/AnimatedNode';
|
|
15
13
|
import type AnimatedValue from '../nodes/AnimatedValue';
|
|
16
14
|
|
|
17
|
-
import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
18
15
|
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
16
|
+
import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
19
17
|
import AnimatedProps from '../nodes/AnimatedProps';
|
|
20
18
|
|
|
21
19
|
export type EndResult = {finished: boolean, value?: number, ...};
|
|
22
20
|
export type EndCallback = (result: EndResult) => void;
|
|
23
21
|
|
|
24
|
-
export type AnimationConfig = {
|
|
22
|
+
export type AnimationConfig = $ReadOnly<{
|
|
25
23
|
isInteraction?: boolean,
|
|
26
24
|
useNativeDriver: boolean,
|
|
27
25
|
platformConfig?: PlatformConfig,
|
|
28
26
|
onComplete?: ?EndCallback,
|
|
29
27
|
iterations?: number,
|
|
30
28
|
isLooping?: boolean,
|
|
31
|
-
|
|
29
|
+
...
|
|
30
|
+
}>;
|
|
32
31
|
|
|
33
32
|
let startNativeAnimationNextId = 1;
|
|
34
33
|
|
|
@@ -36,13 +35,23 @@ let startNativeAnimationNextId = 1;
|
|
|
36
35
|
// Once an animation has been stopped or finished its course, it will
|
|
37
36
|
// not be reused.
|
|
38
37
|
export default class Animation {
|
|
38
|
+
#nativeID: ?number;
|
|
39
|
+
#onEnd: ?EndCallback;
|
|
40
|
+
#useNativeDriver: boolean;
|
|
41
|
+
|
|
39
42
|
__active: boolean;
|
|
40
43
|
__isInteraction: boolean;
|
|
41
|
-
__onEnd: ?EndCallback;
|
|
42
|
-
__iterations: number;
|
|
43
44
|
__isLooping: ?boolean;
|
|
45
|
+
__iterations: number;
|
|
46
|
+
|
|
47
|
+
constructor(config: AnimationConfig) {
|
|
48
|
+
this.#useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
|
|
44
49
|
|
|
45
|
-
|
|
50
|
+
this.__active = false;
|
|
51
|
+
this.__isInteraction = config.isInteraction ?? !this.#useNativeDriver;
|
|
52
|
+
this.__isLooping = config.isLooping;
|
|
53
|
+
this.__iterations = config.iterations ?? 1;
|
|
54
|
+
}
|
|
46
55
|
|
|
47
56
|
start(
|
|
48
57
|
fromValue: number,
|
|
@@ -50,27 +59,35 @@ export default class Animation {
|
|
|
50
59
|
onEnd: ?EndCallback,
|
|
51
60
|
previousAnimation: ?Animation,
|
|
52
61
|
animatedValue: AnimatedValue,
|
|
53
|
-
): void {
|
|
62
|
+
): void {
|
|
63
|
+
if (!this.#useNativeDriver && animatedValue.__isNative === true) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
'Attempting to run JS driven animation on animated node ' +
|
|
66
|
+
'that has been moved to "native" earlier by starting an ' +
|
|
67
|
+
'animation with `useNativeDriver: true`',
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
this.#onEnd = onEnd;
|
|
72
|
+
this.__active = true;
|
|
73
|
+
}
|
|
54
74
|
|
|
55
75
|
stop(): void {
|
|
56
|
-
if (this
|
|
57
|
-
NativeAnimatedHelper.API.stopAnimation(this
|
|
76
|
+
if (this.#nativeID != null) {
|
|
77
|
+
NativeAnimatedHelper.API.stopAnimation(this.#nativeID);
|
|
58
78
|
}
|
|
79
|
+
this.__active = false;
|
|
59
80
|
}
|
|
60
81
|
|
|
61
|
-
__getNativeAnimationConfig():
|
|
82
|
+
__getNativeAnimationConfig(): $ReadOnly<{
|
|
83
|
+
platformConfig: ?PlatformConfig,
|
|
84
|
+
...
|
|
85
|
+
}> {
|
|
62
86
|
// Subclasses that have corresponding animation implementation done in native
|
|
63
87
|
// should override this method
|
|
64
88
|
throw new Error('This animation type cannot be offloaded to native');
|
|
65
89
|
}
|
|
66
90
|
|
|
67
|
-
// Helper function for subclasses to make sure onEnd is only called once.
|
|
68
|
-
__debouncedOnEnd(result: EndResult): void {
|
|
69
|
-
const onEnd = this.__onEnd;
|
|
70
|
-
this.__onEnd = null;
|
|
71
|
-
onEnd && onEnd(result);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
91
|
__findAnimatedPropsNodes(node: AnimatedNode): Array<AnimatedProps> {
|
|
75
92
|
const result = [];
|
|
76
93
|
|
|
@@ -86,7 +103,11 @@ export default class Animation {
|
|
|
86
103
|
return result;
|
|
87
104
|
}
|
|
88
105
|
|
|
89
|
-
|
|
106
|
+
__startAnimationIfNative(animatedValue: AnimatedValue): boolean {
|
|
107
|
+
if (!this.#useNativeDriver) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
|
|
90
111
|
const startNativeAnimationWaitId = `${startNativeAnimationNextId}:startAnimation`;
|
|
91
112
|
startNativeAnimationNextId += 1;
|
|
92
113
|
NativeAnimatedHelper.API.setWaitingForIdentifier(
|
|
@@ -95,13 +116,13 @@ export default class Animation {
|
|
|
95
116
|
try {
|
|
96
117
|
const config = this.__getNativeAnimationConfig();
|
|
97
118
|
animatedValue.__makeNative(config.platformConfig);
|
|
98
|
-
this
|
|
119
|
+
this.#nativeID = NativeAnimatedHelper.generateNewAnimationId();
|
|
99
120
|
NativeAnimatedHelper.API.startAnimatingNode(
|
|
100
|
-
this
|
|
121
|
+
this.#nativeID,
|
|
101
122
|
animatedValue.__getNativeTag(),
|
|
102
123
|
config,
|
|
103
124
|
result => {
|
|
104
|
-
this.
|
|
125
|
+
this.__notifyAnimationEnd(result);
|
|
105
126
|
|
|
106
127
|
// When using natively driven animations, once the animation completes,
|
|
107
128
|
// we need to ensure that the JS side nodes are synced with the updated
|
|
@@ -112,7 +133,7 @@ export default class Animation {
|
|
|
112
133
|
|
|
113
134
|
if (
|
|
114
135
|
ReactNativeFeatureFlags.shouldSkipStateUpdatesForLoopingAnimations() &&
|
|
115
|
-
this.__isLooping
|
|
136
|
+
this.__isLooping === true
|
|
116
137
|
) {
|
|
117
138
|
return;
|
|
118
139
|
}
|
|
@@ -125,6 +146,8 @@ export default class Animation {
|
|
|
125
146
|
}
|
|
126
147
|
},
|
|
127
148
|
);
|
|
149
|
+
|
|
150
|
+
return true;
|
|
128
151
|
} catch (e) {
|
|
129
152
|
throw e;
|
|
130
153
|
} finally {
|
|
@@ -133,4 +156,16 @@ export default class Animation {
|
|
|
133
156
|
);
|
|
134
157
|
}
|
|
135
158
|
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Notify the completion callback that the animation has ended. The completion
|
|
162
|
+
* callback will never be called more than once.
|
|
163
|
+
*/
|
|
164
|
+
__notifyAnimationEnd(result: EndResult): void {
|
|
165
|
+
const callback = this.#onEnd;
|
|
166
|
+
if (callback != null) {
|
|
167
|
+
this.#onEnd = null;
|
|
168
|
+
queueMicrotask(() => callback(result));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
136
171
|
}
|
|
@@ -4,36 +4,35 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @flow
|
|
7
|
+
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
11
|
import type {PlatformConfig} from '../AnimatedPlatformConfig';
|
|
14
12
|
import type AnimatedValue from '../nodes/AnimatedValue';
|
|
15
13
|
import type {AnimationConfig, EndCallback} from './Animation';
|
|
16
14
|
|
|
17
|
-
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
18
15
|
import Animation from './Animation';
|
|
19
16
|
|
|
20
|
-
export type DecayAnimationConfig = {
|
|
17
|
+
export type DecayAnimationConfig = $ReadOnly<{
|
|
21
18
|
...AnimationConfig,
|
|
22
19
|
velocity:
|
|
23
20
|
| number
|
|
24
|
-
| {
|
|
21
|
+
| $ReadOnly<{
|
|
25
22
|
x: number,
|
|
26
23
|
y: number,
|
|
27
24
|
...
|
|
28
|
-
}
|
|
25
|
+
}>,
|
|
29
26
|
deceleration?: number,
|
|
30
|
-
|
|
27
|
+
...
|
|
28
|
+
}>;
|
|
31
29
|
|
|
32
|
-
export type DecayAnimationConfigSingle = {
|
|
30
|
+
export type DecayAnimationConfigSingle = $ReadOnly<{
|
|
33
31
|
...AnimationConfig,
|
|
34
32
|
velocity: number,
|
|
35
33
|
deceleration?: number,
|
|
36
|
-
|
|
34
|
+
...
|
|
35
|
+
}>;
|
|
37
36
|
|
|
38
37
|
export default class DecayAnimation extends Animation {
|
|
39
38
|
_startTime: number;
|
|
@@ -42,27 +41,25 @@ export default class DecayAnimation extends Animation {
|
|
|
42
41
|
_deceleration: number;
|
|
43
42
|
_velocity: number;
|
|
44
43
|
_onUpdate: (value: number) => void;
|
|
45
|
-
_animationFrame:
|
|
46
|
-
_useNativeDriver: boolean;
|
|
44
|
+
_animationFrame: ?AnimationFrameID;
|
|
47
45
|
_platformConfig: ?PlatformConfig;
|
|
48
46
|
|
|
49
47
|
constructor(config: DecayAnimationConfigSingle) {
|
|
50
|
-
super();
|
|
48
|
+
super(config);
|
|
49
|
+
|
|
51
50
|
this._deceleration = config.deceleration ?? 0.998;
|
|
52
51
|
this._velocity = config.velocity;
|
|
53
|
-
this._useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
|
|
54
52
|
this._platformConfig = config.platformConfig;
|
|
55
|
-
this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;
|
|
56
|
-
this.__iterations = config.iterations ?? 1;
|
|
57
53
|
}
|
|
58
54
|
|
|
59
|
-
__getNativeAnimationConfig(): {
|
|
55
|
+
__getNativeAnimationConfig(): $ReadOnly<{
|
|
60
56
|
deceleration: number,
|
|
61
57
|
iterations: number,
|
|
62
58
|
platformConfig: ?PlatformConfig,
|
|
63
|
-
type:
|
|
59
|
+
type: 'decay',
|
|
64
60
|
velocity: number,
|
|
65
|
-
|
|
61
|
+
...
|
|
62
|
+
}> {
|
|
66
63
|
return {
|
|
67
64
|
type: 'decay',
|
|
68
65
|
deceleration: this._deceleration,
|
|
@@ -79,26 +76,16 @@ export default class DecayAnimation extends Animation {
|
|
|
79
76
|
previousAnimation: ?Animation,
|
|
80
77
|
animatedValue: AnimatedValue,
|
|
81
78
|
): void {
|
|
82
|
-
|
|
79
|
+
super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);
|
|
80
|
+
|
|
83
81
|
this._lastValue = fromValue;
|
|
84
82
|
this._fromValue = fromValue;
|
|
85
83
|
this._onUpdate = onUpdate;
|
|
86
|
-
this.__onEnd = onEnd;
|
|
87
84
|
this._startTime = Date.now();
|
|
88
85
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
'that has been moved to "native" earlier by starting an ' +
|
|
93
|
-
'animation with `useNativeDriver: true`',
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (this._useNativeDriver) {
|
|
98
|
-
this.__startNativeAnimation(animatedValue);
|
|
99
|
-
} else {
|
|
100
|
-
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
101
|
-
this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));
|
|
86
|
+
const useNativeDriver = this.__startAnimationIfNative(animatedValue);
|
|
87
|
+
if (!useNativeDriver) {
|
|
88
|
+
this._animationFrame = requestAnimationFrame(() => this.onUpdate());
|
|
102
89
|
}
|
|
103
90
|
}
|
|
104
91
|
|
|
@@ -113,7 +100,7 @@ export default class DecayAnimation extends Animation {
|
|
|
113
100
|
this._onUpdate(value);
|
|
114
101
|
|
|
115
102
|
if (Math.abs(this._lastValue - value) < 0.1) {
|
|
116
|
-
this.
|
|
103
|
+
this.__notifyAnimationEnd({finished: true});
|
|
117
104
|
return;
|
|
118
105
|
}
|
|
119
106
|
|
|
@@ -126,8 +113,9 @@ export default class DecayAnimation extends Animation {
|
|
|
126
113
|
|
|
127
114
|
stop(): void {
|
|
128
115
|
super.stop();
|
|
129
|
-
this.
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
if (this._animationFrame != null) {
|
|
117
|
+
global.cancelAnimationFrame(this._animationFrame);
|
|
118
|
+
}
|
|
119
|
+
this.__notifyAnimationEnd({finished: false});
|
|
132
120
|
}
|
|
133
121
|
}
|