@office-iss/react-native-win32 0.71.5 → 0.72.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 +15 -3
- package/CHANGELOG.json +302 -47
- package/CHANGELOG.md +141 -27
- package/IntegrationTests/IntegrationTestHarnessTest.js +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
- package/Libraries/Alert/Alert.d.ts +4 -4
- package/Libraries/Alert/Alert.win32.js +1 -0
- package/Libraries/Animated/Animated.d.ts +17 -6
- package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
- package/Libraries/Animated/NativeAnimatedHelper.win32.js +606 -0
- package/Libraries/Animated/bezier.js +1 -1
- package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
- package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
- package/Libraries/Animated/createAnimatedComponent.js +26 -239
- package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
- package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
- package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
- package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
- package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
- package/Libraries/Animated/useAnimatedProps.js +7 -10
- package/Libraries/BatchedBridge/MessageQueue.js +2 -1
- package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
- package/Libraries/BatchedBridge/NativeModules.js +1 -0
- package/Libraries/Blob/Blob.js +4 -0
- package/Libraries/Blob/FileReader.js +30 -2
- package/Libraries/Blob/URL.js +3 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +2 -3
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
- package/Libraries/Components/Button.js +3 -2
- package/Libraries/Components/Button.win32.js +451 -0
- package/Libraries/Components/Clipboard/Clipboard.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
- package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
- package/Libraries/Components/Pressable/Pressable.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +1 -2
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
- package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
- package/Libraries/Components/ScrollView/ScrollView.js +149 -91
- package/Libraries/Components/ScrollView/ScrollView.win32.js +1939 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +3 -0
- package/Libraries/Components/Switch/Switch.js +3 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
- package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
- package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +51 -0
- package/Libraries/Components/TextInput/TextInput.Types.win32.js +3 -0
- package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
- package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
- package/Libraries/Components/TextInput/TextInput.js +130 -103
- package/Libraries/Components/TextInput/TextInput.win32.js +202 -890
- package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
- package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
- package/Libraries/Components/Touchable/Touchable.js +6 -3
- package/Libraries/Components/Touchable/Touchable.win32.js +6 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +189 -0
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
- package/Libraries/Components/View/View.js +71 -45
- package/Libraries/Components/View/View.win32.js +38 -16
- package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
- package/Libraries/Components/View/ViewAccessibility.js +10 -1
- package/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
- package/Libraries/Components/View/ViewNativeComponent.js +32 -8
- package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
- package/Libraries/Components/View/ViewPropTypes.js +1 -1
- package/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
- package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
- package/Libraries/Components/View/ViewWin32.js +3 -3
- package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
- package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
- package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/InitializeCore.js +2 -1
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +1 -9
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -9
- package/Libraries/Core/Timers/JSTimers.js +1 -1
- package/Libraries/Core/Timers/immediateShim.js +1 -0
- package/Libraries/Core/Timers/queueMicrotask.js +1 -1
- package/Libraries/Core/setUpAlert.js +1 -1
- package/Libraries/Core/setUpDOM.js +18 -0
- package/Libraries/Core/setUpDeveloperTools.js +1 -1
- package/Libraries/Core/setUpGlobals.js +5 -2
- package/Libraries/Core/setUpNavigator.js +6 -5
- package/Libraries/Core/setUpPerformance.js +23 -13
- package/Libraries/Core/setUpReactDevTools.js +2 -0
- package/Libraries/Core/setUpSegmentFetcher.js +0 -41
- package/Libraries/Core/setUpTimers.js +2 -2
- package/Libraries/DOM/Geometry/DOMRect.js +82 -0
- package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
- package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
- package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
- package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
- package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
- package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
- package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
- package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +35 -0
- package/Libraries/{Utilities/NativeDevSplitBundleLoader.js → DevToolsSettings/NativeDevToolsSettingsManager.js} +7 -2
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
- package/Libraries/Events/EventPolyfill.js +1 -1
- package/Libraries/Image/AssetRegistry.js +1 -1
- package/Libraries/Image/AssetSourceResolver.js +3 -3
- package/Libraries/Image/Image.android.js +4 -1
- package/Libraries/Image/Image.d.ts +63 -2
- package/Libraries/Image/Image.ios.js +3 -0
- package/Libraries/Image/Image.win32.js +3 -0
- package/Libraries/Image/ImageBackground.js +1 -0
- package/Libraries/Image/ImageProps.js +1 -1
- package/Libraries/Image/ImageViewNativeComponent.js +4 -4
- package/Libraries/Image/RelativeImageStub.js +1 -1
- package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Inspector/DevtoolsOverlay.js +29 -19
- package/Libraries/Inspector/ElementBox.js +4 -1
- package/Libraries/Inspector/Inspector.js +5 -6
- package/Libraries/Inspector/Inspector.win32.js +7 -6
- package/Libraries/Inspector/InspectorOverlay.js +3 -3
- package/Libraries/Inspector/InspectorOverlay.win32.js +2 -1
- package/Libraries/Inspector/NetworkOverlay.js +1 -1
- package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
- package/Libraries/Interaction/PanResponder.js +5 -6
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
- package/Libraries/Linking/Linking.js +1 -4
- package/Libraries/Lists/FillRateHelper.js +4 -238
- package/Libraries/Lists/FlatList.d.ts +15 -22
- package/Libraries/Lists/FlatList.js +9 -6
- package/Libraries/Lists/SectionList.d.ts +10 -6
- package/Libraries/Lists/SectionList.js +5 -3
- package/Libraries/Lists/SectionListModern.js +3 -3
- package/Libraries/Lists/ViewabilityHelper.js +8 -344
- package/Libraries/Lists/VirtualizeUtils.js +4 -244
- package/Libraries/Lists/VirtualizedList.js +10 -1867
- package/Libraries/Lists/VirtualizedListContext.js +6 -104
- package/Libraries/Lists/VirtualizedSectionList.js +9 -602
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBox.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +168 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +3 -0
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +193 -0
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +7 -3
- package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
- package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
- package/Libraries/Modal/Modal.js +2 -2
- package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +43 -19
- package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
- package/Libraries/NativeComponent/ViewConfig.js +1 -0
- package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
- package/Libraries/Network/RCTNetworking.android.js +2 -2
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.win32.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/Pressability/Pressability.js +11 -5
- package/Libraries/Pressability/Pressability.win32.js +9 -3
- package/Libraries/ReactNative/AppContainer.js +7 -1
- package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
- package/Libraries/ReactNative/AppRegistry.js +10 -13
- package/Libraries/ReactNative/FabricUIManager.js +24 -8
- package/Libraries/ReactNative/NativeUIManager.js +5 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
- package/Libraries/ReactNative/UIManager.js +142 -1
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
- package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
- package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
- package/Libraries/ReactNative/requireNativeComponent.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
- package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +38 -20
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Share/Share.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
- package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
- package/Libraries/StyleSheet/flattenStyle.js +2 -0
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processColor.js +1 -1
- package/Libraries/Text/Text.d.ts +12 -2
- package/Libraries/Text/Text.js +50 -41
- package/Libraries/Text/TextProps.js +3 -4
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
- package/Libraries/Types/CodegenTypes.js +1 -0
- package/Libraries/UTFSequence.js +3 -1
- package/Libraries/Utilities/Appearance.d.ts +10 -0
- package/Libraries/Utilities/Appearance.js +13 -0
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/Dimensions.win32.js +1 -1
- package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
- package/Libraries/Utilities/HMRClient.js +16 -10
- package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
- package/Libraries/Utilities/IPerformanceLogger.js +49 -0
- package/Libraries/Utilities/LoadingView.android.js +28 -11
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
- package/Libraries/Utilities/PixelRatio.js +2 -2
- package/Libraries/Utilities/Platform.win32.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +2 -0
- package/Libraries/Utilities/createPerformanceLogger.js +55 -43
- package/Libraries/Utilities/stringifySafe.js +2 -7
- package/Libraries/Utilities/useColorScheme.js +1 -1
- package/Libraries/Utilities/useWindowDimensions.js +3 -3
- package/Libraries/WebPerformance/EventCounts.js +78 -0
- package/Libraries/WebPerformance/MemoryInfo.js +54 -0
- package/Libraries/WebPerformance/NativePerformance.js +38 -0
- package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
- package/Libraries/WebPerformance/Performance.js +312 -0
- package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
- package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
- package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
- package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
- package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
- package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
- package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
- package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
- package/Libraries/vendor/emitter/EventEmitter.js +9 -1
- package/flow/global.js +29 -4
- package/flow/jest.js +258 -164
- package/index.js +56 -42
- package/index.win32.js +56 -42
- package/interface.js +1 -1
- package/jest/local-setup.js +33 -0
- package/jest/mockComponent.js +4 -2
- package/jest/mockNativeComponent.js +1 -1
- package/jest/mockScrollView.js +2 -1
- package/jest/react-native-env.js +1 -3
- package/jest/setup.js +11 -8
- package/overrides.json +115 -85
- package/package.json +38 -28
- package/rn-get-polyfills.js +1 -1
- package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
- package/src/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
- package/src/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
- package/types/index.d.ts +2 -6
- package/types/modules/Codegen.d.ts +4 -4
- package/types/modules/globals.d.ts +27 -25
- package/types/public/DeprecatedPropertiesAlias.d.ts +0 -20
- package/types/public/ReactNativeRenderer.d.ts +2 -7
- package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
- package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
- package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
- package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
- package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
- package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
- package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -47
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -45
- package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
- package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
- package/Libraries/Components/Slider/Slider.d.ts +0 -132
- package/Libraries/Components/Slider/Slider.js +0 -282
- package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
- package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +0 -23
- package/Libraries/Interaction/Batchinator.js +0 -76
- package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
- package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
- package/Libraries/Interaction/PanResponder.flow.js +0 -257
- package/Libraries/Lists/CellRenderMask.js +0 -155
- package/Libraries/Lists/ChildListCollection.js +0 -72
- package/Libraries/Lists/StateSafePureComponent.js +0 -85
- package/Libraries/Lists/VirtualizedList.d.ts +0 -347
- package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
- package/Libraries/Lists/VirtualizedListProps.js +0 -279
- package/Libraries/Performance/PureComponentDebug.js +0 -74
- package/Libraries/Reliability/UserFlow.js +0 -158
- package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
- package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
- package/Libraries/Utilities/MatrixMath.js +0 -748
- package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
- package/Libraries/Utilities/clamp.js +0 -23
- package/Libraries/Utilities/deprecatedPropType.js +0 -36
- package/Libraries/Utilities/groupByEveryN.js +0 -51
- package/Libraries/Utilities/mergeIntoFast.js +0 -26
- package/Libraries/Utilities/setAndForwardRef.js +0 -71
- package/Libraries/Utilities/truncate.js +0 -51
- package/flow/JSITimerInternalType.js +0 -30
- package/flow/use-sync-external-store.js +0 -19
|
@@ -13,7 +13,7 @@ import {GestureResponderEvent} from '../../Types/CoreEventTypes';
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* //FIXME: need to find documentation on which component is a TTouchable and can implement that interface
|
|
16
|
-
* @see React.
|
|
16
|
+
* @see React.DOMAttributes
|
|
17
17
|
*/
|
|
18
18
|
export interface Touchable {
|
|
19
19
|
onTouchStart?: ((event: GestureResponderEvent) => void) | undefined;
|
|
@@ -99,7 +99,30 @@ import * as React from 'react';
|
|
|
99
99
|
* }
|
|
100
100
|
*/
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Touchable states.
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
const States = {
|
|
107
|
+
NOT_RESPONDER: 'NOT_RESPONDER', // Not the responder
|
|
108
|
+
RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN', // Responder, inactive, in the `PressRect`
|
|
109
|
+
RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT', // Responder, inactive, out of `PressRect`
|
|
110
|
+
RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN', // Responder, active, in the `PressRect`
|
|
111
|
+
RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT', // Responder, active, out of `PressRect`
|
|
112
|
+
RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN', // Responder, active, in the `PressRect`, after long press threshold
|
|
113
|
+
RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT', // Responder, active, out of `PressRect`, after long press threshold
|
|
114
|
+
ERROR: 'ERROR',
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
type State =
|
|
118
|
+
| typeof States.NOT_RESPONDER
|
|
119
|
+
| typeof States.RESPONDER_INACTIVE_PRESS_IN
|
|
120
|
+
| typeof States.RESPONDER_INACTIVE_PRESS_OUT
|
|
121
|
+
| typeof States.RESPONDER_ACTIVE_PRESS_IN
|
|
122
|
+
| typeof States.RESPONDER_ACTIVE_PRESS_OUT
|
|
123
|
+
| typeof States.RESPONDER_ACTIVE_LONG_PRESS_IN
|
|
124
|
+
| typeof States.RESPONDER_ACTIVE_LONG_PRESS_OUT
|
|
125
|
+
| typeof States.ERROR;
|
|
103
126
|
|
|
104
127
|
/**
|
|
105
128
|
* By convention, methods prefixed with underscores are meant to be @private,
|
|
@@ -200,9 +223,12 @@ interface TouchableMixinType {
|
|
|
200
223
|
* @return {object} State object to be placed inside of
|
|
201
224
|
* `this.state.touchable`.
|
|
202
225
|
*/
|
|
203
|
-
touchableGetInitialState: () =>
|
|
204
|
-
touchable:
|
|
205
|
-
|
|
226
|
+
touchableGetInitialState: () => {
|
|
227
|
+
touchable: {
|
|
228
|
+
touchState: ?State,
|
|
229
|
+
responderID: ?PressEvent['currentTarget'],
|
|
230
|
+
},
|
|
231
|
+
};
|
|
206
232
|
|
|
207
233
|
// ==== Hooks to Gesture Responder system ====
|
|
208
234
|
/**
|
|
@@ -396,9 +396,12 @@ const TouchableMixin = {
|
|
|
396
396
|
* @return {object} State object to be placed inside of
|
|
397
397
|
* `this.state.touchable`.
|
|
398
398
|
*/
|
|
399
|
-
touchableGetInitialState: function ():
|
|
400
|
-
touchable:
|
|
401
|
-
|
|
399
|
+
touchableGetInitialState: function (): {
|
|
400
|
+
touchable: {
|
|
401
|
+
touchState: ?State,
|
|
402
|
+
responderID: ?PressEvent['currentTarget'],
|
|
403
|
+
},
|
|
404
|
+
} {
|
|
402
405
|
return {
|
|
403
406
|
touchable: {touchState: undefined, responderID: null},
|
|
404
407
|
};
|
|
@@ -401,9 +401,12 @@ const TouchableMixin = {
|
|
|
401
401
|
* @return {object} State object to be placed inside of
|
|
402
402
|
* `this.state.touchable`.
|
|
403
403
|
*/
|
|
404
|
-
touchableGetInitialState: function ():
|
|
405
|
-
touchable:
|
|
406
|
-
|
|
404
|
+
touchableGetInitialState: function (): {
|
|
405
|
+
touchable: {
|
|
406
|
+
touchState: ?State,
|
|
407
|
+
responderID: ?PressEvent['currentTarget'],
|
|
408
|
+
},
|
|
409
|
+
} {
|
|
407
410
|
return {
|
|
408
411
|
touchable: {touchState: undefined, responderID: null},
|
|
409
412
|
};
|
|
@@ -277,7 +277,7 @@ class TouchableHighlight extends React.Component<Props, State> {
|
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
render(): React.Node {
|
|
280
|
-
const child = React.Children.only(this.props.children);
|
|
280
|
+
const child = React.Children.only<$FlowFixMe>(this.props.children);
|
|
281
281
|
|
|
282
282
|
// BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
|
|
283
283
|
// adopting `Pressability`, so preserve that behavior.
|
|
@@ -239,8 +239,8 @@ class TouchableNativeFeedback extends React.Component<Props, State> {
|
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
render(): React.Node {
|
|
242
|
-
const element = React.Children.only(this.props.children);
|
|
243
|
-
const children = [element.props.children];
|
|
242
|
+
const element = React.Children.only<$FlowFixMe>(this.props.children);
|
|
243
|
+
const children: Array<React.Node> = [element.props.children];
|
|
244
244
|
if (__DEV__) {
|
|
245
245
|
if (element.type === View) {
|
|
246
246
|
children.push(
|
|
@@ -206,6 +206,7 @@ class TouchableOpacity extends React.Component<Props, State> {
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
_getChildStyleOpacityWithDefault(): number {
|
|
209
|
+
// $FlowFixMe[underconstrained-implicit-instantiation]
|
|
209
210
|
const opacity = flattenStyle(this.props.style)?.opacity;
|
|
210
211
|
return typeof opacity === 'number' ? opacity : 1;
|
|
211
212
|
}
|
|
@@ -301,7 +302,9 @@ class TouchableOpacity extends React.Component<Props, State> {
|
|
|
301
302
|
this.state.pressability.configure(this._createPressabilityConfig());
|
|
302
303
|
if (
|
|
303
304
|
this.props.disabled !== prevProps.disabled ||
|
|
305
|
+
// $FlowFixMe[underconstrained-implicit-instantiation]
|
|
304
306
|
flattenStyle(prevProps.style)?.opacity !==
|
|
307
|
+
// $FlowFixMe[underconstrained-implicit-instantiation]
|
|
305
308
|
flattenStyle(this.props.style)?.opacity
|
|
306
309
|
) {
|
|
307
310
|
this._opacityInactive(250);
|
|
@@ -40,7 +40,7 @@ export interface TouchableWithoutFeedbackProps
|
|
|
40
40
|
extends TouchableWithoutFeedbackPropsIOS,
|
|
41
41
|
TouchableWithoutFeedbackPropsAndroid,
|
|
42
42
|
AccessibilityProps {
|
|
43
|
-
children?: React.ReactNode;
|
|
43
|
+
children?: React.ReactNode | undefined;
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* Delay in ms, from onPressIn, before onLongPress is called.
|
|
@@ -121,8 +121,8 @@ class TouchableWithoutFeedback extends React.Component<Props, State> {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
render(): React.Node {
|
|
124
|
-
const element = React.Children.only(this.props.children);
|
|
125
|
-
const children = [element.props.children];
|
|
124
|
+
const element = React.Children.only<$FlowFixMe>(this.props.children);
|
|
125
|
+
const children: Array<React.Node> = [element.props.children];
|
|
126
126
|
const ariaLive = this.props['aria-live'];
|
|
127
127
|
|
|
128
128
|
if (__DEV__) {
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {Overlay} from './TraceUpdateOverlayNativeComponent';
|
|
12
|
+
|
|
13
|
+
import UIManager from '../../ReactNative/UIManager';
|
|
14
|
+
import processColor from '../../StyleSheet/processColor';
|
|
15
|
+
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
16
|
+
import Platform from '../../Utilities/Platform';
|
|
17
|
+
import View from '../View/View';
|
|
18
|
+
import TraceUpdateOverlayNativeComponent, {
|
|
19
|
+
Commands,
|
|
20
|
+
} from './TraceUpdateOverlayNativeComponent';
|
|
21
|
+
import * as React from 'react';
|
|
22
|
+
|
|
23
|
+
type AgentEvents = {
|
|
24
|
+
drawTraceUpdates: [Array<{node: TraceNode, color: string}>],
|
|
25
|
+
disableTraceUpdates: [],
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
interface Agent {
|
|
29
|
+
addListener<Event: $Keys<AgentEvents>>(
|
|
30
|
+
event: Event,
|
|
31
|
+
listener: (...AgentEvents[Event]) => void,
|
|
32
|
+
): void;
|
|
33
|
+
removeListener(event: $Keys<AgentEvents>, listener: () => void): void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type PublicInstance = {
|
|
37
|
+
measure?: (
|
|
38
|
+
(
|
|
39
|
+
x: number,
|
|
40
|
+
y: number,
|
|
41
|
+
width: number,
|
|
42
|
+
height: number,
|
|
43
|
+
left: number,
|
|
44
|
+
top: number,
|
|
45
|
+
) => void,
|
|
46
|
+
) => void,
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
type TraceNode =
|
|
50
|
+
| PublicInstance
|
|
51
|
+
| {
|
|
52
|
+
canonical?:
|
|
53
|
+
| PublicInstance // TODO: remove this variant when syncing the new version of the renderer from React to React Native.
|
|
54
|
+
| {
|
|
55
|
+
publicInstance?: PublicInstance,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
type ReactDevToolsGlobalHook = {
|
|
60
|
+
on: (eventName: string, (agent: Agent) => void) => void,
|
|
61
|
+
off: (eventName: string, (agent: Agent) => void) => void,
|
|
62
|
+
reactDevtoolsAgent: Agent,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const {useEffect, useRef, useState} = React;
|
|
66
|
+
const hook: ReactDevToolsGlobalHook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
67
|
+
const isNativeComponentReady =
|
|
68
|
+
Platform.OS === 'android' &&
|
|
69
|
+
UIManager.hasViewManagerConfig('TraceUpdateOverlay');
|
|
70
|
+
let devToolsAgent: ?Agent;
|
|
71
|
+
|
|
72
|
+
export default function TraceUpdateOverlay(): React.Node {
|
|
73
|
+
const [overlayDisabled, setOverlayDisabled] = useState(false);
|
|
74
|
+
// This effect is designed to be explicitly shown here to avoid re-subscribe from the same
|
|
75
|
+
// overlay component.
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (!isNativeComponentReady) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function attachToDevtools(agent: Agent) {
|
|
82
|
+
devToolsAgent = agent;
|
|
83
|
+
agent.addListener('drawTraceUpdates', onAgentDrawTraceUpdates);
|
|
84
|
+
agent.addListener('disableTraceUpdates', onAgentDisableTraceUpdates);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function subscribe() {
|
|
88
|
+
hook?.on('react-devtools', attachToDevtools);
|
|
89
|
+
if (hook?.reactDevtoolsAgent) {
|
|
90
|
+
attachToDevtools(hook.reactDevtoolsAgent);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function unsubscribe() {
|
|
95
|
+
hook?.off('react-devtools', attachToDevtools);
|
|
96
|
+
const agent = devToolsAgent;
|
|
97
|
+
if (agent != null) {
|
|
98
|
+
agent.removeListener('drawTraceUpdates', onAgentDrawTraceUpdates);
|
|
99
|
+
agent.removeListener('disableTraceUpdates', onAgentDisableTraceUpdates);
|
|
100
|
+
devToolsAgent = null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function onAgentDrawTraceUpdates(
|
|
105
|
+
nodesToDraw: Array<{node: TraceNode, color: string}> = [],
|
|
106
|
+
) {
|
|
107
|
+
// If overlay is disabled before, now it's enabled.
|
|
108
|
+
setOverlayDisabled(false);
|
|
109
|
+
|
|
110
|
+
const newFramesToDraw: Array<Promise<Overlay>> = [];
|
|
111
|
+
nodesToDraw.forEach(({node, color}) => {
|
|
112
|
+
// `canonical.publicInstance` => Fabric
|
|
113
|
+
// TODO: remove this check when syncing the new version of the renderer from React to React Native.
|
|
114
|
+
// `canonical` => Legacy Fabric
|
|
115
|
+
// `node` => Legacy renderer
|
|
116
|
+
const component =
|
|
117
|
+
(node.canonical && node.canonical.publicInstance) ??
|
|
118
|
+
node.canonical ??
|
|
119
|
+
node;
|
|
120
|
+
if (!component || !component.measure) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const frameToDrawPromise = new Promise<Overlay>(resolve => {
|
|
124
|
+
// The if statement here is to make flow happy
|
|
125
|
+
if (component.measure) {
|
|
126
|
+
// TODO(T145522797): We should refactor this to use `getBoundingClientRect` when Paper is no longer supported.
|
|
127
|
+
component.measure((x, y, width, height, left, top) => {
|
|
128
|
+
resolve({
|
|
129
|
+
rect: {left, top, width, height},
|
|
130
|
+
color: processColor(color),
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
newFramesToDraw.push(frameToDrawPromise);
|
|
136
|
+
});
|
|
137
|
+
Promise.all(newFramesToDraw).then(
|
|
138
|
+
results => {
|
|
139
|
+
if (nativeComponentRef.current != null) {
|
|
140
|
+
Commands.draw(
|
|
141
|
+
nativeComponentRef.current,
|
|
142
|
+
JSON.stringify(
|
|
143
|
+
results.filter(
|
|
144
|
+
({rect, color}) => rect.width >= 0 && rect.height >= 0,
|
|
145
|
+
),
|
|
146
|
+
),
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
err => {
|
|
151
|
+
console.error(`Failed to measure updated traces. Error: ${err}`);
|
|
152
|
+
},
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function onAgentDisableTraceUpdates() {
|
|
157
|
+
// When trace updates are disabled from the backend, we won't receive draw events until it's enabled by the next draw. We can safely remove the overlay as it's not needed now.
|
|
158
|
+
setOverlayDisabled(true);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
subscribe();
|
|
162
|
+
return unsubscribe;
|
|
163
|
+
}, []); // Only run once when the overlay initially rendered
|
|
164
|
+
|
|
165
|
+
const nativeComponentRef =
|
|
166
|
+
useRef<?React.ElementRef<typeof TraceUpdateOverlayNativeComponent>>(null);
|
|
167
|
+
|
|
168
|
+
return (
|
|
169
|
+
!overlayDisabled &&
|
|
170
|
+
isNativeComponentReady && (
|
|
171
|
+
<View pointerEvents="none" style={styles.overlay}>
|
|
172
|
+
<TraceUpdateOverlayNativeComponent
|
|
173
|
+
ref={nativeComponentRef}
|
|
174
|
+
style={styles.overlay}
|
|
175
|
+
/>
|
|
176
|
+
</View>
|
|
177
|
+
)
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const styles = StyleSheet.create({
|
|
182
|
+
overlay: {
|
|
183
|
+
position: 'absolute',
|
|
184
|
+
top: 0,
|
|
185
|
+
bottom: 0,
|
|
186
|
+
left: 0,
|
|
187
|
+
right: 0,
|
|
188
|
+
},
|
|
189
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';
|
|
12
|
+
import type {ProcessedColorValue} from '../../StyleSheet/processColor';
|
|
13
|
+
import type {ViewProps} from '../View/ViewPropTypes';
|
|
14
|
+
|
|
15
|
+
import codegenNativeCommands from '../../Utilities/codegenNativeCommands';
|
|
16
|
+
import codegenNativeComponent from '../../Utilities/codegenNativeComponent';
|
|
17
|
+
import * as React from 'react';
|
|
18
|
+
|
|
19
|
+
type NativeProps = $ReadOnly<{|
|
|
20
|
+
...ViewProps,
|
|
21
|
+
|}>;
|
|
22
|
+
export type TraceUpdateOverlayNativeComponentType = HostComponent<NativeProps>;
|
|
23
|
+
export type Overlay = {
|
|
24
|
+
rect: {left: number, top: number, width: number, height: number},
|
|
25
|
+
color: ?ProcessedColorValue,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
interface NativeCommands {
|
|
29
|
+
+draw: (
|
|
30
|
+
viewRef: React.ElementRef<TraceUpdateOverlayNativeComponentType>,
|
|
31
|
+
// TODO(T144046177): Ideally we can pass array of Overlay, but currently
|
|
32
|
+
// Array type is not supported in RN codegen for building native commands.
|
|
33
|
+
overlays: string,
|
|
34
|
+
) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
38
|
+
supportedCommands: ['draw'],
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export default (codegenNativeComponent<NativeProps>(
|
|
42
|
+
'TraceUpdateOverlay',
|
|
43
|
+
): HostComponent<NativeProps>);
|
|
@@ -46,12 +46,25 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
46
46
|
flexWrap: true,
|
|
47
47
|
gap: true,
|
|
48
48
|
height: true,
|
|
49
|
+
inset: true,
|
|
50
|
+
insetBlock: true,
|
|
51
|
+
insetBlockEnd: true,
|
|
52
|
+
insetBlockStart: true,
|
|
53
|
+
insetInline: true,
|
|
54
|
+
insetInlineEnd: true,
|
|
55
|
+
insetInlineStart: true,
|
|
49
56
|
justifyContent: true,
|
|
50
57
|
left: true,
|
|
51
58
|
margin: true,
|
|
59
|
+
marginBlock: true,
|
|
60
|
+
marginBlockEnd: true,
|
|
61
|
+
marginBlockStart: true,
|
|
52
62
|
marginBottom: true,
|
|
53
63
|
marginEnd: true,
|
|
54
64
|
marginHorizontal: true,
|
|
65
|
+
marginInline: true,
|
|
66
|
+
marginInlineEnd: true,
|
|
67
|
+
marginInlineStart: true,
|
|
55
68
|
marginLeft: true,
|
|
56
69
|
marginRight: true,
|
|
57
70
|
marginStart: true,
|
|
@@ -63,9 +76,15 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
63
76
|
minWidth: true,
|
|
64
77
|
overflow: true,
|
|
65
78
|
padding: true,
|
|
79
|
+
paddingBlock: true,
|
|
80
|
+
paddingBlockEnd: true,
|
|
81
|
+
paddingBlockStart: true,
|
|
66
82
|
paddingBottom: true,
|
|
67
83
|
paddingEnd: true,
|
|
68
84
|
paddingHorizontal: true,
|
|
85
|
+
paddingInline: true,
|
|
86
|
+
paddingInlineEnd: true,
|
|
87
|
+
paddingInlineStart: true,
|
|
69
88
|
paddingLeft: true,
|
|
70
89
|
paddingRight: true,
|
|
71
90
|
paddingStart: true,
|
|
@@ -98,6 +117,9 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
98
117
|
*/
|
|
99
118
|
backfaceVisibility: true,
|
|
100
119
|
backgroundColor: colorAttributes,
|
|
120
|
+
borderBlockColor: colorAttributes,
|
|
121
|
+
borderBlockEndColor: colorAttributes,
|
|
122
|
+
borderBlockStartColor: colorAttributes,
|
|
101
123
|
borderBottomColor: colorAttributes,
|
|
102
124
|
borderBottomEndRadius: true,
|
|
103
125
|
borderBottomLeftRadius: true,
|
|
@@ -106,10 +128,14 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
106
128
|
borderColor: colorAttributes,
|
|
107
129
|
borderCurve: true,
|
|
108
130
|
borderEndColor: colorAttributes,
|
|
131
|
+
borderEndEndRadius: true,
|
|
132
|
+
borderEndStartRadius: true,
|
|
109
133
|
borderLeftColor: colorAttributes,
|
|
110
134
|
borderRadius: true,
|
|
111
135
|
borderRightColor: colorAttributes,
|
|
112
136
|
borderStartColor: colorAttributes,
|
|
137
|
+
borderStartEndRadius: true,
|
|
138
|
+
borderStartStartRadius: true,
|
|
113
139
|
borderStyle: true,
|
|
114
140
|
borderTopColor: colorAttributes,
|
|
115
141
|
borderTopEndRadius: true,
|
|
@@ -57,63 +57,89 @@ const View: React.AbstractComponent<
|
|
|
57
57
|
nativeID,
|
|
58
58
|
pointerEvents,
|
|
59
59
|
role,
|
|
60
|
-
style,
|
|
61
60
|
tabIndex,
|
|
62
61
|
...otherProps
|
|
63
62
|
}: ViewProps,
|
|
64
63
|
forwardedRef,
|
|
65
64
|
) => {
|
|
65
|
+
const hasTextAncestor = React.useContext(TextAncestor);
|
|
66
66
|
const _accessibilityLabelledBy =
|
|
67
67
|
ariaLabelledBy?.split(/\s*,\s*/g) ?? accessibilityLabelledBy;
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
let _accessibilityState;
|
|
70
|
+
if (
|
|
71
|
+
accessibilityState != null ||
|
|
72
|
+
ariaBusy != null ||
|
|
73
|
+
ariaChecked != null ||
|
|
74
|
+
ariaDisabled != null ||
|
|
75
|
+
ariaExpanded != null ||
|
|
76
|
+
ariaSelected != null
|
|
77
|
+
) {
|
|
78
|
+
_accessibilityState = {
|
|
79
|
+
busy: ariaBusy ?? accessibilityState?.busy,
|
|
80
|
+
checked: ariaChecked ?? accessibilityState?.checked,
|
|
81
|
+
disabled: ariaDisabled ?? accessibilityState?.disabled,
|
|
82
|
+
expanded: ariaExpanded ?? accessibilityState?.expanded,
|
|
83
|
+
selected: ariaSelected ?? accessibilityState?.selected,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
let _accessibilityValue;
|
|
87
|
+
if (
|
|
88
|
+
accessibilityValue != null ||
|
|
89
|
+
ariaValueMax != null ||
|
|
90
|
+
ariaValueMin != null ||
|
|
91
|
+
ariaValueNow != null ||
|
|
92
|
+
ariaValueText != null
|
|
93
|
+
) {
|
|
94
|
+
_accessibilityValue = {
|
|
95
|
+
max: ariaValueMax ?? accessibilityValue?.max,
|
|
96
|
+
min: ariaValueMin ?? accessibilityValue?.min,
|
|
97
|
+
now: ariaValueNow ?? accessibilityValue?.now,
|
|
98
|
+
text: ariaValueText ?? accessibilityValue?.text,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
76
101
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
min: ariaValueMin ?? accessibilityValue?.min,
|
|
80
|
-
now: ariaValueNow ?? accessibilityValue?.now,
|
|
81
|
-
text: ariaValueText ?? accessibilityValue?.text,
|
|
82
|
-
};
|
|
102
|
+
// $FlowFixMe[underconstrained-implicit-instantiation]
|
|
103
|
+
let style = flattenStyle(otherProps.style);
|
|
83
104
|
|
|
84
|
-
const
|
|
85
|
-
const newPointerEvents = flattenedStyle?.pointerEvents || pointerEvents;
|
|
105
|
+
const newPointerEvents = style?.pointerEvents || pointerEvents;
|
|
86
106
|
|
|
87
|
-
|
|
88
|
-
<
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
accessibilityLiveRegion
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
accessibilityRole
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
pointerEvents={newPointerEvents}
|
|
113
|
-
ref={forwardedRef}
|
|
114
|
-
/>
|
|
115
|
-
</TextAncestor.Provider>
|
|
107
|
+
const actualView = (
|
|
108
|
+
<ViewNativeComponent
|
|
109
|
+
{...otherProps}
|
|
110
|
+
accessibilityLiveRegion={
|
|
111
|
+
ariaLive === 'off' ? 'none' : ariaLive ?? accessibilityLiveRegion
|
|
112
|
+
}
|
|
113
|
+
accessibilityLabel={ariaLabel ?? accessibilityLabel}
|
|
114
|
+
focusable={tabIndex !== undefined ? !tabIndex : focusable}
|
|
115
|
+
accessibilityState={_accessibilityState}
|
|
116
|
+
accessibilityRole={
|
|
117
|
+
role ? getAccessibilityRoleFromRole(role) : accessibilityRole
|
|
118
|
+
}
|
|
119
|
+
accessibilityElementsHidden={ariaHidden ?? accessibilityElementsHidden}
|
|
120
|
+
accessibilityLabelledBy={_accessibilityLabelledBy}
|
|
121
|
+
accessibilityValue={_accessibilityValue}
|
|
122
|
+
importantForAccessibility={
|
|
123
|
+
ariaHidden === true
|
|
124
|
+
? 'no-hide-descendants'
|
|
125
|
+
: importantForAccessibility
|
|
126
|
+
}
|
|
127
|
+
nativeID={id ?? nativeID}
|
|
128
|
+
style={style}
|
|
129
|
+
pointerEvents={newPointerEvents}
|
|
130
|
+
ref={forwardedRef}
|
|
131
|
+
/>
|
|
116
132
|
);
|
|
133
|
+
|
|
134
|
+
if (hasTextAncestor) {
|
|
135
|
+
return (
|
|
136
|
+
<TextAncestor.Provider value={false}>
|
|
137
|
+
{actualView}
|
|
138
|
+
</TextAncestor.Provider>
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return actualView;
|
|
117
143
|
},
|
|
118
144
|
);
|
|
119
145
|
|
|
@@ -61,7 +61,6 @@ const View: React.AbstractComponent<
|
|
|
61
61
|
nativeID,
|
|
62
62
|
pointerEvents,
|
|
63
63
|
role,
|
|
64
|
-
style,
|
|
65
64
|
tabIndex,
|
|
66
65
|
...otherProps
|
|
67
66
|
}: ViewProps,
|
|
@@ -70,23 +69,43 @@ const View: React.AbstractComponent<
|
|
|
70
69
|
const _accessibilityLabelledBy =
|
|
71
70
|
ariaLabelledBy?.split(/\s*,\s*/g) ?? accessibilityLabelledBy;
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
let _accessibilityState;
|
|
73
|
+
if (
|
|
74
|
+
accessibilityState != null ||
|
|
75
|
+
ariaBusy != null ||
|
|
76
|
+
ariaChecked != null ||
|
|
77
|
+
ariaDisabled != null ||
|
|
78
|
+
ariaExpanded != null ||
|
|
79
|
+
ariaSelected != null
|
|
80
|
+
) {
|
|
81
|
+
_accessibilityState = {
|
|
82
|
+
busy: ariaBusy ?? accessibilityState?.busy,
|
|
83
|
+
checked: ariaChecked ?? accessibilityState?.checked,
|
|
84
|
+
disabled: ariaDisabled ?? accessibilityState?.disabled,
|
|
85
|
+
expanded: ariaExpanded ?? accessibilityState?.expanded,
|
|
86
|
+
selected: ariaSelected ?? accessibilityState?.selected,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
let _accessibilityValue;
|
|
90
|
+
if (
|
|
91
|
+
accessibilityValue != null ||
|
|
92
|
+
ariaValueMax != null ||
|
|
93
|
+
ariaValueMin != null ||
|
|
94
|
+
ariaValueNow != null ||
|
|
95
|
+
ariaValueText != null
|
|
96
|
+
) {
|
|
97
|
+
_accessibilityValue = {
|
|
98
|
+
max: ariaValueMax ?? accessibilityValue?.max,
|
|
99
|
+
min: ariaValueMin ?? accessibilityValue?.min,
|
|
100
|
+
now: ariaValueNow ?? accessibilityValue?.now,
|
|
101
|
+
text: ariaValueText ?? accessibilityValue?.text,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
80
104
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
min: ariaValueMin ?? accessibilityValue?.min,
|
|
84
|
-
now: ariaValueNow ?? accessibilityValue?.now,
|
|
85
|
-
text: ariaValueText ?? accessibilityValue?.text,
|
|
86
|
-
};
|
|
105
|
+
// $FlowFixMe[underconstrained-implicit-instantiation]
|
|
106
|
+
let style = flattenStyle(otherProps.style);
|
|
87
107
|
|
|
88
|
-
const
|
|
89
|
-
const newPointerEvents = flattenedStyle?.pointerEvents || pointerEvents;
|
|
108
|
+
const newPointerEvents = style?.pointerEvents || pointerEvents;
|
|
90
109
|
|
|
91
110
|
const _keyDown = (event: KeyEvent) => {
|
|
92
111
|
if (otherProps.keyDownEvents && event.isPropagationStopped() !== true) {
|
|
@@ -141,7 +160,9 @@ const View: React.AbstractComponent<
|
|
|
141
160
|
const childrenWithImportantForAccessibility = children => {
|
|
142
161
|
return React.Children.map(children, child => {
|
|
143
162
|
if (React.isValidElement(child)) {
|
|
163
|
+
// $FlowFixMe[incompatible-use]
|
|
144
164
|
if (child.props.children) {
|
|
165
|
+
// $FlowFixMe[incompatible-type]
|
|
145
166
|
return React.cloneElement(child, {
|
|
146
167
|
accessible: false,
|
|
147
168
|
children: childrenWithImportantForAccessibility(
|
|
@@ -149,6 +170,7 @@ const View: React.AbstractComponent<
|
|
|
149
170
|
),
|
|
150
171
|
});
|
|
151
172
|
} else {
|
|
173
|
+
// $FlowFixMe[incompatible-type]
|
|
152
174
|
return React.cloneElement(child, {accessible: false});
|
|
153
175
|
}
|
|
154
176
|
}
|