@office-iss/react-native-win32 0.71.5 → 0.72.0-preview.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +15 -3
- package/CHANGELOG.json +321 -45
- package/CHANGELOG.md +149 -26
- 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/TouchableWin32.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +179 -0
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
- package/Libraries/Components/View/View.js +35 -16
- 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 +2 -35
- 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 +4 -8
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +4 -8
- 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/DevToolsSettings/NativeDevToolsSettingsManager.js +24 -0
- 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 +26 -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 +10 -4
- 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 +168 -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 +6 -6
- 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.win32.js +26 -0
- 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/flow/use-sync-external-store.js +1 -0
- 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 +122 -85
- package/package.json +40 -30
- package/rn-get-polyfills.js +1 -1
- package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
- package/src/Libraries/Components/Touchable/TouchableWin32.tsx +3 -3
- 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
|
@@ -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);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchableWin32.js","sourceRoot":"","sources":["../../../src/Libraries/Components/Touchable/TouchableWin32.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * This is primarily a fork of React Native's Touchable Mixin.\n * It has been repurposed as it's own standalone control for win32,\n * as it needs to support a richer set of functionality on the desktop.\n * The touchable variants can be rewritten as wrappers around TouchableWin32\n * by passing the correct set of props down and managing state correctly.\n *\n * React Native's Touchable.js file (https://github.com/facebook/react-native/blob/master/Libraries/Components/Touchable/Touchable.js)\n * provides an overview over how touchables work and interact with the gesture responder system.\n */\n'use strict';\n\nimport React from 'react'\nimport { NativeSyntheticEvent, StyleProp, UIManager, ViewStyle, ViewWin32 } from 'react-native';\n\nimport { ITouchableWin32Props, ITouchableWin32State } from './TouchableWin32.Props';\nimport {\n IChildAsFunction,\n IDimensions,\n IPosition,\n IPressEvent,\n IPressInLocation,\n ISignal,\n IState,\n IStateConditions,\n ITransitions,\n} from './TouchableWin32.Types';\nimport { IKeyboardEvent } from '../View/ViewPropTypes.win32';\n\nconst BoundingDimensions = require('./BoundingDimensions');\nconst Position = require('./Position');\n\nconst {findNodeHandle} = require('../../Renderer/shims/ReactNative');\n\n/**\n * Extracts a single touch, generally this is the active touch or touch that\n * has just ended\n * @param e - a press event containing information about the native event\n */\nfunction extractSingleTouch(e: IPressEvent) {\n const nativeEvent = e.nativeEvent;\n const touches = nativeEvent.touches;\n const changedTouches = nativeEvent.changedTouches;\n const hasTouches = touches && touches.length > 0;\n const hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;\n}\n\n/** Quick lookup maps for a variety of conditions */\nconst baseStatesCondition: IStateConditions = {\n NOT_RESPONDER: false,\n RESPONDER_INACTIVE_PRESS_IN: false,\n RESPONDER_INACTIVE_PRESS_OUT: false,\n RESPONDER_ACTIVE_PRESS_IN: false,\n RESPONDER_ACTIVE_PRESS_OUT: false,\n RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n ERROR: false,\n};\n\nconst IsActive: IStateConditions = {\n ...baseStatesCondition,\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n};\n\nconst IsPressingIn: IStateConditions = {\n ...baseStatesCondition,\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst IsLongPressingIn: IStateConditions = {\n ...baseStatesCondition,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst transitions: ITransitions = {\n NOT_RESPONDER: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n RESPONDER_RELEASE: 'ERROR',\n RESPONDER_TERMINATED: 'ERROR',\n ENTER_PRESS_RECT: 'ERROR',\n LEAVE_PRESS_RECT: 'ERROR',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: 'RESPONDER_ACTIVE_PRESS_IN',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: 'RESPONDER_ACTIVE_PRESS_OUT',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n ERROR: {\n DELAY: 'NOT_RESPONDER',\n RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'NOT_RESPONDER',\n LEAVE_PRESS_RECT: 'NOT_RESPONDER',\n LONG_PRESS_DETECTED: 'NOT_RESPONDER',\n },\n};\n\n// Touchable maintains additional internal state to manage keypress interactions\n// This information is abstracted away when passed to children off the touchable\n// (function children) or styles. A keypressed state is equivalent to a normal\n// press state. If either a pointer, mouse, or special key (space/enter) is pressed\n// the touchable considers itself to be in a pressed state. Do note that key presses\n// will not invoke gesture responder hooksand are not subject to the passed in delays.\ninterface IInternalTouchableWin32State extends ITouchableWin32State {\n isKeyPressed: boolean;\n}\n\n/** Constants for integrating into UI Components */\nconst HIGHLIGHT_DELAY_MS = 130;\nconst PRESS_EXPAND_DIPS = 20; // Subject to change for win32 and desktop\nconst LONG_PRESS_THRESHOLD = 500;\nconst LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\nconst LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n/**\n * TouchableWin32 is a 'componentization' of the Touchable Mixin in React Native.\n * This means that instead of implementing components such as TouchableHighlight\n * via the mixin, they are merely implemented as wrappers around TouchableWin32,\n * forwarding the correct set of props. Additionally, TouchableWin32 supports hover\n * via onMouseEnter and onMouseLeave and focus/blur via onFocus/onBlur.\n * TouchableWin32 also allows for functions as child components (that use the internal\n * state of the touchable to conditionally render children) as well functions as styles\n * (that use internal state to conditionally calculate styles)\n */\nexport class TouchableWin32 extends React.Component<ITouchableWin32Props, IInternalTouchableWin32State> {\n private _longPressDelayTimeout: number;\n private _touchableDelayTimeout: number;\n private _pressOutDelayTimeout: number;\n private _pressInLocation: IPressInLocation;\n private _touchState: IState;\n private _responderID: number;\n private _positionOnActivate: IPosition;\n private _dimensionsOnActivate: IDimensions;\n\n private readonly _internalRef: React.RefObject<ViewWin32>\n\n constructor(props) {\n super(props);\n\n this.state = {\n isKeyPressed: false,\n isPressed: false,\n isFocused: false,\n isHovered: false,\n };\n\n this._internalRef = React.createRef<ViewWin32>();\n }\n\n public componentWillUnmount() {\n this._touchableDelayTimeout && clearTimeout(this._touchableDelayTimeout);\n this._longPressDelayTimeout && clearTimeout(this._longPressDelayTimeout);\n this._pressOutDelayTimeout && clearTimeout(this._pressOutDelayTimeout);\n }\n\n public render() {\n const { children, style, renderStyle, ...rest } = this.props;\n\n // The React Native touchables generally clone the child component\n // to apply additional styles to it. This approach allows children\n // to be passed in as functions (to be invoked with the current state),\n // it is handy for manipulating children as a result of the interaction\n // state (e.g. text color). A similar approach is taken for style\n let child: React.ReactNode;\n if (children) {\n child = typeof children === 'function' ?\n (children as IChildAsFunction<ITouchableWin32State>)(this._deriveStateFromInternalState()) : children;\n\n // Continue to enforce single child constraint\n child = React.Children.only(child);\n }\n\n let computedStyle: StyleProp<ViewStyle>;\n if (renderStyle) {\n computedStyle = renderStyle(this._deriveStateFromInternalState());\n } else if (style) {\n computedStyle = style;\n }\n\n return (\n <ViewWin32\n // Forward most of the props\n {...rest}\n // Hooks into Gesture Responder System\n onStartShouldSetResponder={this._touchableHandleStartShouldSetResponder}\n onResponderTerminationRequest={this._touchableHandleResponderTerminationRequest}\n onResponderGrant={this._touchableHandleResponderGrant}\n onResponderMove={this._touchableHandleResponderMove}\n onResponderRelease={this._touchableHandleResponderRelease}\n onResponderTerminate={this._touchableHandleResponderTerminate}\n // Hover\n onMouseEnter={this._onMouseEnter}\n onMouseLeave={this._onMouseLeave}\n // Focus\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n // Key press interactions\n onKeyDown={this._onKeyDown}\n onKeyUp={this._onKeyUp}\n // Ref\n ref={this._internalRef}\n // Style\n style={computedStyle}\n >\n {child}\n </ViewWin32>\n );\n }\n\n public focus = () => {\n this._internalRef.current.focus();\n }\n\n /**\n * The rejectResponderTermination prop provides a way to accept/reject termination requests\n */\n private readonly _touchableHandleResponderTerminationRequest = (): boolean => {\n return !this.props.rejectResponderTermination;\n };\n\n /**\n * Only reject an opportunity to become the responder on bubble if disabled\n */\n private readonly _touchableHandleStartShouldSetResponder = (): boolean => {\n return !this.props.disabled;\n };\n\n /** TODO: Long press cancel as a prop may be a good idea */\n private readonly _touchableLongPressCancelsPress = (): boolean => {\n return true;\n };\n\n /**\n * On responder being granted, state and local data need to be set\n */\n private readonly _touchableHandleResponderGrant = (e: IPressEvent): void => {\n const dispatchID = findNodeHandle(e.currentTarget);\n e.persist();\n\n this._pressOutDelayTimeout && clearTimeout(this._pressOutDelayTimeout);\n this._pressOutDelayTimeout = null;\n\n this._touchState = 'NOT_RESPONDER';\n this._responderID = dispatchID;\n\n this._receiveSignal('RESPONDER_GRANT', e);\n let delayMS: number = this.props.touchableGetHighlightDelayMS\n ? Math.max(this.props.touchableGetHighlightDelayMS(), 0)\n : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n\n if (delayMS !== 0) {\n this._touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS);\n } else {\n this._handleDelay(e);\n }\n\n let longDelayMS: number = this.props.touchableGetLongPressDelayMS\n ? Math.max(this.props.touchableGetLongPressDelayMS(), 10)\n : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this._longPressDelayTimeout = setTimeout(this._handleLongDelay.bind(this, e), longDelayMS + delayMS);\n };\n\n /**\n * Handle responder release\n */\n private readonly _touchableHandleResponderRelease = (e: IPressEvent) => {\n this._pressInLocation = null;\n this._receiveSignal('RESPONDER_RELEASE', e);\n };\n\n /**\n * Handle responder terminate\n */\n private readonly _touchableHandleResponderTerminate = (e: IPressEvent) => {\n this._pressInLocation = null;\n this._receiveSignal('RESPONDER_TERMINATED', e);\n };\n\n /**\n * Handles move events\n */\n private readonly _touchableHandleResponderMove = (e: IPressEvent) => {\n if (!this._positionOnActivate) {\n return;\n }\n\n const positionOnActivate = this._positionOnActivate;\n const dimensionsOnActivate = this._dimensionsOnActivate;\n const pressRectOffset = this.props.touchableGetPressRectOffset\n ? this.props.touchableGetPressRectOffset()\n : {\n left: PRESS_EXPAND_DIPS,\n right: PRESS_EXPAND_DIPS,\n top: PRESS_EXPAND_DIPS,\n bottom: PRESS_EXPAND_DIPS,\n };\n\n let pressExpandLeft = pressRectOffset.left;\n let pressExpandTop = pressRectOffset.top;\n let pressExpandRight = pressRectOffset.right;\n let pressExpandBottom = pressRectOffset.bottom;\n\n // TODO implement touchableGetHitSlop natively\n const hitSlop = this.props.touchableGetHitSlop ? this.props.touchableGetHitSlop() : null;\n\n if (hitSlop) {\n pressExpandLeft += hitSlop.left || 0;\n pressExpandTop += hitSlop.top || 0;\n pressExpandRight += hitSlop.right || 0;\n pressExpandBottom += hitSlop.bottom || 0;\n }\n\n const touch = extractSingleTouch(e);\n const pageX = touch && touch.pageX;\n const pageY = touch && touch.pageY;\n\n if (this._pressInLocation) {\n const movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this._pressInLocation.pageX, this._pressInLocation.pageY);\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n const isTouchWithinActive =\n pageX > positionOnActivate.left - pressExpandLeft &&\n pageY > positionOnActivate.top - pressExpandTop &&\n pageX < positionOnActivate.left + dimensionsOnActivate.width + pressExpandRight &&\n pageY < positionOnActivate.top + dimensionsOnActivate.height + pressExpandBottom;\n if (isTouchWithinActive) {\n const prevState = this._touchState;\n this._receiveSignal('ENTER_PRESS_RECT', e);\n const currState = this._touchState;\n if (currState === 'RESPONDER_INACTIVE_PRESS_IN' && prevState !== 'RESPONDER_INACTIVE_PRESS_IN') {\n this._cancelLongPressDelayTimeout();\n }\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal('LEAVE_PRESS_RECT', e);\n }\n };\n\n /**\n * Used while performing side effects during state transitions,\n * to maintain proper bounding dimensions and positional information\n */\n private readonly _remeasureMetricsOnActivation = () => {\n const tag = this._responderID;\n if (tag === null) {\n return;\n }\n\n UIManager.measure(tag, this._handleQueryLayout);\n };\n\n /**\n * Callback into measure, see _remeasureMetricsOnActivation\n */\n private readonly _handleQueryLayout = (l: number, t: number, w: number, h: number, globalX: number, globalY: number) => {\n if (!l && !t && !w && !h && !globalX && !globalY) {\n return;\n }\n\n this._positionOnActivate = Position.getPooled(globalX, globalY);\n this._dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n };\n\n private readonly _handleDelay = (e: IPressEvent) => {\n this._touchableDelayTimeout = null;\n this._receiveSignal('DELAY', e);\n };\n\n private readonly _handleLongDelay = (e: IPressEvent) => {\n this._longPressDelayTimeout = null;\n const currState = this._touchState;\n\n if (currState !== 'RESPONDER_ACTIVE_PRESS_IN' && currState !== 'RESPONDER_ACTIVE_LONG_PRESS_IN') {\n const errorMessage =\n 'Attempted to transition from state ' +\n currState +\n ' to ' +\n 'RESPONDER_ACTIVE_LONG_PRESS_IN ' +\n 'which is not supported. This is most likely due to ' +\n 'Touchable.longPressDelayTimeout not being canceled.';\n console.error(errorMessage);\n } else {\n this._receiveSignal('LONG_PRESS_DETECTED', e);\n }\n };\n\n /**\n * Manages state transitions\n */\n private readonly _receiveSignal = (signal: ISignal, e: IPressEvent) => {\n const responderID = this._responderID;\n const currState = this._touchState;\n const nextState: IState = transitions[currState] ? transitions[currState][signal] : null;\n\n if (!nextState) {\n const errorMessage = 'Unrecognized signal ' + signal + ' or state ' + currState + ' for Touchable responder ' + responderID + '.';\n throw new Error(errorMessage);\n }\n if (nextState === 'ERROR') {\n const errorMessage = 'Touchable cannot transition from ' + currState + ' to ' + signal + ' for responder ' + responderID + '.';\n throw new Error(errorMessage);\n }\n\n if (currState !== nextState) {\n this._performSideEffectsForTransition(currState, nextState, signal, e);\n this._touchState = nextState;\n }\n };\n\n private readonly _cancelLongPressDelayTimeout = () => {\n this._longPressDelayTimeout && clearTimeout(this._longPressDelayTimeout);\n this._longPressDelayTimeout = null;\n };\n\n private readonly _isHighlight = (state: IState) => {\n return state === 'RESPONDER_ACTIVE_PRESS_IN' || state === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n };\n\n private readonly _savePressInLocation = (e: IPressEvent) => {\n const touch = extractSingleTouch(e);\n const pageX = touch && touch.pageX;\n const pageY = touch && touch.pageY;\n const locationX = touch && touch.locationX;\n const locationY = touch && touch.locationY;\n this._pressInLocation = { pageX, pageY, locationX, locationY };\n };\n\n private readonly _getDistanceBetweenPoints = (aX: number, aY: number, bX: number, bY: number): number => {\n const deltaX = aX - bX;\n const deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n };\n\n /**\n * Any highlighting/visual effects is done here,\n * This is also where press callbacks are invoked from\n */\n // Existing high cyclomatic complexity\n \n private readonly _performSideEffectsForTransition = (currState: IState, nextState: IState, signal: ISignal, e: IPressEvent) => {\n const currIsHighlight = this._isHighlight(currState);\n const newIsHighlight = this._isHighlight(nextState);\n\n const isFinalSignal = signal === 'RESPONDER_TERMINATED' || signal === 'RESPONDER_RELEASE';\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n const isInitialTransition = currState === 'NOT_RESPONDER' && nextState === 'RESPONDER_INACTIVE_PRESS_IN';\n\n const isActiveTransition = !IsActive[currState] && IsActive[nextState];\n if (isInitialTransition || isActiveTransition) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[currState] && signal === 'LONG_PRESS_DETECTED') {\n this.props.touchableHandleLongPress && this.props.touchableHandleLongPress(e);\n }\n\n if (newIsHighlight && !currIsHighlight) {\n this._startHighlight(e);\n } else if (!newIsHighlight && currIsHighlight) {\n this._endHighlight(e);\n }\n\n if (IsPressingIn[currState] && signal === 'RESPONDER_RELEASE') {\n const hasLongPressHandler = !!this.props.onLongPress;\n const pressIsLongButStillCallOnPress = IsLongPressingIn[currState] && (!hasLongPressHandler || this._touchableLongPressCancelsPress);\n const shouldInvokePress = !IsLongPressingIn[currState] || pressIsLongButStillCallOnPress;\n\n if (shouldInvokePress && this.props.touchableHandlePress) {\n if (!newIsHighlight && !currIsHighlight) {\n // we never highlighted because of delay, but we should highlight now\n this._startHighlight(e);\n this._endHighlight(e);\n }\n\n this.props.touchableHandlePress(e);\n }\n }\n\n this._touchableDelayTimeout && clearTimeout(this._touchableDelayTimeout);\n this._touchableDelayTimeout = null;\n };\n\n private readonly _startHighlight = (e: IPressEvent) => {\n this._savePressInLocation(e);\n this.setState({ isPressed: true });\n this.props.touchableHandleActivePressIn && this.props.touchableHandleActivePressIn(e);\n };\n\n private readonly _endHighlight = (e: IPressEvent) => {\n function _handler() {\n this.props.touchableHandleActivePressOut(e);\n }\n\n this.setState({ isPressed: false });\n if (this.props.touchableHandleActivePressOut) {\n if (this.props.touchableGetPressOutDelayMS && this.props.touchableGetPressOutDelayMS()) {\n this._pressOutDelayTimeout = setTimeout(_handler.bind(this), this.props.touchableGetPressOutDelayMS());\n } else {\n this.props.touchableHandleActivePressOut(e);\n }\n }\n };\n\n private readonly _onMouseEnter = (mouseEvent) => {\n this.setState({ isHovered: true });\n this.props.onMouseEnter && this.props.onMouseEnter(mouseEvent);\n };\n\n private readonly _onMouseLeave = (mouseEvent) => {\n this.setState({ isHovered: false });\n this.props.onMouseLeave && this.props.onMouseLeave(mouseEvent);\n };\n\n private readonly _onFocus = (ev: NativeSyntheticEvent<{}>) => {\n this.setState({ isFocused: true });\n this.props.onFocus && this.props.onFocus(ev);\n };\n\n private readonly _onBlur = (ev: NativeSyntheticEvent<{}>) => {\n this.setState({ isFocused: false });\n this.props.onBlur && this.props.onBlur(ev);\n };\n\n private readonly _onKeyDown = (ev: IKeyboardEvent) => {\n if (this._filterOnKey(ev)) {\n this.setState({ isKeyPressed: true });\n this.props.touchableHandleKeyPressDown && this.props.touchableHandleKeyPressDown(ev);\n }\n\n this.props.onKeyDown && this.props.onKeyDown(ev);\n };\n\n private readonly _onKeyUp = (ev: IKeyboardEvent) => {\n if (this._filterOnKey(ev)) {\n this.setState({ isKeyPressed: false });\n this.props.touchableHandleKeyPress && this.props.touchableHandleKeyPress(ev);\n }\n\n this.props.onKeyUp && this.props.onKeyUp(ev);\n };\n\n private readonly _deriveStateFromInternalState = (): ITouchableWin32State => {\n return {\n isPressed: this.state.isPressed || this.state.isKeyPressed,\n isHovered: this.state.isHovered,\n isFocused: this.state.isFocused,\n };\n }\n\n private readonly _filterOnKey = (ev: IKeyboardEvent): boolean => {\n if (this.props.filterKeys) {\n return this.props.filterKeys(ev.nativeEvent.key);\n }\n\n // Otherwise fall back to handling space and enter only\n return ev.nativeEvent.key === ' ' || ev.nativeEvent.key === 'Enter';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TouchableWin32.js","sourceRoot":"","sources":["../../../src/Libraries/Components/Touchable/TouchableWin32.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * This is primarily a fork of React Native's Touchable Mixin.\n * It has been repurposed as it's own standalone control for win32,\n * as it needs to support a richer set of functionality on the desktop.\n * The touchable variants can be rewritten as wrappers around TouchableWin32\n * by passing the correct set of props down and managing state correctly.\n *\n * React Native's Touchable.js file (https://github.com/facebook/react-native/blob/master/Libraries/Components/Touchable/Touchable.js)\n * provides an overview over how touchables work and interact with the gesture responder system.\n */\n'use strict';\n\nimport React from 'react'\nimport { NativeSyntheticEvent, StyleProp, UIManager, ViewStyle, ViewWin32 } from 'react-native';\n\nimport { ITouchableWin32Props, ITouchableWin32State } from './TouchableWin32.Props';\nimport {\n IChildAsFunction,\n IDimensions,\n IPosition,\n IPressEvent,\n IPressInLocation,\n ISignal,\n IState,\n IStateConditions,\n ITransitions,\n} from './TouchableWin32.Types';\nimport { IKeyboardEvent } from '../View/ViewPropTypes.win32';\n\nconst BoundingDimensions = require('./BoundingDimensions');\nconst Position = require('./Position');\n\nconst {findNodeHandle} = require('../../Renderer/shims/ReactNative');\n\n/**\n * Extracts a single touch, generally this is the active touch or touch that\n * has just ended\n * @param e - a press event containing information about the native event\n */\nfunction extractSingleTouch(e: IPressEvent) {\n const nativeEvent = e.nativeEvent;\n const touches = nativeEvent.touches;\n const changedTouches = nativeEvent.changedTouches;\n const hasTouches = touches && touches.length > 0;\n const hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;\n}\n\n/** Quick lookup maps for a variety of conditions */\nconst baseStatesCondition: IStateConditions = {\n NOT_RESPONDER: false,\n RESPONDER_INACTIVE_PRESS_IN: false,\n RESPONDER_INACTIVE_PRESS_OUT: false,\n RESPONDER_ACTIVE_PRESS_IN: false,\n RESPONDER_ACTIVE_PRESS_OUT: false,\n RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n ERROR: false,\n};\n\nconst IsActive: IStateConditions = {\n ...baseStatesCondition,\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n};\n\nconst IsPressingIn: IStateConditions = {\n ...baseStatesCondition,\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst IsLongPressingIn: IStateConditions = {\n ...baseStatesCondition,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst transitions: ITransitions = {\n NOT_RESPONDER: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n RESPONDER_RELEASE: 'ERROR',\n RESPONDER_TERMINATED: 'ERROR',\n ENTER_PRESS_RECT: 'ERROR',\n LEAVE_PRESS_RECT: 'ERROR',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: 'RESPONDER_ACTIVE_PRESS_IN',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: 'RESPONDER_ACTIVE_PRESS_OUT',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n ERROR: {\n DELAY: 'NOT_RESPONDER',\n RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'NOT_RESPONDER',\n LEAVE_PRESS_RECT: 'NOT_RESPONDER',\n LONG_PRESS_DETECTED: 'NOT_RESPONDER',\n },\n};\n\n// Touchable maintains additional internal state to manage keypress interactions\n// This information is abstracted away when passed to children off the touchable\n// (function children) or styles. A keypressed state is equivalent to a normal\n// press state. If either a pointer, mouse, or special key (space/enter) is pressed\n// the touchable considers itself to be in a pressed state. Do note that key presses\n// will not invoke gesture responder hooksand are not subject to the passed in delays.\ninterface IInternalTouchableWin32State extends ITouchableWin32State {\n isKeyPressed: boolean;\n}\n\n/** Constants for integrating into UI Components */\nconst HIGHLIGHT_DELAY_MS = 130;\nconst PRESS_EXPAND_DIPS = 20; // Subject to change for win32 and desktop\nconst LONG_PRESS_THRESHOLD = 500;\nconst LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\nconst LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n/**\n * TouchableWin32 is a 'componentization' of the Touchable Mixin in React Native.\n * This means that instead of implementing components such as TouchableHighlight\n * via the mixin, they are merely implemented as wrappers around TouchableWin32,\n * forwarding the correct set of props. Additionally, TouchableWin32 supports hover\n * via onMouseEnter and onMouseLeave and focus/blur via onFocus/onBlur.\n * TouchableWin32 also allows for functions as child components (that use the internal\n * state of the touchable to conditionally render children) as well functions as styles\n * (that use internal state to conditionally calculate styles)\n */\nexport class TouchableWin32 extends React.Component<ITouchableWin32Props, IInternalTouchableWin32State> {\n private _longPressDelayTimeout: NodeJS.Timeout;\n private _touchableDelayTimeout: NodeJS.Timeout;\n private _pressOutDelayTimeout: NodeJS.Timeout;\n private _pressInLocation: IPressInLocation;\n private _touchState: IState;\n private _responderID: number;\n private _positionOnActivate: IPosition;\n private _dimensionsOnActivate: IDimensions;\n\n private readonly _internalRef: React.RefObject<ViewWin32>\n\n constructor(props) {\n super(props);\n\n this.state = {\n isKeyPressed: false,\n isPressed: false,\n isFocused: false,\n isHovered: false,\n };\n\n this._internalRef = React.createRef<ViewWin32>();\n }\n\n public componentWillUnmount() {\n this._touchableDelayTimeout && clearTimeout(this._touchableDelayTimeout);\n this._longPressDelayTimeout && clearTimeout(this._longPressDelayTimeout);\n this._pressOutDelayTimeout && clearTimeout(this._pressOutDelayTimeout);\n }\n\n public render() {\n const { children, style, renderStyle, ...rest } = this.props;\n\n // The React Native touchables generally clone the child component\n // to apply additional styles to it. This approach allows children\n // to be passed in as functions (to be invoked with the current state),\n // it is handy for manipulating children as a result of the interaction\n // state (e.g. text color). A similar approach is taken for style\n let child: React.ReactNode;\n if (children) {\n child = typeof children === 'function' ?\n (children as IChildAsFunction<ITouchableWin32State>)(this._deriveStateFromInternalState()) : children;\n\n // Continue to enforce single child constraint\n child = React.Children.only(child);\n }\n\n let computedStyle: StyleProp<ViewStyle>;\n if (renderStyle) {\n computedStyle = renderStyle(this._deriveStateFromInternalState());\n } else if (style) {\n computedStyle = style;\n }\n\n return (\n <ViewWin32\n // Forward most of the props\n {...rest}\n // Hooks into Gesture Responder System\n onStartShouldSetResponder={this._touchableHandleStartShouldSetResponder}\n onResponderTerminationRequest={this._touchableHandleResponderTerminationRequest}\n onResponderGrant={this._touchableHandleResponderGrant}\n onResponderMove={this._touchableHandleResponderMove}\n onResponderRelease={this._touchableHandleResponderRelease}\n onResponderTerminate={this._touchableHandleResponderTerminate}\n // Hover\n onMouseEnter={this._onMouseEnter}\n onMouseLeave={this._onMouseLeave}\n // Focus\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n // Key press interactions\n onKeyDown={this._onKeyDown}\n onKeyUp={this._onKeyUp}\n // Ref\n ref={this._internalRef}\n // Style\n style={computedStyle}\n >\n {child}\n </ViewWin32>\n );\n }\n\n public focus = () => {\n this._internalRef.current.focus();\n }\n\n /**\n * The rejectResponderTermination prop provides a way to accept/reject termination requests\n */\n private readonly _touchableHandleResponderTerminationRequest = (): boolean => {\n return !this.props.rejectResponderTermination;\n };\n\n /**\n * Only reject an opportunity to become the responder on bubble if disabled\n */\n private readonly _touchableHandleStartShouldSetResponder = (): boolean => {\n return !this.props.disabled;\n };\n\n /** TODO: Long press cancel as a prop may be a good idea */\n private readonly _touchableLongPressCancelsPress = (): boolean => {\n return true;\n };\n\n /**\n * On responder being granted, state and local data need to be set\n */\n private readonly _touchableHandleResponderGrant = (e: IPressEvent): void => {\n const dispatchID = findNodeHandle(e.currentTarget);\n e.persist();\n\n this._pressOutDelayTimeout && clearTimeout(this._pressOutDelayTimeout);\n this._pressOutDelayTimeout = null;\n\n this._touchState = 'NOT_RESPONDER';\n this._responderID = dispatchID;\n\n this._receiveSignal('RESPONDER_GRANT', e);\n let delayMS: number = this.props.touchableGetHighlightDelayMS\n ? Math.max(this.props.touchableGetHighlightDelayMS(), 0)\n : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n\n if (delayMS !== 0) {\n this._touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS);\n } else {\n this._handleDelay(e);\n }\n\n let longDelayMS: number = this.props.touchableGetLongPressDelayMS\n ? Math.max(this.props.touchableGetLongPressDelayMS(), 10)\n : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this._longPressDelayTimeout = setTimeout(this._handleLongDelay.bind(this, e), longDelayMS + delayMS);\n };\n\n /**\n * Handle responder release\n */\n private readonly _touchableHandleResponderRelease = (e: IPressEvent) => {\n this._pressInLocation = null;\n this._receiveSignal('RESPONDER_RELEASE', e);\n };\n\n /**\n * Handle responder terminate\n */\n private readonly _touchableHandleResponderTerminate = (e: IPressEvent) => {\n this._pressInLocation = null;\n this._receiveSignal('RESPONDER_TERMINATED', e);\n };\n\n /**\n * Handles move events\n */\n private readonly _touchableHandleResponderMove = (e: IPressEvent) => {\n if (!this._positionOnActivate) {\n return;\n }\n\n const positionOnActivate = this._positionOnActivate;\n const dimensionsOnActivate = this._dimensionsOnActivate;\n const pressRectOffset = this.props.touchableGetPressRectOffset\n ? this.props.touchableGetPressRectOffset()\n : {\n left: PRESS_EXPAND_DIPS,\n right: PRESS_EXPAND_DIPS,\n top: PRESS_EXPAND_DIPS,\n bottom: PRESS_EXPAND_DIPS,\n };\n\n let pressExpandLeft = pressRectOffset.left;\n let pressExpandTop = pressRectOffset.top;\n let pressExpandRight = pressRectOffset.right;\n let pressExpandBottom = pressRectOffset.bottom;\n\n // TODO implement touchableGetHitSlop natively\n const hitSlop = this.props.touchableGetHitSlop ? this.props.touchableGetHitSlop() : null;\n\n if (hitSlop) {\n pressExpandLeft += hitSlop.left || 0;\n pressExpandTop += hitSlop.top || 0;\n pressExpandRight += hitSlop.right || 0;\n pressExpandBottom += hitSlop.bottom || 0;\n }\n\n const touch = extractSingleTouch(e);\n const pageX = touch && touch.pageX;\n const pageY = touch && touch.pageY;\n\n if (this._pressInLocation) {\n const movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this._pressInLocation.pageX, this._pressInLocation.pageY);\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n const isTouchWithinActive =\n pageX > positionOnActivate.left - pressExpandLeft &&\n pageY > positionOnActivate.top - pressExpandTop &&\n pageX < positionOnActivate.left + dimensionsOnActivate.width + pressExpandRight &&\n pageY < positionOnActivate.top + dimensionsOnActivate.height + pressExpandBottom;\n if (isTouchWithinActive) {\n const prevState = this._touchState;\n this._receiveSignal('ENTER_PRESS_RECT', e);\n const currState = this._touchState;\n if (currState === 'RESPONDER_INACTIVE_PRESS_IN' && prevState !== 'RESPONDER_INACTIVE_PRESS_IN') {\n this._cancelLongPressDelayTimeout();\n }\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal('LEAVE_PRESS_RECT', e);\n }\n };\n\n /**\n * Used while performing side effects during state transitions,\n * to maintain proper bounding dimensions and positional information\n */\n private readonly _remeasureMetricsOnActivation = () => {\n const tag = this._responderID;\n if (tag === null) {\n return;\n }\n\n UIManager.measure(tag, this._handleQueryLayout);\n };\n\n /**\n * Callback into measure, see _remeasureMetricsOnActivation\n */\n private readonly _handleQueryLayout = (l: number, t: number, w: number, h: number, globalX: number, globalY: number) => {\n if (!l && !t && !w && !h && !globalX && !globalY) {\n return;\n }\n\n this._positionOnActivate = Position.getPooled(globalX, globalY);\n this._dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n };\n\n private readonly _handleDelay = (e: IPressEvent) => {\n this._touchableDelayTimeout = null;\n this._receiveSignal('DELAY', e);\n };\n\n private readonly _handleLongDelay = (e: IPressEvent) => {\n this._longPressDelayTimeout = null;\n const currState = this._touchState;\n\n if (currState !== 'RESPONDER_ACTIVE_PRESS_IN' && currState !== 'RESPONDER_ACTIVE_LONG_PRESS_IN') {\n const errorMessage =\n 'Attempted to transition from state ' +\n currState +\n ' to ' +\n 'RESPONDER_ACTIVE_LONG_PRESS_IN ' +\n 'which is not supported. This is most likely due to ' +\n 'Touchable.longPressDelayTimeout not being canceled.';\n console.error(errorMessage);\n } else {\n this._receiveSignal('LONG_PRESS_DETECTED', e);\n }\n };\n\n /**\n * Manages state transitions\n */\n private readonly _receiveSignal = (signal: ISignal, e: IPressEvent) => {\n const responderID = this._responderID;\n const currState = this._touchState;\n const nextState: IState = transitions[currState] ? transitions[currState][signal] : null;\n\n if (!nextState) {\n const errorMessage = 'Unrecognized signal ' + signal + ' or state ' + currState + ' for Touchable responder ' + responderID + '.';\n throw new Error(errorMessage);\n }\n if (nextState === 'ERROR') {\n const errorMessage = 'Touchable cannot transition from ' + currState + ' to ' + signal + ' for responder ' + responderID + '.';\n throw new Error(errorMessage);\n }\n\n if (currState !== nextState) {\n this._performSideEffectsForTransition(currState, nextState, signal, e);\n this._touchState = nextState;\n }\n };\n\n private readonly _cancelLongPressDelayTimeout = () => {\n this._longPressDelayTimeout && clearTimeout(this._longPressDelayTimeout);\n this._longPressDelayTimeout = null;\n };\n\n private readonly _isHighlight = (state: IState) => {\n return state === 'RESPONDER_ACTIVE_PRESS_IN' || state === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n };\n\n private readonly _savePressInLocation = (e: IPressEvent) => {\n const touch = extractSingleTouch(e);\n const pageX = touch && touch.pageX;\n const pageY = touch && touch.pageY;\n const locationX = touch && touch.locationX;\n const locationY = touch && touch.locationY;\n this._pressInLocation = { pageX, pageY, locationX, locationY };\n };\n\n private readonly _getDistanceBetweenPoints = (aX: number, aY: number, bX: number, bY: number): number => {\n const deltaX = aX - bX;\n const deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n };\n\n /**\n * Any highlighting/visual effects is done here,\n * This is also where press callbacks are invoked from\n */\n // Existing high cyclomatic complexity\n \n private readonly _performSideEffectsForTransition = (currState: IState, nextState: IState, signal: ISignal, e: IPressEvent) => {\n const currIsHighlight = this._isHighlight(currState);\n const newIsHighlight = this._isHighlight(nextState);\n\n const isFinalSignal = signal === 'RESPONDER_TERMINATED' || signal === 'RESPONDER_RELEASE';\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n const isInitialTransition = currState === 'NOT_RESPONDER' && nextState === 'RESPONDER_INACTIVE_PRESS_IN';\n\n const isActiveTransition = !IsActive[currState] && IsActive[nextState];\n if (isInitialTransition || isActiveTransition) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[currState] && signal === 'LONG_PRESS_DETECTED') {\n this.props.touchableHandleLongPress && this.props.touchableHandleLongPress(e);\n }\n\n if (newIsHighlight && !currIsHighlight) {\n this._startHighlight(e);\n } else if (!newIsHighlight && currIsHighlight) {\n this._endHighlight(e);\n }\n\n if (IsPressingIn[currState] && signal === 'RESPONDER_RELEASE') {\n const hasLongPressHandler = !!this.props.onLongPress;\n const pressIsLongButStillCallOnPress = IsLongPressingIn[currState] && (!hasLongPressHandler || this._touchableLongPressCancelsPress);\n const shouldInvokePress = !IsLongPressingIn[currState] || pressIsLongButStillCallOnPress;\n\n if (shouldInvokePress && this.props.touchableHandlePress) {\n if (!newIsHighlight && !currIsHighlight) {\n // we never highlighted because of delay, but we should highlight now\n this._startHighlight(e);\n this._endHighlight(e);\n }\n\n this.props.touchableHandlePress(e);\n }\n }\n\n this._touchableDelayTimeout && clearTimeout(this._touchableDelayTimeout);\n this._touchableDelayTimeout = null;\n };\n\n private readonly _startHighlight = (e: IPressEvent) => {\n this._savePressInLocation(e);\n this.setState({ isPressed: true });\n this.props.touchableHandleActivePressIn && this.props.touchableHandleActivePressIn(e);\n };\n\n private readonly _endHighlight = (e: IPressEvent) => {\n function _handler() {\n this.props.touchableHandleActivePressOut(e);\n }\n\n this.setState({ isPressed: false });\n if (this.props.touchableHandleActivePressOut) {\n if (this.props.touchableGetPressOutDelayMS && this.props.touchableGetPressOutDelayMS()) {\n this._pressOutDelayTimeout = setTimeout(_handler.bind(this), this.props.touchableGetPressOutDelayMS());\n } else {\n this.props.touchableHandleActivePressOut(e);\n }\n }\n };\n\n private readonly _onMouseEnter = (mouseEvent) => {\n this.setState({ isHovered: true });\n this.props.onMouseEnter && this.props.onMouseEnter(mouseEvent);\n };\n\n private readonly _onMouseLeave = (mouseEvent) => {\n this.setState({ isHovered: false });\n this.props.onMouseLeave && this.props.onMouseLeave(mouseEvent);\n };\n\n private readonly _onFocus = (ev: NativeSyntheticEvent<{}>) => {\n this.setState({ isFocused: true });\n this.props.onFocus && this.props.onFocus(ev);\n };\n\n private readonly _onBlur = (ev: NativeSyntheticEvent<{}>) => {\n this.setState({ isFocused: false });\n this.props.onBlur && this.props.onBlur(ev);\n };\n\n private readonly _onKeyDown = (ev: IKeyboardEvent) => {\n if (this._filterOnKey(ev)) {\n this.setState({ isKeyPressed: true });\n this.props.touchableHandleKeyPressDown && this.props.touchableHandleKeyPressDown(ev);\n }\n\n this.props.onKeyDown && this.props.onKeyDown(ev);\n };\n\n private readonly _onKeyUp = (ev: IKeyboardEvent) => {\n if (this._filterOnKey(ev)) {\n this.setState({ isKeyPressed: false });\n this.props.touchableHandleKeyPress && this.props.touchableHandleKeyPress(ev);\n }\n\n this.props.onKeyUp && this.props.onKeyUp(ev);\n };\n\n private readonly _deriveStateFromInternalState = (): ITouchableWin32State => {\n return {\n isPressed: this.state.isPressed || this.state.isKeyPressed,\n isHovered: this.state.isHovered,\n isFocused: this.state.isFocused,\n };\n }\n\n private readonly _filterOnKey = (ev: IKeyboardEvent): boolean => {\n if (this.props.filterKeys) {\n return this.props.filterKeys(ev.nativeEvent.key);\n }\n\n // Otherwise fall back to handling space and enter only\n return ev.nativeEvent.key === ' ' || ev.nativeEvent.key === 'Enter';\n }\n}\n"]}
|
|
@@ -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,179 @@
|
|
|
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 TraceNode = {
|
|
37
|
+
publicInstance?: TraceNode,
|
|
38
|
+
// TODO: remove this field when syncing the new version of the renderer from React to React Native.
|
|
39
|
+
canonical?: TraceNode,
|
|
40
|
+
measure?: (
|
|
41
|
+
(
|
|
42
|
+
x: number,
|
|
43
|
+
y: number,
|
|
44
|
+
width: number,
|
|
45
|
+
height: number,
|
|
46
|
+
left: number,
|
|
47
|
+
top: number,
|
|
48
|
+
) => void,
|
|
49
|
+
) => void,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
type ReactDevToolsGlobalHook = {
|
|
53
|
+
on: (eventName: string, (agent: Agent) => void) => void,
|
|
54
|
+
off: (eventName: string, (agent: Agent) => void) => void,
|
|
55
|
+
reactDevtoolsAgent: Agent,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const {useEffect, useRef, useState} = React;
|
|
59
|
+
const hook: ReactDevToolsGlobalHook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
60
|
+
const isNativeComponentReady =
|
|
61
|
+
Platform.OS === 'android' &&
|
|
62
|
+
UIManager.hasViewManagerConfig('TraceUpdateOverlay');
|
|
63
|
+
let devToolsAgent: ?Agent;
|
|
64
|
+
|
|
65
|
+
export default function TraceUpdateOverlay(): React.Node {
|
|
66
|
+
const [overlayDisabled, setOverlayDisabled] = useState(false);
|
|
67
|
+
// This effect is designed to be explicitly shown here to avoid re-subscribe from the same
|
|
68
|
+
// overlay component.
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (!isNativeComponentReady) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function attachToDevtools(agent: Agent) {
|
|
75
|
+
devToolsAgent = agent;
|
|
76
|
+
agent.addListener('drawTraceUpdates', onAgentDrawTraceUpdates);
|
|
77
|
+
agent.addListener('disableTraceUpdates', onAgentDisableTraceUpdates);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function subscribe() {
|
|
81
|
+
hook?.on('react-devtools', attachToDevtools);
|
|
82
|
+
if (hook?.reactDevtoolsAgent) {
|
|
83
|
+
attachToDevtools(hook.reactDevtoolsAgent);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function unsubscribe() {
|
|
88
|
+
hook?.off('react-devtools', attachToDevtools);
|
|
89
|
+
const agent = devToolsAgent;
|
|
90
|
+
if (agent != null) {
|
|
91
|
+
agent.removeListener('drawTraceUpdates', onAgentDrawTraceUpdates);
|
|
92
|
+
agent.removeListener('disableTraceUpdates', onAgentDisableTraceUpdates);
|
|
93
|
+
devToolsAgent = null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function onAgentDrawTraceUpdates(
|
|
98
|
+
nodesToDraw: Array<{node: TraceNode, color: string}> = [],
|
|
99
|
+
) {
|
|
100
|
+
// If overlay is disabled before, now it's enabled.
|
|
101
|
+
setOverlayDisabled(false);
|
|
102
|
+
|
|
103
|
+
const newFramesToDraw: Array<Promise<Overlay>> = [];
|
|
104
|
+
nodesToDraw.forEach(({node, color}) => {
|
|
105
|
+
// `publicInstance` => Fabric
|
|
106
|
+
// TODO: remove this check when syncing the new version of the renderer from React to React Native.
|
|
107
|
+
// `canonical` => Legacy Fabric
|
|
108
|
+
// `node` => Legacy renderer
|
|
109
|
+
const component = node.publicInstance ?? node.canonical ?? node;
|
|
110
|
+
if (!component || !component.measure) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const frameToDrawPromise = new Promise<Overlay>(resolve => {
|
|
114
|
+
// The if statement here is to make flow happy
|
|
115
|
+
if (component.measure) {
|
|
116
|
+
// TODO(T145522797): We should refactor this to use `getBoundingClientRect` when Paper is no longer supported.
|
|
117
|
+
component.measure((x, y, width, height, left, top) => {
|
|
118
|
+
resolve({
|
|
119
|
+
rect: {left, top, width, height},
|
|
120
|
+
color: processColor(color),
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
newFramesToDraw.push(frameToDrawPromise);
|
|
126
|
+
});
|
|
127
|
+
Promise.all(newFramesToDraw).then(
|
|
128
|
+
results => {
|
|
129
|
+
if (nativeComponentRef.current != null) {
|
|
130
|
+
Commands.draw(
|
|
131
|
+
nativeComponentRef.current,
|
|
132
|
+
JSON.stringify(
|
|
133
|
+
results.filter(
|
|
134
|
+
({rect, color}) => rect.width >= 0 && rect.height >= 0,
|
|
135
|
+
),
|
|
136
|
+
),
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
err => {
|
|
141
|
+
console.error(`Failed to measure updated traces. Error: ${err}`);
|
|
142
|
+
},
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function onAgentDisableTraceUpdates() {
|
|
147
|
+
// 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.
|
|
148
|
+
setOverlayDisabled(true);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
subscribe();
|
|
152
|
+
return unsubscribe;
|
|
153
|
+
}, []); // Only run once when the overlay initially rendered
|
|
154
|
+
|
|
155
|
+
const nativeComponentRef =
|
|
156
|
+
useRef<?React.ElementRef<typeof TraceUpdateOverlayNativeComponent>>(null);
|
|
157
|
+
|
|
158
|
+
return (
|
|
159
|
+
!overlayDisabled &&
|
|
160
|
+
isNativeComponentReady && (
|
|
161
|
+
<View pointerEvents="none" style={styles.overlay}>
|
|
162
|
+
<TraceUpdateOverlayNativeComponent
|
|
163
|
+
ref={nativeComponentRef}
|
|
164
|
+
style={styles.overlay}
|
|
165
|
+
/>
|
|
166
|
+
</View>
|
|
167
|
+
)
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const styles = StyleSheet.create({
|
|
172
|
+
overlay: {
|
|
173
|
+
position: 'absolute',
|
|
174
|
+
top: 0,
|
|
175
|
+
bottom: 0,
|
|
176
|
+
left: 0,
|
|
177
|
+
right: 0,
|
|
178
|
+
},
|
|
179
|
+
});
|
|
@@ -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,
|