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
|
@@ -8,21 +8,22 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
11
|
import type {EventSubscription} from '../EventEmitter/NativeEventEmitter';
|
|
12
|
+
import type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';
|
|
14
13
|
|
|
14
|
+
import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper';
|
|
15
|
+
import {useAnimatedPropsMemo} from '../../src/private/animated/useAnimatedPropsMemo';
|
|
15
16
|
import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
16
17
|
import {isPublicInstance as isFabricPublicInstance} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils';
|
|
17
18
|
import useRefEffect from '../Utilities/useRefEffect';
|
|
18
19
|
import {AnimatedEvent} from './AnimatedEvent';
|
|
19
|
-
import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper';
|
|
20
20
|
import AnimatedNode from './nodes/AnimatedNode';
|
|
21
21
|
import AnimatedProps from './nodes/AnimatedProps';
|
|
22
22
|
import AnimatedValue from './nodes/AnimatedValue';
|
|
23
23
|
import {
|
|
24
24
|
useCallback,
|
|
25
25
|
useEffect,
|
|
26
|
+
useInsertionEffect,
|
|
26
27
|
useLayoutEffect,
|
|
27
28
|
useMemo,
|
|
28
29
|
useReducer,
|
|
@@ -36,34 +37,46 @@ type ReducedProps<TProps> = {
|
|
|
36
37
|
};
|
|
37
38
|
type CallbackRef<T> = T => mixed;
|
|
38
39
|
|
|
40
|
+
type UpdateCallback = () => void;
|
|
41
|
+
|
|
39
42
|
type AnimatedValueListeners = Array<{
|
|
40
43
|
propValue: AnimatedValue,
|
|
41
44
|
listenerId: string,
|
|
42
45
|
}>;
|
|
43
46
|
|
|
47
|
+
const useMemoOrAnimatedPropsMemo =
|
|
48
|
+
ReactNativeFeatureFlags.enableAnimatedPropsMemo()
|
|
49
|
+
? useAnimatedPropsMemo
|
|
50
|
+
: useMemo;
|
|
51
|
+
|
|
44
52
|
export default function useAnimatedProps<TProps: {...}, TInstance>(
|
|
45
53
|
props: TProps,
|
|
54
|
+
allowlist?: ?AnimatedPropsAllowlist,
|
|
46
55
|
): [ReducedProps<TProps>, CallbackRef<TInstance | null>] {
|
|
47
56
|
const [, scheduleUpdate] = useReducer<number, void>(count => count + 1, 0);
|
|
48
|
-
const onUpdateRef = useRef
|
|
57
|
+
const onUpdateRef = useRef<UpdateCallback | null>(null);
|
|
49
58
|
const timerRef = useRef<TimeoutID | null>(null);
|
|
50
59
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const node =
|
|
56
|
-
() =>
|
|
57
|
-
|
|
60
|
+
const allowlistIfEnabled = ReactNativeFeatureFlags.enableAnimatedAllowlist()
|
|
61
|
+
? allowlist
|
|
62
|
+
: null;
|
|
63
|
+
|
|
64
|
+
const node = useMemoOrAnimatedPropsMemo(
|
|
65
|
+
() =>
|
|
66
|
+
new AnimatedProps(
|
|
67
|
+
props,
|
|
68
|
+
() => onUpdateRef.current?.(),
|
|
69
|
+
allowlistIfEnabled,
|
|
70
|
+
),
|
|
71
|
+
[allowlistIfEnabled, props],
|
|
58
72
|
);
|
|
73
|
+
|
|
59
74
|
const useNativePropsInFabric =
|
|
60
75
|
ReactNativeFeatureFlags.shouldUseSetNativePropsInFabric();
|
|
61
|
-
const useSetNativePropsInNativeAnimationsInFabric =
|
|
62
|
-
ReactNativeFeatureFlags.shouldUseSetNativePropsInNativeAnimationsInFabric();
|
|
63
76
|
|
|
64
77
|
const useAnimatedPropsLifecycle =
|
|
65
|
-
ReactNativeFeatureFlags.
|
|
66
|
-
?
|
|
78
|
+
ReactNativeFeatureFlags.useInsertionEffectsForAnimations()
|
|
79
|
+
? useAnimatedPropsLifecycle_insertionEffects
|
|
67
80
|
: useAnimatedPropsLifecycle_layoutEffects;
|
|
68
81
|
|
|
69
82
|
useAnimatedPropsLifecycle(node);
|
|
@@ -104,12 +117,7 @@ export default function useAnimatedProps<TProps: {...}, TInstance>(
|
|
|
104
117
|
if (isFabricNode) {
|
|
105
118
|
// Call `scheduleUpdate` to synchronise Fiber and Shadow tree.
|
|
106
119
|
// Must not be called in Paper.
|
|
107
|
-
|
|
108
|
-
// $FlowFixMe[incompatible-use]
|
|
109
|
-
instance.setNativeProps(node.__getAnimatedValue());
|
|
110
|
-
} else {
|
|
111
|
-
scheduleUpdate();
|
|
112
|
-
}
|
|
120
|
+
scheduleUpdate();
|
|
113
121
|
}
|
|
114
122
|
return;
|
|
115
123
|
}
|
|
@@ -186,23 +194,23 @@ export default function useAnimatedProps<TProps: {...}, TInstance>(
|
|
|
186
194
|
}
|
|
187
195
|
};
|
|
188
196
|
},
|
|
189
|
-
[
|
|
190
|
-
node,
|
|
191
|
-
useNativePropsInFabric,
|
|
192
|
-
useSetNativePropsInNativeAnimationsInFabric,
|
|
193
|
-
props,
|
|
194
|
-
],
|
|
197
|
+
[node, useNativePropsInFabric, props],
|
|
195
198
|
);
|
|
196
199
|
const callbackRef = useRefEffect<TInstance>(refEffect);
|
|
197
200
|
|
|
198
|
-
return [reduceAnimatedProps<TProps>(node), callbackRef];
|
|
201
|
+
return [reduceAnimatedProps<TProps>(node, props), callbackRef];
|
|
199
202
|
}
|
|
200
203
|
|
|
201
|
-
function reduceAnimatedProps<TProps>(
|
|
204
|
+
function reduceAnimatedProps<TProps>(
|
|
205
|
+
node: AnimatedProps,
|
|
206
|
+
props: TProps,
|
|
207
|
+
): ReducedProps<TProps> {
|
|
202
208
|
// Force `collapsable` to be false so that the native view is not flattened.
|
|
203
209
|
// Flattened views cannot be accurately referenced by the native driver.
|
|
204
210
|
return {
|
|
205
|
-
...
|
|
211
|
+
...(ReactNativeFeatureFlags.enableAnimatedPropsMemo()
|
|
212
|
+
? node.__getValueWithStaticProps(props)
|
|
213
|
+
: node.__getValue()),
|
|
206
214
|
collapsable: false,
|
|
207
215
|
};
|
|
208
216
|
}
|
|
@@ -301,10 +309,8 @@ function useAnimatedPropsLifecycle_layoutEffects(node: AnimatedProps): void {
|
|
|
301
309
|
* uses reference counting to determine when to recursively detach its children
|
|
302
310
|
* nodes. So in order to optimize this, we avoid detaching until the next attach
|
|
303
311
|
* unless we are unmounting.
|
|
304
|
-
*
|
|
305
|
-
* NOTE: unlike `useAnimatedPropsLifecycle_layoutEffects`, this version uses passive effects to setup animation graph.
|
|
306
312
|
*/
|
|
307
|
-
function
|
|
313
|
+
function useAnimatedPropsLifecycle_insertionEffects(node: AnimatedProps): void {
|
|
308
314
|
const prevNodeRef = useRef<?AnimatedProps>(null);
|
|
309
315
|
const isUnmountingRef = useRef<boolean>(false);
|
|
310
316
|
|
|
@@ -315,14 +321,14 @@ function useAnimatedPropsLifecycle_passiveEffects(node: AnimatedProps): void {
|
|
|
315
321
|
NativeAnimatedHelper.API.flushQueue();
|
|
316
322
|
});
|
|
317
323
|
|
|
318
|
-
|
|
324
|
+
useInsertionEffect(() => {
|
|
319
325
|
isUnmountingRef.current = false;
|
|
320
326
|
return () => {
|
|
321
327
|
isUnmountingRef.current = true;
|
|
322
328
|
};
|
|
323
329
|
}, []);
|
|
324
330
|
|
|
325
|
-
|
|
331
|
+
useInsertionEffect(() => {
|
|
326
332
|
node.__attach();
|
|
327
333
|
let drivenAnimationEndedListener: ?EventSubscription = null;
|
|
328
334
|
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
* @format
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import
|
|
11
|
-
import {HostComponent} from '../../../types/public/ReactNativeTypes';
|
|
10
|
+
import {HostInstance} from '../../../types/public/ReactNativeTypes';
|
|
12
11
|
import {EmitterSubscription} from '../../vendor/emitter/EventEmitter';
|
|
13
12
|
|
|
14
13
|
type AccessibilityChangeEventName =
|
|
@@ -17,6 +16,8 @@ type AccessibilityChangeEventName =
|
|
|
17
16
|
| 'grayscaleChanged' // iOS-only Event
|
|
18
17
|
| 'invertColorsChanged' // iOS-only Event
|
|
19
18
|
| 'reduceMotionChanged'
|
|
19
|
+
| 'highTextContrastChanged' // Android-only Event
|
|
20
|
+
| 'darkerSystemColorsChanged' // iOS-only Event
|
|
20
21
|
| 'screenReaderChanged'
|
|
21
22
|
| 'reduceTransparencyChanged'; // iOS-only Event
|
|
22
23
|
|
|
@@ -69,6 +70,21 @@ export interface AccessibilityInfoStatic {
|
|
|
69
70
|
*/
|
|
70
71
|
isReduceMotionEnabled: () => Promise<boolean>;
|
|
71
72
|
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* Query whether high text contrast is currently enabled.
|
|
76
|
+
*
|
|
77
|
+
* @platform android
|
|
78
|
+
*/
|
|
79
|
+
isHighTextContrastEnabled: () => Promise<boolean>;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Query whether darker system colors is currently enabled.
|
|
83
|
+
*
|
|
84
|
+
* @platform ios
|
|
85
|
+
*/
|
|
86
|
+
isDarkerSystemColorsEnabled: () => Promise<boolean>;
|
|
87
|
+
|
|
72
88
|
/**
|
|
73
89
|
* Query whether reduce motion and prefer cross-fade transitions settings are currently enabled.
|
|
74
90
|
*
|
|
@@ -148,7 +164,7 @@ export interface AccessibilityInfoStatic {
|
|
|
148
164
|
*/
|
|
149
165
|
getRecommendedTimeoutMillis: (originalTimeout: number) => Promise<number>;
|
|
150
166
|
sendAccessibilityEvent: (
|
|
151
|
-
handle:
|
|
167
|
+
handle: HostInstance,
|
|
152
168
|
eventType: AccessibilityEventTypes,
|
|
153
169
|
) => void;
|
|
154
170
|
}
|
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
11
|
+
import type {HostInstance} from '../../Renderer/shims/ReactNativeTypes';
|
|
12
12
|
import type {EventSubscription} from '../../vendor/emitter/EventEmitter';
|
|
13
|
-
import type {ElementRef} from 'react';
|
|
14
13
|
|
|
15
14
|
import RCTDeviceEventEmitter from '../../EventEmitter/RCTDeviceEventEmitter';
|
|
16
15
|
import {sendAccessibilityEvent} from '../../ReactNative/RendererProxy';
|
|
@@ -22,6 +21,7 @@ import NativeAccessibilityManagerIOS from './NativeAccessibilityManager';
|
|
|
22
21
|
// Events that are only supported on Android.
|
|
23
22
|
type AccessibilityEventDefinitionsAndroid = {
|
|
24
23
|
accessibilityServiceChanged: [boolean],
|
|
24
|
+
highTextContrastChanged: [boolean],
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
// Events that are only supported on iOS.
|
|
@@ -31,6 +31,7 @@ type AccessibilityEventDefinitionsIOS = {
|
|
|
31
31
|
grayscaleChanged: [boolean],
|
|
32
32
|
invertColorsChanged: [boolean],
|
|
33
33
|
reduceTransparencyChanged: [boolean],
|
|
34
|
+
darkerSystemColorsChanged: [boolean],
|
|
34
35
|
};
|
|
35
36
|
|
|
36
37
|
type AccessibilityEventDefinitions = {
|
|
@@ -51,8 +52,11 @@ const EventNames: Map<
|
|
|
51
52
|
? new Map([
|
|
52
53
|
['change', 'touchExplorationDidChange'],
|
|
53
54
|
['reduceMotionChanged', 'reduceMotionDidChange'],
|
|
55
|
+
['highTextContrastChanged', 'highTextContrastDidChange'],
|
|
54
56
|
['screenReaderChanged', 'touchExplorationDidChange'],
|
|
55
57
|
['accessibilityServiceChanged', 'accessibilityServiceDidChange'],
|
|
58
|
+
['invertColorsChanged', 'invertColorDidChange'],
|
|
59
|
+
['grayscaleChanged', 'grayscaleModeDidChange'],
|
|
56
60
|
])
|
|
57
61
|
: new Map([
|
|
58
62
|
['announcementFinished', 'announcementFinished'],
|
|
@@ -63,6 +67,7 @@ const EventNames: Map<
|
|
|
63
67
|
['reduceMotionChanged', 'reduceMotionChanged'],
|
|
64
68
|
['reduceTransparencyChanged', 'reduceTransparencyChanged'],
|
|
65
69
|
['screenReaderChanged', 'screenReaderChanged'],
|
|
70
|
+
['darkerSystemColorsChanged', 'darkerSystemColorsChanged'],
|
|
66
71
|
]);
|
|
67
72
|
|
|
68
73
|
/**
|
|
@@ -110,7 +115,13 @@ const AccessibilityInfo = {
|
|
|
110
115
|
*/
|
|
111
116
|
isGrayscaleEnabled(): Promise<boolean> {
|
|
112
117
|
if (Platform.OS === 'android') {
|
|
113
|
-
return Promise
|
|
118
|
+
return new Promise((resolve, reject) => {
|
|
119
|
+
if (NativeAccessibilityInfoAndroid?.isGrayscaleEnabled != null) {
|
|
120
|
+
NativeAccessibilityInfoAndroid.isGrayscaleEnabled(resolve);
|
|
121
|
+
} else {
|
|
122
|
+
reject(null);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
114
125
|
} else {
|
|
115
126
|
return new Promise((resolve, reject) => {
|
|
116
127
|
if (NativeAccessibilityManagerIOS != null) {
|
|
@@ -135,7 +146,13 @@ const AccessibilityInfo = {
|
|
|
135
146
|
*/
|
|
136
147
|
isInvertColorsEnabled(): Promise<boolean> {
|
|
137
148
|
if (Platform.OS === 'android') {
|
|
138
|
-
return Promise
|
|
149
|
+
return new Promise((resolve, reject) => {
|
|
150
|
+
if (NativeAccessibilityInfoAndroid?.isInvertColorsEnabled != null) {
|
|
151
|
+
NativeAccessibilityInfoAndroid.isInvertColorsEnabled(resolve);
|
|
152
|
+
} else {
|
|
153
|
+
reject(null);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
139
156
|
} else {
|
|
140
157
|
return new Promise((resolve, reject) => {
|
|
141
158
|
if (NativeAccessibilityManagerIOS != null) {
|
|
@@ -179,6 +196,52 @@ const AccessibilityInfo = {
|
|
|
179
196
|
});
|
|
180
197
|
},
|
|
181
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Query whether high text contrast is currently enabled. Android only.
|
|
201
|
+
*
|
|
202
|
+
* Returns a promise which resolves to a boolean.
|
|
203
|
+
* The result is `true` when high text contrast is enabled and `false` otherwise.
|
|
204
|
+
*/
|
|
205
|
+
isHighTextContrastEnabled(): Promise<boolean> {
|
|
206
|
+
return new Promise((resolve, reject) => {
|
|
207
|
+
if (Platform.OS === 'android') {
|
|
208
|
+
if (NativeAccessibilityInfoAndroid?.isHighTextContrastEnabled != null) {
|
|
209
|
+
NativeAccessibilityInfoAndroid.isHighTextContrastEnabled(resolve);
|
|
210
|
+
} else {
|
|
211
|
+
reject(null);
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
return Promise.resolve(false);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
},
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Query whether dark system colors is currently enabled. iOS only.
|
|
221
|
+
*
|
|
222
|
+
* Returns a promise which resolves to a boolean.
|
|
223
|
+
* The result is `true` when dark system colors is enabled and `false` otherwise.
|
|
224
|
+
*/
|
|
225
|
+
isDarkerSystemColorsEnabled(): Promise<boolean> {
|
|
226
|
+
return new Promise((resolve, reject) => {
|
|
227
|
+
if (Platform.OS === 'android') {
|
|
228
|
+
return Promise.resolve(false);
|
|
229
|
+
} else {
|
|
230
|
+
if (
|
|
231
|
+
NativeAccessibilityManagerIOS?.getCurrentDarkerSystemColorsState !=
|
|
232
|
+
null
|
|
233
|
+
) {
|
|
234
|
+
NativeAccessibilityManagerIOS.getCurrentDarkerSystemColorsState(
|
|
235
|
+
resolve,
|
|
236
|
+
reject,
|
|
237
|
+
);
|
|
238
|
+
} else {
|
|
239
|
+
reject(null);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
},
|
|
244
|
+
|
|
182
245
|
/**
|
|
183
246
|
* Query whether reduce motion and prefer cross-fade transitions settings are currently enabled.
|
|
184
247
|
*
|
|
@@ -319,6 +382,15 @@ const AccessibilityInfo = {
|
|
|
319
382
|
* - `announcement`: The string announced by the screen reader.
|
|
320
383
|
* - `success`: A boolean indicating whether the announcement was
|
|
321
384
|
* successfully made.
|
|
385
|
+
* - `darkerSystemColorsChanged`: iOS-only event. Fires when the state of the dark system colors
|
|
386
|
+
* toggle changes. The argument to the event handler is a boolean. The boolean is `true` when
|
|
387
|
+
* dark system colors is enabled and `false` otherwise.
|
|
388
|
+
*
|
|
389
|
+
* These events are only supported on Android:
|
|
390
|
+
*
|
|
391
|
+
* - `highTextContrastChanged`: Android-only event. Fires when the state of the high text contrast
|
|
392
|
+
* toggle changes. The argument to the event handler is a boolean. The boolean is `true` when
|
|
393
|
+
* high text contrast is enabled and `false` otherwise.
|
|
322
394
|
*
|
|
323
395
|
* See https://reactnative.dev/docs/accessibilityinfo#addeventlistener
|
|
324
396
|
*/
|
|
@@ -347,7 +419,7 @@ const AccessibilityInfo = {
|
|
|
347
419
|
* Send a named accessibility event to a HostComponent.
|
|
348
420
|
*/
|
|
349
421
|
sendAccessibilityEvent(
|
|
350
|
-
handle:
|
|
422
|
+
handle: HostInstance,
|
|
351
423
|
eventType: AccessibilityEventTypes,
|
|
352
424
|
) {
|
|
353
425
|
// iOS only supports 'focus' event types
|
|
@@ -8,20 +8,21 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
11
|
+
import type {HostInstance} from '../../Renderer/shims/ReactNativeTypes';
|
|
12
12
|
import type {EventSubscription} from '../../vendor/emitter/EventEmitter';
|
|
13
|
-
import type {ElementRef} from 'react';
|
|
14
13
|
|
|
15
14
|
import RCTDeviceEventEmitter from '../../EventEmitter/RCTDeviceEventEmitter';
|
|
16
15
|
import {sendAccessibilityEvent} from '../../ReactNative/RendererProxy';
|
|
17
16
|
import Platform from '../../Utilities/Platform';
|
|
18
17
|
import legacySendAccessibilityEvent from './legacySendAccessibilityEvent';
|
|
18
|
+
import NativeAccessibilityInfoAndroid from './NativeAccessibilityInfo';
|
|
19
19
|
import NativeAccessibilityInfo from './NativeAccessibilityInfo';
|
|
20
20
|
import NativeAccessibilityManagerIOS from './NativeAccessibilityManager';
|
|
21
21
|
|
|
22
22
|
// Events that are only supported on Android.
|
|
23
23
|
type AccessibilityEventDefinitionsAndroid = {
|
|
24
24
|
accessibilityServiceChanged: [boolean],
|
|
25
|
+
highTextContrastChanged: [boolean],
|
|
25
26
|
};
|
|
26
27
|
|
|
27
28
|
// Events that are only supported on iOS.
|
|
@@ -31,6 +32,7 @@ type AccessibilityEventDefinitionsIOS = {
|
|
|
31
32
|
grayscaleChanged: [boolean],
|
|
32
33
|
invertColorsChanged: [boolean],
|
|
33
34
|
reduceTransparencyChanged: [boolean],
|
|
35
|
+
darkerSystemColorsChanged: [boolean],
|
|
34
36
|
};
|
|
35
37
|
|
|
36
38
|
type AccessibilityEventDefinitions = {
|
|
@@ -51,8 +53,11 @@ const EventNames: Map<
|
|
|
51
53
|
? new Map([
|
|
52
54
|
['change', 'touchExplorationDidChange'],
|
|
53
55
|
['reduceMotionChanged', 'reduceMotionDidChange'],
|
|
56
|
+
['highTextContrastChanged', 'highTextContrastDidChange'],
|
|
54
57
|
['screenReaderChanged', 'touchExplorationDidChange'],
|
|
55
58
|
['accessibilityServiceChanged', 'accessibilityServiceDidChange'],
|
|
59
|
+
['invertColorsChanged', 'invertColorDidChange'],
|
|
60
|
+
['grayscaleChanged', 'grayscaleModeDidChange'],
|
|
56
61
|
])
|
|
57
62
|
: Platform.OS === 'windows'
|
|
58
63
|
? new Map([
|
|
@@ -69,6 +74,7 @@ const EventNames: Map<
|
|
|
69
74
|
['reduceMotionChanged', 'reduceMotionChanged'],
|
|
70
75
|
['reduceTransparencyChanged', 'reduceTransparencyChanged'],
|
|
71
76
|
['screenReaderChanged', 'screenReaderChanged'],
|
|
77
|
+
['darkerSystemColorsChanged', 'darkerSystemColorsChanged'],
|
|
72
78
|
]);
|
|
73
79
|
|
|
74
80
|
/**
|
|
@@ -115,7 +121,15 @@ const AccessibilityInfo = {
|
|
|
115
121
|
* See https://reactnative.dev/docs/accessibilityinfo#isGrayscaleEnabled
|
|
116
122
|
*/
|
|
117
123
|
isGrayscaleEnabled(): Promise<boolean> {
|
|
118
|
-
if (Platform.OS === 'android'
|
|
124
|
+
if (Platform.OS === 'android') {
|
|
125
|
+
return new Promise((resolve, reject) => {
|
|
126
|
+
if (NativeAccessibilityInfoAndroid?.isGrayscaleEnabled != null) {
|
|
127
|
+
NativeAccessibilityInfoAndroid.isGrayscaleEnabled(resolve);
|
|
128
|
+
} else {
|
|
129
|
+
reject(null);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
} else if (Platform.OS === 'windows') {
|
|
119
133
|
return Promise.resolve(false);
|
|
120
134
|
} else {
|
|
121
135
|
return new Promise((resolve, reject) => {
|
|
@@ -140,7 +154,15 @@ const AccessibilityInfo = {
|
|
|
140
154
|
* See https://reactnative.dev/docs/accessibilityinfo#isInvertColorsEnabled
|
|
141
155
|
*/
|
|
142
156
|
isInvertColorsEnabled(): Promise<boolean> {
|
|
143
|
-
if (Platform.OS === 'android'
|
|
157
|
+
if (Platform.OS === 'android') {
|
|
158
|
+
return new Promise((resolve, reject) => {
|
|
159
|
+
if (NativeAccessibilityInfoAndroid?.isInvertColorsEnabled != null) {
|
|
160
|
+
NativeAccessibilityInfoAndroid.isInvertColorsEnabled(resolve);
|
|
161
|
+
} else {
|
|
162
|
+
reject(null);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
} else if (Platform.OS === 'windows') {
|
|
144
166
|
return Promise.resolve(false);
|
|
145
167
|
} else {
|
|
146
168
|
return new Promise((resolve, reject) => {
|
|
@@ -185,6 +207,52 @@ const AccessibilityInfo = {
|
|
|
185
207
|
});
|
|
186
208
|
},
|
|
187
209
|
|
|
210
|
+
/**
|
|
211
|
+
* Query whether high text contrast is currently enabled. Android only.
|
|
212
|
+
*
|
|
213
|
+
* Returns a promise which resolves to a boolean.
|
|
214
|
+
* The result is `true` when high text contrast is enabled and `false` otherwise.
|
|
215
|
+
*/
|
|
216
|
+
isHighTextContrastEnabled(): Promise<boolean> {
|
|
217
|
+
return new Promise((resolve, reject) => {
|
|
218
|
+
if (Platform.OS === 'android') {
|
|
219
|
+
if (NativeAccessibilityInfo?.isHighTextContrastEnabled != null) {
|
|
220
|
+
NativeAccessibilityInfo.isHighTextContrastEnabled(resolve);
|
|
221
|
+
} else {
|
|
222
|
+
reject(null);
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
return Promise.resolve(false);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Query whether dark system colors is currently enabled. iOS only.
|
|
232
|
+
*
|
|
233
|
+
* Returns a promise which resolves to a boolean.
|
|
234
|
+
* The result is `true` when dark system colors is enabled and `false` otherwise.
|
|
235
|
+
*/
|
|
236
|
+
isDarkerSystemColorsEnabled(): Promise<boolean> {
|
|
237
|
+
return new Promise((resolve, reject) => {
|
|
238
|
+
if (Platform.OS === 'android') {
|
|
239
|
+
return Promise.resolve(false);
|
|
240
|
+
} else {
|
|
241
|
+
if (
|
|
242
|
+
NativeAccessibilityManagerIOS?.getCurrentDarkerSystemColorsState !=
|
|
243
|
+
null
|
|
244
|
+
) {
|
|
245
|
+
NativeAccessibilityManagerIOS.getCurrentDarkerSystemColorsState(
|
|
246
|
+
resolve,
|
|
247
|
+
reject,
|
|
248
|
+
);
|
|
249
|
+
} else {
|
|
250
|
+
reject(null);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
},
|
|
255
|
+
|
|
188
256
|
/**
|
|
189
257
|
* Query whether reduce motion and prefer cross-fade transitions settings are currently enabled.
|
|
190
258
|
*
|
|
@@ -325,6 +393,15 @@ const AccessibilityInfo = {
|
|
|
325
393
|
* - `announcement`: The string announced by the screen reader.
|
|
326
394
|
* - `success`: A boolean indicating whether the announcement was
|
|
327
395
|
* successfully made.
|
|
396
|
+
* - `darkerSystemColorsChanged`: iOS-only event. Fires when the state of the dark system colors
|
|
397
|
+
* toggle changes. The argument to the event handler is a boolean. The boolean is `true` when
|
|
398
|
+
* dark system colors is enabled and `false` otherwise.
|
|
399
|
+
*
|
|
400
|
+
* These events are only supported on Android:
|
|
401
|
+
*
|
|
402
|
+
* - `highTextContrastChanged`: Android-only event. Fires when the state of the high text contrast
|
|
403
|
+
* toggle changes. The argument to the event handler is a boolean. The boolean is `true` when
|
|
404
|
+
* high text contrast is enabled and `false` otherwise.
|
|
328
405
|
*
|
|
329
406
|
* See https://reactnative.dev/docs/accessibilityinfo#addeventlistener
|
|
330
407
|
*/
|
|
@@ -353,7 +430,7 @@ const AccessibilityInfo = {
|
|
|
353
430
|
* Send a named accessibility event to a HostComponent.
|
|
354
431
|
*/
|
|
355
432
|
sendAccessibilityEvent(
|
|
356
|
-
handle:
|
|
433
|
+
handle: HostInstance,
|
|
357
434
|
eventType: AccessibilityEventTypes,
|
|
358
435
|
) {
|
|
359
436
|
// iOS only supports 'focus' event types
|
|
@@ -153,10 +153,10 @@ const ActivityIndicator = (
|
|
|
153
153
|
```
|
|
154
154
|
*/
|
|
155
155
|
|
|
156
|
-
const ActivityIndicatorWithRef:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
const ActivityIndicatorWithRef: component(
|
|
157
|
+
ref: React.RefSetter<HostComponent<empty>>,
|
|
158
|
+
...props: Props
|
|
159
|
+
) = React.forwardRef(ActivityIndicator);
|
|
160
160
|
ActivityIndicatorWithRef.displayName = 'ActivityIndicator';
|
|
161
161
|
|
|
162
162
|
const styles = StyleSheet.create({
|
|
@@ -283,10 +283,12 @@ type ButtonProps = $ReadOnly<{|
|
|
|
283
283
|
const Touchable: typeof TouchableNativeFeedback | typeof TouchableOpacity =
|
|
284
284
|
Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;
|
|
285
285
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
286
|
+
type ButtonRef = React.ElementRef<typeof Touchable>;
|
|
287
|
+
|
|
288
|
+
const Button: component(
|
|
289
|
+
ref: React.RefSetter<ButtonRef>,
|
|
290
|
+
...props: ButtonProps
|
|
291
|
+
) = React.forwardRef((props: ButtonProps, ref: React.RefSetter<ButtonRef>) => {
|
|
290
292
|
const {
|
|
291
293
|
accessibilityLabel,
|
|
292
294
|
accessibilityState,
|
|
@@ -379,6 +381,9 @@ const Button: React.AbstractComponent<
|
|
|
379
381
|
disabled={disabled}
|
|
380
382
|
onPress={onPress}
|
|
381
383
|
touchSoundDisabled={touchSoundDisabled}
|
|
384
|
+
// $FlowFixMe[incompatible-exact]
|
|
385
|
+
// $FlowFixMe[prop-missing]
|
|
386
|
+
// $FlowFixMe[incompatible-type-arg]
|
|
382
387
|
ref={ref}>
|
|
383
388
|
<View style={buttonStyles}>
|
|
384
389
|
<Text style={textStyles} disabled={disabled}>
|
|
@@ -23,9 +23,9 @@ import Text from '../Text/Text';
|
|
|
23
23
|
// [Windows
|
|
24
24
|
// import TouchableNativeFeedback from './Touchable/TouchableNativeFeedback';
|
|
25
25
|
// import TouchableOpacity from './Touchable/TouchableOpacity';
|
|
26
|
+
// Windows]
|
|
26
27
|
import TouchableHighlight from './Touchable/TouchableHighlight';
|
|
27
28
|
import {PlatformColor} from '../StyleSheet/PlatformColorValueTypes';
|
|
28
|
-
// Windows]
|
|
29
29
|
import Platform from '../Utilities/Platform';
|
|
30
30
|
import View from './View/View';
|
|
31
31
|
import invariant from 'invariant';
|
|
@@ -164,6 +164,8 @@ type ButtonProps = $ReadOnly<{|
|
|
|
164
164
|
'aria-disabled'?: ?boolean,
|
|
165
165
|
'aria-expanded'?: ?boolean,
|
|
166
166
|
'aria-selected'?: ?boolean,
|
|
167
|
+
'aria-multiselectable'?: ?boolean, // Windows
|
|
168
|
+
'aria-required'?: ?boolean, // Windows
|
|
167
169
|
|
|
168
170
|
/**
|
|
169
171
|
* [Android] Controlling if a view fires accessibility events and if it is reported to accessibility services.
|
|
@@ -290,10 +292,12 @@ type ButtonProps = $ReadOnly<{|
|
|
|
290
292
|
```
|
|
291
293
|
*/
|
|
292
294
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
295
|
+
type ButtonRef = React.ElementRef<typeof TouchableHighlight>;
|
|
296
|
+
|
|
297
|
+
const Button: component(
|
|
298
|
+
ref: React.RefSetter<ButtonRef>,
|
|
299
|
+
...props: ButtonProps
|
|
300
|
+
) = React.forwardRef((props: ButtonProps, ref: React.RefSetter<ButtonRef>) => {
|
|
297
301
|
// Windows
|
|
298
302
|
// [Windows
|
|
299
303
|
const [hover, setHover] = React.useState(false);
|
|
@@ -308,6 +312,8 @@ const Button: React.AbstractComponent<
|
|
|
308
312
|
'aria-expanded': ariaExpanded,
|
|
309
313
|
'aria-label': ariaLabel,
|
|
310
314
|
'aria-selected': ariaSelected,
|
|
315
|
+
'aria-multiselectable': ariaMultiselectable, // Windows
|
|
316
|
+
'aria-required': ariaRequired, // Windows
|
|
311
317
|
importantForAccessibility,
|
|
312
318
|
color,
|
|
313
319
|
onPress,
|
|
@@ -343,6 +349,8 @@ const Button: React.AbstractComponent<
|
|
|
343
349
|
disabled: ariaDisabled ?? accessibilityState?.disabled,
|
|
344
350
|
expanded: ariaExpanded ?? accessibilityState?.expanded,
|
|
345
351
|
selected: ariaSelected ?? accessibilityState?.selected,
|
|
352
|
+
multiselectable: ariaMultiselectable ?? accessibilityState?.multiselectable, // Windows
|
|
353
|
+
required: ariaRequired ?? accessibilityState?.required, // Windows
|
|
346
354
|
};
|
|
347
355
|
|
|
348
356
|
const disabled =
|
|
@@ -418,6 +426,9 @@ const Button: React.AbstractComponent<
|
|
|
418
426
|
onMouseLeave={() => {
|
|
419
427
|
if (!disabled) setHover(false);
|
|
420
428
|
}}
|
|
429
|
+
// $FlowFixMe[incompatible-exact]
|
|
430
|
+
// $FlowFixMe[prop-missing]
|
|
431
|
+
// $FlowFixMe[incompatible-type-arg]
|
|
421
432
|
ref={ref}>
|
|
422
433
|
<View
|
|
423
434
|
style={
|
|
@@ -489,6 +500,9 @@ const Button: React.AbstractComponent<
|
|
|
489
500
|
disabled={disabled}
|
|
490
501
|
onPress={onPress}
|
|
491
502
|
touchSoundDisabled={touchSoundDisabled}
|
|
503
|
+
// $FlowFixMe[incompatible-exact]
|
|
504
|
+
// $FlowFixMe[prop-missing]
|
|
505
|
+
// $FlowFixMe[incompatible-type-arg]
|
|
492
506
|
ref={ref}>
|
|
493
507
|
<View style={buttonStyles}>
|
|
494
508
|
<Text style={textStyles} disabled={disabled}>
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
* @format
|
|
8
|
+
* @flow strict-local
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
|
-
module.exports =
|
|
13
|
+
module.exports =
|
|
14
|
+
require('../UnimplementedViews/UnimplementedView') as $FlowFixMe;
|
|
@@ -29,10 +29,11 @@ export type Props = $ReadOnly<{|
|
|
|
29
29
|
* ability to be rendered with a specific color
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
+
// $FlowFixMe[prop-missing]
|
|
32
33
|
export const Glyph: React.AbstractComponent<
|
|
33
34
|
Props,
|
|
34
35
|
React.ElementRef<typeof GlyphNativeComponent>,
|
|
35
|
-
> = React.forwardRef(function Glyph(props, forwardedRef): React.Node {
|
|
36
|
+
> = React.forwardRef(function Glyph(props: Props, forwardedRef): React.Node {
|
|
36
37
|
const nativeSwitchRef = React.useRef<React.ElementRef<
|
|
37
38
|
typeof GlyphNativeComponent,
|
|
38
39
|
> | null>(null);
|