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
|
@@ -4,25 +4,22 @@
|
|
|
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 AnimatedInterpolation from '../nodes/AnimatedInterpolation';
|
|
15
13
|
import type AnimatedValue from '../nodes/AnimatedValue';
|
|
16
14
|
import type AnimatedValueXY from '../nodes/AnimatedValueXY';
|
|
17
15
|
import type {AnimationConfig, EndCallback} from './Animation';
|
|
18
16
|
|
|
19
|
-
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
20
17
|
import AnimatedColor from '../nodes/AnimatedColor';
|
|
21
18
|
import * as SpringConfig from '../SpringConfig';
|
|
22
19
|
import Animation from './Animation';
|
|
23
20
|
import invariant from 'invariant';
|
|
24
21
|
|
|
25
|
-
export type SpringAnimationConfig = {
|
|
22
|
+
export type SpringAnimationConfig = $ReadOnly<{
|
|
26
23
|
...AnimationConfig,
|
|
27
24
|
toValue:
|
|
28
25
|
| number
|
|
@@ -47,11 +44,11 @@ export type SpringAnimationConfig = {
|
|
|
47
44
|
restSpeedThreshold?: number,
|
|
48
45
|
velocity?:
|
|
49
46
|
| number
|
|
50
|
-
| {
|
|
47
|
+
| $ReadOnly<{
|
|
51
48
|
x: number,
|
|
52
49
|
y: number,
|
|
53
50
|
...
|
|
54
|
-
}
|
|
51
|
+
}>,
|
|
55
52
|
bounciness?: number,
|
|
56
53
|
speed?: number,
|
|
57
54
|
tension?: number,
|
|
@@ -60,9 +57,10 @@ export type SpringAnimationConfig = {
|
|
|
60
57
|
damping?: number,
|
|
61
58
|
mass?: number,
|
|
62
59
|
delay?: number,
|
|
63
|
-
|
|
60
|
+
...
|
|
61
|
+
}>;
|
|
64
62
|
|
|
65
|
-
export type SpringAnimationConfigSingle = {
|
|
63
|
+
export type SpringAnimationConfigSingle = $ReadOnly<{
|
|
66
64
|
...AnimationConfig,
|
|
67
65
|
toValue: number,
|
|
68
66
|
overshootClamping?: boolean,
|
|
@@ -77,7 +75,14 @@ export type SpringAnimationConfigSingle = {
|
|
|
77
75
|
damping?: number,
|
|
78
76
|
mass?: number,
|
|
79
77
|
delay?: number,
|
|
80
|
-
|
|
78
|
+
...
|
|
79
|
+
}>;
|
|
80
|
+
|
|
81
|
+
opaque type SpringAnimationInternalState = $ReadOnly<{
|
|
82
|
+
lastPosition: number,
|
|
83
|
+
lastVelocity: number,
|
|
84
|
+
lastTime: number,
|
|
85
|
+
}>;
|
|
81
86
|
|
|
82
87
|
export default class SpringAnimation extends Animation {
|
|
83
88
|
_overshootClamping: boolean;
|
|
@@ -93,17 +98,16 @@ export default class SpringAnimation extends Animation {
|
|
|
93
98
|
_mass: number;
|
|
94
99
|
_initialVelocity: number;
|
|
95
100
|
_delay: number;
|
|
96
|
-
_timeout:
|
|
101
|
+
_timeout: ?TimeoutID;
|
|
97
102
|
_startTime: number;
|
|
98
103
|
_lastTime: number;
|
|
99
104
|
_frameTime: number;
|
|
100
105
|
_onUpdate: (value: number) => void;
|
|
101
|
-
_animationFrame:
|
|
102
|
-
_useNativeDriver: boolean;
|
|
106
|
+
_animationFrame: ?AnimationFrameID;
|
|
103
107
|
_platformConfig: ?PlatformConfig;
|
|
104
108
|
|
|
105
109
|
constructor(config: SpringAnimationConfigSingle) {
|
|
106
|
-
super();
|
|
110
|
+
super(config);
|
|
107
111
|
|
|
108
112
|
this._overshootClamping = config.overshootClamping ?? false;
|
|
109
113
|
this._restDisplacementThreshold = config.restDisplacementThreshold ?? 0.001;
|
|
@@ -112,10 +116,7 @@ export default class SpringAnimation extends Animation {
|
|
|
112
116
|
this._lastVelocity = config.velocity ?? 0;
|
|
113
117
|
this._toValue = config.toValue;
|
|
114
118
|
this._delay = config.delay ?? 0;
|
|
115
|
-
this._useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
|
|
116
119
|
this._platformConfig = config.platformConfig;
|
|
117
|
-
this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;
|
|
118
|
-
this.__iterations = config.iterations ?? 1;
|
|
119
120
|
|
|
120
121
|
if (
|
|
121
122
|
config.stiffness !== undefined ||
|
|
@@ -167,7 +168,7 @@ export default class SpringAnimation extends Animation {
|
|
|
167
168
|
invariant(this._mass > 0, 'Mass value must be greater than 0');
|
|
168
169
|
}
|
|
169
170
|
|
|
170
|
-
__getNativeAnimationConfig(): {
|
|
171
|
+
__getNativeAnimationConfig(): $ReadOnly<{
|
|
171
172
|
damping: number,
|
|
172
173
|
initialVelocity: number,
|
|
173
174
|
iterations: number,
|
|
@@ -177,9 +178,10 @@ export default class SpringAnimation extends Animation {
|
|
|
177
178
|
restDisplacementThreshold: number,
|
|
178
179
|
restSpeedThreshold: number,
|
|
179
180
|
stiffness: number,
|
|
180
|
-
toValue:
|
|
181
|
-
type:
|
|
182
|
-
|
|
181
|
+
toValue: number,
|
|
182
|
+
type: 'spring',
|
|
183
|
+
...
|
|
184
|
+
}> {
|
|
183
185
|
return {
|
|
184
186
|
type: 'spring',
|
|
185
187
|
overshootClamping: this._overshootClamping,
|
|
@@ -202,12 +204,12 @@ export default class SpringAnimation extends Animation {
|
|
|
202
204
|
previousAnimation: ?Animation,
|
|
203
205
|
animatedValue: AnimatedValue,
|
|
204
206
|
): void {
|
|
205
|
-
|
|
207
|
+
super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);
|
|
208
|
+
|
|
206
209
|
this._startPosition = fromValue;
|
|
207
210
|
this._lastPosition = this._startPosition;
|
|
208
211
|
|
|
209
212
|
this._onUpdate = onUpdate;
|
|
210
|
-
this.__onEnd = onEnd;
|
|
211
213
|
this._lastTime = Date.now();
|
|
212
214
|
this._frameTime = 0.0;
|
|
213
215
|
|
|
@@ -221,17 +223,8 @@ export default class SpringAnimation extends Animation {
|
|
|
221
223
|
}
|
|
222
224
|
|
|
223
225
|
const start = () => {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
'Attempting to run JS driven animation on animated node ' +
|
|
227
|
-
'that has been moved to "native" earlier by starting an ' +
|
|
228
|
-
'animation with `useNativeDriver: true`',
|
|
229
|
-
);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (this._useNativeDriver) {
|
|
233
|
-
this.__startNativeAnimation(animatedValue);
|
|
234
|
-
} else {
|
|
226
|
+
const useNativeDriver = this.__startAnimationIfNative(animatedValue);
|
|
227
|
+
if (!useNativeDriver) {
|
|
235
228
|
this.onUpdate();
|
|
236
229
|
}
|
|
237
230
|
};
|
|
@@ -244,7 +237,7 @@ export default class SpringAnimation extends Animation {
|
|
|
244
237
|
}
|
|
245
238
|
}
|
|
246
239
|
|
|
247
|
-
getInternalState():
|
|
240
|
+
getInternalState(): SpringAnimationInternalState {
|
|
248
241
|
return {
|
|
249
242
|
lastPosition: this._lastPosition,
|
|
250
243
|
lastVelocity: this._lastVelocity,
|
|
@@ -361,7 +354,7 @@ export default class SpringAnimation extends Animation {
|
|
|
361
354
|
this._onUpdate(this._toValue);
|
|
362
355
|
}
|
|
363
356
|
|
|
364
|
-
this.
|
|
357
|
+
this.__notifyAnimationEnd({finished: true});
|
|
365
358
|
return;
|
|
366
359
|
}
|
|
367
360
|
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
@@ -370,9 +363,10 @@ export default class SpringAnimation extends Animation {
|
|
|
370
363
|
|
|
371
364
|
stop(): void {
|
|
372
365
|
super.stop();
|
|
373
|
-
this.__active = false;
|
|
374
366
|
clearTimeout(this._timeout);
|
|
375
|
-
|
|
376
|
-
|
|
367
|
+
if (this._animationFrame != null) {
|
|
368
|
+
global.cancelAnimationFrame(this._animationFrame);
|
|
369
|
+
}
|
|
370
|
+
this.__notifyAnimationEnd({finished: false});
|
|
377
371
|
}
|
|
378
372
|
}
|
|
@@ -4,12 +4,10 @@
|
|
|
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 {RgbaValue} from '../nodes/AnimatedColor';
|
|
15
13
|
import type AnimatedInterpolation from '../nodes/AnimatedInterpolation';
|
|
@@ -17,7 +15,6 @@ import type AnimatedValue from '../nodes/AnimatedValue';
|
|
|
17
15
|
import type AnimatedValueXY from '../nodes/AnimatedValueXY';
|
|
18
16
|
import type {AnimationConfig, EndCallback} from './Animation';
|
|
19
17
|
|
|
20
|
-
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
21
18
|
import AnimatedColor from '../nodes/AnimatedColor';
|
|
22
19
|
import Animation from './Animation';
|
|
23
20
|
|
|
@@ -26,11 +23,11 @@ export type TimingAnimationConfig = $ReadOnly<{
|
|
|
26
23
|
toValue:
|
|
27
24
|
| number
|
|
28
25
|
| AnimatedValue
|
|
29
|
-
| {
|
|
26
|
+
| $ReadOnly<{
|
|
30
27
|
x: number,
|
|
31
28
|
y: number,
|
|
32
29
|
...
|
|
33
|
-
}
|
|
30
|
+
}>
|
|
34
31
|
| AnimatedValueXY
|
|
35
32
|
| RgbaValue
|
|
36
33
|
| AnimatedColor
|
|
@@ -38,6 +35,7 @@ export type TimingAnimationConfig = $ReadOnly<{
|
|
|
38
35
|
easing?: (value: number) => number,
|
|
39
36
|
duration?: number,
|
|
40
37
|
delay?: number,
|
|
38
|
+
...
|
|
41
39
|
}>;
|
|
42
40
|
|
|
43
41
|
export type TimingAnimationConfigSingle = $ReadOnly<{
|
|
@@ -46,6 +44,7 @@ export type TimingAnimationConfigSingle = $ReadOnly<{
|
|
|
46
44
|
easing?: (value: number) => number,
|
|
47
45
|
duration?: number,
|
|
48
46
|
delay?: number,
|
|
47
|
+
...
|
|
49
48
|
}>;
|
|
50
49
|
|
|
51
50
|
let _easeInOut;
|
|
@@ -65,25 +64,28 @@ export default class TimingAnimation extends Animation {
|
|
|
65
64
|
_delay: number;
|
|
66
65
|
_easing: (value: number) => number;
|
|
67
66
|
_onUpdate: (value: number) => void;
|
|
68
|
-
_animationFrame:
|
|
69
|
-
_timeout:
|
|
70
|
-
_useNativeDriver: boolean;
|
|
67
|
+
_animationFrame: ?AnimationFrameID;
|
|
68
|
+
_timeout: ?TimeoutID;
|
|
71
69
|
_platformConfig: ?PlatformConfig;
|
|
72
70
|
|
|
73
71
|
constructor(config: TimingAnimationConfigSingle) {
|
|
74
|
-
super();
|
|
72
|
+
super(config);
|
|
73
|
+
|
|
75
74
|
this._toValue = config.toValue;
|
|
76
75
|
this._easing = config.easing ?? easeInOut();
|
|
77
76
|
this._duration = config.duration ?? 500;
|
|
78
77
|
this._delay = config.delay ?? 0;
|
|
79
|
-
this.__iterations = config.iterations ?? 1;
|
|
80
|
-
this._useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
|
|
81
78
|
this._platformConfig = config.platformConfig;
|
|
82
|
-
this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;
|
|
83
|
-
this.__isLooping = config.isLooping;
|
|
84
79
|
}
|
|
85
80
|
|
|
86
|
-
__getNativeAnimationConfig():
|
|
81
|
+
__getNativeAnimationConfig(): $ReadOnly<{
|
|
82
|
+
type: 'frames',
|
|
83
|
+
frames: $ReadOnlyArray<number>,
|
|
84
|
+
toValue: number,
|
|
85
|
+
iterations: number,
|
|
86
|
+
platformConfig: ?PlatformConfig,
|
|
87
|
+
...
|
|
88
|
+
}> {
|
|
87
89
|
const frameDuration = 1000.0 / 60.0;
|
|
88
90
|
const frames = [];
|
|
89
91
|
const numFrames = Math.round(this._duration / frameDuration);
|
|
@@ -107,35 +109,24 @@ export default class TimingAnimation extends Animation {
|
|
|
107
109
|
previousAnimation: ?Animation,
|
|
108
110
|
animatedValue: AnimatedValue,
|
|
109
111
|
): void {
|
|
110
|
-
|
|
112
|
+
super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);
|
|
113
|
+
|
|
111
114
|
this._fromValue = fromValue;
|
|
112
115
|
this._onUpdate = onUpdate;
|
|
113
|
-
this.__onEnd = onEnd;
|
|
114
116
|
|
|
115
117
|
const start = () => {
|
|
116
|
-
|
|
117
|
-
throw new Error(
|
|
118
|
-
'Attempting to run JS driven animation on animated node ' +
|
|
119
|
-
'that has been moved to "native" earlier by starting an ' +
|
|
120
|
-
'animation with `useNativeDriver: true`',
|
|
121
|
-
);
|
|
122
|
-
}
|
|
118
|
+
this._startTime = Date.now();
|
|
123
119
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (this._useNativeDriver) {
|
|
133
|
-
this.__startNativeAnimation(animatedValue);
|
|
120
|
+
const useNativeDriver = this.__startAnimationIfNative(animatedValue);
|
|
121
|
+
if (!useNativeDriver) {
|
|
122
|
+
// Animations that sometimes have 0 duration and sometimes do not
|
|
123
|
+
// still need to use the native driver when duration is 0 so as to
|
|
124
|
+
// not cause intermixed JS and native animations.
|
|
125
|
+
if (this._duration === 0) {
|
|
126
|
+
this._onUpdate(this._toValue);
|
|
127
|
+
this.__notifyAnimationEnd({finished: true});
|
|
134
128
|
} else {
|
|
135
|
-
this._animationFrame = requestAnimationFrame(
|
|
136
|
-
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
137
|
-
this.onUpdate.bind(this),
|
|
138
|
-
);
|
|
129
|
+
this._animationFrame = requestAnimationFrame(() => this.onUpdate());
|
|
139
130
|
}
|
|
140
131
|
}
|
|
141
132
|
};
|
|
@@ -156,7 +147,7 @@ export default class TimingAnimation extends Animation {
|
|
|
156
147
|
this._fromValue + this._easing(1) * (this._toValue - this._fromValue),
|
|
157
148
|
);
|
|
158
149
|
}
|
|
159
|
-
this.
|
|
150
|
+
this.__notifyAnimationEnd({finished: true});
|
|
160
151
|
return;
|
|
161
152
|
}
|
|
162
153
|
|
|
@@ -173,9 +164,10 @@ export default class TimingAnimation extends Animation {
|
|
|
173
164
|
|
|
174
165
|
stop(): void {
|
|
175
166
|
super.stop();
|
|
176
|
-
this.__active = false;
|
|
177
167
|
clearTimeout(this._timeout);
|
|
178
|
-
|
|
179
|
-
|
|
168
|
+
if (this._animationFrame != null) {
|
|
169
|
+
global.cancelAnimationFrame(this._animationFrame);
|
|
170
|
+
}
|
|
171
|
+
this.__notifyAnimationEnd({finished: false});
|
|
180
172
|
}
|
|
181
173
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {SectionBase} from '../../Lists/SectionList';
|
|
11
12
|
import type {AnimatedComponentType} from '../createAnimatedComponent';
|
|
12
13
|
|
|
13
14
|
import SectionList from '../../Lists/SectionList';
|
|
@@ -16,5 +17,6 @@ import * as React from 'react';
|
|
|
16
17
|
|
|
17
18
|
export default (createAnimatedComponent(SectionList): AnimatedComponentType<
|
|
18
19
|
React.ElementConfig<typeof SectionList>,
|
|
19
|
-
|
|
20
|
+
// $FlowExpectedError[unclear-type]
|
|
21
|
+
SectionList<SectionBase<any>>,
|
|
20
22
|
>);
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';
|
|
12
|
+
|
|
11
13
|
import composeStyles from '../../src/private/styles/composeStyles';
|
|
12
14
|
import View from '../Components/View/View';
|
|
13
15
|
import useMergeRefs from '../Utilities/useMergeRefs';
|
|
@@ -25,46 +27,71 @@ export type AnimatedProps<Props: {...}> = {
|
|
|
25
27
|
}>)]: any,
|
|
26
28
|
};
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
// We could use a mapped type here to introduce acceptable Animated variants
|
|
31
|
+
// of properties, instead of doing so in the core StyleSheetTypes
|
|
32
|
+
// Inexact Props are not supported, they'll be made exact here.
|
|
33
|
+
export type StrictAnimatedProps<Props: {...}> = $ReadOnly<{
|
|
34
|
+
...$Exact<Props>,
|
|
35
|
+
passthroughAnimatedPropExplicitValues?: ?Props,
|
|
36
|
+
}>;
|
|
37
|
+
|
|
38
|
+
export type AnimatedComponentType<Props: {...}, +Instance = mixed> = component(
|
|
39
|
+
ref: React.RefSetter<Instance>,
|
|
40
|
+
...AnimatedProps<Props>
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
export type StrictAnimatedComponentType<
|
|
29
44
|
Props: {...},
|
|
30
45
|
+Instance = mixed,
|
|
31
|
-
> = React.
|
|
46
|
+
> = component(ref: React.RefSetter<Instance>, ...StrictAnimatedProps<Props>);
|
|
32
47
|
|
|
33
48
|
export default function createAnimatedComponent<TProps: {...}, TInstance>(
|
|
34
|
-
Component: React.
|
|
49
|
+
Component: component(ref: React.RefSetter<TInstance>, ...TProps),
|
|
35
50
|
): AnimatedComponentType<TProps, TInstance> {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
return unstable_createAnimatedComponentWithAllowlist(Component, null);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function unstable_createAnimatedComponentWithAllowlist<
|
|
55
|
+
TProps: {...},
|
|
56
|
+
TInstance,
|
|
57
|
+
>(
|
|
58
|
+
Component: component(ref: React.RefSetter<TInstance>, ...TProps),
|
|
59
|
+
allowlist: ?AnimatedPropsAllowlist,
|
|
60
|
+
): StrictAnimatedComponentType<TProps, TInstance> {
|
|
61
|
+
const AnimatedComponent = React.forwardRef<
|
|
62
|
+
StrictAnimatedProps<TProps>,
|
|
63
|
+
TInstance,
|
|
64
|
+
>((props, forwardedRef) => {
|
|
65
|
+
const [reducedProps, callbackRef] = useAnimatedProps<TProps, TInstance>(
|
|
66
|
+
// $FlowFixMe[incompatible-call]
|
|
67
|
+
props,
|
|
68
|
+
allowlist,
|
|
69
|
+
);
|
|
70
|
+
const ref = useMergeRefs<TInstance>(callbackRef, forwardedRef);
|
|
43
71
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
72
|
+
// Some components require explicit passthrough values for animation
|
|
73
|
+
// to work properly. For example, if an animated component is
|
|
74
|
+
// transformed and Pressable, onPress will not work after transform
|
|
75
|
+
// without these passthrough values.
|
|
76
|
+
// $FlowFixMe[prop-missing]
|
|
77
|
+
const {passthroughAnimatedPropExplicitValues, style} = reducedProps;
|
|
78
|
+
const passthroughStyle = passthroughAnimatedPropExplicitValues?.style;
|
|
79
|
+
const mergedStyle = useMemo(
|
|
80
|
+
() => composeStyles(style, passthroughStyle),
|
|
81
|
+
[passthroughStyle, style],
|
|
82
|
+
);
|
|
55
83
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
);
|
|
84
|
+
// NOTE: It is important that `passthroughAnimatedPropExplicitValues` is
|
|
85
|
+
// spread after `reducedProps` but before `style`.
|
|
86
|
+
return (
|
|
87
|
+
<Component
|
|
88
|
+
{...reducedProps}
|
|
89
|
+
{...passthroughAnimatedPropExplicitValues}
|
|
90
|
+
style={mergedStyle}
|
|
91
|
+
ref={ref}
|
|
92
|
+
/>
|
|
93
|
+
);
|
|
94
|
+
});
|
|
68
95
|
|
|
69
96
|
AnimatedComponent.displayName = `Animated(${
|
|
70
97
|
Component.displayName || 'Anonymous'
|
|
@@ -15,9 +15,9 @@ import type {ColorValue} from '../../StyleSheet/StyleSheet';
|
|
|
15
15
|
import type {NativeColorValue} from '../../StyleSheet/StyleSheetTypes';
|
|
16
16
|
import type {PlatformConfig} from '../AnimatedPlatformConfig';
|
|
17
17
|
|
|
18
|
+
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
18
19
|
import normalizeColor from '../../StyleSheet/normalizeColor';
|
|
19
20
|
import {processColorObject} from '../../StyleSheet/PlatformColorValueTypes';
|
|
20
|
-
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
21
21
|
import AnimatedValue, {flushValue} from './AnimatedValue';
|
|
22
22
|
import AnimatedWithChildren from './AnimatedWithChildren';
|
|
23
23
|
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
import type {PlatformConfig} from '../AnimatedPlatformConfig';
|
|
16
16
|
import type AnimatedNode from './AnimatedNode';
|
|
17
17
|
|
|
18
|
+
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
18
19
|
import {validateInterpolation} from '../../../src/private/animated/NativeAnimatedValidation';
|
|
19
20
|
import normalizeColor from '../../StyleSheet/normalizeColor';
|
|
20
21
|
import processColor from '../../StyleSheet/processColor';
|
|
21
22
|
import Easing from '../Easing';
|
|
22
|
-
import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
|
|
23
23
|
import AnimatedWithChildren from './AnimatedWithChildren';
|
|
24
24
|
import invariant from 'invariant';
|
|
25
25
|
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
11
|
import type {EventSubscription} from '../../vendor/emitter/EventEmitter';
|
|
14
12
|
import type {PlatformConfig} from '../AnimatedPlatformConfig';
|
|
15
13
|
|
|
@@ -29,12 +27,11 @@ let _assertNativeAnimatedModule: ?() => void = () => {
|
|
|
29
27
|
_assertNativeAnimatedModule = null;
|
|
30
28
|
};
|
|
31
29
|
|
|
32
|
-
// Note(vjeux): this would be better as an interface but flow doesn't
|
|
33
|
-
// support them yet
|
|
34
30
|
export default class AnimatedNode {
|
|
35
31
|
#listeners: Map<string, ValueListenerCallback> = new Map();
|
|
32
|
+
#updateSubscription: ?EventSubscription = null;
|
|
33
|
+
|
|
36
34
|
_platformConfig: ?PlatformConfig = undefined;
|
|
37
|
-
__nativeAnimatedValueListener: ?EventSubscription = null;
|
|
38
35
|
__attach(): void {}
|
|
39
36
|
__detach(): void {
|
|
40
37
|
this.removeAllListeners();
|
|
@@ -56,16 +53,17 @@ export default class AnimatedNode {
|
|
|
56
53
|
/* Methods and props used by native Animated impl */
|
|
57
54
|
__isNative: boolean = false;
|
|
58
55
|
__nativeTag: ?number = undefined;
|
|
59
|
-
__shouldUpdateListenersForNewNativeTag: boolean = false;
|
|
60
56
|
|
|
61
57
|
__makeNative(platformConfig: ?PlatformConfig): void {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
58
|
+
// Subclasses are expected to set `__isNative` to true before this.
|
|
59
|
+
invariant(
|
|
60
|
+
this.__isNative,
|
|
61
|
+
'This node cannot be made a "native" animated node',
|
|
62
|
+
);
|
|
65
63
|
|
|
66
64
|
this._platformConfig = platformConfig;
|
|
67
65
|
if (this.#listeners.size > 0) {
|
|
68
|
-
this
|
|
66
|
+
this.#ensureUpdateSubscriptionExists();
|
|
69
67
|
}
|
|
70
68
|
}
|
|
71
69
|
|
|
@@ -80,7 +78,7 @@ export default class AnimatedNode {
|
|
|
80
78
|
const id = String(_uniqueId++);
|
|
81
79
|
this.#listeners.set(id, callback);
|
|
82
80
|
if (this.__isNative) {
|
|
83
|
-
this
|
|
81
|
+
this.#ensureUpdateSubscriptionExists();
|
|
84
82
|
}
|
|
85
83
|
return id;
|
|
86
84
|
}
|
|
@@ -94,7 +92,7 @@ export default class AnimatedNode {
|
|
|
94
92
|
removeListener(id: string): void {
|
|
95
93
|
this.#listeners.delete(id);
|
|
96
94
|
if (this.__isNative && this.#listeners.size === 0) {
|
|
97
|
-
this
|
|
95
|
+
this.#updateSubscription?.remove();
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
98
|
|
|
@@ -106,7 +104,7 @@ export default class AnimatedNode {
|
|
|
106
104
|
removeAllListeners(): void {
|
|
107
105
|
this.#listeners.clear();
|
|
108
106
|
if (this.__isNative) {
|
|
109
|
-
this
|
|
107
|
+
this.#updateSubscription?.remove();
|
|
110
108
|
}
|
|
111
109
|
}
|
|
112
110
|
|
|
@@ -114,33 +112,36 @@ export default class AnimatedNode {
|
|
|
114
112
|
return this.#listeners.size > 0;
|
|
115
113
|
}
|
|
116
114
|
|
|
117
|
-
|
|
118
|
-
if (
|
|
119
|
-
this.__nativeAnimatedValueListener &&
|
|
120
|
-
!this.__shouldUpdateListenersForNewNativeTag
|
|
121
|
-
) {
|
|
115
|
+
#ensureUpdateSubscriptionExists(): void {
|
|
116
|
+
if (this.#updateSubscription != null) {
|
|
122
117
|
return;
|
|
123
118
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
this._stopListeningForNativeValueUpdates();
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
startListeningToAnimatedNodeValue(this.__getNativeTag());
|
|
131
|
-
this.__nativeAnimatedValueListener =
|
|
119
|
+
const nativeTag = this.__getNativeTag();
|
|
120
|
+
startListeningToAnimatedNodeValue(nativeTag);
|
|
121
|
+
const subscription: EventSubscription =
|
|
132
122
|
NativeAnimatedHelper.nativeEventEmitter.addListener(
|
|
133
123
|
'onAnimatedValueUpdate',
|
|
134
124
|
data => {
|
|
135
|
-
if (data.tag
|
|
136
|
-
|
|
125
|
+
if (data.tag === nativeTag) {
|
|
126
|
+
this.__onAnimatedValueUpdateReceived(data.value);
|
|
137
127
|
}
|
|
138
|
-
this.__onAnimatedValueUpdateReceived(data.value);
|
|
139
128
|
},
|
|
140
129
|
);
|
|
130
|
+
|
|
131
|
+
this.#updateSubscription = {
|
|
132
|
+
remove: () => {
|
|
133
|
+
// Only this function assigns to `this.#updateSubscription`.
|
|
134
|
+
if (this.#updateSubscription == null) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.#updateSubscription = null;
|
|
138
|
+
subscription.remove();
|
|
139
|
+
stopListeningToAnimatedNodeValue(nativeTag);
|
|
140
|
+
},
|
|
141
|
+
};
|
|
141
142
|
}
|
|
142
143
|
|
|
143
|
-
__onAnimatedValueUpdateReceived(value: number) {
|
|
144
|
+
__onAnimatedValueUpdateReceived(value: number): void {
|
|
144
145
|
this.__callListeners(value);
|
|
145
146
|
}
|
|
146
147
|
|
|
@@ -151,16 +152,6 @@ export default class AnimatedNode {
|
|
|
151
152
|
});
|
|
152
153
|
}
|
|
153
154
|
|
|
154
|
-
_stopListeningForNativeValueUpdates() {
|
|
155
|
-
if (!this.__nativeAnimatedValueListener) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
this.__nativeAnimatedValueListener.remove();
|
|
160
|
-
this.__nativeAnimatedValueListener = null;
|
|
161
|
-
stopListeningToAnimatedNodeValue(this.__getNativeTag());
|
|
162
|
-
}
|
|
163
|
-
|
|
164
155
|
__getNativeTag(): number {
|
|
165
156
|
let nativeTag = this.__nativeTag;
|
|
166
157
|
if (nativeTag == null) {
|
|
@@ -181,7 +172,6 @@ export default class AnimatedNode {
|
|
|
181
172
|
config.platformConfig = this._platformConfig;
|
|
182
173
|
}
|
|
183
174
|
NativeAnimatedHelper.API.createAnimatedNode(nativeTag, config);
|
|
184
|
-
this.__shouldUpdateListenersForNewNativeTag = true;
|
|
185
175
|
}
|
|
186
176
|
return nativeTag;
|
|
187
177
|
}
|
|
@@ -192,10 +182,6 @@ export default class AnimatedNode {
|
|
|
192
182
|
);
|
|
193
183
|
}
|
|
194
184
|
|
|
195
|
-
toJSON(): any {
|
|
196
|
-
return this.__getValue();
|
|
197
|
-
}
|
|
198
|
-
|
|
199
185
|
__getPlatformConfig(): ?PlatformConfig {
|
|
200
186
|
return this._platformConfig;
|
|
201
187
|
}
|
|
@@ -203,4 +189,12 @@ export default class AnimatedNode {
|
|
|
203
189
|
__setPlatformConfig(platformConfig: ?PlatformConfig) {
|
|
204
190
|
this._platformConfig = platformConfig;
|
|
205
191
|
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* NOTE: This is intended to prevent `JSON.stringify` from throwing "cyclic
|
|
195
|
+
* structure" errors in React DevTools. Avoid depending on this!
|
|
196
|
+
*/
|
|
197
|
+
toJSON(): mixed {
|
|
198
|
+
return this.__getValue();
|
|
199
|
+
}
|
|
206
200
|
}
|