@office-iss/react-native-win32 0.70.2 → 0.71.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/.eslintignore +1 -0
- package/.eslintrc.js +2 -0
- package/.flowconfig +3 -6
- package/CHANGELOG.json +281 -43
- package/CHANGELOG.md +105 -24
- package/IntegrationTests/AccessibilityManagerTest.js +1 -1
- package/IntegrationTests/AppEventsTest.js +0 -1
- package/IntegrationTests/BUCK +0 -1
- package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
- package/IntegrationTests/ImageSnapshotTest.js +1 -1
- package/IntegrationTests/IntegrationTestsApp.js +2 -3
- package/IntegrationTests/SimpleSnapshotTest.js +1 -1
- package/IntegrationTests/SyncMethodTest.js +1 -1
- package/IntegrationTests/TimersTest.js +4 -4
- package/IntegrationTests/WebSocketTest.js +3 -3
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +80 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +4 -3
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.d.ts +90 -0
- package/Libraries/Alert/Alert.js +7 -1
- package/Libraries/Alert/Alert.win32.js +1 -0
- package/Libraries/Alert/NativeAlertManager.js +2 -0
- package/Libraries/Alert/RCTAlertManager.ios.js +2 -1
- package/Libraries/Animated/Animated.d.ts +587 -0
- package/Libraries/Animated/Animated.js +13 -11
- package/Libraries/Animated/AnimatedEvent.js +12 -17
- package/Libraries/Animated/AnimatedImplementation.js +21 -23
- package/Libraries/Animated/AnimatedMock.js +11 -13
- package/Libraries/Animated/AnimatedWeb.js +2 -2
- package/Libraries/Animated/Easing.d.ts +37 -0
- package/Libraries/Animated/Easing.js +2 -2
- package/Libraries/Animated/NativeAnimatedHelper.js +32 -22
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/SpringConfig.js +2 -7
- package/Libraries/Animated/animations/Animation.js +3 -4
- package/Libraries/Animated/animations/DecayAnimation.js +5 -8
- package/Libraries/Animated/animations/SpringAnimation.js +9 -14
- package/Libraries/Animated/animations/TimingAnimation.js +9 -13
- package/Libraries/Animated/bezier.js +2 -2
- package/Libraries/Animated/components/AnimatedFlatList.js +5 -6
- package/Libraries/Animated/components/AnimatedImage.js +5 -6
- package/Libraries/Animated/components/AnimatedScrollView.js +110 -14
- package/Libraries/Animated/components/AnimatedSectionList.js +4 -5
- package/Libraries/Animated/components/AnimatedText.js +5 -6
- package/Libraries/Animated/components/AnimatedView.js +5 -6
- package/Libraries/Animated/createAnimatedComponent.js +13 -20
- package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +2 -2
- package/Libraries/Animated/nodes/AnimatedAddition.js +6 -8
- package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
- package/Libraries/Animated/nodes/AnimatedDiffClamp.js +6 -8
- package/Libraries/Animated/nodes/AnimatedDivision.js +7 -9
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +7 -10
- package/Libraries/Animated/nodes/AnimatedModulo.js +6 -8
- package/Libraries/Animated/nodes/AnimatedMultiplication.js +7 -9
- package/Libraries/Animated/nodes/AnimatedNode.js +10 -8
- package/Libraries/Animated/nodes/AnimatedProps.js +12 -30
- package/Libraries/Animated/nodes/AnimatedStyle.js +12 -22
- package/Libraries/Animated/nodes/AnimatedSubtraction.js +7 -9
- package/Libraries/Animated/nodes/AnimatedTracking.js +8 -12
- package/Libraries/Animated/nodes/AnimatedTransform.js +38 -31
- package/Libraries/Animated/nodes/AnimatedValue.js +9 -10
- package/Libraries/Animated/nodes/AnimatedValueXY.js +4 -7
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +4 -5
- package/Libraries/Animated/useAnimatedProps.js +8 -16
- package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
- package/Libraries/Animated/useAnimatedValue.js +25 -0
- package/Libraries/AppState/AppState.d.ts +58 -0
- package/Libraries/AppState/AppState.js +3 -7
- package/Libraries/AppState/NativeAppState.js +1 -0
- package/Libraries/BatchedBridge/MessageQueue.js +9 -5
- package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
- package/Libraries/BatchedBridge/NativeModules.js +1 -0
- package/Libraries/Blob/BlobManager.js +5 -3
- package/Libraries/Blob/File.js +2 -3
- package/Libraries/Blob/FileReader.js +6 -5
- package/Libraries/Blob/NativeBlobModule.js +1 -0
- package/Libraries/Blob/NativeFileReaderModule.js +1 -0
- package/Libraries/Blob/URL.js +11 -9
- package/Libraries/BugReporting/NativeBugReporting.js +1 -0
- package/Libraries/BugReporting/getReactData.js +1 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +128 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +208 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +40 -8
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +40 -8
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -0
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +5 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +58 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +7 -8
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
- package/Libraries/Components/Button.d.ts +42 -0
- package/Libraries/Components/Button.flow.js +265 -0
- package/Libraries/Components/Button.js +62 -18
- package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
- package/Libraries/Components/Clipboard/NativeClipboard.js +1 -0
- package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -2
- package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +92 -0
- package/Libraries/Components/{MaskedView/MaskedViewIOS.android.js → DatePicker/DatePickerIOS.flow.android.js} +3 -2
- package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +113 -0
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +8 -7
- package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +4 -2
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +7 -6
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +1 -0
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +9 -8
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +13 -14
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
- package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
- package/Libraries/Components/Keyboard/Keyboard.js +35 -8
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +35 -15
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -0
- package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
- package/Libraries/Components/Pressable/Pressable.js +73 -15
- package/Libraries/Components/Pressable/Pressable.win32.js +77 -19
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +6 -3
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +3 -3
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +1 -1
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +62 -0
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +4 -4
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +1 -1
- package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +2 -2
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +5 -6
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +4 -4
- package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
- package/Libraries/Components/RefreshControl/RefreshControl.js +4 -3
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -1
- package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +19 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +5 -4
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +5 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +911 -0
- package/Libraries/Components/ScrollView/ScrollView.js +87 -52
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +243 -269
- package/Libraries/Components/Slider/Slider.d.ts +132 -0
- package/Libraries/Components/Slider/Slider.js +9 -9
- package/Libraries/Components/Slider/SliderNativeComponent.js +4 -5
- package/Libraries/Components/Sound/NativeSoundManager.js +1 -0
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -0
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -0
- package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
- package/Libraries/Components/StatusBar/StatusBar.js +7 -7
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +10 -10
- package/Libraries/Components/Switch/Switch.d.ts +115 -0
- package/Libraries/Components/Switch/Switch.js +7 -7
- package/Libraries/Components/Switch/SwitchNativeComponent.js +9 -4
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +40 -12
- package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
- package/Libraries/Components/TextInput/InputAccessoryView.js +3 -4
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +3 -2
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +3 -2
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +840 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +1057 -0
- package/Libraries/Components/TextInput/TextInput.js +344 -38
- package/Libraries/Components/TextInput/TextInput.win32.d.ts +1 -1
- package/Libraries/Components/TextInput/TextInput.win32.js +1 -1
- package/Libraries/Components/TextInput/TextInput.win32.js.map +1 -1
- package/Libraries/Components/TextInput/TextInputNativeCommands.js +2 -2
- package/Libraries/Components/TextInput/TextInputState.js +22 -5
- package/Libraries/Components/TextInput/TextInputState.win32.js +24 -5
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -0
- package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +47 -0
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
- package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
- package/Libraries/Components/Touchable/Touchable.flow.js +258 -0
- package/Libraries/Components/Touchable/Touchable.js +12 -12
- package/Libraries/Components/Touchable/Touchable.win32.js +12 -12
- package/Libraries/Components/Touchable/TouchableBounce.js +44 -10
- package/Libraries/Components/Touchable/TouchableHighlight.d.ts +68 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +32 -9
- package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +114 -0
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +54 -20
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +109 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +54 -16
- package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +2 -1
- package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWin32.js +0 -1
- package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +143 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +64 -10
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -1
- package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +13 -2
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
- package/Libraries/Components/View/View.d.ts +29 -0
- package/Libraries/Components/View/View.js +91 -8
- package/Libraries/Components/View/View.win32.js +176 -89
- package/Libraries/Components/View/ViewAccessibility.d.ts +360 -0
- package/Libraries/Components/View/ViewAccessibility.js +70 -1
- package/Libraries/Components/View/ViewNativeComponent.js +3 -3
- package/Libraries/Components/View/ViewPropTypes.d.ts +245 -0
- package/Libraries/Components/View/ViewPropTypes.js +105 -13
- package/Libraries/Components/View/ViewPropTypes.win32.js +105 -13
- package/Libraries/Components/View/ViewWin32.Props.d.ts +6 -1
- package/Libraries/Components/View/ViewWin32.Props.js.map +1 -1
- package/Libraries/Core/Devtools/openFileInEditor.js +3 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
- package/Libraries/Core/ExceptionsManager.js +8 -0
- package/Libraries/Core/ExtendedError.js +11 -8
- package/Libraries/Core/InitializeCore.js +2 -1
- package/Libraries/Core/NativeExceptionsManager.js +3 -4
- package/Libraries/Core/RawEventEmitter.js +2 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +2 -2
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/ReactNativeVersionCheck.js +1 -0
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -0
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
- package/Libraries/Core/Timers/JSTimers.js +13 -11
- package/Libraries/Core/Timers/NativeTiming.js +1 -0
- package/Libraries/Core/setUpBatchedBridge.js +1 -5
- package/Libraries/Core/setUpDeveloperTools.js +4 -6
- package/Libraries/Core/setUpReactDevTools.js +4 -1
- package/Libraries/Core/setUpRegeneratorRuntime.js +1 -1
- package/Libraries/Core/setUpTimers.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +70 -0
- package/Libraries/EventEmitter/NativeEventEmitter.js +1 -0
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +30 -0
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +1 -0
- package/Libraries/Events/EventPolyfill.js +1 -1
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +1 -0
- package/Libraries/Image/AssetSourceResolver.js +4 -6
- package/Libraries/Image/Image.android.js +63 -45
- package/Libraries/Image/Image.d.ts +322 -0
- package/Libraries/Image/Image.flow.js +64 -0
- package/Libraries/Image/Image.ios.js +55 -28
- package/Libraries/Image/Image.win32.js +54 -25
- package/Libraries/Image/ImageBackground.js +18 -7
- package/Libraries/Image/ImageInjection.js +2 -1
- package/Libraries/Image/ImageProps.js +88 -5
- package/Libraries/Image/ImageResizeMode.d.ts +49 -0
- package/Libraries/Image/ImageSource.d.ts +76 -0
- package/Libraries/Image/ImageSourceUtils.js +80 -0
- package/Libraries/Image/ImageUtils.js +21 -0
- package/Libraries/Image/ImageViewNativeComponent.js +8 -5
- package/Libraries/Image/NativeImageEditor.js +1 -0
- package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
- package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
- package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
- package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
- package/Libraries/Image/NativeImageStoreIOS.js +1 -0
- package/Libraries/Image/TextInlineImageNativeComponent.js +4 -3
- package/Libraries/Image/nativeImageSource.js +2 -2
- package/Libraries/Image/resolveAssetSource.js +5 -5
- package/Libraries/Inspector/BorderBox.js +1 -1
- package/Libraries/Inspector/BoxInspector.js +3 -4
- package/Libraries/Inspector/DevtoolsOverlay.js +213 -0
- package/Libraries/Inspector/ElementBox.js +4 -5
- package/Libraries/Inspector/ElementProperties.js +10 -11
- package/Libraries/Inspector/Inspector.js +22 -108
- package/Libraries/Inspector/Inspector.win32.js +23 -109
- package/Libraries/Inspector/InspectorOverlay.js +5 -5
- package/Libraries/Inspector/InspectorOverlay.win32.js +5 -5
- package/Libraries/Inspector/InspectorPanel.js +12 -10
- package/Libraries/Inspector/NetworkOverlay.js +7 -3
- package/Libraries/Inspector/PerformanceOverlay.js +3 -3
- package/Libraries/Inspector/StyleInspector.js +2 -2
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +71 -0
- package/Libraries/Interaction/BridgeSpyStallHandler.js +1 -1
- package/Libraries/Interaction/InteractionManager.d.ts +74 -0
- package/Libraries/Interaction/InteractionManager.js +8 -8
- package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
- package/Libraries/Interaction/PanResponder.d.ts +202 -0
- package/Libraries/Interaction/PanResponder.flow.js +257 -0
- package/Libraries/Interaction/PanResponder.js +4 -3
- package/Libraries/JSInspector/JSInspector.js +0 -3
- package/Libraries/JSInspector/NetworkAgent.js +3 -3
- package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +4 -3
- package/Libraries/Linking/Linking.d.ts +61 -0
- package/Libraries/Linking/Linking.js +3 -2
- package/Libraries/Linking/NativeIntentAndroid.js +1 -0
- package/Libraries/Linking/NativeLinkingManager.js +1 -0
- package/Libraries/Lists/CellRenderMask.js +13 -3
- package/Libraries/Lists/ChildListCollection.js +72 -0
- package/Libraries/Lists/FillRateHelper.js +28 -17
- package/Libraries/Lists/FlatList.d.ts +292 -0
- package/Libraries/Lists/FlatList.js +70 -70
- package/Libraries/Lists/SectionList.d.ts +300 -0
- package/Libraries/Lists/SectionList.js +5 -5
- package/Libraries/Lists/SectionListModern.js +6 -6
- package/Libraries/Lists/StateSafePureComponent.js +85 -0
- package/Libraries/Lists/ViewabilityHelper.js +33 -12
- package/Libraries/Lists/VirtualizeUtils.js +17 -13
- package/Libraries/Lists/VirtualizedList.d.ts +317 -0
- package/Libraries/Lists/VirtualizedList.js +548 -890
- package/Libraries/Lists/VirtualizedListCellRenderer.js +259 -0
- package/Libraries/Lists/VirtualizedListContext.js +7 -48
- package/Libraries/Lists/VirtualizedListProps.js +279 -0
- package/Libraries/Lists/VirtualizedSectionList.js +6 -3
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +9 -8
- package/Libraries/LogBox/Data/LogBoxLog.js +5 -5
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +4 -4
- package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -3
- package/Libraries/LogBox/LogBox.d.ts +28 -0
- package/Libraries/LogBox/LogBox.js +11 -11
- package/Libraries/LogBox/LogBoxInspectorContainer.js +5 -3
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +5 -3
- package/Libraries/LogBox/UI/LogBoxButton.js +6 -5
- package/Libraries/LogBox/UI/LogBoxInspector.js +6 -6
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +9 -8
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +3 -3
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +7 -6
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +6 -5
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +6 -5
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +7 -6
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -3
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +5 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +5 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +5 -5
- package/Libraries/LogBox/UI/LogBoxMessage.js +3 -3
- package/Libraries/LogBox/UI/LogBoxNotification.js +6 -5
- package/Libraries/Modal/Modal.d.ts +104 -0
- package/Libraries/Modal/Modal.js +14 -14
- package/Libraries/Modal/NativeModalManager.js +1 -0
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -3
- package/Libraries/NativeComponent/BaseViewConfig.android.js +27 -2
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -3
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +8 -3
- package/Libraries/NativeComponent/NativeComponentRegistry.js +5 -4
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +1 -1
- package/Libraries/NativeComponent/ViewConfig.js +1 -0
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +3 -2
- package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
- package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
- package/Libraries/Network/NativeNetworkingIOS.js +1 -0
- package/Libraries/Network/RCTNetworking.android.js +4 -3
- package/Libraries/Network/RCTNetworking.ios.js +3 -2
- package/Libraries/Network/RCTNetworking.win32.js +1 -0
- package/Libraries/Network/convertRequestBody.js +1 -2
- package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -1
- package/Libraries/NewAppScreen/components/Header.js +6 -2
- package/Libraries/NewAppScreen/components/HermesBadge.js +6 -2
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +8 -9
- package/Libraries/NewAppScreen/components/ReloadInstructions.js +4 -1
- package/Libraries/NewAppScreen/index.js +1 -1
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +1 -0
- package/Libraries/Performance/QuickPerformanceLogger.js +34 -10
- package/Libraries/Performance/Systrace.d.ts +66 -0
- package/Libraries/Performance/Systrace.js +110 -195
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +115 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +5 -4
- package/Libraries/Pressability/Pressability.js +12 -10
- package/Libraries/Pressability/Pressability.win32.js +9 -7
- package/Libraries/Pressability/PressabilityDebug.js +2 -2
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +275 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +19 -14
- package/Libraries/ReactNative/AppContainer.js +17 -7
- package/Libraries/ReactNative/AppRegistry.d.ts +68 -0
- package/Libraries/ReactNative/AppRegistry.js +11 -14
- package/Libraries/ReactNative/BridgelessUIManager.js +4 -3
- package/Libraries/ReactNative/FabricUIManager.js +3 -3
- package/Libraries/ReactNative/I18nManager.d.ts +25 -0
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
- package/Libraries/ReactNative/NativeI18nManager.js +1 -0
- package/Libraries/ReactNative/NativeUIManager.js +1 -0
- package/Libraries/ReactNative/PaperUIManager.js +2 -2
- package/Libraries/ReactNative/PaperUIManager.win32.js +1 -1
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +9 -0
- package/Libraries/ReactNative/RendererImplementation.js +112 -0
- package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
- package/Libraries/ReactNative/RendererProxy.js +26 -0
- package/Libraries/ReactNative/RootTag.js +0 -1
- package/Libraries/ReactNative/UIManager.d.ts +157 -0
- package/Libraries/ReactNative/UIManager.js +1 -1
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -0
- package/Libraries/ReactNative/renderApplication.js +38 -20
- package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
- package/Libraries/ReactNative/requireNativeComponent.js +2 -2
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +10 -9
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +312 -217
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +212 -177
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +248 -213
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +311 -218
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +226 -196
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +262 -232
- package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +149 -0
- package/Libraries/Renderer/shims/ReactFabric.js +2 -2
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +2 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +141 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -22
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +8 -8
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Settings/NativeSettingsManager.js +1 -0
- package/Libraries/Settings/Settings.d.ts +18 -0
- package/Libraries/Share/NativeShareModule.js +1 -0
- package/Libraries/Share/Share.d.ts +80 -0
- package/Libraries/Share/Share.js +7 -5
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -0
- package/Libraries/StyleSheet/StyleSheet.d.ts +156 -0
- package/Libraries/StyleSheet/StyleSheet.js +15 -11
- package/Libraries/StyleSheet/StyleSheet.win32.js +16 -12
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +332 -0
- package/Libraries/StyleSheet/StyleSheetTypes.js +101 -24
- package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +2 -2
- package/Libraries/StyleSheet/normalizeColor.js +3 -3
- package/Libraries/StyleSheet/private/_TransformStyle.js +26 -24
- package/Libraries/StyleSheet/processAspectRatio.js +53 -0
- package/Libraries/StyleSheet/processColor.d.ts +16 -0
- package/Libraries/StyleSheet/processColor.js +3 -4
- package/Libraries/StyleSheet/processColorArray.js +1 -0
- package/Libraries/StyleSheet/processFontVariant.js +30 -0
- package/Libraries/StyleSheet/processTransform.js +114 -105
- package/Libraries/StyleSheet/splitLayoutProps.js +5 -0
- package/Libraries/Text/Text.d.ts +209 -0
- package/Libraries/Text/Text.js +94 -12
- package/Libraries/Text/TextNativeComponent.js +49 -41
- package/Libraries/Text/TextNativeComponent.win32.js +67 -48
- package/Libraries/Text/TextProps.js +64 -7
- package/Libraries/{Components/MaskedView/MaskedViewIOS.win32.js → TurboModule/RCTExport.d.ts} +3 -4
- package/Libraries/TurboModule/TurboModuleRegistry.d.ts +15 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +3 -1
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
- package/Libraries/Types/CoreEventTypes.d.ts +263 -0
- package/Libraries/Types/CoreEventTypes.js +2 -1
- package/Libraries/Types/CoreEventTypes.win32.js +2 -1
- package/Libraries/Utilities/AcessibilityMapping.js +154 -0
- package/Libraries/Utilities/Appearance.d.ts +43 -0
- package/Libraries/Utilities/Appearance.js +3 -3
- package/Libraries/Utilities/BackHandler.android.js +3 -5
- package/Libraries/Utilities/BackHandler.d.ts +38 -0
- package/Libraries/Utilities/BackHandler.win32.js +3 -5
- package/Libraries/Utilities/DevSettings.d.ts +32 -0
- package/Libraries/Utilities/DevSettings.js +4 -2
- package/Libraries/Utilities/Dimensions.d.ts +79 -0
- package/Libraries/Utilities/Dimensions.js +2 -2
- package/Libraries/Utilities/Dimensions.win32.js +2 -2
- package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -1
- package/Libraries/Utilities/HMRClient.js +23 -8
- package/Libraries/Utilities/LoadingView.ios.js +1 -1
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
- package/Libraries/Utilities/NativeDevSplitBundleLoader.js +1 -0
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
- package/Libraries/Utilities/PerformanceLoggerContext.js +3 -2
- package/Libraries/Utilities/PixelRatio.d.ts +64 -0
- package/Libraries/Utilities/Platform.android.js +11 -5
- package/Libraries/Utilities/Platform.d.ts +102 -0
- package/Libraries/Utilities/Platform.ios.js +12 -5
- package/Libraries/Utilities/Platform.win32.js +11 -5
- package/Libraries/Utilities/PolyfillFunctions.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +9 -15
- package/Libraries/Utilities/codegenNativeCommands.js +1 -10
- package/Libraries/Utilities/codegenNativeComponent.js +4 -1
- package/Libraries/Utilities/createPerformanceLogger.js +7 -8
- package/Libraries/Utilities/differ/deepDiffer.js +1 -1
- package/Libraries/Utilities/groupByEveryN.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +3 -1
- package/Libraries/Utilities/useColorScheme.js +3 -2
- package/Libraries/Utilities/useRefEffect.js +1 -1
- package/Libraries/Vibration/NativeVibration.js +1 -0
- package/Libraries/Vibration/Vibration.d.ts +43 -0
- package/Libraries/Vibration/Vibration.js +1 -0
- package/Libraries/WebPerformance/NativePerformanceObserver.js +41 -0
- package/Libraries/WebPerformance/PerformanceObserver.js +223 -0
- package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
- package/Libraries/WebSocket/WebSocket.js +11 -3
- package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
- package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +19 -0
- package/Libraries/YellowBox/YellowBoxDeprecated.js +2 -3
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +2 -1
- package/Libraries/__tests__/ButtonWin32-test.js +16 -0
- package/Libraries/platform-types.d.ts +25 -0
- package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
- package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
- package/babel.config.js +3 -0
- package/flow/jest.js +2 -2
- package/flow-typed/npm/{react-dom_v16.x.x.js → react-dom_v17.x.x.js} +58 -31
- package/flow-typed/npm/yargs_v17.x.x.js +341 -0
- package/index.js +89 -55
- package/index.win32.js +89 -55
- package/interface.js +8 -0
- package/jest/react-native-env.js +18 -0
- package/jest/renderer.js +2 -2
- package/jest/setup.js +7 -9
- package/jest.config.js +9 -2
- package/overrides.json +40 -101
- package/package.json +34 -33
- package/src/Libraries/Components/TextInput/TextInput.win32.tsx +2 -1
- package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
- package/src/Libraries/Components/Touchable/TouchableWin32.Props.tsx +2 -1
- package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
- package/src/Libraries/Components/View/ViewWin32.Props.ts +10 -1
- package/src/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +22 -0
- package/src/Libraries/platform-types.d.ts +25 -0
- package/types/index.d.ts +215 -0
- package/IntegrationTests/AsyncStorageTest.js +0 -261
- package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +0 -93
- package/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js +0 -21
- package/Libraries/Core/setUpSystrace.js +0 -21
- package/Libraries/Image/ImagePickerIOS.js +0 -103
- package/Libraries/Image/NativeImagePickerIOS.js +0 -38
- package/Libraries/Lists/VirtualizedList.win32.js +0 -9
- package/Libraries/Lists/__tests__/CellRenderMask-test.js +0 -179
- package/Libraries/Lists/__tests__/FillRateHelper-test.js +0 -120
- package/Libraries/Lists/__tests__/FlatList-test.js +0 -155
- package/Libraries/Lists/__tests__/SectionList-test.js +0 -109
- package/Libraries/Lists/__tests__/ViewabilityHelper-test.js +0 -440
- package/Libraries/Lists/__tests__/VirtualizeUtils-test.js +0 -91
- package/Libraries/Lists/__tests__/VirtualizedList-test.js +0 -1587
- package/Libraries/Lists/__tests__/VirtualizedSectionList-test.js +0 -269
- package/Libraries/Storage/AsyncStorage.js +0 -385
- package/Libraries/Storage/NativeAsyncLocalStorage.js +0 -44
- package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +0 -44
- package/Libraries/Utilities/JSDevSupportModule.js +0 -37
- package/Libraries/Utilities/NativeJSDevSupport.js +0 -23
- package/rntypes/BatchedBridge.d.ts +0 -23
- package/rntypes/Devtools.d.ts +0 -20
- package/rntypes/LaunchScreen.d.ts +0 -9
- package/rntypes/globals.d.ts +0 -497
- package/rntypes/index.d.ts +0 -9754
- package/rntypes/legacy-properties.d.ts +0 -238
- package/src/Libraries/Lists/__tests__/__snapshots__/FlatList-test.js.snap +0 -427
- package/src/Libraries/Lists/__tests__/__snapshots__/SectionList-test.js.snap +0 -391
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +0 -4565
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +0 -1153
- package/src/rntypes/BatchedBridge.d.ts +0 -23
- package/src/rntypes/Devtools.d.ts +0 -20
- package/src/rntypes/LaunchScreen.d.ts +0 -9
- package/src/rntypes/globals.d.ts +0 -497
- package/src/rntypes/index.d.ts +0 -9754
- package/src/rntypes/legacy-properties.d.ts +0 -238
- package/src/typings-index.ts +0 -37
- package/typings-index.d.ts +0 -23
- package/typings-index.js +0 -47
- package/typings-index.js.map +0 -1
|
@@ -8,30 +8,30 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';
|
|
12
|
+
import type {
|
|
13
|
+
PressEvent,
|
|
14
|
+
ScrollEvent,
|
|
15
|
+
SyntheticEvent,
|
|
16
|
+
} from '../../Types/CoreEventTypes';
|
|
17
|
+
import type {ViewProps} from '../View/ViewPropTypes';
|
|
18
|
+
import type {TextInputType} from './TextInput.flow';
|
|
12
19
|
|
|
13
|
-
import
|
|
20
|
+
import usePressability from '../../Pressability/usePressability';
|
|
21
|
+
import flattenStyle from '../../StyleSheet/flattenStyle';
|
|
14
22
|
import StyleSheet, {
|
|
23
|
+
type ColorValue,
|
|
15
24
|
type TextStyleProp,
|
|
16
25
|
type ViewStyleProp,
|
|
17
|
-
type ColorValue,
|
|
18
26
|
} from '../../StyleSheet/StyleSheet';
|
|
19
27
|
import Text from '../../Text/Text';
|
|
20
28
|
import TextAncestor from '../../Text/TextAncestor';
|
|
29
|
+
import Platform from '../../Utilities/Platform';
|
|
30
|
+
import setAndForwardRef from '../../Utilities/setAndForwardRef';
|
|
21
31
|
import TextInputState from './TextInputState';
|
|
22
32
|
import invariant from 'invariant';
|
|
23
33
|
import nullthrows from 'nullthrows';
|
|
24
|
-
import
|
|
25
|
-
|
|
26
|
-
import usePressability from '../../Pressability/usePressability';
|
|
27
|
-
|
|
28
|
-
import type {ViewProps} from '../View/ViewPropTypes';
|
|
29
|
-
import type {
|
|
30
|
-
SyntheticEvent,
|
|
31
|
-
ScrollEvent,
|
|
32
|
-
PressEvent,
|
|
33
|
-
} from '../../Types/CoreEventTypes';
|
|
34
|
-
import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';
|
|
34
|
+
import * as React from 'react';
|
|
35
35
|
|
|
36
36
|
const {useLayoutEffect, useRef, useState} = React;
|
|
37
37
|
|
|
@@ -155,6 +155,16 @@ export type KeyboardType =
|
|
|
155
155
|
// Android-only
|
|
156
156
|
| 'visible-password';
|
|
157
157
|
|
|
158
|
+
export type InputMode =
|
|
159
|
+
| 'none'
|
|
160
|
+
| 'text'
|
|
161
|
+
| 'decimal'
|
|
162
|
+
| 'numeric'
|
|
163
|
+
| 'tel'
|
|
164
|
+
| 'search'
|
|
165
|
+
| 'email'
|
|
166
|
+
| 'url';
|
|
167
|
+
|
|
158
168
|
export type ReturnKeyType =
|
|
159
169
|
// Cross Platform
|
|
160
170
|
| 'done'
|
|
@@ -173,6 +183,8 @@ export type ReturnKeyType =
|
|
|
173
183
|
| 'route'
|
|
174
184
|
| 'yahoo';
|
|
175
185
|
|
|
186
|
+
export type SubmitBehavior = 'submit' | 'blurAndSubmit' | 'newline';
|
|
187
|
+
|
|
176
188
|
export type AutoCapitalize = 'none' | 'sentences' | 'words' | 'characters';
|
|
177
189
|
|
|
178
190
|
export type TextContentType =
|
|
@@ -205,9 +217,48 @@ export type TextContentType =
|
|
|
205
217
|
| 'newPassword'
|
|
206
218
|
| 'oneTimeCode';
|
|
207
219
|
|
|
220
|
+
export type enterKeyHintType =
|
|
221
|
+
| 'enter'
|
|
222
|
+
| 'done'
|
|
223
|
+
| 'go'
|
|
224
|
+
| 'next'
|
|
225
|
+
| 'previous'
|
|
226
|
+
| 'search'
|
|
227
|
+
| 'send';
|
|
228
|
+
|
|
208
229
|
type PasswordRules = string;
|
|
209
230
|
|
|
210
231
|
type IOSProps = $ReadOnly<{|
|
|
232
|
+
/**
|
|
233
|
+
* Give the keyboard and the system information about the
|
|
234
|
+
* expected semantic meaning for the content that users enter.
|
|
235
|
+
* @platform ios
|
|
236
|
+
*/
|
|
237
|
+
autoComplete?: ?(
|
|
238
|
+
| 'address-line1'
|
|
239
|
+
| 'address-line2'
|
|
240
|
+
| 'cc-number'
|
|
241
|
+
| 'current-password'
|
|
242
|
+
| 'country'
|
|
243
|
+
| 'email'
|
|
244
|
+
| 'name'
|
|
245
|
+
| 'additional-name'
|
|
246
|
+
| 'family-name'
|
|
247
|
+
| 'given-name'
|
|
248
|
+
| 'nickname'
|
|
249
|
+
| 'honorific-prefix'
|
|
250
|
+
| 'honorific-suffix'
|
|
251
|
+
| 'new-password'
|
|
252
|
+
| 'off'
|
|
253
|
+
| 'one-time-code'
|
|
254
|
+
| 'organization'
|
|
255
|
+
| 'organization-title'
|
|
256
|
+
| 'postal-code'
|
|
257
|
+
| 'street-address'
|
|
258
|
+
| 'tel'
|
|
259
|
+
| 'url'
|
|
260
|
+
| 'username'
|
|
261
|
+
),
|
|
211
262
|
/**
|
|
212
263
|
* When the clear button should appear on the right side of the text view.
|
|
213
264
|
* This property is supported only for single-line TextInput component.
|
|
@@ -301,6 +352,12 @@ type IOSProps = $ReadOnly<{|
|
|
|
301
352
|
* @platform ios
|
|
302
353
|
*/
|
|
303
354
|
textContentType?: ?TextContentType,
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Set line break strategy on iOS.
|
|
358
|
+
* @platform ios
|
|
359
|
+
*/
|
|
360
|
+
lineBreakStrategyIOS?: ?('none' | 'standard' | 'hangul-word' | 'push-out'),
|
|
304
361
|
|}>;
|
|
305
362
|
|
|
306
363
|
type AndroidProps = $ReadOnly<{|
|
|
@@ -390,6 +447,23 @@ type AndroidProps = $ReadOnly<{|
|
|
|
390
447
|
| 'username'
|
|
391
448
|
| 'username-new'
|
|
392
449
|
| 'off'
|
|
450
|
+
// additional HTML autocomplete values
|
|
451
|
+
| 'address-line1'
|
|
452
|
+
| 'address-line2'
|
|
453
|
+
| 'bday'
|
|
454
|
+
| 'bday-day'
|
|
455
|
+
| 'bday-month'
|
|
456
|
+
| 'bday-year'
|
|
457
|
+
| 'country'
|
|
458
|
+
| 'current-password'
|
|
459
|
+
| 'honorific-prefix'
|
|
460
|
+
| 'honorific-suffix'
|
|
461
|
+
| 'additional-name'
|
|
462
|
+
| 'family-name'
|
|
463
|
+
| 'given-name'
|
|
464
|
+
| 'new-password'
|
|
465
|
+
| 'one-time-code'
|
|
466
|
+
| 'sex'
|
|
393
467
|
),
|
|
394
468
|
|
|
395
469
|
/**
|
|
@@ -450,6 +524,13 @@ type AndroidProps = $ReadOnly<{|
|
|
|
450
524
|
*/
|
|
451
525
|
returnKeyLabel?: ?string,
|
|
452
526
|
|
|
527
|
+
/**
|
|
528
|
+
* Sets the number of rows for a `TextInput`. Use it with multiline set to
|
|
529
|
+
* `true` to be able to fill the lines.
|
|
530
|
+
* @platform android
|
|
531
|
+
*/
|
|
532
|
+
rows?: ?number,
|
|
533
|
+
|
|
453
534
|
/**
|
|
454
535
|
* When `false`, it will prevent the soft keyboard from showing when the field is focused.
|
|
455
536
|
* Defaults to `true`.
|
|
@@ -502,15 +583,6 @@ export type Props = $ReadOnly<{|
|
|
|
502
583
|
*/
|
|
503
584
|
allowFontScaling?: ?boolean,
|
|
504
585
|
|
|
505
|
-
/**
|
|
506
|
-
* If `true`, the text field will blur when submitted.
|
|
507
|
-
* The default value is true for single-line fields and false for
|
|
508
|
-
* multiline fields. Note that for multiline fields, setting `blurOnSubmit`
|
|
509
|
-
* to `true` means that pressing return will blur the field and trigger the
|
|
510
|
-
* `onSubmitEditing` event instead of inserting a newline into the field.
|
|
511
|
-
*/
|
|
512
|
-
blurOnSubmit?: ?boolean,
|
|
513
|
-
|
|
514
586
|
/**
|
|
515
587
|
* If `true`, caret is hidden. The default value is `false`.
|
|
516
588
|
*
|
|
@@ -543,6 +615,38 @@ export type Props = $ReadOnly<{|
|
|
|
543
615
|
React.ElementRef<HostComponent<mixed>> & ImperativeMethods,
|
|
544
616
|
>,
|
|
545
617
|
|
|
618
|
+
/**
|
|
619
|
+
* `enterKeyHint` defines what action label (or icon) to present for the enter key on virtual keyboards.
|
|
620
|
+
*
|
|
621
|
+
* The following values is supported:
|
|
622
|
+
*
|
|
623
|
+
* - `enter`
|
|
624
|
+
* - `done`
|
|
625
|
+
* - `go`
|
|
626
|
+
* - `next`
|
|
627
|
+
* - `previous`
|
|
628
|
+
* - `search`
|
|
629
|
+
* - `send`
|
|
630
|
+
*/
|
|
631
|
+
enterKeyHint?: ?enterKeyHintType,
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* `inputMode` works like the `inputmode` attribute in HTML, it determines which
|
|
635
|
+
* keyboard to open, e.g.`numeric` and has precedence over keyboardType
|
|
636
|
+
*
|
|
637
|
+
* Support the following values:
|
|
638
|
+
*
|
|
639
|
+
* - `none`
|
|
640
|
+
* - `text`
|
|
641
|
+
* - `decimal`
|
|
642
|
+
* - `numeric`
|
|
643
|
+
* - `tel`
|
|
644
|
+
* - `search`
|
|
645
|
+
* - `email`
|
|
646
|
+
* - `url`
|
|
647
|
+
*/
|
|
648
|
+
inputMode?: ?InputMode,
|
|
649
|
+
|
|
546
650
|
/**
|
|
547
651
|
* Determines which keyboard to open, e.g.`numeric`.
|
|
548
652
|
*
|
|
@@ -716,6 +820,13 @@ export type Props = $ReadOnly<{|
|
|
|
716
820
|
*/
|
|
717
821
|
placeholderTextColor?: ?ColorValue,
|
|
718
822
|
|
|
823
|
+
/** `readOnly` works like the `readonly` attribute in HTML.
|
|
824
|
+
* If `true`, text is not editable. The default value is `false`.
|
|
825
|
+
* See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly
|
|
826
|
+
* for more details.
|
|
827
|
+
*/
|
|
828
|
+
readOnly?: ?boolean,
|
|
829
|
+
|
|
719
830
|
/**
|
|
720
831
|
* Determines how the return key should look. On Android you can also use
|
|
721
832
|
* `returnKeyLabel`.
|
|
@@ -775,6 +886,40 @@ export type Props = $ReadOnly<{|
|
|
|
775
886
|
*/
|
|
776
887
|
selectTextOnFocus?: ?boolean,
|
|
777
888
|
|
|
889
|
+
/**
|
|
890
|
+
* If `true`, the text field will blur when submitted.
|
|
891
|
+
* The default value is true for single-line fields and false for
|
|
892
|
+
* multiline fields. Note that for multiline fields, setting `blurOnSubmit`
|
|
893
|
+
* to `true` means that pressing return will blur the field and trigger the
|
|
894
|
+
* `onSubmitEditing` event instead of inserting a newline into the field.
|
|
895
|
+
*
|
|
896
|
+
* @deprecated
|
|
897
|
+
* Note that `submitBehavior` now takes the place of `blurOnSubmit` and will
|
|
898
|
+
* override any behavior defined by `blurOnSubmit`.
|
|
899
|
+
* @see submitBehavior
|
|
900
|
+
*/
|
|
901
|
+
blurOnSubmit?: ?boolean,
|
|
902
|
+
|
|
903
|
+
/**
|
|
904
|
+
* When the return key is pressed,
|
|
905
|
+
*
|
|
906
|
+
* For single line inputs:
|
|
907
|
+
*
|
|
908
|
+
* - `'newline`' defaults to `'blurAndSubmit'`
|
|
909
|
+
* - `undefined` defaults to `'blurAndSubmit'`
|
|
910
|
+
*
|
|
911
|
+
* For multiline inputs:
|
|
912
|
+
*
|
|
913
|
+
* - `'newline'` adds a newline
|
|
914
|
+
* - `undefined` defaults to `'newline'`
|
|
915
|
+
*
|
|
916
|
+
* For both single line and multiline inputs:
|
|
917
|
+
*
|
|
918
|
+
* - `'submit'` will only send a submit event and not blur the input
|
|
919
|
+
* - `'blurAndSubmit`' will both blur the input and send a submit event
|
|
920
|
+
*/
|
|
921
|
+
submitBehavior?: ?SubmitBehavior,
|
|
922
|
+
|
|
778
923
|
/**
|
|
779
924
|
* Note that not all Text styles are supported, an incomplete list of what is not supported includes:
|
|
780
925
|
*
|
|
@@ -976,8 +1121,6 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
976
1121
|
const text =
|
|
977
1122
|
typeof props.value === 'string'
|
|
978
1123
|
? props.value
|
|
979
|
-
: typeof lastNativeText === 'string'
|
|
980
|
-
? lastNativeText
|
|
981
1124
|
: typeof props.defaultValue === 'string'
|
|
982
1125
|
? props.defaultValue
|
|
983
1126
|
: '';
|
|
@@ -1187,9 +1330,31 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
1187
1330
|
|
|
1188
1331
|
let textInput = null;
|
|
1189
1332
|
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1333
|
+
const multiline = props.multiline ?? false;
|
|
1334
|
+
|
|
1335
|
+
let submitBehavior: SubmitBehavior;
|
|
1336
|
+
if (props.submitBehavior != null) {
|
|
1337
|
+
// `submitBehavior` is set explicitly
|
|
1338
|
+
if (!multiline && props.submitBehavior === 'newline') {
|
|
1339
|
+
// For single line text inputs, `'newline'` is not a valid option
|
|
1340
|
+
submitBehavior = 'blurAndSubmit';
|
|
1341
|
+
} else {
|
|
1342
|
+
submitBehavior = props.submitBehavior;
|
|
1343
|
+
}
|
|
1344
|
+
} else if (multiline) {
|
|
1345
|
+
if (props.blurOnSubmit === true) {
|
|
1346
|
+
submitBehavior = 'blurAndSubmit';
|
|
1347
|
+
} else {
|
|
1348
|
+
submitBehavior = 'newline';
|
|
1349
|
+
}
|
|
1350
|
+
} else {
|
|
1351
|
+
// Single line
|
|
1352
|
+
if (props.blurOnSubmit !== false) {
|
|
1353
|
+
submitBehavior = 'blurAndSubmit';
|
|
1354
|
+
} else {
|
|
1355
|
+
submitBehavior = 'submit';
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1193
1358
|
|
|
1194
1359
|
const accessible = props.accessible !== false;
|
|
1195
1360
|
const focusable = props.focusable !== false;
|
|
@@ -1227,6 +1392,14 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
1227
1392
|
// so omitting onBlur and onFocus pressability handlers here.
|
|
1228
1393
|
const {onBlur, onFocus, ...eventHandlers} = usePressability(config) || {};
|
|
1229
1394
|
|
|
1395
|
+
const _accessibilityState = {
|
|
1396
|
+
busy: props['aria-busy'] ?? props.accessibilityState?.busy,
|
|
1397
|
+
checked: props['aria-checked'] ?? props.accessibilityState?.checked,
|
|
1398
|
+
disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,
|
|
1399
|
+
expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,
|
|
1400
|
+
selected: props['aria-selected'] ?? props.accessibilityState?.selected,
|
|
1401
|
+
};
|
|
1402
|
+
|
|
1230
1403
|
if (Platform.OS === 'ios') {
|
|
1231
1404
|
const RCTTextInputView =
|
|
1232
1405
|
props.multiline === true
|
|
@@ -1248,7 +1421,8 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
1248
1421
|
{...props}
|
|
1249
1422
|
{...eventHandlers}
|
|
1250
1423
|
accessible={accessible}
|
|
1251
|
-
|
|
1424
|
+
accessibilityState={_accessibilityState}
|
|
1425
|
+
submitBehavior={submitBehavior}
|
|
1252
1426
|
caretHidden={caretHidden}
|
|
1253
1427
|
dataDetectorTypes={props.dataDetectorTypes}
|
|
1254
1428
|
focusable={focusable}
|
|
@@ -1270,6 +1444,8 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
1270
1444
|
} else if (Platform.OS === 'android') {
|
|
1271
1445
|
const style = [props.style];
|
|
1272
1446
|
const autoCapitalize = props.autoCapitalize || 'sentences';
|
|
1447
|
+
const _accessibilityLabelledBy =
|
|
1448
|
+
props?.['aria-labelledby'] ?? props?.accessibilityLabelledBy;
|
|
1273
1449
|
const placeholder = props.placeholder ?? '';
|
|
1274
1450
|
let children = props.children;
|
|
1275
1451
|
const childCount = React.Children.count(children);
|
|
@@ -1295,13 +1471,16 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
1295
1471
|
{...props}
|
|
1296
1472
|
{...eventHandlers}
|
|
1297
1473
|
accessible={accessible}
|
|
1474
|
+
accessibilityState={_accessibilityState}
|
|
1475
|
+
accessibilityLabelledBy={_accessibilityLabelledBy}
|
|
1298
1476
|
autoCapitalize={autoCapitalize}
|
|
1299
|
-
|
|
1477
|
+
submitBehavior={submitBehavior}
|
|
1300
1478
|
caretHidden={caretHidden}
|
|
1301
1479
|
children={children}
|
|
1302
1480
|
disableFullscreenUI={props.disableFullscreenUI}
|
|
1303
1481
|
focusable={focusable}
|
|
1304
1482
|
mostRecentEventCount={mostRecentEventCount}
|
|
1483
|
+
numberOfLines={props.rows ?? props.numberOfLines}
|
|
1305
1484
|
onBlur={_onBlur}
|
|
1306
1485
|
onChange={_onChange}
|
|
1307
1486
|
onFocus={_onFocus}
|
|
@@ -1326,6 +1505,88 @@ function InternalTextInput(props: Props): React.Node {
|
|
|
1326
1505
|
);
|
|
1327
1506
|
}
|
|
1328
1507
|
|
|
1508
|
+
const enterKeyHintToReturnTypeMap = {
|
|
1509
|
+
enter: 'default',
|
|
1510
|
+
done: 'done',
|
|
1511
|
+
go: 'go',
|
|
1512
|
+
next: 'next',
|
|
1513
|
+
previous: 'previous',
|
|
1514
|
+
search: 'search',
|
|
1515
|
+
send: 'send',
|
|
1516
|
+
};
|
|
1517
|
+
|
|
1518
|
+
const inputModeToKeyboardTypeMap = {
|
|
1519
|
+
none: 'default',
|
|
1520
|
+
text: 'default',
|
|
1521
|
+
decimal: 'decimal-pad',
|
|
1522
|
+
numeric: 'number-pad',
|
|
1523
|
+
tel: 'phone-pad',
|
|
1524
|
+
search: Platform.OS === 'ios' ? 'web-search' : 'default',
|
|
1525
|
+
email: 'email-address',
|
|
1526
|
+
url: 'url',
|
|
1527
|
+
};
|
|
1528
|
+
|
|
1529
|
+
// Map HTML autocomplete values to Android autoComplete values
|
|
1530
|
+
const autoCompleteWebToAutoCompleteAndroidMap = {
|
|
1531
|
+
'address-line1': 'postal-address-region',
|
|
1532
|
+
'address-line2': 'postal-address-locality',
|
|
1533
|
+
bday: 'birthdate-full',
|
|
1534
|
+
'bday-day': 'birthdate-day',
|
|
1535
|
+
'bday-month': 'birthdate-month',
|
|
1536
|
+
'bday-year': 'birthdate-year',
|
|
1537
|
+
'cc-csc': 'cc-csc',
|
|
1538
|
+
'cc-exp': 'cc-exp',
|
|
1539
|
+
'cc-exp-month': 'cc-exp-month',
|
|
1540
|
+
'cc-exp-year': 'cc-exp-year',
|
|
1541
|
+
'cc-number': 'cc-number',
|
|
1542
|
+
country: 'postal-address-country',
|
|
1543
|
+
'current-password': 'password',
|
|
1544
|
+
email: 'email',
|
|
1545
|
+
'honorific-prefix': 'name-prefix',
|
|
1546
|
+
'honorific-suffix': 'name-suffix',
|
|
1547
|
+
name: 'name',
|
|
1548
|
+
'additional-name': 'name-middle',
|
|
1549
|
+
'family-name': 'name-family',
|
|
1550
|
+
'given-name': 'name-given',
|
|
1551
|
+
'new-password': 'password-new',
|
|
1552
|
+
off: 'off',
|
|
1553
|
+
'one-time-code': 'sms-otp',
|
|
1554
|
+
'postal-code': 'postal-code',
|
|
1555
|
+
sex: 'gender',
|
|
1556
|
+
'street-address': 'street-address',
|
|
1557
|
+
tel: 'tel',
|
|
1558
|
+
'tel-country-code': 'tel-country-code',
|
|
1559
|
+
'tel-national': 'tel-national',
|
|
1560
|
+
username: 'username',
|
|
1561
|
+
};
|
|
1562
|
+
|
|
1563
|
+
// Map HTML autocomplete values to iOS textContentType values
|
|
1564
|
+
const autoCompleteWebToTextContentTypeMap = {
|
|
1565
|
+
'address-line1': 'streetAddressLine1',
|
|
1566
|
+
'address-line2': 'streetAddressLine2',
|
|
1567
|
+
'cc-number': 'creditCardNumber',
|
|
1568
|
+
'current-password': 'password',
|
|
1569
|
+
country: 'countryName',
|
|
1570
|
+
email: 'emailAddress',
|
|
1571
|
+
name: 'name',
|
|
1572
|
+
'additional-name': 'middleName',
|
|
1573
|
+
'family-name': 'familyName',
|
|
1574
|
+
'given-name': 'givenName',
|
|
1575
|
+
nickname: 'nickname',
|
|
1576
|
+
'honorific-prefix': 'namePrefix',
|
|
1577
|
+
'honorific-suffix': 'nameSuffix',
|
|
1578
|
+
'new-password': 'newPassword',
|
|
1579
|
+
off: 'none',
|
|
1580
|
+
'one-time-code': 'oneTimeCode',
|
|
1581
|
+
organization: 'organizationName',
|
|
1582
|
+
'organization-title': 'jobTitle',
|
|
1583
|
+
'postal-code': 'postalCode',
|
|
1584
|
+
'street-address': 'fullStreetAddress',
|
|
1585
|
+
tel: 'telephoneNumber',
|
|
1586
|
+
url: 'URL',
|
|
1587
|
+
username: 'username',
|
|
1588
|
+
};
|
|
1589
|
+
|
|
1329
1590
|
const ExportedForwardRef: React.AbstractComponent<
|
|
1330
1591
|
React.ElementConfig<typeof InternalTextInput>,
|
|
1331
1592
|
React.ElementRef<HostComponent<mixed>> & ImperativeMethods,
|
|
@@ -1334,23 +1595,68 @@ const ExportedForwardRef: React.AbstractComponent<
|
|
|
1334
1595
|
allowFontScaling = true,
|
|
1335
1596
|
rejectResponderTermination = true,
|
|
1336
1597
|
underlineColorAndroid = 'transparent',
|
|
1598
|
+
autoComplete,
|
|
1599
|
+
textContentType,
|
|
1600
|
+
readOnly,
|
|
1601
|
+
editable,
|
|
1602
|
+
enterKeyHint,
|
|
1603
|
+
returnKeyType,
|
|
1604
|
+
inputMode,
|
|
1605
|
+
keyboardType,
|
|
1337
1606
|
...restProps
|
|
1338
1607
|
},
|
|
1339
1608
|
forwardedRef: ReactRefSetter<
|
|
1340
1609
|
React.ElementRef<HostComponent<mixed>> & ImperativeMethods,
|
|
1341
1610
|
>,
|
|
1342
1611
|
) {
|
|
1612
|
+
const style = flattenStyle(restProps.style);
|
|
1613
|
+
|
|
1614
|
+
if (style?.verticalAlign != null) {
|
|
1615
|
+
style.textAlignVertical =
|
|
1616
|
+
verticalAlignToTextAlignVerticalMap[style.verticalAlign];
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1343
1619
|
return (
|
|
1344
1620
|
<InternalTextInput
|
|
1345
1621
|
allowFontScaling={allowFontScaling}
|
|
1346
1622
|
rejectResponderTermination={rejectResponderTermination}
|
|
1347
1623
|
underlineColorAndroid={underlineColorAndroid}
|
|
1624
|
+
editable={readOnly !== undefined ? !readOnly : editable}
|
|
1625
|
+
returnKeyType={
|
|
1626
|
+
enterKeyHint ? enterKeyHintToReturnTypeMap[enterKeyHint] : returnKeyType
|
|
1627
|
+
}
|
|
1628
|
+
keyboardType={
|
|
1629
|
+
inputMode ? inputModeToKeyboardTypeMap[inputMode] : keyboardType
|
|
1630
|
+
}
|
|
1631
|
+
autoComplete={
|
|
1632
|
+
Platform.OS === 'android'
|
|
1633
|
+
? // $FlowFixMe
|
|
1634
|
+
autoCompleteWebToAutoCompleteAndroidMap[autoComplete] ??
|
|
1635
|
+
autoComplete
|
|
1636
|
+
: undefined
|
|
1637
|
+
}
|
|
1638
|
+
textContentType={
|
|
1639
|
+
Platform.OS === 'ios' &&
|
|
1640
|
+
autoComplete &&
|
|
1641
|
+
autoComplete in autoCompleteWebToTextContentTypeMap
|
|
1642
|
+
? // $FlowFixMe
|
|
1643
|
+
autoCompleteWebToTextContentTypeMap[autoComplete]
|
|
1644
|
+
: textContentType
|
|
1645
|
+
}
|
|
1348
1646
|
{...restProps}
|
|
1349
1647
|
forwardedRef={forwardedRef}
|
|
1648
|
+
style={style}
|
|
1350
1649
|
/>
|
|
1351
1650
|
);
|
|
1352
1651
|
});
|
|
1353
1652
|
|
|
1653
|
+
/**
|
|
1654
|
+
* Switch to `deprecated-react-native-prop-types` for compatibility with future
|
|
1655
|
+
* releases. This is deprecated and will be removed in the future.
|
|
1656
|
+
*/
|
|
1657
|
+
ExportedForwardRef.propTypes =
|
|
1658
|
+
require('deprecated-react-native-prop-types').TextInputPropTypes;
|
|
1659
|
+
|
|
1354
1660
|
// $FlowFixMe[prop-missing]
|
|
1355
1661
|
ExportedForwardRef.State = {
|
|
1356
1662
|
currentlyFocusedInput: TextInputState.currentlyFocusedInput,
|
|
@@ -1378,12 +1684,12 @@ const styles = StyleSheet.create({
|
|
|
1378
1684
|
},
|
|
1379
1685
|
});
|
|
1380
1686
|
|
|
1687
|
+
const verticalAlignToTextAlignVerticalMap = {
|
|
1688
|
+
auto: 'auto',
|
|
1689
|
+
top: 'top',
|
|
1690
|
+
bottom: 'bottom',
|
|
1691
|
+
middle: 'center',
|
|
1692
|
+
};
|
|
1693
|
+
|
|
1381
1694
|
// $FlowFixMe[unclear-type] Unclear type. Using `any` type is not safe.
|
|
1382
|
-
module.exports = ((ExportedForwardRef: any):
|
|
1383
|
-
React.ElementConfig<typeof InternalTextInput>,
|
|
1384
|
-
$ReadOnly<{|
|
|
1385
|
-
...React.ElementRef<HostComponent<mixed>>,
|
|
1386
|
-
...ImperativeMethods,
|
|
1387
|
-
|}>,
|
|
1388
|
-
> &
|
|
1389
|
-
TextInputComponentStatics);
|
|
1695
|
+
module.exports = ((ExportedForwardRef: any): TextInputType);
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
* 2. Additional work to manage selection
|
|
18
18
|
* 3. Any base/default styling work
|
|
19
19
|
*/
|
|
20
|
-
import React from 'react';
|
|
21
20
|
import { TextInputProps } from 'react-native';
|
|
21
|
+
import React from 'react';
|
|
22
22
|
declare class TextInput extends React.Component<TextInputProps, {}> {
|
|
23
23
|
private _rafID;
|
|
24
24
|
private readonly _inputRef;
|
|
@@ -24,8 +24,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
24
24
|
* 2. Additional work to manage selection
|
|
25
25
|
* 3. Any base/default styling work
|
|
26
26
|
*/
|
|
27
|
-
const react_1 = __importDefault(require("react"));
|
|
28
27
|
const react_native_1 = require("react-native");
|
|
28
|
+
const react_1 = __importDefault(require("react"));
|
|
29
29
|
const TextAncestor = require('../../Text/TextAncestor');
|
|
30
30
|
const TextInputState = require('./TextInputState');
|
|
31
31
|
// RCTTextInput is the native component that win32 understands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.win32.js","sourceRoot":"","sources":["../../../src/Libraries/Components/TextInput/TextInput.win32.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @providesModule TextInput\n */\n'use strict';\n\n/**\n * This is a forked and slightly modified version of React Native's TextInput.\n * The fork is necessary as platform checks in the base implementation made the\n * control unusable on win32. In addition to cleaning up some of the code, this\n * fork also uses Typescript rather than Flow for type safety.\n *\n * More general documentation on this control can be found at\n * https://facebook.github.io/react-native/docs/textinput.html\n *\n * The original implementation can be found at\n * https://github.com/facebook/react-native/blob/1013a010492a7bef5ff58073a088ac924a986e9e/Libraries/Components/TextInput/TextInput.js\n *\n * This control does not support the full React Native TextInput interface yet.\n * Most of the work necessary to make that happen needs to happen on the native side.\n * Future work on the JS side may include:\n * 1. Expanded typings for some of the events\n * 2. Additional work to manage selection\n * 3. Any base/default styling work\n */\n\nimport React from 'react'\nimport {\n findNodeHandle,\n requireNativeComponent,\n TextInputProps,\n NativeMethods,\n UIManager\n} from 'react-native';\nimport {\n IBlurEvent,\n IChangeEvent,\n IFocusEvent,\n} from './TextInput.Types.win32';\n\nconst TextAncestor = require('../../Text/TextAncestor');\nconst TextInputState = require('./TextInputState');\n\ntype RCTTextInputProps = TextInputProps & {\n text: string;\n};\n\n// RCTTextInput is the native component that win32 understands\nconst RCTTextInput = requireNativeComponent<RCTTextInputProps>('RCTTextInput');\n\n// Adding typings on ViewManagers is problematic as available functionality is not known until\n// registration at runtime and would require native and js to always be in sync.\nconst TextInputViewManager: any = UIManager.getViewManagerConfig('RCTTextInput');\n\nclass TextInput extends React.Component<TextInputProps, {}> {\n // TODO: Once the native side begins supporting programmatic selection\n // this will become important for selection management\n // private _lastNativeTextSelection: any;\n\n private _rafID: number;\n\n private readonly _inputRef: React.RefObject<React.Component<RCTTextInputProps> & Readonly<NativeMethods>>;\n private _lastNativeText: string;\n private _eventCount = 0;\n\n constructor(props) {\n super(props);\n this._inputRef = React.createRef();\n }\n\n /**\n * On mount TextInput needs to register itself with TextInputState\n * and conditionally request an animation frame for focus.\n */\n public componentDidMount() {\n this._lastNativeText = this.props.value;\n\n TextInputState.registerInput(this);\n\n if (this.props.autoFocus) {\n this._rafID = requestAnimationFrame(this.focus);\n }\n }\n\n /**\n * This is an unfortunate consequence of having controlled TextInputs.\n * Tree diffing reconciliation will not always send down text values\n * This sets text explicitly.\n */\n public componentDidUpdate() {\n if ((this._lastNativeText !== this._getText())) {\n this._getText() && this.setNativeText(this._getText());\n }\n\n return;\n }\n\n /**\n * Pre-unmoun the TextInput should blur, unregister and clean up\n * the animation frame for focus (edge cases)\n */\n public componentWillUnmount() {\n // blur\n if (this.isFocused()) {\n this.blur();\n }\n\n // unregister\n TextInputState.unregisterInput(this);\n\n // cancel animationFrame\n if (this._rafID !== null) {\n cancelAnimationFrame(this._rafID);\n }\n if (this._rafID) {\n return;\n }\n return;\n }\n\n public render() {\n const props: TextInputProps = { ...this.props };\n\n // By default fontScaling is turned on.\n // win32 ignores this prop for the time being\n props.allowFontScaling = (this.props.allowFontScaling === null\n || this.props.allowFontScaling === undefined)\n ? true : this.props.allowFontScaling;\n\n return (\n <TextAncestor.Provider value={ true }>\n <RCTTextInput\n { ...props }\n ref={ this._inputRef }\n text={ this._getText() }\n onFocus={ this._onFocus }\n onBlur={ this._onBlur }\n onChange={ this._onChange }\n />\n </TextAncestor.Provider>\n );\n }\n\n /**\n * Returns true if the TextInput is focused\n */\n public isFocused(): boolean {\n return TextInputState.currentlyFocusedInput() === this;\n }\n\n /**\n * Focuses the TextInput\n */\n public focus = (): void => {\n TextInputState.setFocusedTextInput(this);\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.focus, null);\n }\n\n /**\n * Blurs the TextInput\n */\n public blur = (): void => {\n TextInputState.blurTextInput(this);\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.blur, null);\n }\n\n /**\n * Use clear for programmatic clearing of the text\n */\n public clear = (): void => {\n this.setNativeText('');\n }\n\n private readonly setEventCount = (): void => {\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.setEventCount,\n [ this._eventCount ]);\n }\n\n private readonly setNativeText = (val: string): void => {\n if (this._lastNativeText !== val) {\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.setNativeText,\n [ val ]);\n }\n }\n\n private readonly _getText = (): string | null => {\n return this.props.value || (this.props.defaultValue || null);\n }\n\n private readonly _onChange = (e: IChangeEvent): void => {\n const text = e.nativeEvent.text;\n this._eventCount = e.nativeEvent.eventCount;\n this.setEventCount();\n\n this.props.onChange && this.props.onChange(e);\n this.props.onChangeText && this.props.onChangeText(text);\n this._lastNativeText = text;\n\n this.forceUpdate();\n return;\n }\n\n private readonly _onFocus = (e: IFocusEvent): void => {\n this.focus();\n this.props.onFocus && this.props.onFocus(e);\n }\n\n private readonly _onBlur = (e: IBlurEvent): void => {\n this.props.onBlur && this.props.onBlur(e);\n }\n}\n\nexport = TextInput;\n"]}
|
|
1
|
+
{"version":3,"file":"TextInput.win32.js","sourceRoot":"","sources":["../../../src/Libraries/Components/TextInput/TextInput.win32.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @providesModule TextInput\n */\n'use strict';\n\n/**\n * This is a forked and slightly modified version of React Native's TextInput.\n * The fork is necessary as platform checks in the base implementation made the\n * control unusable on win32. In addition to cleaning up some of the code, this\n * fork also uses Typescript rather than Flow for type safety.\n *\n * More general documentation on this control can be found at\n * https://facebook.github.io/react-native/docs/textinput.html\n *\n * The original implementation can be found at\n * https://github.com/facebook/react-native/blob/1013a010492a7bef5ff58073a088ac924a986e9e/Libraries/Components/TextInput/TextInput.js\n *\n * This control does not support the full React Native TextInput interface yet.\n * Most of the work necessary to make that happen needs to happen on the native side.\n * Future work on the JS side may include:\n * 1. Expanded typings for some of the events\n * 2. Additional work to manage selection\n * 3. Any base/default styling work\n */\n\n\nimport {\n findNodeHandle,\n requireNativeComponent,\n TextInputProps,\n NativeMethods,\n UIManager\n} from 'react-native';\nimport {\n IBlurEvent,\n IChangeEvent,\n IFocusEvent,\n} from './TextInput.Types.win32';\nimport React from 'react'\n\nconst TextAncestor = require('../../Text/TextAncestor');\nconst TextInputState = require('./TextInputState');\n\ntype RCTTextInputProps = TextInputProps & {\n text: string;\n};\n\n// RCTTextInput is the native component that win32 understands\nconst RCTTextInput = requireNativeComponent<RCTTextInputProps>('RCTTextInput');\n\n// Adding typings on ViewManagers is problematic as available functionality is not known until\n// registration at runtime and would require native and js to always be in sync.\nconst TextInputViewManager: any = UIManager.getViewManagerConfig('RCTTextInput');\n\nclass TextInput extends React.Component<TextInputProps, {}> {\n // TODO: Once the native side begins supporting programmatic selection\n // this will become important for selection management\n // private _lastNativeTextSelection: any;\n\n private _rafID: number;\n\n private readonly _inputRef: React.RefObject<React.Component<RCTTextInputProps> & Readonly<NativeMethods>>;\n private _lastNativeText: string;\n private _eventCount = 0;\n\n constructor(props) {\n super(props);\n this._inputRef = React.createRef();\n }\n\n /**\n * On mount TextInput needs to register itself with TextInputState\n * and conditionally request an animation frame for focus.\n */\n public componentDidMount() {\n this._lastNativeText = this.props.value;\n\n TextInputState.registerInput(this);\n\n if (this.props.autoFocus) {\n this._rafID = requestAnimationFrame(this.focus);\n }\n }\n\n /**\n * This is an unfortunate consequence of having controlled TextInputs.\n * Tree diffing reconciliation will not always send down text values\n * This sets text explicitly.\n */\n public componentDidUpdate() {\n if ((this._lastNativeText !== this._getText())) {\n this._getText() && this.setNativeText(this._getText());\n }\n\n return;\n }\n\n /**\n * Pre-unmoun the TextInput should blur, unregister and clean up\n * the animation frame for focus (edge cases)\n */\n public componentWillUnmount() {\n // blur\n if (this.isFocused()) {\n this.blur();\n }\n\n // unregister\n TextInputState.unregisterInput(this);\n\n // cancel animationFrame\n if (this._rafID !== null) {\n cancelAnimationFrame(this._rafID);\n }\n if (this._rafID) {\n return;\n }\n return;\n }\n\n public render() {\n const props: TextInputProps = { ...this.props };\n\n // By default fontScaling is turned on.\n // win32 ignores this prop for the time being\n props.allowFontScaling = (this.props.allowFontScaling === null\n || this.props.allowFontScaling === undefined)\n ? true : this.props.allowFontScaling;\n\n return (\n <TextAncestor.Provider value={ true }>\n <RCTTextInput\n { ...props }\n ref={ this._inputRef }\n text={ this._getText() }\n onFocus={ this._onFocus }\n onBlur={ this._onBlur }\n onChange={ this._onChange }\n />\n </TextAncestor.Provider>\n );\n }\n\n /**\n * Returns true if the TextInput is focused\n */\n public isFocused(): boolean {\n return TextInputState.currentlyFocusedInput() === this;\n }\n\n /**\n * Focuses the TextInput\n */\n public focus = (): void => {\n TextInputState.setFocusedTextInput(this);\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.focus, null);\n }\n\n /**\n * Blurs the TextInput\n */\n public blur = (): void => {\n TextInputState.blurTextInput(this);\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.blur, null);\n }\n\n /**\n * Use clear for programmatic clearing of the text\n */\n public clear = (): void => {\n this.setNativeText('');\n }\n\n private readonly setEventCount = (): void => {\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.setEventCount,\n [ this._eventCount ]);\n }\n\n private readonly setNativeText = (val: string): void => {\n if (this._lastNativeText !== val) {\n UIManager.\n dispatchViewManagerCommand(findNodeHandle(this), TextInputViewManager.Commands.setNativeText,\n [ val ]);\n }\n }\n\n private readonly _getText = (): string | null => {\n return this.props.value || (this.props.defaultValue || null);\n }\n\n private readonly _onChange = (e: IChangeEvent): void => {\n const text = e.nativeEvent.text;\n this._eventCount = e.nativeEvent.eventCount;\n this.setEventCount();\n\n this.props.onChange && this.props.onChange(e);\n this.props.onChangeText && this.props.onChangeText(text);\n this._lastNativeText = text;\n\n this.forceUpdate();\n return;\n }\n\n private readonly _onFocus = (e: IFocusEvent): void => {\n this.focus();\n this.props.onFocus && this.props.onFocus(e);\n }\n\n private readonly _onBlur = (e: IBlurEvent): void => {\n this.props.onBlur && this.props.onBlur(e);\n }\n}\n\nexport = TextInput;\n"]}
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import * as React from 'react';
|
|
12
|
-
|
|
13
11
|
import type {Int32} from '../../Types/CodegenTypes';
|
|
14
12
|
|
|
13
|
+
import * as React from 'react';
|
|
14
|
+
|
|
15
15
|
export interface TextInputNativeCommands<T> {
|
|
16
16
|
+focus: (viewRef: React.ElementRef<T>) => void;
|
|
17
17
|
+blur: (viewRef: React.ElementRef<T>) => void;
|
|
@@ -12,17 +12,34 @@
|
|
|
12
12
|
// TextInputs. All calls relating to the keyboard should be funneled
|
|
13
13
|
// through here.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
import type {
|
|
16
|
+
HostComponent,
|
|
17
|
+
MeasureInWindowOnSuccessCallback,
|
|
18
|
+
MeasureLayoutOnSuccessCallback,
|
|
19
|
+
MeasureOnSuccessCallback,
|
|
20
|
+
} from '../../Renderer/shims/ReactNativeTypes';
|
|
21
|
+
|
|
18
22
|
import {Commands as AndroidTextInputCommands} from '../../Components/TextInput/AndroidTextInputNativeComponent';
|
|
19
23
|
import {Commands as iOSTextInputCommands} from '../../Components/TextInput/RCTSingelineTextInputNativeComponent';
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
const {findNodeHandle} = require('../../ReactNative/RendererProxy');
|
|
26
|
+
const Platform = require('../../Utilities/Platform');
|
|
27
|
+
const React = require('react');
|
|
22
28
|
type ComponentRef = React.ElementRef<HostComponent<mixed>>;
|
|
23
29
|
|
|
24
30
|
let currentlyFocusedInputRef: ?ComponentRef = null;
|
|
25
|
-
const inputs = new Set
|
|
31
|
+
const inputs = new Set<{
|
|
32
|
+
blur(): void,
|
|
33
|
+
focus(): void,
|
|
34
|
+
measure(callback: MeasureOnSuccessCallback): void,
|
|
35
|
+
measureInWindow(callback: MeasureInWindowOnSuccessCallback): void,
|
|
36
|
+
measureLayout(
|
|
37
|
+
relativeToNativeNode: number | React.ElementRef<HostComponent<mixed>>,
|
|
38
|
+
onSuccess: MeasureLayoutOnSuccessCallback,
|
|
39
|
+
onFail?: () => void,
|
|
40
|
+
): void,
|
|
41
|
+
setNativeProps(nativeProps: {...}): void,
|
|
42
|
+
}>();
|
|
26
43
|
|
|
27
44
|
function currentlyFocusedInput(): ?ComponentRef {
|
|
28
45
|
return currentlyFocusedInputRef;
|