react-native-windows 0.79.2 → 0.80.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +12 -3
- package/Directory.Build.props +5 -2
- package/Libraries/Alert/Alert.d.ts +4 -1
- package/Libraries/Alert/Alert.js +3 -0
- package/Libraries/Alert/Alert.windows.js +3 -0
- package/Libraries/Alert/RCTAlertManager.js +17 -0
- package/Libraries/Animated/Animated.js.flow +1 -3
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js +2 -2
- package/Libraries/Animated/AnimatedExports.js.flow +140 -0
- package/Libraries/Animated/AnimatedImplementation.js +2 -123
- package/Libraries/Animated/Easing.js +13 -15
- package/Libraries/Animated/animations/Animation.js +8 -4
- package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
- package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
- package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
- package/Libraries/Animated/createAnimatedComponent.js +105 -57
- package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
- package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
- package/Libraries/AppState/AppState.js +7 -2
- package/Libraries/BatchedBridge/MessageQueue.js +2 -2
- package/Libraries/BatchedBridge/NativeModules.js +2 -0
- package/Libraries/Blob/BlobManager.js +1 -0
- package/Libraries/Blob/FileReader.js +219 -8
- package/Libraries/Blob/URL.js +37 -12
- package/Libraries/Blob/URLSearchParams.js +106 -31
- package/Libraries/Blob/URLSearchParams.js.flow +12 -7
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
- package/Libraries/Components/Button.d.ts +3 -0
- package/Libraries/Components/Button.js +1 -1
- package/Libraries/Components/Button.windows.js +27 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
- package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
- package/Libraries/Components/Flyout/Flyout.js +11 -0
- package/Libraries/Components/Keyboard/Keyboard.js +5 -3
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
- package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
- package/Libraries/Components/Popup/Popup.js +11 -0
- package/Libraries/Components/Pressable/Pressable.js +20 -4
- package/Libraries/Components/Pressable/Pressable.windows.js +20 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
- package/Libraries/Components/ScrollView/ScrollView.js +132 -122
- package/Libraries/Components/ScrollView/ScrollView.windows.js +131 -122
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/Switch/Switch.d.ts +3 -0
- package/Libraries/Components/Switch/Switch.js +8 -4
- package/Libraries/Components/Switch/Switch.windows.js +17 -4
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
- package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
- package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
- package/Libraries/Components/TextInput/TextInput.flow.windows.js +1246 -0
- package/Libraries/Components/TextInput/TextInput.js +88 -1027
- package/Libraries/Components/TextInput/TextInput.windows.js +104 -1092
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +2 -1
- package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
- package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
- package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
- package/Libraries/Components/Touchable/Touchable.js +5 -5
- package/Libraries/Components/Touchable/Touchable.windows.js +5 -5
- package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +14 -7
- package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +10 -7
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +6 -6
- package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +13 -6
- package/Libraries/Components/View/View.js +18 -21
- package/Libraries/Components/View/View.windows.js +39 -41
- package/Libraries/Components/View/ViewAccessibility.d.ts +8 -0
- package/Libraries/Components/View/ViewAccessibility.js +25 -1
- package/Libraries/Components/View/ViewAccessibility.windows.js +9 -1
- package/Libraries/Components/View/ViewPropTypes.js +49 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +50 -2
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Core/setUpReactDevTools.js +5 -5
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
- package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
- package/Libraries/Image/AssetSourceResolver.js +17 -4
- package/Libraries/Image/AssetSourceResolver.windows.js +17 -4
- package/Libraries/Image/Image.d.ts +26 -10
- package/Libraries/Image/Image.js +17 -0
- package/Libraries/Image/Image.js.flow +5 -5
- package/Libraries/Image/Image.windows.js +13 -1
- package/Libraries/Image/ImageBackground.js +2 -0
- package/Libraries/Image/ImageInjection.js +1 -1
- package/Libraries/Image/ImageProps.js +22 -17
- package/Libraries/Image/ImageSource.js +3 -1
- package/Libraries/Image/ImageSourceUtils.js +4 -2
- package/Libraries/Image/ImageTypes.flow.js +1 -1
- package/Libraries/Interaction/InteractionManager.d.ts +13 -0
- package/Libraries/Interaction/InteractionManager.js +1 -1
- package/Libraries/Interaction/PanResponder.js +3 -3
- package/Libraries/Interaction/TaskQueue.js +1 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +2 -2
- package/Libraries/Lists/FlatList.js +8 -11
- package/Libraries/Lists/SectionList.js +39 -42
- package/Libraries/Lists/SectionListModern.js +25 -34
- package/Libraries/Lists/VirtualizedList.js +1 -0
- package/Libraries/Lists/VirtualizedSectionList.js +1 -0
- package/Libraries/LogBox/Data/LogBoxData.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
- package/Libraries/Modal/Modal.js +33 -7
- package/Libraries/Modal/Modal.windows.js +33 -10
- package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
- package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
- package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
- package/Libraries/Network/RCTNetworking.android.js +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js +17 -0
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.windows.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +781 -10
- package/Libraries/Performance/Systrace.js +7 -7
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/Pressability/Pressability.windows.js +1 -1
- package/Libraries/ReactNative/AppContainer-dev.js +5 -4
- package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
- package/Libraries/ReactNative/AppRegistry.js +2 -322
- package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
- package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
- package/Libraries/ReactNative/FabricUIManager.js +10 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
- package/Libraries/ReactNative/RendererImplementation.js +10 -5
- package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
- package/Libraries/ReactNative/renderApplication.js +9 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
- package/Libraries/Settings/Settings.ios.js +1 -0
- package/Libraries/Settings/Settings.js +13 -19
- package/Libraries/Settings/SettingsFallback.js +33 -0
- package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
- package/Libraries/StyleSheet/Rect.js +1 -0
- package/Libraries/StyleSheet/StyleSheet.js +31 -200
- package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
- package/Libraries/StyleSheet/StyleSheetExports.js +210 -0
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
- package/Libraries/StyleSheet/flattenStyle.js +14 -4
- package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
- package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
- package/Libraries/Text/Text.d.ts +2 -5
- package/Libraries/Text/Text.js +3 -3
- package/Libraries/Text/Text.windows.js +3 -3
- package/Libraries/Text/TextNativeComponent.js +0 -4
- package/Libraries/Text/TextProps.js +5 -33
- package/Libraries/Text/TextProps.windows.js +5 -32
- package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
- package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
- package/Libraries/Types/CoreEventTypes.d.ts +6 -1
- package/Libraries/Types/CoreEventTypes.js +1 -1
- package/Libraries/Types/CoreEventTypes.windows.js +1 -1
- package/Libraries/Utilities/Appearance.js +2 -0
- package/Libraries/Utilities/BackHandler.js +17 -0
- package/Libraries/Utilities/DeviceInfo.js +2 -0
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/Platform.js +17 -0
- package/Libraries/Utilities/PlatformTypes.js +11 -3
- package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
- package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
- package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
- package/Libraries/WebSocket/WebSocket.js +313 -8
- package/Libraries/vendor/core/ErrorUtils.js +28 -2
- package/Libraries/vendor/emitter/EventEmitter.js +6 -2
- package/Microsoft.ReactNative/CompositionSwitcher.idl +8 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +0 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +197 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +34 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +36 -33
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +81 -0
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +5 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +148 -14
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +4 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +29 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +2 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +17 -34
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +4 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +16 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +9 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +4 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +34 -94
- package/Microsoft.ReactNative/Modules/SampleTurboModule.cpp +4 -0
- package/Microsoft.ReactNative/Modules/SampleTurboModule.h +3 -0
- package/Microsoft.ReactNative/TurboModulesProvider.h +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.h +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/React.Cpp.props +4 -0
- package/README.md +2 -2
- package/ReactCommon/ReactCommon.vcxproj +9 -4
- package/ReactCommon/ReactCommon.vcxproj.filters +6 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +253 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +5 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +4 -8
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +184 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +22 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +2 -4
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +27 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +2 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +1 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +308 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp +42 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +7 -51
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +10 -5
- package/Scripts/creaternwapp.cmd +9 -3
- package/Shared/Shared.vcxitems +3 -2
- package/Shared/Shared.vcxitems.filters +2 -1
- package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
- package/codegen/NativePerformanceSpec.g.h +14 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +151 -127
- package/codegen/NativeSampleTurboModuleSpec.g.h +14 -8
- package/codegen/react/components/rnwcore/EventEmitters.cpp +48 -48
- package/codegen/rnwcoreJSI-generated.cpp +159 -129
- package/codegen/rnwcoreJSI.h +534 -408
- package/index.js +51 -331
- package/index.windows.js +70 -352
- package/interface.js +0 -4
- package/jest/resolver.js +31 -0
- package/jest/setup.js +6 -2
- package/package.json +29 -28
- package/src/private/animated/NativeAnimatedHelper.js +21 -8
- package/src/private/animated/createAnimatedPropsHook.js +11 -16
- package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
- package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
- package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
- package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
- package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
- package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
- package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
- package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
- package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
- package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.windows.js +1 -1
- package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
- package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
- package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +12 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
- package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
- package/src/private/styles/composeStyles.js +12 -5
- package/src/private/types/HostComponent.js +1 -1
- package/src/private/types/HostInstance.js +67 -1
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
- package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
- package/src/private/webapis/performance/Performance.js +1 -3
- package/src/private/webapis/performance/PerformanceEntry.js +6 -1
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
- package/src/types/globals.d.ts +42 -0
- package/stubs/double-conversion/double-conversion.h +3 -1
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +4 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +4 -0
- package/types/index.d.ts +6 -3
- package/types/public/ReactNativeTypes.d.ts +2 -2
- package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
- package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
- package/Libraries/Blob/FileReader_new.js +0 -231
- package/Libraries/Blob/FileReader_old.js +0 -186
- package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
- package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
- package/Libraries/Events/CustomEvent.js +0 -32
- package/Libraries/Events/EventPolyfill.js +0 -239
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
- package/Libraries/Network/XMLHttpRequest_new.js +0 -794
- package/Libraries/Network/XMLHttpRequest_old.js +0 -701
- package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
- package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +0 -30
- package/Libraries/NewAppScreen/components/Header.js +0 -77
- package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
- package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
- package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +0 -31
- package/Libraries/NewAppScreen/components/logo.png +0 -0
- package/Libraries/NewAppScreen/index.js +0 -25
- package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
- package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
- package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
- package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
- package/Libraries/WebSocket/WebSocketEvent.js +0 -30
- package/Libraries/WebSocket/WebSocket_new.js +0 -325
- package/Libraries/WebSocket/WebSocket_old.js +0 -297
- package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
- package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
- package/jest/__tests__/setup-test.js +0 -18
- package/src/private/components/VScrollViewNativeComponents.js +0 -25
- package/src/private/utilities/ensureInstance.js +0 -21
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
- package/types/modules/LaunchScreen.d.ts +0 -18
- /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
- /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
|
@@ -8,13 +8,224 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';
|
|
12
|
+
import type Blob from './Blob';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
import Event from '../../src/private/webapis/dom/events/Event';
|
|
15
|
+
import {
|
|
16
|
+
getEventHandlerAttribute,
|
|
17
|
+
setEventHandlerAttribute,
|
|
18
|
+
} from '../../src/private/webapis/dom/events/EventHandlerAttributes';
|
|
19
|
+
import EventTarget from '../../src/private/webapis/dom/events/EventTarget';
|
|
20
|
+
import NativeFileReaderModule from './NativeFileReaderModule';
|
|
21
|
+
import {toByteArray} from 'base64-js';
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
type ReadyState =
|
|
24
|
+
| 0 // EMPTY
|
|
25
|
+
| 1 // LOADING
|
|
26
|
+
| 2; // DONE
|
|
27
|
+
|
|
28
|
+
type ReaderResult = string | ArrayBuffer;
|
|
29
|
+
|
|
30
|
+
const EMPTY = 0;
|
|
31
|
+
const LOADING = 1;
|
|
32
|
+
const DONE = 2;
|
|
33
|
+
|
|
34
|
+
class FileReader extends EventTarget {
|
|
35
|
+
static EMPTY: number = EMPTY;
|
|
36
|
+
static LOADING: number = LOADING;
|
|
37
|
+
static DONE: number = DONE;
|
|
38
|
+
|
|
39
|
+
EMPTY: number = EMPTY;
|
|
40
|
+
LOADING: number = LOADING;
|
|
41
|
+
DONE: number = DONE;
|
|
42
|
+
|
|
43
|
+
_readyState: ReadyState;
|
|
44
|
+
_error: ?Error;
|
|
45
|
+
_result: ?ReaderResult;
|
|
46
|
+
_aborted: boolean = false;
|
|
47
|
+
|
|
48
|
+
constructor() {
|
|
49
|
+
super();
|
|
50
|
+
this._reset();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_reset(): void {
|
|
54
|
+
this._readyState = EMPTY;
|
|
55
|
+
this._error = null;
|
|
56
|
+
this._result = null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
_setReadyState(newState: ReadyState) {
|
|
60
|
+
this._readyState = newState;
|
|
61
|
+
this.dispatchEvent(new Event('readystatechange'));
|
|
62
|
+
if (newState === DONE) {
|
|
63
|
+
if (this._aborted) {
|
|
64
|
+
this.dispatchEvent(new Event('abort'));
|
|
65
|
+
} else if (this._error) {
|
|
66
|
+
this.dispatchEvent(new Event('error'));
|
|
67
|
+
} else {
|
|
68
|
+
this.dispatchEvent(new Event('load'));
|
|
69
|
+
}
|
|
70
|
+
this.dispatchEvent(new Event('loadend'));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
readAsArrayBuffer(blob: ?Blob): void {
|
|
75
|
+
this._aborted = false;
|
|
76
|
+
|
|
77
|
+
if (blob == null) {
|
|
78
|
+
throw new TypeError(
|
|
79
|
+
"Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'",
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
NativeFileReaderModule.readAsDataURL(blob.data).then(
|
|
84
|
+
(text: string) => {
|
|
85
|
+
if (this._aborted) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const base64 = text.split(',')[1];
|
|
90
|
+
const typedArray = toByteArray(base64);
|
|
91
|
+
|
|
92
|
+
this._result = typedArray.buffer;
|
|
93
|
+
this._setReadyState(DONE);
|
|
94
|
+
},
|
|
95
|
+
error => {
|
|
96
|
+
if (this._aborted) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
this._error = error;
|
|
100
|
+
this._setReadyState(DONE);
|
|
101
|
+
},
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
readAsDataURL(blob: ?Blob): void {
|
|
106
|
+
this._aborted = false;
|
|
107
|
+
|
|
108
|
+
if (blob == null) {
|
|
109
|
+
throw new TypeError(
|
|
110
|
+
"Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'",
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
NativeFileReaderModule.readAsDataURL(blob.data).then(
|
|
115
|
+
(text: string) => {
|
|
116
|
+
if (this._aborted) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this._result = text;
|
|
120
|
+
this._setReadyState(DONE);
|
|
121
|
+
},
|
|
122
|
+
error => {
|
|
123
|
+
if (this._aborted) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
this._error = error;
|
|
127
|
+
this._setReadyState(DONE);
|
|
128
|
+
},
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
readAsText(blob: ?Blob, encoding: string = 'UTF-8'): void {
|
|
133
|
+
this._aborted = false;
|
|
134
|
+
|
|
135
|
+
if (blob == null) {
|
|
136
|
+
throw new TypeError(
|
|
137
|
+
"Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'",
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
NativeFileReaderModule.readAsText(blob.data, encoding).then(
|
|
142
|
+
(text: string) => {
|
|
143
|
+
if (this._aborted) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this._result = text;
|
|
147
|
+
this._setReadyState(DONE);
|
|
148
|
+
},
|
|
149
|
+
error => {
|
|
150
|
+
if (this._aborted) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
this._error = error;
|
|
154
|
+
this._setReadyState(DONE);
|
|
155
|
+
},
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
abort() {
|
|
160
|
+
this._aborted = true;
|
|
161
|
+
// only call onreadystatechange if there is something to abort, as per spec
|
|
162
|
+
if (this._readyState !== EMPTY && this._readyState !== DONE) {
|
|
163
|
+
this._reset();
|
|
164
|
+
this._setReadyState(DONE);
|
|
165
|
+
}
|
|
166
|
+
// Reset again after, in case modified in handler
|
|
167
|
+
this._reset();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
get readyState(): ReadyState {
|
|
171
|
+
return this._readyState;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
get error(): ?Error {
|
|
175
|
+
return this._error;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
get result(): ?ReaderResult {
|
|
179
|
+
return this._result;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
get onabort(): EventCallback | null {
|
|
183
|
+
return getEventHandlerAttribute(this, 'abort');
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
set onabort(listener: ?EventCallback) {
|
|
187
|
+
setEventHandlerAttribute(this, 'abort', listener);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
get onerror(): EventCallback | null {
|
|
191
|
+
return getEventHandlerAttribute(this, 'error');
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
set onerror(listener: ?EventCallback) {
|
|
195
|
+
setEventHandlerAttribute(this, 'error', listener);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
get onload(): EventCallback | null {
|
|
199
|
+
return getEventHandlerAttribute(this, 'load');
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
set onload(listener: ?EventCallback) {
|
|
203
|
+
setEventHandlerAttribute(this, 'load', listener);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
get onloadstart(): EventCallback | null {
|
|
207
|
+
return getEventHandlerAttribute(this, 'loadstart');
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
set onloadstart(listener: ?EventCallback) {
|
|
211
|
+
setEventHandlerAttribute(this, 'loadstart', listener);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
get onloadend(): EventCallback | null {
|
|
215
|
+
return getEventHandlerAttribute(this, 'loadend');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
set onloadend(listener: ?EventCallback) {
|
|
219
|
+
setEventHandlerAttribute(this, 'loadend', listener);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
get onprogress(): EventCallback | null {
|
|
223
|
+
return getEventHandlerAttribute(this, 'progress');
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
set onprogress(listener: ?EventCallback) {
|
|
227
|
+
setEventHandlerAttribute(this, 'progress', listener);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export default FileReader;
|
package/Libraries/Blob/URL.js
CHANGED
|
@@ -81,7 +81,19 @@ export class URL {
|
|
|
81
81
|
let baseUrl = null;
|
|
82
82
|
if (!base || validateBaseUrl(url)) {
|
|
83
83
|
this._url = url;
|
|
84
|
-
if (
|
|
84
|
+
if (this._url.includes('#')) {
|
|
85
|
+
const split = this._url.split('#');
|
|
86
|
+
const beforeHash = split[0];
|
|
87
|
+
const website = beforeHash.split('://')[1];
|
|
88
|
+
if (!website.includes('/')) {
|
|
89
|
+
this._url = split.join('/#');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (
|
|
94
|
+
!this._url.endsWith('/') &&
|
|
95
|
+
!(this._url.includes('?') || this._url.includes('#'))
|
|
96
|
+
) {
|
|
85
97
|
this._url += '/';
|
|
86
98
|
}
|
|
87
99
|
} else {
|
|
@@ -107,15 +119,21 @@ export class URL {
|
|
|
107
119
|
}
|
|
108
120
|
|
|
109
121
|
get hash(): string {
|
|
110
|
-
|
|
122
|
+
const hashMatch = this._url.match(/#([^/]*)/);
|
|
123
|
+
return hashMatch ? `#${hashMatch[1]}` : '';
|
|
111
124
|
}
|
|
112
125
|
|
|
113
126
|
get host(): string {
|
|
114
|
-
|
|
127
|
+
const hostMatch = this._url.match(/^https?:\/\/(?:[^@]+@)?([^:/?#]+)/);
|
|
128
|
+
const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/);
|
|
129
|
+
return hostMatch
|
|
130
|
+
? hostMatch[1] + (portMatch ? `:${portMatch[1]}` : '')
|
|
131
|
+
: '';
|
|
115
132
|
}
|
|
116
133
|
|
|
117
134
|
get hostname(): string {
|
|
118
|
-
|
|
135
|
+
const hostnameMatch = this._url.match(/^https?:\/\/(?:[^@]+@)?([^:/?#]+)/);
|
|
136
|
+
return hostnameMatch ? hostnameMatch[1] : '';
|
|
119
137
|
}
|
|
120
138
|
|
|
121
139
|
get href(): string {
|
|
@@ -123,32 +141,38 @@ export class URL {
|
|
|
123
141
|
}
|
|
124
142
|
|
|
125
143
|
get origin(): string {
|
|
126
|
-
|
|
144
|
+
const matches = this._url.match(/^(https?:\/\/[^/]+)/);
|
|
145
|
+
return matches ? matches[1] : '';
|
|
127
146
|
}
|
|
128
147
|
|
|
129
148
|
get password(): string {
|
|
130
|
-
|
|
149
|
+
const passwordMatch = this._url.match(/https?:\/\/.*:(.*)@/);
|
|
150
|
+
return passwordMatch ? passwordMatch[1] : '';
|
|
131
151
|
}
|
|
132
152
|
|
|
133
153
|
get pathname(): string {
|
|
134
|
-
|
|
154
|
+
const pathMatch = this._url.match(/https?:\/\/[^/]+(\/[^?#]*)?/);
|
|
155
|
+
return pathMatch ? pathMatch[1] || '/' : '/';
|
|
135
156
|
}
|
|
136
157
|
|
|
137
158
|
get port(): string {
|
|
138
|
-
|
|
159
|
+
const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/);
|
|
160
|
+
return portMatch ? portMatch[1] : '';
|
|
139
161
|
}
|
|
140
162
|
|
|
141
163
|
get protocol(): string {
|
|
142
|
-
|
|
164
|
+
const protocolMatch = this._url.match(/^([a-zA-Z][a-zA-Z\d+\-.]*):/);
|
|
165
|
+
return protocolMatch ? protocolMatch[1] + ':' : '';
|
|
143
166
|
}
|
|
144
167
|
|
|
145
168
|
get search(): string {
|
|
146
|
-
|
|
169
|
+
const searchMatch = this._url.match(/\?([^#]*)/);
|
|
170
|
+
return searchMatch ? `?${searchMatch[1]}` : '';
|
|
147
171
|
}
|
|
148
172
|
|
|
149
173
|
get searchParams(): URLSearchParams {
|
|
150
174
|
if (this._searchParamsInstance == null) {
|
|
151
|
-
this._searchParamsInstance = new URLSearchParams();
|
|
175
|
+
this._searchParamsInstance = new URLSearchParams(this.search);
|
|
152
176
|
}
|
|
153
177
|
return this._searchParamsInstance;
|
|
154
178
|
}
|
|
@@ -168,6 +192,7 @@ export class URL {
|
|
|
168
192
|
}
|
|
169
193
|
|
|
170
194
|
get username(): string {
|
|
171
|
-
|
|
195
|
+
const usernameMatch = this._url.match(/^https?:\/\/([^:@]+)(?::[^@]*)?@/);
|
|
196
|
+
return usernameMatch ? usernameMatch[1] : '';
|
|
172
197
|
}
|
|
173
198
|
}
|
|
@@ -11,60 +11,135 @@
|
|
|
11
11
|
// Small subset from whatwg-url: https://github.com/jsdom/whatwg-url/tree/master/src
|
|
12
12
|
// The reference code bloat comes from Unicode issues with URLs, so those won't work here.
|
|
13
13
|
export class URLSearchParams {
|
|
14
|
-
_searchParams:
|
|
14
|
+
_searchParams: Map<string, string[]> = new Map();
|
|
15
15
|
|
|
16
|
-
constructor(params?: Record<string, string>) {
|
|
17
|
-
if (
|
|
18
|
-
|
|
16
|
+
constructor(params?: Record<string, string> | string | [string, string][]) {
|
|
17
|
+
if (params === null) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof params === 'string') {
|
|
22
|
+
// URLSearchParams("key1=value1&key2=value2");
|
|
23
|
+
params
|
|
24
|
+
.replace(/^\?/, '')
|
|
25
|
+
.split('&')
|
|
26
|
+
.forEach(pair => {
|
|
27
|
+
if (!pair) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const [key, value] = pair
|
|
31
|
+
.split('=')
|
|
32
|
+
.map(part => decodeURIComponent(part.replace(/\+/g, ' ')));
|
|
33
|
+
this.append(key, value);
|
|
34
|
+
});
|
|
35
|
+
} else if (Array.isArray(params)) {
|
|
36
|
+
//URLSearchParams([["key1", "value1"], ["key2", "value2"]]);
|
|
37
|
+
params.forEach(([key, value]) => this.append(key, value));
|
|
38
|
+
} else if (typeof params === 'object') {
|
|
39
|
+
//URLSearchParams({ key1: "value1", key2: "value2" });
|
|
40
|
+
Object.entries(params).forEach(([key, value]) => this.append(key, value));
|
|
19
41
|
}
|
|
20
42
|
}
|
|
21
43
|
|
|
22
44
|
append(key: string, value: string): void {
|
|
23
|
-
this._searchParams.
|
|
45
|
+
if (!this._searchParams.has(key)) {
|
|
46
|
+
this._searchParams.set(key, [value]); // Initialize with an array if key is missing
|
|
47
|
+
} else {
|
|
48
|
+
this._searchParams.get(key)?.push(value); // Else push the value to the array
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
delete(name: string): void {
|
|
53
|
+
this._searchParams.delete(name);
|
|
24
54
|
}
|
|
25
55
|
|
|
26
|
-
|
|
27
|
-
|
|
56
|
+
get(name: string): string | null {
|
|
57
|
+
const values = this._searchParams.get(name);
|
|
58
|
+
return values ? values[0] : null;
|
|
28
59
|
}
|
|
29
60
|
|
|
30
|
-
|
|
31
|
-
|
|
61
|
+
getAll(name: string): string[] {
|
|
62
|
+
return this._searchParams.get(name) ?? [];
|
|
32
63
|
}
|
|
33
64
|
|
|
34
|
-
|
|
35
|
-
|
|
65
|
+
has(name: string): boolean {
|
|
66
|
+
return this._searchParams.has(name);
|
|
36
67
|
}
|
|
37
68
|
|
|
38
|
-
|
|
39
|
-
|
|
69
|
+
set(name: string, value: string): void {
|
|
70
|
+
this._searchParams.set(name, [value]);
|
|
40
71
|
}
|
|
41
72
|
|
|
42
|
-
|
|
43
|
-
|
|
73
|
+
keys(): Iterator<string> {
|
|
74
|
+
return this._searchParams.keys();
|
|
44
75
|
}
|
|
45
76
|
|
|
46
|
-
|
|
47
|
-
|
|
77
|
+
values(): Iterator<string> {
|
|
78
|
+
function* generateValues(params: Map<string, string[]>): Iterator<string> {
|
|
79
|
+
for (const valueArray of params.values()) {
|
|
80
|
+
for (const value of valueArray) {
|
|
81
|
+
yield value;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return generateValues(this._searchParams);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
entries(): Iterator<[string, string]> {
|
|
89
|
+
function* generateEntries(
|
|
90
|
+
params: Map<string, string[]>,
|
|
91
|
+
): Iterator<[string, string]> {
|
|
92
|
+
for (const [key, values] of params) {
|
|
93
|
+
for (const value of values) {
|
|
94
|
+
yield [key, value];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return generateEntries(this._searchParams);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
forEach(
|
|
103
|
+
callback: (value: string, key: string, searchParams: this) => void,
|
|
104
|
+
): void {
|
|
105
|
+
for (const [key, values] of this._searchParams) {
|
|
106
|
+
for (const value of values) {
|
|
107
|
+
callback(value, key, this);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
sort(): void {
|
|
113
|
+
this._searchParams = new Map(
|
|
114
|
+
[...this._searchParams.entries()].sort(([a], [b]) => a.localeCompare(b)),
|
|
115
|
+
);
|
|
48
116
|
}
|
|
49
117
|
|
|
50
118
|
// $FlowFixMe[unsupported-syntax]
|
|
51
119
|
[Symbol.iterator](): Iterator<[string, string]> {
|
|
52
|
-
|
|
120
|
+
const entries: [string, string][] = [];
|
|
121
|
+
|
|
122
|
+
for (const [key, values] of this._searchParams) {
|
|
123
|
+
for (const value of values) {
|
|
124
|
+
entries.push([key, value]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return entries[Symbol.iterator]();
|
|
53
129
|
}
|
|
54
130
|
|
|
55
131
|
toString(): string {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
);
|
|
68
|
-
}, '');
|
|
132
|
+
return Array.from(this._searchParams.entries())
|
|
133
|
+
.map(([key, values]) =>
|
|
134
|
+
values
|
|
135
|
+
.map(
|
|
136
|
+
value =>
|
|
137
|
+
`${encodeURIComponent(key).replace(/%20/g, '+')}=${encodeURIComponent(
|
|
138
|
+
value,
|
|
139
|
+
).replace(/%20/g, '+')}`, // Convert only spaces to '+'
|
|
140
|
+
)
|
|
141
|
+
.join('&'),
|
|
142
|
+
)
|
|
143
|
+
.join('&');
|
|
69
144
|
}
|
|
70
145
|
}
|
|
@@ -10,14 +10,19 @@
|
|
|
10
10
|
|
|
11
11
|
declare export class URLSearchParams {
|
|
12
12
|
_searchParams: Array<[string, string]>;
|
|
13
|
-
constructor(
|
|
13
|
+
constructor(
|
|
14
|
+
params?: Record<string, string> | string | Array<[string, string]>,
|
|
15
|
+
): void;
|
|
14
16
|
append(key: string, value: string): void;
|
|
15
|
-
delete(name: string):
|
|
16
|
-
get(name: string):
|
|
17
|
-
getAll(name: string):
|
|
18
|
-
has(name: string):
|
|
19
|
-
set(name: string, value: string):
|
|
20
|
-
sort():
|
|
17
|
+
delete(name: string): void;
|
|
18
|
+
get(name: string): string;
|
|
19
|
+
getAll(name: string): Array<string>;
|
|
20
|
+
has(name: string): boolean;
|
|
21
|
+
set(name: string, value: string): void;
|
|
22
|
+
sort(): void;
|
|
21
23
|
@@iterator(): Iterator<[string, string]>;
|
|
22
24
|
toString(): string;
|
|
25
|
+
keys(): Iterator<string>;
|
|
26
|
+
values(): Iterator<string>;
|
|
27
|
+
entries(): Iterator<[string, string]>;
|
|
23
28
|
}
|
|
@@ -397,7 +397,7 @@ const AccessibilityInfo = {
|
|
|
397
397
|
addEventListener<K: $Keys<AccessibilityEventDefinitions>>(
|
|
398
398
|
eventName: K,
|
|
399
399
|
// $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423)
|
|
400
|
-
handler: (
|
|
400
|
+
handler: (...AccessibilityEventDefinitions[K]) => void,
|
|
401
401
|
): EventSubscription {
|
|
402
402
|
const deviceEventName = EventNames.get(eventName);
|
|
403
403
|
return deviceEventName == null
|
|
@@ -408,7 +408,7 @@ const AccessibilityInfo = {
|
|
|
408
408
|
addEventListener<K: $Keys<AccessibilityEventDefinitions>>(
|
|
409
409
|
eventName: K,
|
|
410
410
|
// $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423)
|
|
411
|
-
handler: (
|
|
411
|
+
handler: (...AccessibilityEventDefinitions[K]) => void,
|
|
412
412
|
): EventSubscription {
|
|
413
413
|
const deviceEventName = EventNames.get(eventName);
|
|
414
414
|
return deviceEventName == null
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
// NOTE: This file supports backwards compatibility of subpath (deep) imports
|
|
12
|
+
// from 'react-native' with platform-specific extensions. It can be deleted
|
|
13
|
+
// once we remove the "./*" mapping from package.json "exports".
|
|
14
|
+
|
|
15
|
+
import legacySendAccessibilityEvent from './legacySendAccessibilityEvent';
|
|
16
|
+
|
|
17
|
+
export default legacySendAccessibilityEvent;
|
|
@@ -110,6 +110,7 @@ const ActivityIndicator = (
|
|
|
110
110
|
style={StyleSheet.compose(styles.container, style)}>
|
|
111
111
|
{Platform.OS === 'android' ? (
|
|
112
112
|
// $FlowFixMe[prop-missing] Flow doesn't know when this is the android component
|
|
113
|
+
// $FlowFixMe[incompatible-type]
|
|
113
114
|
<PlatformActivityIndicator {...nativeProps} {...androidProps} />
|
|
114
115
|
) : (
|
|
115
116
|
/* $FlowFixMe[incompatible-type] (>=0.106.0 site=react_native_android_fb) This comment
|
|
@@ -17,6 +17,7 @@ export interface ButtonProps
|
|
|
17
17
|
TouchableNativeFeedbackProps & TouchableOpacityProps,
|
|
18
18
|
| 'accessibilityLabel'
|
|
19
19
|
| 'accessibilityState'
|
|
20
|
+
| 'accessibilityValue' // Windows
|
|
20
21
|
| 'hasTVPreferredFocus'
|
|
21
22
|
| 'nextFocusDown'
|
|
22
23
|
| 'nextFocusForward'
|
|
@@ -37,6 +38,8 @@ export interface ButtonProps
|
|
|
37
38
|
* Color of the text (iOS), or background color of the button (Android).
|
|
38
39
|
*/
|
|
39
40
|
color?: ColorValue | undefined;
|
|
41
|
+
|
|
42
|
+
onAccessibilityTap?: () => void; // Windows
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
export class Button extends React.Component<ButtonProps> {}
|
|
@@ -38,7 +38,7 @@ export type ButtonProps = $ReadOnly<{
|
|
|
38
38
|
Handler to be called when the user taps the button. The first function
|
|
39
39
|
argument is an event in form of [GestureResponderEvent](pressevent).
|
|
40
40
|
*/
|
|
41
|
-
onPress
|
|
41
|
+
onPress?: (event?: GestureResponderEvent) => mixed,
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
If `true`, doesn't play system sound on touch.
|
|
@@ -16,6 +16,7 @@ import type {
|
|
|
16
16
|
AccessibilityActionEvent,
|
|
17
17
|
AccessibilityActionInfo,
|
|
18
18
|
AccessibilityState,
|
|
19
|
+
AccessibilityValue, // Windows
|
|
19
20
|
} from './View/ViewAccessibility';
|
|
20
21
|
|
|
21
22
|
import StyleSheet, {type ColorValue} from '../StyleSheet/StyleSheet';
|
|
@@ -42,7 +43,7 @@ export type ButtonProps = $ReadOnly<{
|
|
|
42
43
|
Handler to be called when the user taps the button. The first function
|
|
43
44
|
argument is an event in form of [GestureResponderEvent](pressevent).
|
|
44
45
|
*/
|
|
45
|
-
onPress
|
|
46
|
+
onPress?: (event?: GestureResponderEvent) => mixed,
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
If `true`, doesn't play system sound on touch.
|
|
@@ -154,6 +155,7 @@ export type ButtonProps = $ReadOnly<{
|
|
|
154
155
|
onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,
|
|
155
156
|
onAccessibilityTap?: ?() => void, // Windows
|
|
156
157
|
accessibilityState?: ?AccessibilityState,
|
|
158
|
+
accessibilityValue?: ?AccessibilityValue, // Windows
|
|
157
159
|
|
|
158
160
|
/**
|
|
159
161
|
* alias for accessibilityState
|
|
@@ -169,6 +171,15 @@ export type ButtonProps = $ReadOnly<{
|
|
|
169
171
|
'aria-multiselectable'?: ?boolean, // Windows
|
|
170
172
|
'aria-required'?: ?boolean, // Windows
|
|
171
173
|
|
|
174
|
+
/**
|
|
175
|
+
* alias for accessibilityValue
|
|
176
|
+
* It represents textual description of a component's value, or for range-based components, such as sliders and progress bars.
|
|
177
|
+
*/
|
|
178
|
+
'aria-valuemax'?: ?AccessibilityValue['max'],
|
|
179
|
+
'aria-valuemin'?: ?AccessibilityValue['min'],
|
|
180
|
+
'aria-valuenow'?: ?AccessibilityValue['now'],
|
|
181
|
+
'aria-valuetext'?: ?AccessibilityValue['text'],
|
|
182
|
+
|
|
172
183
|
/**
|
|
173
184
|
* [Android] Controlling if a view fires accessibility events and if it is reported to accessibility services.
|
|
174
185
|
*/
|
|
@@ -308,6 +319,7 @@ const Button: component(
|
|
|
308
319
|
const {
|
|
309
320
|
accessibilityLabel,
|
|
310
321
|
accessibilityState,
|
|
322
|
+
accessibilityValue, // Windows
|
|
311
323
|
'aria-busy': ariaBusy,
|
|
312
324
|
'aria-checked': ariaChecked,
|
|
313
325
|
'aria-disabled': ariaDisabled,
|
|
@@ -317,6 +329,10 @@ const Button: component(
|
|
|
317
329
|
'aria-readonly': ariaReadOnly, // Windows
|
|
318
330
|
'aria-multiselectable': ariaMultiselectable, // Windows
|
|
319
331
|
'aria-required': ariaRequired, // Windows
|
|
332
|
+
'aria-valuemax': ariaValueMax, // Windows
|
|
333
|
+
'aria-valuemin': ariaValueMin, // Windows
|
|
334
|
+
'aria-valuenow': ariaValueNow, // Windows
|
|
335
|
+
'aria-valuetext': ariaValueText, // Windows
|
|
320
336
|
importantForAccessibility,
|
|
321
337
|
color,
|
|
322
338
|
onPress,
|
|
@@ -366,6 +382,15 @@ const Button: component(
|
|
|
366
382
|
? {..._accessibilityState, disabled}
|
|
367
383
|
: _accessibilityState;
|
|
368
384
|
|
|
385
|
+
// [Windows
|
|
386
|
+
let _accessibilityValue = {
|
|
387
|
+
max: ariaValueMax ?? accessibilityValue?.max,
|
|
388
|
+
min: ariaValueMin ?? accessibilityValue?.min,
|
|
389
|
+
now: ariaValueNow ?? accessibilityValue?.now,
|
|
390
|
+
text: ariaValueText ?? accessibilityValue?.text,
|
|
391
|
+
};
|
|
392
|
+
// Windows]
|
|
393
|
+
|
|
369
394
|
if (disabled) {
|
|
370
395
|
buttonStyles.push(styles.buttonDisabled);
|
|
371
396
|
textStyles.push(styles.textDisabled);
|
|
@@ -393,6 +418,7 @@ const Button: component(
|
|
|
393
418
|
accessibilityLanguage={accessibilityLanguage}
|
|
394
419
|
accessibilityRole="button"
|
|
395
420
|
accessibilityState={_accessibilityState}
|
|
421
|
+
accessibilityValue={_accessibilityValue} // Windows
|
|
396
422
|
onAccessibilityTap={onAccessibilityTap} // Windows
|
|
397
423
|
importantForAccessibility={_importantForAccessibility}
|
|
398
424
|
hasTVPreferredFocus={hasTVPreferredFocus}
|