react-native-windows 0.76.3 → 0.77.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +5 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
- package/Libraries/Animated/NativeAnimatedAllowlist.windows.js +122 -0
- package/Libraries/Animated/animations/Animation.js +60 -25
- package/Libraries/Animated/animations/DecayAnimation.js +26 -38
- package/Libraries/Animated/animations/SpringAnimation.js +33 -39
- package/Libraries/Animated/animations/TimingAnimation.js +34 -42
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
- package/Libraries/Animated/createAnimatedComponent.js +60 -33
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
- package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
- package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
- package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
- package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
- package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
- package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
- package/Libraries/Animated/useAnimatedProps.js +41 -35
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
- package/Libraries/Components/Button.js +9 -4
- package/Libraries/Components/Button.windows.js +19 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +2 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
- package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
- package/Libraries/Components/Pressable/Pressable.js +4 -4
- package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
- package/Libraries/Components/ScrollView/ScrollView.js +49 -88
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
- package/Libraries/Components/Switch/Switch.js +8 -6
- package/Libraries/Components/Switch/Switch.windows.js +8 -6
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
- package/Libraries/Components/TextInput/TextInput.js +37 -13
- package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
- package/Libraries/Components/TextInput/TextInputState.js +11 -13
- package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
- package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
- package/Libraries/Components/Touchable/Position.js +7 -2
- package/Libraries/Components/Touchable/Touchable.js +4 -0
- package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
- package/Libraries/Components/View/View.js +4 -4
- package/Libraries/Components/View/View.windows.js +12 -5
- package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
- package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
- package/Libraries/Components/View/ViewNativeComponent.js +6 -98
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +0 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
- package/Libraries/Core/ExceptionsManager.js +50 -29
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -10
- package/Libraries/Core/setUpDeveloperTools.js +1 -5
- package/Libraries/Core/setUpErrorHandling.js +20 -18
- package/Libraries/Core/setUpReactDevTools.js +107 -8
- package/Libraries/Core/setUpSegmentFetcher.js +1 -0
- package/Libraries/Core/setUpTimers.js +21 -18
- package/Libraries/Debugging/DebuggingOverlay.js +4 -5
- package/Libraries/Image/AssetSourceResolver.js +12 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
- package/Libraries/Image/Image.android.js +1 -5
- package/Libraries/Image/Image.d.ts +20 -29
- package/Libraries/Image/Image.ios.js +0 -2
- package/Libraries/Image/Image.windows.js +5 -1
- package/Libraries/Image/ImageBackground.js +2 -5
- package/Libraries/Image/ImageProps.js +7 -6
- package/Libraries/Image/ImageResizeMode.d.ts +8 -1
- package/Libraries/Image/ImageResizeMode.js +4 -1
- package/Libraries/Image/ImageSource.d.ts +0 -2
- package/Libraries/Image/ImageSource.js +0 -2
- package/Libraries/Image/ImageTypes.flow.js +11 -9
- package/Libraries/Image/ImageUtils.js +6 -3
- package/Libraries/Image/ImageViewNativeComponent.js +5 -3
- package/Libraries/Inspector/Inspector.js +1 -0
- package/Libraries/Inspector/NetworkOverlay.js +4 -0
- package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/InteractionManagerStub.js +176 -0
- package/Libraries/Interaction/TouchHistoryMath.js +22 -19
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +1 -2
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +7 -7
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +3 -3
- package/Libraries/LogBox/LogBox.js +18 -5
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
- package/Libraries/Modal/Modal.d.ts +12 -0
- package/Libraries/Modal/Modal.js +31 -4
- package/Libraries/Modal/Modal.windows.js +18 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
- package/Libraries/Network/XHRInterceptor.js +63 -14
- package/Libraries/Network/XMLHttpRequest.js +26 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
- package/Libraries/Pressability/HoverState.js +2 -0
- package/Libraries/Pressability/Pressability.js +2 -3
- package/Libraries/Pressability/Pressability.windows.js +2 -3
- package/Libraries/Pressability/usePressability.js +4 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
- package/Libraries/ReactNative/RendererImplementation.js +18 -17
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
- package/Libraries/ReactNative/renderApplication.js +9 -8
- package/Libraries/ReactNative/requireNativeComponent.js +5 -2
- package/Libraries/Renderer/shims/ReactFabric.js +3 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +3 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/StyleSheet/StyleSheet.js +7 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
- package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
- package/Libraries/StyleSheet/processTransform.js +3 -34
- package/Libraries/Text/Text.js +248 -249
- package/Libraries/Text/Text.windows.js +298 -292
- package/Libraries/Text/TextNativeComponent.js +0 -1
- package/Libraries/Text/TextProps.windows.js +2 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
- package/Libraries/Types/CoreEventTypes.d.ts +3 -10
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Types/CoreEventTypes.windows.js +4 -6
- package/Libraries/Utilities/Appearance.js +3 -1
- package/Libraries/Utilities/BackHandler.android.js +6 -18
- package/Libraries/Utilities/BackHandler.d.ts +0 -4
- package/Libraries/Utilities/BackHandler.ios.js +0 -7
- package/Libraries/Utilities/BackHandler.windows.js +6 -18
- package/Libraries/Utilities/HMRClient.js +3 -4
- package/Libraries/Utilities/Platform.flow.js +2 -2
- package/Libraries/Utilities/Platform.flow.windows.js +3 -2
- package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
- package/Libraries/Utilities/codegenNativeComponent.js +1 -1
- package/Libraries/Utilities/useMergeRefs.js +26 -7
- package/Libraries/WebSocket/WebSocketEvent.js +4 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
- package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
- package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
- package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
- package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
- package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
- package/PropertySheets/Bundle.Common.targets +1 -1
- package/PropertySheets/Bundle.props +3 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/PropertySheets/OutputMSBuildProperties.targets +3 -1
- package/ReactCommon/ReactCommon.vcxproj +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
- package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
- package/Shared/InspectorPackagerConnection.cpp +3 -6
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/InstanceManager.h +1 -1
- package/Shared/OInstance.h +1 -1
- package/Shared/Shared.vcxitems +17 -2
- package/Shared/Shared.vcxitems.filters +3 -1
- package/Shared/TurboModuleManager.cpp +29 -4
- package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
- package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
- package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
- package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
- package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
- package/codegen/NativePerformanceSpec.g.h +127 -3
- package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
- package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/Props.cpp +1 -0
- package/codegen/react/components/rnwcore/Props.h +1 -0
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
- package/codegen/react/components/rnwcore/States.h +0 -12
- package/codegen/rnwcoreJSI-generated.cpp +219 -186
- package/codegen/rnwcoreJSI.h +942 -511
- package/index.js +10 -3
- package/index.windows.js +10 -3
- package/jest/setup.js +36 -1
- package/just-task.js +15 -0
- package/package.json +22 -22
- package/src/private/animated/NativeAnimatedHelper.js +18 -16
- package/src/private/animated/useAnimatedPropsMemo.js +348 -0
- package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
- package/src/private/components/HScrollViewNativeComponents.js +1 -27
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
- package/src/private/components/VScrollViewNativeComponents.js +2 -25
- package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
- package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
- package/src/private/devmenu/DevMenu.d.ts +20 -0
- package/src/private/devmenu/DevMenu.js +31 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
- package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
- package/src/private/setup/setUpDOM.js +14 -6
- package/src/private/setup/setUpMutationObserver.js +5 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
- package/src/private/specs/modules/NativeAppearance.js +4 -10
- package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
- package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
- package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
- package/src/private/webapis/performance/EventTiming.js +13 -8
- package/src/private/webapis/performance/Performance.js +66 -73
- package/src/private/webapis/performance/PerformanceEntry.js +2 -5
- package/src/private/webapis/performance/PerformanceObserver.js +65 -164
- package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +11 -7
- package/src/private/webapis/performance/Utilities.js +18 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
- package/templates/cpp-lib/template.config.js +13 -7
- package/templates/templateUtils.js +10 -0
- package/types/index.d.ts +1 -1
- package/types/public/ReactNativeTypes.d.ts +4 -8
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
- package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
- package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
- package/codegen/NativePerformanceObserverSpec.g.h +0 -131
- package/src/private/components/useSyncOnScroll.js +0 -48
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
- package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
- package/types/experimental.d.ts +0 -59
- /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
#ifndef NODEAPIJSIRUNTIME_H_
|
|
6
|
+
#define NODEAPIJSIRUNTIME_H_
|
|
7
|
+
|
|
8
|
+
#include <jsi/jsi.h>
|
|
9
|
+
#include <functional>
|
|
10
|
+
#include <memory>
|
|
11
|
+
#include "ApiLoaders/JSRuntimeApi.h"
|
|
12
|
+
|
|
13
|
+
namespace Microsoft::NodeApiJsi {
|
|
14
|
+
|
|
15
|
+
std::unique_ptr<facebook::jsi::Runtime>
|
|
16
|
+
makeNodeApiJsiRuntime(napi_env env, JSRuntimeApi *jsrApi, std::function<void()> onDelete) noexcept;
|
|
17
|
+
|
|
18
|
+
struct NodeApiEnvScope {
|
|
19
|
+
NodeApiEnvScope(napi_env env) : env_(env) {
|
|
20
|
+
JSRuntimeApi::current()->jsr_open_napi_env_scope(env, &scope_);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
NodeApiEnvScope(const NodeApiEnvScope &) = delete;
|
|
24
|
+
NodeApiEnvScope &operator=(const NodeApiEnvScope &) = delete;
|
|
25
|
+
|
|
26
|
+
~NodeApiEnvScope() {
|
|
27
|
+
JSRuntimeApi::current()->jsr_close_napi_env_scope(env_, scope_);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private:
|
|
31
|
+
napi_env env_{};
|
|
32
|
+
jsr_napi_env_scope scope_{};
|
|
33
|
+
};
|
|
34
|
+
} // namespace Microsoft::NodeApiJsi
|
|
35
|
+
|
|
36
|
+
#endif // !NODEAPIJSIRUNTIME_H_
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <functional>
|
|
11
|
+
#include <memory>
|
|
12
|
+
|
|
13
|
+
#include "SchedulerPriority.h"
|
|
14
|
+
|
|
15
|
+
namespace facebook::jsi {
|
|
16
|
+
class Runtime;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
using CallFunc = std::function<void(jsi::Runtime&)>;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* An interface for a generic native-to-JS call invoker. See BridgeJSCallInvoker
|
|
25
|
+
* for an implementation.
|
|
26
|
+
*/
|
|
27
|
+
class CallInvoker {
|
|
28
|
+
public:
|
|
29
|
+
virtual void invokeAsync(CallFunc&& func) noexcept = 0;
|
|
30
|
+
virtual void invokeAsync(
|
|
31
|
+
SchedulerPriority /*priority*/,
|
|
32
|
+
CallFunc&& func) noexcept {
|
|
33
|
+
// When call with priority is not implemented, fall back to a regular async
|
|
34
|
+
// execution
|
|
35
|
+
invokeAsync(std::move(func));
|
|
36
|
+
}
|
|
37
|
+
virtual void invokeSync(CallFunc&& func) = 0;
|
|
38
|
+
|
|
39
|
+
// Backward compatibility only, prefer the CallFunc methods instead
|
|
40
|
+
virtual void invokeAsync(std::function<void()>&& func) noexcept {
|
|
41
|
+
invokeAsync([func](jsi::Runtime&) { func(); });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
virtual void invokeSync(std::function<void()>&& func) {
|
|
45
|
+
invokeSync([func](jsi::Runtime&) { func(); });
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
virtual ~CallInvoker() {}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
using NativeMethodCallFunc = std::function<void()>;
|
|
52
|
+
|
|
53
|
+
class NativeMethodCallInvoker {
|
|
54
|
+
public:
|
|
55
|
+
virtual void invokeAsync(
|
|
56
|
+
const std::string& methodName,
|
|
57
|
+
NativeMethodCallFunc&& func) noexcept = 0;
|
|
58
|
+
virtual void invokeSync(
|
|
59
|
+
const std::string& methodName,
|
|
60
|
+
NativeMethodCallFunc&& func) = 0;
|
|
61
|
+
virtual ~NativeMethodCallInvoker() {}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <chrono>
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
enum class SchedulerPriority : int {
|
|
15
|
+
ImmediatePriority = 1,
|
|
16
|
+
UserBlockingPriority = 2,
|
|
17
|
+
NormalPriority = 3,
|
|
18
|
+
LowPriority = 4,
|
|
19
|
+
IdlePriority = 5,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
} // namespace facebook::react
|
|
@@ -1,63 +1,63 @@
|
|
|
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
|
-
|
|
8
|
-
#include "TurboModule.h"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
namespace facebook::react {
|
|
12
|
-
|
|
13
|
-
TurboModuleMethodValueKind getTurboModuleMethodValueKind(
|
|
14
|
-
jsi::Runtime& rt,
|
|
15
|
-
const jsi::Value* value) {
|
|
16
|
-
if (!value || value->isUndefined() || value->isNull()) {
|
|
17
|
-
return VoidKind;
|
|
18
|
-
} else if (value->isBool()) {
|
|
19
|
-
return BooleanKind;
|
|
20
|
-
} else if (value->isNumber()) {
|
|
21
|
-
return NumberKind;
|
|
22
|
-
} else if (value->isString()) {
|
|
23
|
-
return StringKind;
|
|
24
|
-
} else if (value->isObject()) {
|
|
25
|
-
auto object = value->asObject(rt);
|
|
26
|
-
if (object.isArray(rt)) {
|
|
27
|
-
return ArrayKind;
|
|
28
|
-
} else if (object.isFunction(rt)) {
|
|
29
|
-
return FunctionKind;
|
|
30
|
-
}
|
|
31
|
-
return ObjectKind;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return VoidKind;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
TurboModule::TurboModule(
|
|
38
|
-
std::string name,
|
|
39
|
-
std::shared_ptr<CallInvoker> jsInvoker)
|
|
40
|
-
: name_(std::move(name)), jsInvoker_(std::move(jsInvoker)) {}
|
|
41
|
-
|
|
42
|
-
void TurboModule::emitDeviceEvent(
|
|
43
|
-
const std::string& eventName,
|
|
44
|
-
ArgFactory argFactory) {
|
|
45
|
-
jsInvoker_->invokeAsync([eventName, argFactory](jsi::Runtime& rt) {
|
|
46
|
-
jsi::Value emitter = rt.global().getProperty(rt, "__rctDeviceEventEmitter");
|
|
47
|
-
if (!emitter.isUndefined()) {
|
|
48
|
-
jsi::Object emitterObject = emitter.asObject(rt);
|
|
49
|
-
// TODO: consider caching these
|
|
50
|
-
jsi::Function emitFunction =
|
|
51
|
-
emitterObject.getPropertyAsFunction(rt, "emit");
|
|
52
|
-
std::vector<jsi::Value> args;
|
|
53
|
-
args.emplace_back(jsi::String::createFromAscii(rt, eventName.c_str()));
|
|
54
|
-
if (argFactory) {
|
|
55
|
-
argFactory(rt, args);
|
|
56
|
-
}
|
|
57
|
-
emitFunction.callWithThis(
|
|
58
|
-
rt, emitterObject, (const jsi::Value*)args.data(), args.size());
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
} // namespace facebook::react
|
|
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
|
+
|
|
8
|
+
#include "TurboModule.h"
|
|
9
|
+
#include <react/debug/react_native_assert.h>
|
|
10
|
+
|
|
11
|
+
namespace facebook::react {
|
|
12
|
+
|
|
13
|
+
TurboModuleMethodValueKind getTurboModuleMethodValueKind(
|
|
14
|
+
jsi::Runtime& rt,
|
|
15
|
+
const jsi::Value* value) {
|
|
16
|
+
if (!value || value->isUndefined() || value->isNull()) {
|
|
17
|
+
return VoidKind;
|
|
18
|
+
} else if (value->isBool()) {
|
|
19
|
+
return BooleanKind;
|
|
20
|
+
} else if (value->isNumber()) {
|
|
21
|
+
return NumberKind;
|
|
22
|
+
} else if (value->isString()) {
|
|
23
|
+
return StringKind;
|
|
24
|
+
} else if (value->isObject()) {
|
|
25
|
+
auto object = value->asObject(rt);
|
|
26
|
+
if (object.isArray(rt)) {
|
|
27
|
+
return ArrayKind;
|
|
28
|
+
} else if (object.isFunction(rt)) {
|
|
29
|
+
return FunctionKind;
|
|
30
|
+
}
|
|
31
|
+
return ObjectKind;
|
|
32
|
+
}
|
|
33
|
+
react_native_assert(false && "Unsupported jsi::Value kind");
|
|
34
|
+
return VoidKind;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
TurboModule::TurboModule(
|
|
38
|
+
std::string name,
|
|
39
|
+
std::shared_ptr<CallInvoker> jsInvoker)
|
|
40
|
+
: name_(std::move(name)), jsInvoker_(std::move(jsInvoker)) {}
|
|
41
|
+
|
|
42
|
+
void TurboModule::emitDeviceEvent(
|
|
43
|
+
const std::string& eventName,
|
|
44
|
+
ArgFactory argFactory) {
|
|
45
|
+
jsInvoker_->invokeAsync([eventName, argFactory](jsi::Runtime& rt) {
|
|
46
|
+
jsi::Value emitter = rt.global().getProperty(rt, "__rctDeviceEventEmitter");
|
|
47
|
+
if (!emitter.isUndefined()) {
|
|
48
|
+
jsi::Object emitterObject = emitter.asObject(rt);
|
|
49
|
+
// TODO: consider caching these
|
|
50
|
+
jsi::Function emitFunction =
|
|
51
|
+
emitterObject.getPropertyAsFunction(rt, "emit");
|
|
52
|
+
std::vector<jsi::Value> args;
|
|
53
|
+
args.emplace_back(jsi::String::createFromAscii(rt, eventName.c_str()));
|
|
54
|
+
if (argFactory) {
|
|
55
|
+
argFactory(rt, args);
|
|
56
|
+
}
|
|
57
|
+
emitFunction.callWithThis(
|
|
58
|
+
rt, emitterObject, (const jsi::Value*)args.data(), args.size());
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,165 @@
|
|
|
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
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <memory>
|
|
11
|
+
#include <string>
|
|
12
|
+
#include <unordered_map>
|
|
13
|
+
|
|
14
|
+
#include <jsi/jsi.h>
|
|
15
|
+
|
|
16
|
+
#include <ReactCommon/CallInvoker.h>
|
|
17
|
+
#include <react/bridging/EventEmitter.h>
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* For now, support the same set of return types as existing impl.
|
|
23
|
+
* This can be improved to support richer typed objects.
|
|
24
|
+
*/
|
|
25
|
+
enum TurboModuleMethodValueKind {
|
|
26
|
+
VoidKind,
|
|
27
|
+
BooleanKind,
|
|
28
|
+
NumberKind,
|
|
29
|
+
StringKind,
|
|
30
|
+
ObjectKind,
|
|
31
|
+
ArrayKind,
|
|
32
|
+
FunctionKind,
|
|
33
|
+
PromiseKind,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Determines TurboModuleMethodValueKind based on the jsi::Value type.
|
|
38
|
+
*/
|
|
39
|
+
TurboModuleMethodValueKind getTurboModuleMethodValueKind(
|
|
40
|
+
jsi::Runtime& rt,
|
|
41
|
+
const jsi::Value* value);
|
|
42
|
+
|
|
43
|
+
class TurboCxxModule;
|
|
44
|
+
class TurboModuleBinding;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Base HostObject class for every module to be exposed to JS
|
|
48
|
+
*/
|
|
49
|
+
class JSI_EXPORT TurboModule : public jsi::HostObject {
|
|
50
|
+
public:
|
|
51
|
+
TurboModule(std::string name, std::shared_ptr<CallInvoker> jsInvoker);
|
|
52
|
+
|
|
53
|
+
// DO NOT OVERRIDE - it will become final in a future release.
|
|
54
|
+
// This method provides automatic caching of properties on the TurboModule's
|
|
55
|
+
// JS representation. To customize lookup of properties, override `create`.
|
|
56
|
+
// Note: keep this method declared inline to avoid conflicts
|
|
57
|
+
// between RTTI and non-RTTI compilation units
|
|
58
|
+
jsi::Value get(jsi::Runtime& runtime, const jsi::PropNameID& propName)
|
|
59
|
+
override {
|
|
60
|
+
auto prop = create(runtime, propName);
|
|
61
|
+
// If we have a JS wrapper, cache the result of this lookup
|
|
62
|
+
// We don't cache misses, to allow for methodMap_ to dynamically be
|
|
63
|
+
// extended
|
|
64
|
+
// [Windows] Reenable once https://github.com/microsoft/react-native-windows/issues/14128 is fixed
|
|
65
|
+
#ifndef WINAPI_FAMILY
|
|
66
|
+
if (jsRepresentation_ && !prop.isUndefined()) {
|
|
67
|
+
jsRepresentation_->lock(runtime).asObject(runtime).setProperty(
|
|
68
|
+
runtime, propName, prop);
|
|
69
|
+
}
|
|
70
|
+
#endif
|
|
71
|
+
return prop;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
std::vector<jsi::PropNameID> getPropertyNames(
|
|
75
|
+
jsi::Runtime& runtime) override {
|
|
76
|
+
std::vector<jsi::PropNameID> result;
|
|
77
|
+
result.reserve(methodMap_.size());
|
|
78
|
+
for (auto it = methodMap_.cbegin(); it != methodMap_.cend(); ++it) {
|
|
79
|
+
result.push_back(jsi::PropNameID::forUtf8(runtime, it->first));
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
protected:
|
|
85
|
+
const std::string name_;
|
|
86
|
+
std::shared_ptr<CallInvoker> jsInvoker_;
|
|
87
|
+
|
|
88
|
+
struct MethodMetadata {
|
|
89
|
+
size_t argCount;
|
|
90
|
+
jsi::Value (*invoker)(
|
|
91
|
+
jsi::Runtime& rt,
|
|
92
|
+
TurboModule& turboModule,
|
|
93
|
+
const jsi::Value* args,
|
|
94
|
+
size_t count);
|
|
95
|
+
};
|
|
96
|
+
std::unordered_map<std::string, MethodMetadata> methodMap_;
|
|
97
|
+
std::unordered_map<std::string, std::shared_ptr<IAsyncEventEmitter>>
|
|
98
|
+
eventEmitterMap_;
|
|
99
|
+
|
|
100
|
+
using ArgFactory =
|
|
101
|
+
std::function<void(jsi::Runtime& runtime, std::vector<jsi::Value>& args)>;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Calls RCTDeviceEventEmitter.emit to JavaScript, with given event name and
|
|
105
|
+
* an optional list of arguments.
|
|
106
|
+
* If present, argFactory is a callback used to construct extra arguments,
|
|
107
|
+
* e.g.
|
|
108
|
+
*
|
|
109
|
+
* emitDeviceEvent(rt, "myCustomEvent",
|
|
110
|
+
* [](jsi::Runtime& rt, std::vector<jsi::Value>& args) {
|
|
111
|
+
* args.emplace_back(jsi::Value(true));
|
|
112
|
+
* args.emplace_back(jsi::Value(42));
|
|
113
|
+
* });
|
|
114
|
+
*/
|
|
115
|
+
void emitDeviceEvent(
|
|
116
|
+
const std::string& eventName,
|
|
117
|
+
ArgFactory argFactory = nullptr);
|
|
118
|
+
|
|
119
|
+
// Backwards compatibility version
|
|
120
|
+
void emitDeviceEvent(
|
|
121
|
+
jsi::Runtime& /*runtime*/,
|
|
122
|
+
|
|
123
|
+
const std::string& eventName,
|
|
124
|
+
ArgFactory argFactory = nullptr) {
|
|
125
|
+
emitDeviceEvent(eventName, std::move(argFactory));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
virtual jsi::Value create(
|
|
129
|
+
jsi::Runtime& runtime,
|
|
130
|
+
const jsi::PropNameID& propName) {
|
|
131
|
+
std::string propNameUtf8 = propName.utf8(runtime);
|
|
132
|
+
if (auto methodIter = methodMap_.find(propNameUtf8);
|
|
133
|
+
methodIter != methodMap_.end()) {
|
|
134
|
+
const MethodMetadata& meta = methodIter->second;
|
|
135
|
+
return jsi::Function::createFromHostFunction(
|
|
136
|
+
runtime,
|
|
137
|
+
propName,
|
|
138
|
+
static_cast<unsigned int>(meta.argCount),
|
|
139
|
+
[this, meta](
|
|
140
|
+
jsi::Runtime& rt,
|
|
141
|
+
[[maybe_unused]] const jsi::Value& thisVal,
|
|
142
|
+
const jsi::Value* args,
|
|
143
|
+
size_t count) { return meta.invoker(rt, *this, args, count); });
|
|
144
|
+
} else if (auto eventEmitterIter = eventEmitterMap_.find(propNameUtf8);
|
|
145
|
+
eventEmitterIter != eventEmitterMap_.end()) {
|
|
146
|
+
return eventEmitterIter->second->get(runtime, jsInvoker_);
|
|
147
|
+
} else {
|
|
148
|
+
// Neither Method nor EventEmitter were found, let JS decide what to do
|
|
149
|
+
return jsi::Value::undefined();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private:
|
|
154
|
+
friend class TurboModuleBinding;
|
|
155
|
+
std::unique_ptr<jsi::WeakObject> jsRepresentation_;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* An app/platform-specific provider function to get an instance of a module
|
|
160
|
+
* given a name.
|
|
161
|
+
*/
|
|
162
|
+
using TurboModuleProviderFunctionType =
|
|
163
|
+
std::function<std::shared_ptr<TurboModule>(const std::string& name)>;
|
|
164
|
+
|
|
165
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,105 @@
|
|
|
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
|
+
|
|
8
|
+
#include "TurboModuleUtils.h"
|
|
9
|
+
|
|
10
|
+
namespace facebook::react {
|
|
11
|
+
|
|
12
|
+
static jsi::Value deepCopyJSIValue(jsi::Runtime& rt, const jsi::Value& value) {
|
|
13
|
+
if (value.isNull()) {
|
|
14
|
+
return jsi::Value::null();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (value.isBool()) {
|
|
18
|
+
return jsi::Value(value.getBool());
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (value.isNumber()) {
|
|
22
|
+
return jsi::Value(value.getNumber());
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (value.isString()) {
|
|
26
|
+
return value.getString(rt);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (value.isObject()) {
|
|
30
|
+
jsi::Object o = value.getObject(rt);
|
|
31
|
+
if (o.isArray(rt)) {
|
|
32
|
+
return deepCopyJSIArray(rt, o.getArray(rt));
|
|
33
|
+
}
|
|
34
|
+
if (o.isFunction(rt)) {
|
|
35
|
+
return o.getFunction(rt);
|
|
36
|
+
}
|
|
37
|
+
return deepCopyJSIObject(rt, o);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return jsi::Value::undefined();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
jsi::Object deepCopyJSIObject(jsi::Runtime& rt, const jsi::Object& obj) {
|
|
44
|
+
jsi::Object copy(rt);
|
|
45
|
+
jsi::Array propertyNames = obj.getPropertyNames(rt);
|
|
46
|
+
size_t size = propertyNames.size(rt);
|
|
47
|
+
for (size_t i = 0; i < size; i++) {
|
|
48
|
+
jsi::String name = propertyNames.getValueAtIndex(rt, i).getString(rt);
|
|
49
|
+
jsi::Value value = obj.getProperty(rt, name);
|
|
50
|
+
copy.setProperty(rt, name, deepCopyJSIValue(rt, value));
|
|
51
|
+
}
|
|
52
|
+
return copy;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
jsi::Array deepCopyJSIArray(jsi::Runtime& rt, const jsi::Array& arr) {
|
|
56
|
+
size_t size = arr.size(rt);
|
|
57
|
+
jsi::Array copy(rt, size);
|
|
58
|
+
for (size_t i = 0; i < size; i++) {
|
|
59
|
+
copy.setValueAtIndex(
|
|
60
|
+
rt, i, deepCopyJSIValue(rt, arr.getValueAtIndex(rt, i)));
|
|
61
|
+
}
|
|
62
|
+
return copy;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
Promise::Promise(jsi::Runtime& rt, jsi::Function resolve, jsi::Function reject)
|
|
66
|
+
: LongLivedObject(rt),
|
|
67
|
+
resolve_(std::move(resolve)),
|
|
68
|
+
reject_(std::move(reject)) {}
|
|
69
|
+
|
|
70
|
+
void Promise::resolve(const jsi::Value& result) {
|
|
71
|
+
resolve_.call(runtime_, result);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
void Promise::reject(const std::string& message) {
|
|
75
|
+
jsi::Object error(runtime_);
|
|
76
|
+
error.setProperty(
|
|
77
|
+
runtime_, "message", jsi::String::createFromUtf8(runtime_, message));
|
|
78
|
+
reject_.call(runtime_, error);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
jsi::Value createPromiseAsJSIValue(
|
|
82
|
+
jsi::Runtime& rt,
|
|
83
|
+
PromiseSetupFunctionType&& func) {
|
|
84
|
+
jsi::Function JSPromise = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
85
|
+
jsi::Function fn = jsi::Function::createFromHostFunction(
|
|
86
|
+
rt,
|
|
87
|
+
jsi::PropNameID::forAscii(rt, "fn"),
|
|
88
|
+
2,
|
|
89
|
+
[func = std::move(func)](
|
|
90
|
+
jsi::Runtime& rt2,
|
|
91
|
+
const jsi::Value& thisVal,
|
|
92
|
+
const jsi::Value* args,
|
|
93
|
+
size_t count) {
|
|
94
|
+
jsi::Function resolve = args[0].getObject(rt2).getFunction(rt2);
|
|
95
|
+
jsi::Function reject = args[1].getObject(rt2).getFunction(rt2);
|
|
96
|
+
auto wrapper = std::make_shared<Promise>(
|
|
97
|
+
rt2, std::move(resolve), std::move(reject));
|
|
98
|
+
func(rt2, wrapper);
|
|
99
|
+
return jsi::Value::undefined();
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
return JSPromise.callAsConstructor(rt, fn);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
} // namespace facebook::react
|
|
@@ -1,58 +1,57 @@
|
|
|
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
|
-
|
|
8
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <cassert>
|
|
11
|
-
#include <string>
|
|
12
|
-
|
|
13
|
-
#include <jsi/jsi.h>
|
|
14
|
-
#include <
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
jsi::
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
void
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
jsi::Function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
jsi::
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
} // namespace facebook::react
|
|
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
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <cassert>
|
|
11
|
+
#include <string>
|
|
12
|
+
|
|
13
|
+
#include <jsi/jsi.h>
|
|
14
|
+
#include <react/bridging/CallbackWrapper.h>
|
|
15
|
+
#include <react/bridging/LongLivedObject.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
jsi::Object deepCopyJSIObject(jsi::Runtime& rt, const jsi::Object& obj);
|
|
20
|
+
jsi::Array deepCopyJSIArray(jsi::Runtime& rt, const jsi::Array& arr);
|
|
21
|
+
|
|
22
|
+
struct Promise : public LongLivedObject {
|
|
23
|
+
Promise(jsi::Runtime& rt, jsi::Function resolve, jsi::Function reject);
|
|
24
|
+
|
|
25
|
+
void resolve(const jsi::Value& result);
|
|
26
|
+
void reject(const std::string& error);
|
|
27
|
+
|
|
28
|
+
jsi::Function resolve_;
|
|
29
|
+
jsi::Function reject_;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
using PromiseSetupFunctionType =
|
|
33
|
+
std::function<void(jsi::Runtime& rt, std::shared_ptr<Promise>)>;
|
|
34
|
+
jsi::Value createPromiseAsJSIValue(
|
|
35
|
+
jsi::Runtime& rt,
|
|
36
|
+
PromiseSetupFunctionType&& func);
|
|
37
|
+
|
|
38
|
+
// Deprecated. Use AsyncCallback instead.
|
|
39
|
+
class RAIICallbackWrapperDestroyer {
|
|
40
|
+
public:
|
|
41
|
+
RAIICallbackWrapperDestroyer(std::weak_ptr<CallbackWrapper> callbackWrapper)
|
|
42
|
+
: callbackWrapper_(callbackWrapper) {}
|
|
43
|
+
|
|
44
|
+
~RAIICallbackWrapperDestroyer() {
|
|
45
|
+
auto strongWrapper = callbackWrapper_.lock();
|
|
46
|
+
if (!strongWrapper) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
strongWrapper->destroy();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private:
|
|
54
|
+
std::weak_ptr<CallbackWrapper> callbackWrapper_;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <react/bridging/Base.h>
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include <string_view>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
template <>
|
|
18
|
+
struct Bridging<std::string> {
|
|
19
|
+
static std::string fromJs(jsi::Runtime& rt, const jsi::String& value) {
|
|
20
|
+
return value.utf8(rt);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static jsi::String toJs(jsi::Runtime& rt, const std::string& value) {
|
|
24
|
+
return jsi::String::createFromUtf8(rt, value);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
template <>
|
|
29
|
+
struct Bridging<std::string_view> {
|
|
30
|
+
static jsi::String toJs(jsi::Runtime& rt, std::string_view value) {
|
|
31
|
+
return jsi::String::createFromUtf8(
|
|
32
|
+
rt, reinterpret_cast<const uint8_t*>(value.data()), value.length());
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
template <>
|
|
37
|
+
struct Bridging<const char*> : Bridging<std::string_view> {};
|
|
38
|
+
|
|
39
|
+
template <size_t N>
|
|
40
|
+
struct Bridging<char[N]> : Bridging<std::string_view> {};
|
|
41
|
+
|
|
42
|
+
} // namespace facebook::react
|