react-native-windows 0.73.11 → 0.74.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 -7
- package/Chakra/ChakraUtils.cpp +5 -10
- package/Chakra/ChakraUtils.h +2 -2
- package/Common/packages.lock.json +3 -3
- package/Directory.Build.props +5 -5
- package/Folly/Folly.vcxproj +2 -2
- package/Folly/Folly.vcxproj.filters +7 -0
- package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +22 -1
- package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +4 -1
- package/Folly/cgmanifest.json +1 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +6 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +6 -0
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +4 -45
- package/Libraries/Alert/Alert.windows.js +2 -3
- package/Libraries/Alert/NativeAlertManager.js +4 -26
- package/Libraries/Animated/Animated.js +2 -2
- package/Libraries/Animated/AnimatedPlatformConfig.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +14 -11
- package/Libraries/Animated/NativeAnimatedModule.js +4 -68
- package/Libraries/Animated/NativeAnimatedTurboModule.js +4 -69
- package/Libraries/Animated/animations/Animation.js +6 -22
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -16
- package/Libraries/Animated/components/AnimatedScrollView.js +36 -31
- package/Libraries/Animated/components/AnimatedSectionList.js +1 -20
- package/Libraries/Animated/createAnimatedComponent.js +45 -40
- package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +1 -1
- package/Libraries/Animated/useAnimatedProps.js +21 -1
- package/Libraries/AppState/NativeAppState.js +4 -24
- package/Libraries/AppTheme/NativeAppTheme.js +4 -25
- package/Libraries/BatchedBridge/NativeModules.js +1 -1
- package/Libraries/Blob/Blob.js +1 -4
- package/Libraries/Blob/BlobManager.js +6 -8
- package/Libraries/Blob/File.js +1 -1
- package/Libraries/Blob/NativeBlobModule.js +4 -50
- package/Libraries/Blob/NativeFileReaderModule.js +4 -13
- package/Libraries/BugReporting/NativeBugReporting.js +4 -12
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +3 -2
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
- package/Libraries/Components/Button.js +103 -107
- package/Libraries/Components/Button.windows.js +199 -206
- package/Libraries/Components/Clipboard/NativeClipboard.js +3 -11
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +3 -114
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -5
- package/Libraries/Components/Keyboard/KeyboardExt.d.ts +8 -8
- package/Libraries/Components/Keyboard/KeyboardExt.js +27 -27
- package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
- package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +17 -17
- package/Libraries/Components/Keyboard/KeyboardExtProps.js +7 -7
- package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +3 -10
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.android.js +69 -0
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +24 -0
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +33 -0
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +13 -0
- package/Libraries/Components/Pressable/Pressable.js +1 -1
- package/Libraries/Components/Pressable/Pressable.windows.js +1 -2
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
- package/Libraries/Components/ScrollView/ScrollView.js +12 -38
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
- package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
- package/Libraries/Components/Switch/Switch.js +0 -2
- package/Libraries/Components/Switch/Switch.windows.js +0 -2
- package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
- package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
- package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
- package/Libraries/Components/TextInput/TextInput.js +65 -32
- package/Libraries/Components/TextInput/TextInput.windows.js +87 -38
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +773 -9
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +2 -3
- package/Libraries/Components/Touchable/Touchable.windows.js +2 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +4 -4
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +5 -2
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
- package/Libraries/Components/View/View.js +0 -11
- package/Libraries/Components/View/View.windows.js +19 -18
- package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
- package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
- package/Libraries/Components/View/ViewPropTypes.js +36 -36
- package/Libraries/Components/View/ViewPropTypes.windows.js +36 -36
- package/Libraries/Core/InitializeCore.js +1 -1
- package/Libraries/Core/NativeExceptionsManager.js +3 -93
- package/Libraries/Core/ReactNativeVersion.js +12 -6
- package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
- package/Libraries/Core/Timers/NativeTiming.js +3 -16
- package/Libraries/Core/registerCallableModule.js +42 -0
- package/Libraries/Core/setUpPerformance.js +2 -2
- package/Libraries/Core/setUpPerformanceObserver.js +3 -1
- package/Libraries/Debugging/DebuggingOverlay.js +111 -0
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
- package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
- package/Libraries/Image/AssetSourceResolver.js +5 -5
- package/Libraries/Image/AssetUtils.js +4 -5
- package/Libraries/Image/Image.android.js +146 -174
- package/Libraries/Image/Image.d.ts +1 -1
- package/Libraries/Image/Image.ios.js +53 -79
- package/Libraries/Image/Image.windows.js +53 -79
- package/Libraries/Image/ImageBackground.js +2 -2
- package/Libraries/Image/ImageInjection.js +76 -18
- package/Libraries/Image/ImageTypes.flow.js +71 -0
- package/Libraries/Image/ImageUtils.js +1 -1
- package/Libraries/Image/ImageViewNativeComponent.js +18 -0
- package/Libraries/Image/NativeImageEditor.js +3 -42
- package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
- package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
- package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
- package/Libraries/Image/NativeImageStoreIOS.js +3 -23
- package/Libraries/Image/resolveAssetSource.js +59 -26
- package/Libraries/Image/resolveAssetSource.windows.js +148 -0
- package/Libraries/Inspector/ElementProperties.js +26 -52
- package/Libraries/Inspector/Inspector.js +122 -186
- package/Libraries/Inspector/InspectorOverlay.js +21 -33
- package/Libraries/Inspector/InspectorPanel.js +3 -17
- package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
- package/Libraries/Interaction/FrameRateLogger.js +8 -18
- package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
- package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
- package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
- package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
- package/Libraries/Linking/NativeIntentAndroid.js +3 -20
- package/Libraries/Linking/NativeLinkingManager.js +3 -17
- package/Libraries/Lists/FillRateHelper.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +2 -2
- package/Libraries/Lists/FlatList.js +6 -1
- package/Libraries/Lists/FlatList.windows.js +717 -0
- package/Libraries/Lists/SectionList.d.ts +6 -1
- package/Libraries/Lists/ViewabilityHelper.js +1 -1
- package/Libraries/Lists/VirtualizeUtils.js +1 -1
- package/Libraries/Lists/VirtualizedList.js +1 -1
- package/Libraries/Lists/VirtualizedListContext.js +1 -1
- package/Libraries/Lists/VirtualizedSectionList.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/Modal/Modal.js +43 -11
- package/Libraries/Modal/NativeModalManager.js +3 -11
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
- package/Libraries/MutationObserver/MutationObserver.js +1 -1
- package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
- package/Libraries/MutationObserver/MutationRecord.js +12 -10
- package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
- package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
- package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
- package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
- package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +11 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
- package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
- package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
- package/Libraries/Network/FormData.js +3 -1
- package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
- package/Libraries/Network/NativeNetworkingIOS.js +4 -28
- package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +4 -2
- package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +3 -1
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
- package/Libraries/Pressability/Pressability.js +12 -2
- package/Libraries/Pressability/Pressability.windows.js +13 -3
- package/Libraries/Pressability/usePressability.js +7 -0
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
- package/Libraries/ReactNative/AppContainer-dev.js +192 -0
- package/Libraries/ReactNative/AppContainer-prod.js +53 -0
- package/Libraries/ReactNative/AppContainer.js +6 -149
- package/Libraries/ReactNative/AppRegistry.js +3 -1
- package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
- package/Libraries/ReactNative/FabricUIManager.js +6 -0
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
- package/Libraries/ReactNative/NativeI18nManager.js +3 -18
- package/Libraries/ReactNative/NativeUIManager.js +4 -112
- package/Libraries/ReactNative/PaperUIManager.js +8 -7
- package/Libraries/ReactNative/PaperUIManager.windows.js +29 -8
- package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
- package/Libraries/ReactNative/RendererImplementation.js +11 -0
- package/Libraries/ReactNative/UIManager.d.ts +11 -34
- package/Libraries/ReactNative/UIManager.js +2 -23
- package/Libraries/ReactNative/UIManagerProperties.js +0 -2
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
- package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
- package/Libraries/ReactNative/renderApplication.js +9 -6
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
- package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
- package/Libraries/Settings/NativeSettingsManager.js +4 -16
- package/Libraries/Share/NativeShareModule.js +3 -13
- package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
- package/Libraries/StyleSheet/StyleSheet.js +5 -28
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +47 -7
- package/Libraries/StyleSheet/StyleSheetTypes.js +16 -11
- package/Libraries/StyleSheet/flattenStyle.js +2 -2
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processAspectRatio.js +1 -1
- package/Libraries/StyleSheet/processFontVariant.js +1 -1
- package/Libraries/Text/Text.js +0 -6
- package/Libraries/Text/Text.windows.js +0 -6
- package/Libraries/Text/TextAncestor.js +2 -3
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
- package/Libraries/Types/ReactDevToolsTypes.js +58 -0
- package/Libraries/Types/UIManagerJSInterface.js +16 -0
- package/Libraries/Utilities/DebugEnvironment.js +1 -4
- package/Libraries/Utilities/Dimensions.js +8 -16
- package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
- package/Libraries/Utilities/NativeAppearance.js +3 -26
- package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
- package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
- package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
- package/Libraries/Utilities/PixelRatio.d.ts +4 -4
- package/Libraries/Utilities/Platform.android.js +4 -0
- package/Libraries/Utilities/Platform.d.ts +3 -0
- package/Libraries/Utilities/Platform.flow.js +7 -0
- package/Libraries/Utilities/Platform.flow.windows.js +9 -0
- package/Libraries/Utilities/Platform.ios.js +11 -0
- package/Libraries/Utilities/Platform.windows.js +6 -0
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/codegenNativeComponent.js +4 -6
- package/Libraries/Utilities/createPerformanceLogger.js +2 -74
- package/Libraries/Utilities/useMergeRefs.js +5 -9
- package/Libraries/Vibration/NativeVibration.js +3 -14
- package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
- package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +1 -0
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +50 -0
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +23 -0
- package/Microsoft.ReactNative/Base/CoreUIManagers.cpp +4 -0
- package/Microsoft.ReactNative/Base/CxxReactIncludes.h +1 -1
- package/Microsoft.ReactNative/Base/FollyIncludes.h +2 -2
- package/Microsoft.ReactNative/ComponentView.idl +106 -0
- package/Microsoft.ReactNative/Composition.Input.idl +16 -2
- package/Microsoft.ReactNative/CompositionComponentView.idl +117 -0
- package/Microsoft.ReactNative/CompositionContext.idl +1 -1
- package/Microsoft.ReactNative/CompositionRootView.idl +8 -0
- package/Microsoft.ReactNative/CompositionSwitcher.idl +25 -14
- package/Microsoft.ReactNative/DevMenuControl.idl +0 -3
- package/Microsoft.ReactNative/DevMenuControl.xaml +0 -15
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +189 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +80 -0
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +83 -0
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +83 -0
- package/Microsoft.ReactNative/Fabric/AbiState.cpp +71 -0
- package/Microsoft.ReactNative/Fabric/AbiState.h +38 -0
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +48 -19
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +8 -16
- package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +97 -0
- package/Microsoft.ReactNative/Fabric/AbiViewProps.h +39 -0
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +90 -0
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +87 -0
- package/Microsoft.ReactNative/Fabric/ComponentView.cpp +340 -0
- package/Microsoft.ReactNative/Fabric/ComponentView.h +130 -64
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +48 -24
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +18 -14
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +42 -27
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.h +3 -1
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +123 -28
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +69 -13
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +651 -284
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +7 -7
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +9 -9
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +120 -31
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +12 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +308 -129
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +34 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +2 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +61 -54
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +0 -9
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +99 -30
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +4 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +273 -28
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +28 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +7 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +4 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +479 -280
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +133 -79
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +113 -0
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +39 -0
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +61 -41
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +19 -14
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentDescriptor.h +39 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +343 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +67 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewShadowNode.cpp +18 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewShadowNode.h +39 -0
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +53 -186
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +20 -12
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +59 -150
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +27 -76
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +81 -32
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +27 -14
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +707 -64
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +47 -26
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +225 -125
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +34 -21
- package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +179 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.h +25 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +110 -115
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +228 -79
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +43 -22
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +18 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +5 -5
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +4 -44
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +11 -9
- package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +550 -0
- package/Microsoft.ReactNative/Fabric/Composition/Theme.h +73 -0
- package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +85 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +48 -26
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +6 -2
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +30 -65
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +16 -25
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +72 -88
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +5 -2
- package/Microsoft.ReactNative/Fabric/IComponentViewRegistry.h +3 -2
- package/Microsoft.ReactNative/Fabric/ReactNativeConfigProperties.cpp +6 -6
- package/Microsoft.ReactNative/Fabric/ReactNativeConfigProperties.h +2 -2
- package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +12 -7
- package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +28 -19
- package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.h +5 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +0 -2
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +5 -1
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +2 -4
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Float.h +20 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +86 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorParser.h +38 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/{Color.cpp → PlatformColorUtils.cpp} +7 -77
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.h +12 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +2 -0
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +6 -87
- package/Microsoft.ReactNative/IReactContext.idl +3 -0
- package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +71 -1
- package/Microsoft.ReactNative/JsiApi.cpp +17 -7
- package/Microsoft.ReactNative/JsiApi.h +2 -2
- package/Microsoft.ReactNative/JsiApi.idl +5 -4
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -22
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +6 -2
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
- package/Microsoft.ReactNative/Modules/AlertModule.h +2 -2
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +12 -8
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.h +1 -1
- package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +5 -3
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.h +4 -4
- package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +10 -1
- package/Microsoft.ReactNative/Modules/ClipboardModule.h +1 -1
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +71 -38
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +5 -5
- package/Microsoft.ReactNative/Modules/ExceptionsManager.cpp +110 -0
- package/Microsoft.ReactNative/Modules/ExceptionsManager.h +54 -0
- package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +11 -10
- package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +8 -6
- package/Microsoft.ReactNative/Modules/LogBoxModule.h +3 -3
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +5 -28
- package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +8 -5
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +3 -3
- package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +49 -0
- package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +18 -0
- package/Microsoft.ReactNative/Modules/SourceCode.cpp +31 -0
- package/Microsoft.ReactNative/Modules/SourceCode.h +28 -0
- package/Microsoft.ReactNative/Modules/StatusBarManager.h +12 -0
- package/Microsoft.ReactNative/Modules/Timing.cpp +325 -0
- package/Microsoft.ReactNative/Modules/Timing.h +121 -0
- package/Microsoft.ReactNative/QuirkSettings.cpp +32 -0
- package/Microsoft.ReactNative/QuirkSettings.h +9 -0
- package/Microsoft.ReactNative/QuirkSettings.idl +6 -0
- package/Microsoft.ReactNative/ReactCoreInjection.cpp +15 -0
- package/Microsoft.ReactNative/ReactCoreInjection.h +4 -0
- package/Microsoft.ReactNative/ReactCoreInjection.idl +8 -0
- package/Microsoft.ReactNative/ReactHost/IReactInstance.h +1 -1
- package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +1 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +556 -234
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +36 -9
- package/Microsoft.ReactNative/ReactInstanceSettings.idl +3 -0
- package/Microsoft.ReactNative/ReactPointerEventArgs.cpp +8 -0
- package/Microsoft.ReactNative/ReactPointerEventArgs.h +4 -0
- package/Microsoft.ReactNative/ReactPointerEventArgs.idl +12 -0
- package/Microsoft.ReactNative/SchedulerSettings.cpp +23 -0
- package/Microsoft.ReactNative/SchedulerSettings.h +9 -1
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +41 -0
- package/Microsoft.ReactNative/SynchronousEventBeat.h +29 -0
- package/Microsoft.ReactNative/Theme.idl +57 -0
- package/Microsoft.ReactNative/Timer.cpp +63 -0
- package/Microsoft.ReactNative/{CoreAppPage.h → Timer.h} +12 -5
- package/Microsoft.ReactNative/Timer.idl +34 -0
- package/Microsoft.ReactNative/TurboModulesProvider.cpp +4 -0
- package/Microsoft.ReactNative/Utils/ImageUtils.cpp +37 -3
- package/Microsoft.ReactNative/Utils/ImageUtils.h +0 -1
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +11 -12
- package/Microsoft.ReactNative/Utils/LocalBundleReader.h +3 -3
- package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +33 -0
- package/Microsoft.ReactNative/Utils/ThemeUtils.h +13 -0
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +0 -5
- package/Microsoft.ReactNative/Utils/ValueUtils.h +0 -3
- package/Microsoft.ReactNative/ViewProps.idl +17 -0
- package/Microsoft.ReactNative/Views/ActivityIndicatorViewManager.cpp +1 -0
- package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.cpp +54 -0
- package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.h +30 -0
- package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -20
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +157 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +5 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +20 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +4 -0
- package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +1 -5
- package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +137 -0
- package/Microsoft.ReactNative/Views/ICompositionRootView.h +0 -1
- package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +0 -5
- package/Microsoft.ReactNative/Views/PopupViewManager.cpp +1 -5
- package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +11 -0
- package/Microsoft.ReactNative/Views/ShadowNodeBase.h +3 -4
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +0 -6
- package/Microsoft.ReactNative/Views/TextViewManager.cpp +0 -11
- package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
- package/Microsoft.ReactNative/Views/UnimplementedViewManager.cpp +79 -0
- package/Microsoft.ReactNative/Views/UnimplementedViewManager.h +27 -0
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +46 -0
- package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
- package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +77 -2
- package/Microsoft.ReactNative/microsoft.reactnative.def +0 -3
- package/Microsoft.ReactNative/packages.lock.json +9 -6
- package/{Shared/Composition → Microsoft.ReactNative.Cxx}/AutoDraw.h +2 -0
- package/{Shared/Composition → Microsoft.ReactNative.Cxx}/CompositionSwitcher.interop.h +4 -10
- package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -5
- package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +5 -0
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +19 -10
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +2 -0
- package/Microsoft.ReactNative.Cxx/JSValueComposition.h +22 -0
- package/Microsoft.ReactNative.Cxx/JSValueReader.h +19 -0
- package/Microsoft.ReactNative.Cxx/JSValueXaml.h +1 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +6 -4
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +0 -1
- package/Microsoft.ReactNative.Cxx/NativeModules.h +15 -15
- package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +1 -1
- package/Microsoft.ReactNative.Managed/ReactSettingsSnapshot.cs +2 -0
- package/Microsoft.ReactNative.Managed/packages.lock.json +6 -3
- package/Microsoft.ReactNative.Managed.CodeGen/Microsoft.ReactNative.Managed.CodeGen.csproj +0 -1
- package/Mso/future/details/executor.h +1 -1
- package/Mso/src/debugAssertApi/debugAssertApi.cpp +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Common.props +8 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppLib.props +24 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppLib.targets +20 -0
- package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +2 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/JSEngine.props +0 -8
- package/PropertySheets/React.Cpp.props +14 -3
- package/PropertySheets/ReactCommunity.cpp.props +2 -2
- package/PropertySheets/Release.props +0 -1
- package/PropertySheets/WinUI.props +21 -1
- package/PropertySheets/x64.props +3 -0
- package/PropertySheets/x86.props +3 -0
- package/ReactCommon/ReactCommon.vcxproj +13 -8
- package/ReactCommon/ReactCommon.vcxproj.filters +12 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +114 -19
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +66 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +114 -52
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +13 -15
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +535 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +437 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +39 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +31 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +19 -24
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +600 -980
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +5 -11
- package/ReactCommon/cgmanifest.json +1 -1
- package/Scripts/EnableInternalWinAppSDKFeed.ps1 +21 -0
- package/Scripts/IntegrationTests.ps1 +26 -15
- package/Scripts/Microsoft.ReactNative.targets +0 -6
- package/Scripts/OfficeReact.Win32.nuspec +1 -2
- package/Scripts/TestServers.ps1 +2 -28
- package/Scripts/Tfs/Start-TestServers.ps1 +1 -21
- package/Scripts/Tfs/Stop-TestServers.ps1 +0 -5
- package/Scripts/rnw-dependencies.ps1 +38 -67
- package/Shared/CreateInstance.h +25 -0
- package/Shared/DevServerHelper.h +0 -3
- package/Shared/DevSettings.h +9 -0
- package/Shared/HermesRuntimeHolder.cpp +17 -0
- package/Shared/HermesRuntimeHolder.h +17 -0
- package/Shared/HermesSamplingProfiler.cpp +12 -10
- package/Shared/HermesSamplingProfiler.h +5 -4
- package/Shared/IDevSupportManager.h +4 -2
- package/Shared/InstanceManager.cpp +13 -11
- package/Shared/InstanceManager.h +8 -18
- package/Shared/JSI/ChakraRuntime.cpp +66 -9
- package/Shared/JSI/ChakraRuntime.h +8 -0
- package/Shared/JSI/JSExecutorFactoryDelegate.h +12 -0
- package/Shared/JSI/JSExecutorFactorySettings.cpp +30 -0
- package/Shared/JSI/JSExecutorFactorySettings.h +21 -0
- package/Shared/Modules/BlobModule.h +1 -1
- package/Shared/Modules/FileReaderModule.h +1 -1
- package/Shared/Modules/HttpModule.h +1 -1
- package/Shared/Modules/WebSocketTurboModule.h +1 -1
- package/Shared/OInstance.cpp +212 -165
- package/Shared/OInstance.h +19 -0
- package/Shared/Shared.vcxitems +134 -50
- package/Shared/Shared.vcxitems.filters +81 -24
- package/Shared/Utils.cpp +12 -10
- package/Shared/Utils.h +2 -2
- package/Shared/WebSocketJSExecutorFactory.h +1 -0
- package/codegen/NativeBugReportingSpec.g.h +0 -6
- package/codegen/NativeFrameRateLoggerSpec.g.h +0 -2
- package/codegen/NativeImageLoaderAndroidSpec.g.h +10 -23
- package/codegen/NativePerformanceObserverSpec.g.h +6 -0
- package/codegen/NativePlatformConstantsIOSSpec.g.h +2 -0
- package/codegen/NativePlatformConstantsWinSpec.g.h +17 -0
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +8 -6
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +88 -0
- package/codegen/NativeUIManagerSpec.g.h +83 -95
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +10 -7
- package/codegen/react/components/rnwcore/EventEmitters.cpp +40 -52
- package/codegen/react/components/rnwcore/EventEmitters.h +66 -84
- package/codegen/react/components/rnwcore/Props.cpp +60 -95
- package/codegen/react/components/rnwcore/Props.h +198 -239
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +6 -7
- package/codegen/react/components/rnwcore/ShadowNodes.h +38 -29
- package/codegen/react/components/rnwcore/States.cpp +3 -5
- package/codegen/react/components/rnwcore/States.h +29 -16
- package/codegen/rnwcoreJSI-generated.cpp +1442 -1398
- package/codegen/rnwcoreJSI.h +6066 -3593
- package/index.js +66 -99
- package/index.windows.js +60 -102
- package/jest/assetFileTransformer.js +1 -1
- package/jest/local-setup.js +0 -5
- package/jest/mockModal.js +2 -1
- package/jest/mockScrollView.js +1 -2
- package/jest/renderer.js +1 -1
- package/jest/setup.js +6 -3
- package/just-task.js +1 -1
- package/package.json +30 -29
- package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
- package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
- package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
- package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
- package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
- package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
- package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
- package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
- package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +47 -0
- package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
- package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
- package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
- package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
- package/src/private/specs/components/SwitchNativeComponent.js +61 -0
- package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
- package/src/private/specs/modules/NativeAlertManager.js +35 -0
- package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
- package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
- package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
- package/src/private/specs/modules/NativeAppState.js +33 -0
- package/src/private/specs/modules/NativeAppTheme.js +33 -0
- package/src/private/specs/modules/NativeAppearance.js +36 -0
- package/src/private/specs/modules/NativeBlobModule.js +59 -0
- package/src/private/specs/modules/NativeBugReporting.js +20 -0
- package/src/private/specs/modules/NativeClipboard.js +21 -0
- package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
- package/src/private/specs/modules/NativeDevMenu.js +23 -0
- package/src/private/specs/modules/NativeDevSettings.js +33 -0
- package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
- package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
- package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
- package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
- package/{Libraries/Alert → src/private/specs/modules}/NativeDialogManagerWindows.js +5 -4
- package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
- package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
- package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
- package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
- package/src/private/specs/modules/NativeI18nManager.js +28 -0
- package/src/private/specs/modules/NativeImageEditor.js +52 -0
- package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
- package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
- package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
- package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
- package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
- package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
- package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
- package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
- package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
- package/src/private/specs/modules/NativeLinkingManager.js +27 -0
- package/src/private/specs/modules/NativeLogBox.js +20 -0
- package/src/private/specs/modules/NativeModalManager.js +21 -0
- package/src/private/specs/modules/NativeMutationObserver.js +58 -0
- package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
- package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
- package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
- package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
- package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
- package/src/private/specs/modules/NativePlatformConstantsWin.js +38 -0
- package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
- package/src/private/specs/modules/NativeRedBox.js +20 -0
- package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
- package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
- package/src/private/specs/modules/NativeSettingsManager.js +25 -0
- package/src/private/specs/modules/NativeShareModule.js +23 -0
- package/src/private/specs/modules/NativeSoundManager.js +22 -0
- package/src/private/specs/modules/NativeSourceCode.js +36 -0
- package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
- package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
- package/src/private/specs/modules/NativeTiming.js +26 -0
- package/src/private/specs/modules/NativeToastAndroid.js +38 -0
- package/src/private/specs/modules/NativeUIManager.js +118 -0
- package/src/private/specs/modules/NativeVibration.js +24 -0
- package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
- package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
- package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
- package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
- package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
- package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
- package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
- package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
- package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
- package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
- package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
- package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
- package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
- package/template/cpp-app/src/App.cpp +2 -2
- package/template/cs-app/src/App.xaml.cs +2 -2
- package/templates/cpp-app/jest.config.windows.js +3 -0
- package/templates/cpp-app/metro.config.js +0 -2
- package/templates/cpp-app/template.config.js +24 -9
- package/templates/cpp-app/windows/ExperimentalFeatures.props +1 -1
- package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.cpp +13 -0
- package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.h +10 -0
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +134 -249
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +12 -11
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +6 -3
- package/templates/cpp-app/windows/MyApp/pch.h +12 -9
- package/templates/cpp-app/windows/MyApp/resource.h +0 -1
- package/templates/cpp-app/windows/MyApp.sln +26 -26
- package/templates/cpp-lib/example/metro.config.js +74 -0
- package/templates/cpp-lib/template.config.js +235 -0
- package/templates/cpp-lib/windows/ExperimentalFeatures.props +11 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.cpp +18 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.def +3 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.h +31 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.rc +0 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +148 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj.filters +44 -0
- package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.cpp +20 -0
- package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.h +24 -0
- package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.idl +9 -0
- package/templates/cpp-lib/windows/MyLib/pch.cpp +1 -0
- package/templates/cpp-lib/windows/MyLib/pch.h +30 -0
- package/templates/cpp-lib/windows/MyLib/resource.h +5 -0
- package/templates/cpp-lib/windows/MyLib/targetver.h +8 -0
- package/templates/cpp-lib/windows/MyLib.sln +156 -0
- package/templates/cpp-lib/windows/_gitignore +41 -0
- package/templates/templateUtils.js +137 -0
- package/types/modules/globals.d.ts +1 -0
- package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +0 -1016
- package/Libraries/Components/Button.flow.js +0 -265
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.windows.js +0 -8
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +0 -14
- package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +0 -34
- package/Libraries/Components/ScrollView/ScrollView.windows.js +0 -1941
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
- package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +0 -45
- package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
- package/Libraries/Image/Image.flow.js +0 -64
- package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
- package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
- package/Libraries/Settings/Settings.windows.js +0 -28
- package/Microsoft.ReactNative/CoreApp.cpp +0 -303
- package/Microsoft.ReactNative/CoreAppPage.cpp +0 -21
- package/Microsoft.ReactNative/CoreAppPage.idl +0 -12
- package/Microsoft.ReactNative/CoreAppPage.xaml +0 -14
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +0 -197
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +0 -84
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/EventEmitters.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/Props.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/ShadowNodes.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/States.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +0 -245
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +0 -134
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +0 -27
- package/Microsoft.ReactNative/Modules/TimingModule.cpp +0 -229
- package/Microsoft.ReactNative/Modules/TimingModule.h +0 -88
- package/Microsoft.ReactNative.Cxx/CoreApp.h +0 -60
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.cpp +0 -60
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.h +0 -60
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +0 -63
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +0 -1038
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +0 -503
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +0 -895
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBufferBuilder.cpp +0 -182
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +0 -543
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +0 -1505
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +0 -67
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -93
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -88
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -606
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +0 -344
- package/ReactCommon/Yoga.cpp +0 -961
- /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
- /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
- /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
- /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
- /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
- /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
- /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp
DELETED
|
@@ -1,1505 +0,0 @@
|
|
|
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 "UIManagerBinding.h"
|
|
9
|
-
|
|
10
|
-
#include <glog/logging.h>
|
|
11
|
-
#include <jsi/JSIDynamic.h>
|
|
12
|
-
#include <react/debug/react_native_assert.h>
|
|
13
|
-
#include <react/renderer/components/view/PointerEvent.h>
|
|
14
|
-
#include <react/renderer/core/LayoutableShadowNode.h>
|
|
15
|
-
#include <react/renderer/core/TraitCast.h>
|
|
16
|
-
#include <react/renderer/debug/SystraceSection.h>
|
|
17
|
-
#include <react/renderer/runtimescheduler/RuntimeSchedulerBinding.h>
|
|
18
|
-
#include <react/renderer/uimanager/primitives.h>
|
|
19
|
-
|
|
20
|
-
#include <utility>
|
|
21
|
-
|
|
22
|
-
#include "bindingUtils.h"
|
|
23
|
-
|
|
24
|
-
namespace facebook::react {
|
|
25
|
-
|
|
26
|
-
void UIManagerBinding::createAndInstallIfNeeded(
|
|
27
|
-
jsi::Runtime& runtime,
|
|
28
|
-
const std::shared_ptr<UIManager>& uiManager) {
|
|
29
|
-
auto uiManagerModuleName = "nativeFabricUIManager";
|
|
30
|
-
|
|
31
|
-
auto uiManagerValue =
|
|
32
|
-
runtime.global().getProperty(runtime, uiManagerModuleName);
|
|
33
|
-
if (uiManagerValue.isUndefined()) {
|
|
34
|
-
// The global namespace does not have an instance of the binding;
|
|
35
|
-
// we need to create, install and return it.
|
|
36
|
-
auto uiManagerBinding = std::make_shared<UIManagerBinding>(uiManager);
|
|
37
|
-
auto object = jsi::Object::createFromHostObject(runtime, uiManagerBinding);
|
|
38
|
-
runtime.global().setProperty(
|
|
39
|
-
runtime, uiManagerModuleName, std::move(object));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
std::shared_ptr<UIManagerBinding> UIManagerBinding::getBinding(
|
|
44
|
-
jsi::Runtime& runtime) {
|
|
45
|
-
auto uiManagerModuleName = "nativeFabricUIManager";
|
|
46
|
-
|
|
47
|
-
auto uiManagerValue =
|
|
48
|
-
runtime.global().getProperty(runtime, uiManagerModuleName);
|
|
49
|
-
if (uiManagerValue.isUndefined()) {
|
|
50
|
-
return nullptr;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
auto uiManagerObject = uiManagerValue.asObject(runtime);
|
|
54
|
-
return uiManagerObject.getHostObject<UIManagerBinding>(runtime);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
UIManagerBinding::UIManagerBinding(std::shared_ptr<UIManager> uiManager)
|
|
58
|
-
: uiManager_(std::move(uiManager)) {}
|
|
59
|
-
|
|
60
|
-
UIManagerBinding::~UIManagerBinding() {
|
|
61
|
-
LOG(WARNING) << "UIManagerBinding::~UIManagerBinding() was called (address: "
|
|
62
|
-
<< this << ").";
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
jsi::Value UIManagerBinding::getInspectorDataForInstance(
|
|
66
|
-
jsi::Runtime& runtime,
|
|
67
|
-
const EventEmitter& eventEmitter) const {
|
|
68
|
-
auto eventTarget = eventEmitter.eventTarget_;
|
|
69
|
-
EventEmitter::DispatchMutex().lock();
|
|
70
|
-
|
|
71
|
-
if (!runtime.global().hasProperty(runtime, "__fbBatchedBridge") ||
|
|
72
|
-
!eventTarget) {
|
|
73
|
-
return jsi::Value::undefined();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
eventTarget->retain(runtime);
|
|
77
|
-
auto instanceHandle = eventTarget->getInstanceHandle(runtime);
|
|
78
|
-
eventTarget->release(runtime);
|
|
79
|
-
EventEmitter::DispatchMutex().unlock();
|
|
80
|
-
|
|
81
|
-
if (instanceHandle.isUndefined()) {
|
|
82
|
-
return jsi::Value::undefined();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return callMethodOfModule(
|
|
86
|
-
runtime,
|
|
87
|
-
"ReactFabric",
|
|
88
|
-
"getInspectorDataForInstance",
|
|
89
|
-
{std::move(instanceHandle)});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
void UIManagerBinding::dispatchEvent(
|
|
93
|
-
jsi::Runtime& runtime,
|
|
94
|
-
const EventTarget* eventTarget,
|
|
95
|
-
const std::string& type,
|
|
96
|
-
ReactEventPriority priority,
|
|
97
|
-
const EventPayload& eventPayload) const {
|
|
98
|
-
SystraceSection s("UIManagerBinding::dispatchEvent", "type", type);
|
|
99
|
-
|
|
100
|
-
if (eventPayload.getType() == EventPayloadType::PointerEvent) {
|
|
101
|
-
auto pointerEvent = static_cast<const PointerEvent&>(eventPayload);
|
|
102
|
-
auto dispatchCallback = [this](
|
|
103
|
-
jsi::Runtime& runtime,
|
|
104
|
-
const EventTarget* eventTarget,
|
|
105
|
-
const std::string& type,
|
|
106
|
-
ReactEventPriority priority,
|
|
107
|
-
const EventPayload& eventPayload) {
|
|
108
|
-
this->dispatchEventToJS(
|
|
109
|
-
runtime, eventTarget, type, priority, eventPayload);
|
|
110
|
-
};
|
|
111
|
-
pointerEventsProcessor_.interceptPointerEvent(
|
|
112
|
-
runtime,
|
|
113
|
-
eventTarget,
|
|
114
|
-
type,
|
|
115
|
-
priority,
|
|
116
|
-
pointerEvent,
|
|
117
|
-
dispatchCallback,
|
|
118
|
-
*uiManager_);
|
|
119
|
-
} else {
|
|
120
|
-
dispatchEventToJS(runtime, eventTarget, type, priority, eventPayload);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
void UIManagerBinding::dispatchEventToJS(
|
|
125
|
-
jsi::Runtime& runtime,
|
|
126
|
-
const EventTarget* eventTarget,
|
|
127
|
-
const std::string& type,
|
|
128
|
-
ReactEventPriority priority,
|
|
129
|
-
const EventPayload& eventPayload) const {
|
|
130
|
-
auto payload = eventPayload.asJSIValue(runtime);
|
|
131
|
-
|
|
132
|
-
// If a payload is null, the factory has decided to cancel the event
|
|
133
|
-
if (payload.isNull()) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
auto instanceHandle = eventTarget != nullptr
|
|
138
|
-
? [&]() {
|
|
139
|
-
auto instanceHandle = eventTarget->getInstanceHandle(runtime);
|
|
140
|
-
if (instanceHandle.isUndefined()) {
|
|
141
|
-
return jsi::Value::null();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// Mixing `target` into `payload`.
|
|
145
|
-
if (!payload.isObject()) {
|
|
146
|
-
LOG(ERROR) << "payload for dispatchEvent is not an object: " << eventTarget->getTag();
|
|
147
|
-
}
|
|
148
|
-
react_native_assert(payload.isObject());
|
|
149
|
-
payload.asObject(runtime).setProperty(runtime, "target", eventTarget->getTag());
|
|
150
|
-
return instanceHandle;
|
|
151
|
-
}()
|
|
152
|
-
: jsi::Value::null();
|
|
153
|
-
|
|
154
|
-
if (instanceHandle.isNull()) {
|
|
155
|
-
LOG(WARNING) << "instanceHandle is null, event will be dropped";
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
auto& eventHandlerWrapper =
|
|
159
|
-
static_cast<const EventHandlerWrapper&>(*eventHandler_);
|
|
160
|
-
|
|
161
|
-
currentEventPriority_ = priority;
|
|
162
|
-
eventHandlerWrapper.callback.call(
|
|
163
|
-
runtime,
|
|
164
|
-
{std::move(instanceHandle),
|
|
165
|
-
jsi::String::createFromUtf8(runtime, type),
|
|
166
|
-
std::move(payload)});
|
|
167
|
-
currentEventPriority_ = ReactEventPriority::Default;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
void UIManagerBinding::invalidate() const {
|
|
171
|
-
uiManager_->setDelegate(nullptr);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
static void validateArgumentCount(
|
|
175
|
-
jsi::Runtime& runtime,
|
|
176
|
-
const std::string& methodName,
|
|
177
|
-
size_t expected,
|
|
178
|
-
size_t actual) {
|
|
179
|
-
if (actual < expected) {
|
|
180
|
-
throw jsi::JSError(
|
|
181
|
-
runtime,
|
|
182
|
-
methodName + " requires " + std::to_string(expected) +
|
|
183
|
-
" arguments, but only " + std::to_string(actual) + " were passed");
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
jsi::Value UIManagerBinding::get(
|
|
188
|
-
jsi::Runtime& runtime,
|
|
189
|
-
const jsi::PropNameID& name) {
|
|
190
|
-
auto methodName = name.utf8(runtime);
|
|
191
|
-
SystraceSection s("UIManagerBinding::get", "name", methodName);
|
|
192
|
-
|
|
193
|
-
// Convert shared_ptr<UIManager> to a raw ptr
|
|
194
|
-
// Why? Because:
|
|
195
|
-
// 1) UIManagerBinding strongly retains UIManager. The JS VM
|
|
196
|
-
// strongly retains UIManagerBinding (through the JSI).
|
|
197
|
-
// These functions are JSI functions and are only called via
|
|
198
|
-
// the JS VM; if the JS VM is torn down, those functions can't
|
|
199
|
-
// execute and these lambdas won't execute.
|
|
200
|
-
// 2) The UIManager is only deallocated when all references to it
|
|
201
|
-
// are deallocated, including the UIManagerBinding. That only
|
|
202
|
-
// happens when the JS VM is deallocated. So, the raw pointer
|
|
203
|
-
// is safe.
|
|
204
|
-
//
|
|
205
|
-
// Even if it's safe, why not just use shared_ptr anyway as
|
|
206
|
-
// extra insurance?
|
|
207
|
-
// 1) Using shared_ptr or weak_ptr when they're not needed is
|
|
208
|
-
// a pessimisation. It's more instructions executed without
|
|
209
|
-
// any additional value in this case.
|
|
210
|
-
// 2) How and when exactly these lambdas is deallocated is
|
|
211
|
-
// complex. Adding shared_ptr to them which causes the UIManager
|
|
212
|
-
// to potentially live longer is unnecessary, complicated cognitive
|
|
213
|
-
// overhead.
|
|
214
|
-
// 3) There is a strong suspicion that retaining UIManager from
|
|
215
|
-
// these C++ lambdas, which are retained by an object that is held onto
|
|
216
|
-
// by the JSI, caused some crashes upon deallocation of the
|
|
217
|
-
// Scheduler and JS VM. This could happen if, for instance, C++
|
|
218
|
-
// semantics cause these lambda to not be deallocated until
|
|
219
|
-
// a CPU tick (or more) after the JS VM is deallocated.
|
|
220
|
-
UIManager* uiManager = uiManager_.get();
|
|
221
|
-
|
|
222
|
-
// Semantic: Creates a new node with given pieces.
|
|
223
|
-
if (methodName == "createNode") {
|
|
224
|
-
auto paramCount = 5;
|
|
225
|
-
return jsi::Function::createFromHostFunction(
|
|
226
|
-
runtime,
|
|
227
|
-
name,
|
|
228
|
-
paramCount,
|
|
229
|
-
[uiManager, methodName, paramCount](
|
|
230
|
-
jsi::Runtime& runtime,
|
|
231
|
-
const jsi::Value& /*thisValue*/,
|
|
232
|
-
const jsi::Value* arguments,
|
|
233
|
-
size_t count) -> jsi::Value {
|
|
234
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
235
|
-
|
|
236
|
-
auto instanceHandle =
|
|
237
|
-
instanceHandleFromValue(runtime, arguments[4], arguments[0]);
|
|
238
|
-
if (!instanceHandle) {
|
|
239
|
-
react_native_assert(false);
|
|
240
|
-
return jsi::Value::undefined();
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
return valueFromShadowNode(
|
|
244
|
-
runtime,
|
|
245
|
-
uiManager->createNode(
|
|
246
|
-
tagFromValue(arguments[0]),
|
|
247
|
-
stringFromValue(runtime, arguments[1]),
|
|
248
|
-
surfaceIdFromValue(runtime, arguments[2]),
|
|
249
|
-
RawProps(runtime, arguments[3]),
|
|
250
|
-
instanceHandle));
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
// Semantic: Clones the node with *same* props and *same* children.
|
|
255
|
-
if (methodName == "cloneNode") {
|
|
256
|
-
auto paramCount = 1;
|
|
257
|
-
return jsi::Function::createFromHostFunction(
|
|
258
|
-
runtime,
|
|
259
|
-
name,
|
|
260
|
-
paramCount,
|
|
261
|
-
[uiManager, methodName, paramCount](
|
|
262
|
-
jsi::Runtime& runtime,
|
|
263
|
-
const jsi::Value& /*thisValue*/,
|
|
264
|
-
const jsi::Value* arguments,
|
|
265
|
-
size_t count) -> jsi::Value {
|
|
266
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
267
|
-
|
|
268
|
-
return valueFromShadowNode(
|
|
269
|
-
runtime,
|
|
270
|
-
uiManager->cloneNode(
|
|
271
|
-
*shadowNodeFromValue(runtime, arguments[0])));
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (methodName == "setIsJSResponder") {
|
|
276
|
-
auto paramCount = 3;
|
|
277
|
-
return jsi::Function::createFromHostFunction(
|
|
278
|
-
runtime,
|
|
279
|
-
name,
|
|
280
|
-
paramCount,
|
|
281
|
-
[uiManager, methodName, paramCount](
|
|
282
|
-
jsi::Runtime& runtime,
|
|
283
|
-
const jsi::Value& /*thisValue*/,
|
|
284
|
-
const jsi::Value* arguments,
|
|
285
|
-
size_t count) -> jsi::Value {
|
|
286
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
287
|
-
|
|
288
|
-
uiManager->setIsJSResponder(
|
|
289
|
-
shadowNodeFromValue(runtime, arguments[0]),
|
|
290
|
-
arguments[1].getBool(),
|
|
291
|
-
arguments[2].getBool());
|
|
292
|
-
|
|
293
|
-
return jsi::Value::undefined();
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
if (methodName == "findNodeAtPoint") {
|
|
298
|
-
auto paramCount = 4;
|
|
299
|
-
return jsi::Function::createFromHostFunction(
|
|
300
|
-
runtime,
|
|
301
|
-
name,
|
|
302
|
-
paramCount,
|
|
303
|
-
[uiManager, methodName, paramCount](
|
|
304
|
-
jsi::Runtime& runtime,
|
|
305
|
-
const jsi::Value& /*thisValue*/,
|
|
306
|
-
const jsi::Value* arguments,
|
|
307
|
-
size_t count) {
|
|
308
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
309
|
-
|
|
310
|
-
auto node = shadowNodeFromValue(runtime, arguments[0]);
|
|
311
|
-
auto locationX = (Float)arguments[1].getNumber();
|
|
312
|
-
auto locationY = (Float)arguments[2].getNumber();
|
|
313
|
-
auto onSuccessFunction =
|
|
314
|
-
arguments[3].getObject(runtime).getFunction(runtime);
|
|
315
|
-
auto targetNode =
|
|
316
|
-
uiManager->findNodeAtPoint(node, Point{locationX, locationY});
|
|
317
|
-
auto& eventTarget = targetNode->getEventEmitter()->eventTarget_;
|
|
318
|
-
|
|
319
|
-
EventEmitter::DispatchMutex().lock();
|
|
320
|
-
eventTarget->retain(runtime);
|
|
321
|
-
auto instanceHandle = eventTarget->getInstanceHandle(runtime);
|
|
322
|
-
eventTarget->release(runtime);
|
|
323
|
-
EventEmitter::DispatchMutex().unlock();
|
|
324
|
-
|
|
325
|
-
onSuccessFunction.call(runtime, std::move(instanceHandle));
|
|
326
|
-
return jsi::Value::undefined();
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// Semantic: Clones the node with *same* props and *empty* children.
|
|
331
|
-
if (methodName == "cloneNodeWithNewChildren") {
|
|
332
|
-
auto paramCount = 1;
|
|
333
|
-
return jsi::Function::createFromHostFunction(
|
|
334
|
-
runtime,
|
|
335
|
-
name,
|
|
336
|
-
paramCount,
|
|
337
|
-
[uiManager, methodName, paramCount](
|
|
338
|
-
jsi::Runtime& runtime,
|
|
339
|
-
const jsi::Value& /*thisValue*/,
|
|
340
|
-
const jsi::Value* arguments,
|
|
341
|
-
size_t count) -> jsi::Value {
|
|
342
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
343
|
-
|
|
344
|
-
return valueFromShadowNode(
|
|
345
|
-
runtime,
|
|
346
|
-
uiManager->cloneNode(
|
|
347
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
348
|
-
ShadowNode::emptySharedShadowNodeSharedList()));
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// Semantic: Clones the node with *given* props and *same* children.
|
|
353
|
-
if (methodName == "cloneNodeWithNewProps") {
|
|
354
|
-
auto paramCount = 2;
|
|
355
|
-
return jsi::Function::createFromHostFunction(
|
|
356
|
-
runtime,
|
|
357
|
-
name,
|
|
358
|
-
paramCount,
|
|
359
|
-
[uiManager, methodName, paramCount](
|
|
360
|
-
jsi::Runtime& runtime,
|
|
361
|
-
const jsi::Value& /*thisValue*/,
|
|
362
|
-
const jsi::Value* arguments,
|
|
363
|
-
size_t count) -> jsi::Value {
|
|
364
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
365
|
-
|
|
366
|
-
const auto& rawProps = RawProps(runtime, arguments[1]);
|
|
367
|
-
return valueFromShadowNode(
|
|
368
|
-
runtime,
|
|
369
|
-
uiManager->cloneNode(
|
|
370
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
371
|
-
nullptr,
|
|
372
|
-
&rawProps));
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
// Semantic: Clones the node with *given* props and *empty* children.
|
|
377
|
-
if (methodName == "cloneNodeWithNewChildrenAndProps") {
|
|
378
|
-
auto paramCount = 2;
|
|
379
|
-
return jsi::Function::createFromHostFunction(
|
|
380
|
-
runtime,
|
|
381
|
-
name,
|
|
382
|
-
paramCount,
|
|
383
|
-
[uiManager, methodName, paramCount](
|
|
384
|
-
jsi::Runtime& runtime,
|
|
385
|
-
const jsi::Value& /*thisValue*/,
|
|
386
|
-
const jsi::Value* arguments,
|
|
387
|
-
size_t count) -> jsi::Value {
|
|
388
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
389
|
-
|
|
390
|
-
const auto& rawProps = RawProps(runtime, arguments[1]);
|
|
391
|
-
return valueFromShadowNode(
|
|
392
|
-
runtime,
|
|
393
|
-
uiManager->cloneNode(
|
|
394
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
395
|
-
ShadowNode::emptySharedShadowNodeSharedList(),
|
|
396
|
-
&rawProps));
|
|
397
|
-
});
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
if (methodName == "appendChild") {
|
|
401
|
-
auto paramCount = 2;
|
|
402
|
-
return jsi::Function::createFromHostFunction(
|
|
403
|
-
runtime,
|
|
404
|
-
name,
|
|
405
|
-
paramCount,
|
|
406
|
-
[uiManager, methodName, paramCount](
|
|
407
|
-
jsi::Runtime& runtime,
|
|
408
|
-
const jsi::Value& /*thisValue*/,
|
|
409
|
-
const jsi::Value* arguments,
|
|
410
|
-
size_t count) -> jsi::Value {
|
|
411
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
412
|
-
|
|
413
|
-
uiManager->appendChild(
|
|
414
|
-
shadowNodeFromValue(runtime, arguments[0]),
|
|
415
|
-
shadowNodeFromValue(runtime, arguments[1]));
|
|
416
|
-
return jsi::Value::undefined();
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
if (methodName == "createChildSet") {
|
|
421
|
-
return jsi::Function::createFromHostFunction(
|
|
422
|
-
runtime,
|
|
423
|
-
name,
|
|
424
|
-
0,
|
|
425
|
-
[](jsi::Runtime& runtime,
|
|
426
|
-
const jsi::Value& /*thisValue*/,
|
|
427
|
-
const jsi::Value* /*arguments*/,
|
|
428
|
-
size_t /*count*/) -> jsi::Value {
|
|
429
|
-
auto shadowNodeList = std::make_shared<ShadowNode::ListOfShared>(
|
|
430
|
-
ShadowNode::ListOfShared({}));
|
|
431
|
-
return valueFromShadowNodeList(runtime, shadowNodeList);
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (methodName == "appendChildToSet") {
|
|
436
|
-
auto paramCount = 2;
|
|
437
|
-
return jsi::Function::createFromHostFunction(
|
|
438
|
-
runtime,
|
|
439
|
-
name,
|
|
440
|
-
paramCount,
|
|
441
|
-
[methodName, paramCount](
|
|
442
|
-
jsi::Runtime& runtime,
|
|
443
|
-
const jsi::Value& /*thisValue*/,
|
|
444
|
-
const jsi::Value* arguments,
|
|
445
|
-
size_t count) -> jsi::Value {
|
|
446
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
447
|
-
|
|
448
|
-
auto shadowNodeList = shadowNodeListFromValue(runtime, arguments[0]);
|
|
449
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[1]);
|
|
450
|
-
shadowNodeList->push_back(shadowNode);
|
|
451
|
-
return jsi::Value::undefined();
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
if (methodName == "completeRoot") {
|
|
456
|
-
auto paramCount = 2;
|
|
457
|
-
std::weak_ptr<UIManager> weakUIManager = uiManager_;
|
|
458
|
-
// Enhanced version of the method that uses `backgroundExecutor` and
|
|
459
|
-
// captures a shared pointer to `UIManager`.
|
|
460
|
-
return jsi::Function::createFromHostFunction(
|
|
461
|
-
runtime,
|
|
462
|
-
name,
|
|
463
|
-
paramCount,
|
|
464
|
-
[weakUIManager, uiManager, methodName, paramCount](
|
|
465
|
-
jsi::Runtime& runtime,
|
|
466
|
-
const jsi::Value& /*thisValue*/,
|
|
467
|
-
const jsi::Value* arguments,
|
|
468
|
-
size_t count) -> jsi::Value {
|
|
469
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
470
|
-
|
|
471
|
-
auto runtimeSchedulerBinding =
|
|
472
|
-
RuntimeSchedulerBinding::getBinding(runtime);
|
|
473
|
-
auto surfaceId = surfaceIdFromValue(runtime, arguments[0]);
|
|
474
|
-
ShadowTree::CommitOptions options = {/* .enableStateReconciliation = */ true, /* .mountSynchronously = */ false};
|
|
475
|
-
|
|
476
|
-
if (!uiManager->backgroundExecutor_ ||
|
|
477
|
-
(runtimeSchedulerBinding &&
|
|
478
|
-
runtimeSchedulerBinding->getIsSynchronous())) {
|
|
479
|
-
auto weakShadowNodeList =
|
|
480
|
-
weakShadowNodeListFromValue(runtime, arguments[1]);
|
|
481
|
-
auto shadowNodeList =
|
|
482
|
-
shadowNodeListFromWeakList(weakShadowNodeList);
|
|
483
|
-
if (shadowNodeList) {
|
|
484
|
-
uiManager->completeSurface(
|
|
485
|
-
surfaceId,
|
|
486
|
-
shadowNodeList,
|
|
487
|
-
options);
|
|
488
|
-
}
|
|
489
|
-
} else {
|
|
490
|
-
auto weakShadowNodeList =
|
|
491
|
-
weakShadowNodeListFromValue(runtime, arguments[1]);
|
|
492
|
-
static std::atomic_uint_fast8_t completeRootEventCounter{0};
|
|
493
|
-
static std::atomic_uint_fast32_t mostRecentSurfaceId{0};
|
|
494
|
-
completeRootEventCounter += 1;
|
|
495
|
-
mostRecentSurfaceId = surfaceId;
|
|
496
|
-
uiManager->backgroundExecutor_(
|
|
497
|
-
[weakUIManager,
|
|
498
|
-
weakShadowNodeList,
|
|
499
|
-
surfaceId,
|
|
500
|
-
eventCount = completeRootEventCounter.load()] {
|
|
501
|
-
auto shouldYield = [=]() -> bool {
|
|
502
|
-
// If `completeRootEventCounter` was incremented, another
|
|
503
|
-
// `completeSurface` call has been scheduled and current
|
|
504
|
-
// `completeSurface` should yield to it.
|
|
505
|
-
return completeRootEventCounter > eventCount &&
|
|
506
|
-
mostRecentSurfaceId == surfaceId;
|
|
507
|
-
};
|
|
508
|
-
auto shadowNodeList =
|
|
509
|
-
shadowNodeListFromWeakList(weakShadowNodeList);
|
|
510
|
-
auto strongUIManager = weakUIManager.lock();
|
|
511
|
-
ShadowTree::CommitOptions options = {/* .enableStateReconciliation = */ true, /* .mountSynchronously = */ false, /* .shouldYield = */ shouldYield};
|
|
512
|
-
if (shadowNodeList && strongUIManager) {
|
|
513
|
-
strongUIManager->completeSurface(
|
|
514
|
-
surfaceId,
|
|
515
|
-
shadowNodeList,
|
|
516
|
-
options);
|
|
517
|
-
}
|
|
518
|
-
});
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
return jsi::Value::undefined();
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
if (methodName == "registerEventHandler") {
|
|
526
|
-
auto paramCount = 1;
|
|
527
|
-
return jsi::Function::createFromHostFunction(
|
|
528
|
-
runtime,
|
|
529
|
-
name,
|
|
530
|
-
paramCount,
|
|
531
|
-
[this, methodName, paramCount](
|
|
532
|
-
jsi::Runtime& runtime,
|
|
533
|
-
const jsi::Value& /*thisValue*/,
|
|
534
|
-
const jsi::Value* arguments,
|
|
535
|
-
size_t count) -> jsi::Value {
|
|
536
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
537
|
-
|
|
538
|
-
auto eventHandler =
|
|
539
|
-
arguments[0].getObject(runtime).getFunction(runtime);
|
|
540
|
-
eventHandler_ =
|
|
541
|
-
std::make_unique<EventHandlerWrapper>(std::move(eventHandler));
|
|
542
|
-
return jsi::Value::undefined();
|
|
543
|
-
});
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
if (methodName == "getRelativeLayoutMetrics") {
|
|
547
|
-
auto paramCount = 2;
|
|
548
|
-
return jsi::Function::createFromHostFunction(
|
|
549
|
-
runtime,
|
|
550
|
-
name,
|
|
551
|
-
paramCount,
|
|
552
|
-
[uiManager, methodName, paramCount](
|
|
553
|
-
jsi::Runtime& runtime,
|
|
554
|
-
const jsi::Value& /*thisValue*/,
|
|
555
|
-
const jsi::Value* arguments,
|
|
556
|
-
size_t count) -> jsi::Value {
|
|
557
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
558
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ true};
|
|
559
|
-
|
|
560
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
561
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
562
|
-
shadowNodeFromValue(runtime, arguments[1]).get(),
|
|
563
|
-
policy);
|
|
564
|
-
auto frame = layoutMetrics.frame;
|
|
565
|
-
auto result = jsi::Object(runtime);
|
|
566
|
-
result.setProperty(runtime, "left", frame.origin.x);
|
|
567
|
-
result.setProperty(runtime, "top", frame.origin.y);
|
|
568
|
-
result.setProperty(runtime, "width", frame.size.width);
|
|
569
|
-
result.setProperty(runtime, "height", frame.size.height);
|
|
570
|
-
return result;
|
|
571
|
-
});
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
if (methodName == "dispatchCommand") {
|
|
575
|
-
auto paramCount = 3;
|
|
576
|
-
return jsi::Function::createFromHostFunction(
|
|
577
|
-
runtime,
|
|
578
|
-
name,
|
|
579
|
-
paramCount,
|
|
580
|
-
[uiManager, methodName, paramCount](
|
|
581
|
-
jsi::Runtime& runtime,
|
|
582
|
-
const jsi::Value& /*thisValue*/,
|
|
583
|
-
const jsi::Value* arguments,
|
|
584
|
-
size_t count) -> jsi::Value {
|
|
585
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
586
|
-
|
|
587
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
588
|
-
if (shadowNode) {
|
|
589
|
-
uiManager->dispatchCommand(
|
|
590
|
-
shadowNode,
|
|
591
|
-
stringFromValue(runtime, arguments[1]),
|
|
592
|
-
commandArgsFromValue(runtime, arguments[2]));
|
|
593
|
-
}
|
|
594
|
-
return jsi::Value::undefined();
|
|
595
|
-
});
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
if (methodName == "setNativeProps") {
|
|
599
|
-
auto paramCount = 2;
|
|
600
|
-
return jsi::Function::createFromHostFunction(
|
|
601
|
-
runtime,
|
|
602
|
-
name,
|
|
603
|
-
paramCount,
|
|
604
|
-
[uiManager, methodName, paramCount](
|
|
605
|
-
jsi::Runtime& runtime,
|
|
606
|
-
const jsi::Value&,
|
|
607
|
-
const jsi::Value* arguments,
|
|
608
|
-
size_t count) -> jsi::Value {
|
|
609
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
610
|
-
|
|
611
|
-
uiManager->setNativeProps_DEPRECATED(
|
|
612
|
-
shadowNodeFromValue(runtime, arguments[0]),
|
|
613
|
-
RawProps(runtime, arguments[1]));
|
|
614
|
-
|
|
615
|
-
return jsi::Value::undefined();
|
|
616
|
-
});
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
// Legacy API
|
|
620
|
-
if (methodName == "measureLayout") {
|
|
621
|
-
auto paramCount = 4;
|
|
622
|
-
return jsi::Function::createFromHostFunction(
|
|
623
|
-
runtime,
|
|
624
|
-
name,
|
|
625
|
-
paramCount,
|
|
626
|
-
[uiManager, methodName, paramCount](
|
|
627
|
-
jsi::Runtime& runtime,
|
|
628
|
-
const jsi::Value& /*thisValue*/,
|
|
629
|
-
const jsi::Value* arguments,
|
|
630
|
-
size_t count) {
|
|
631
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
632
|
-
|
|
633
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
634
|
-
|
|
635
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
636
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
637
|
-
shadowNodeFromValue(runtime, arguments[1]).get(),
|
|
638
|
-
policy);
|
|
639
|
-
|
|
640
|
-
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
641
|
-
auto onFailFunction =
|
|
642
|
-
arguments[2].getObject(runtime).getFunction(runtime);
|
|
643
|
-
onFailFunction.call(runtime);
|
|
644
|
-
return jsi::Value::undefined();
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
auto onSuccessFunction =
|
|
648
|
-
arguments[3].getObject(runtime).getFunction(runtime);
|
|
649
|
-
auto frame = layoutMetrics.frame;
|
|
650
|
-
|
|
651
|
-
onSuccessFunction.call(
|
|
652
|
-
runtime,
|
|
653
|
-
{jsi::Value{(double)frame.origin.x},
|
|
654
|
-
jsi::Value{(double)frame.origin.y},
|
|
655
|
-
jsi::Value{(double)frame.size.width},
|
|
656
|
-
jsi::Value{(double)frame.size.height}});
|
|
657
|
-
return jsi::Value::undefined();
|
|
658
|
-
});
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
if (methodName == "measure") {
|
|
662
|
-
auto paramCount = 2;
|
|
663
|
-
return jsi::Function::createFromHostFunction(
|
|
664
|
-
runtime,
|
|
665
|
-
name,
|
|
666
|
-
paramCount,
|
|
667
|
-
[uiManager, methodName, paramCount](
|
|
668
|
-
jsi::Runtime& runtime,
|
|
669
|
-
const jsi::Value& /*thisValue*/,
|
|
670
|
-
const jsi::Value* arguments,
|
|
671
|
-
size_t count) {
|
|
672
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
673
|
-
|
|
674
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
675
|
-
|
|
676
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
677
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
678
|
-
*shadowNode, nullptr, policy);
|
|
679
|
-
auto onSuccessFunction =
|
|
680
|
-
arguments[1].getObject(runtime).getFunction(runtime);
|
|
681
|
-
|
|
682
|
-
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
683
|
-
onSuccessFunction.call(runtime, {0, 0, 0, 0, 0, 0});
|
|
684
|
-
return jsi::Value::undefined();
|
|
685
|
-
}
|
|
686
|
-
auto newestCloneOfShadowNode =
|
|
687
|
-
uiManager->getNewestCloneOfShadowNode(*shadowNode);
|
|
688
|
-
|
|
689
|
-
auto layoutableShadowNode = traitCast<LayoutableShadowNode const*>(
|
|
690
|
-
newestCloneOfShadowNode.get());
|
|
691
|
-
Point originRelativeToParent = layoutableShadowNode != nullptr
|
|
692
|
-
? layoutableShadowNode->getLayoutMetrics().frame.origin
|
|
693
|
-
: Point();
|
|
694
|
-
|
|
695
|
-
auto frame = layoutMetrics.frame;
|
|
696
|
-
onSuccessFunction.call(
|
|
697
|
-
runtime,
|
|
698
|
-
{jsi::Value{(double)originRelativeToParent.x},
|
|
699
|
-
jsi::Value{(double)originRelativeToParent.y},
|
|
700
|
-
jsi::Value{(double)frame.size.width},
|
|
701
|
-
jsi::Value{(double)frame.size.height},
|
|
702
|
-
jsi::Value{(double)frame.origin.x},
|
|
703
|
-
jsi::Value{(double)frame.origin.y}});
|
|
704
|
-
return jsi::Value::undefined();
|
|
705
|
-
});
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
if (methodName == "measureInWindow") {
|
|
709
|
-
auto paramCount = 2;
|
|
710
|
-
return jsi::Function::createFromHostFunction(
|
|
711
|
-
runtime,
|
|
712
|
-
name,
|
|
713
|
-
paramCount,
|
|
714
|
-
[uiManager, methodName, paramCount](
|
|
715
|
-
jsi::Runtime& runtime,
|
|
716
|
-
const jsi::Value& /*thisValue*/,
|
|
717
|
-
const jsi::Value* arguments,
|
|
718
|
-
size_t count) {
|
|
719
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
720
|
-
|
|
721
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false, /* .includeViewportOffset = */ true};
|
|
722
|
-
|
|
723
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
724
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
725
|
-
nullptr,
|
|
726
|
-
policy);
|
|
727
|
-
|
|
728
|
-
auto onSuccessFunction =
|
|
729
|
-
arguments[1].getObject(runtime).getFunction(runtime);
|
|
730
|
-
|
|
731
|
-
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
732
|
-
onSuccessFunction.call(runtime, {0, 0, 0, 0});
|
|
733
|
-
return jsi::Value::undefined();
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
auto frame = layoutMetrics.frame;
|
|
737
|
-
onSuccessFunction.call(
|
|
738
|
-
runtime,
|
|
739
|
-
{jsi::Value{(double)frame.origin.x},
|
|
740
|
-
jsi::Value{(double)frame.origin.y},
|
|
741
|
-
jsi::Value{(double)frame.size.width},
|
|
742
|
-
jsi::Value{(double)frame.size.height}});
|
|
743
|
-
return jsi::Value::undefined();
|
|
744
|
-
});
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
if (methodName == "sendAccessibilityEvent") {
|
|
748
|
-
auto paramCount = 2;
|
|
749
|
-
return jsi::Function::createFromHostFunction(
|
|
750
|
-
runtime,
|
|
751
|
-
name,
|
|
752
|
-
paramCount,
|
|
753
|
-
[uiManager, methodName, paramCount](
|
|
754
|
-
jsi::Runtime& runtime,
|
|
755
|
-
const jsi::Value& /*thisValue*/,
|
|
756
|
-
const jsi::Value* arguments,
|
|
757
|
-
size_t count) -> jsi::Value {
|
|
758
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
759
|
-
|
|
760
|
-
uiManager->sendAccessibilityEvent(
|
|
761
|
-
shadowNodeFromValue(runtime, arguments[0]),
|
|
762
|
-
stringFromValue(runtime, arguments[1]));
|
|
763
|
-
|
|
764
|
-
return jsi::Value::undefined();
|
|
765
|
-
});
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
if (methodName == "configureNextLayoutAnimation") {
|
|
769
|
-
auto paramCount = 3;
|
|
770
|
-
return jsi::Function::createFromHostFunction(
|
|
771
|
-
runtime,
|
|
772
|
-
name,
|
|
773
|
-
paramCount,
|
|
774
|
-
[uiManager, methodName, paramCount](
|
|
775
|
-
jsi::Runtime& runtime,
|
|
776
|
-
const jsi::Value& /*thisValue*/,
|
|
777
|
-
const jsi::Value* arguments,
|
|
778
|
-
size_t count) -> jsi::Value {
|
|
779
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
780
|
-
|
|
781
|
-
uiManager->configureNextLayoutAnimation(
|
|
782
|
-
runtime,
|
|
783
|
-
// TODO: pass in JSI value instead of folly::dynamic to RawValue
|
|
784
|
-
RawValue(commandArgsFromValue(runtime, arguments[0])),
|
|
785
|
-
arguments[1],
|
|
786
|
-
arguments[2]);
|
|
787
|
-
return jsi::Value::undefined();
|
|
788
|
-
});
|
|
789
|
-
}
|
|
790
|
-
|
|
791
|
-
if (methodName == "unstable_getCurrentEventPriority") {
|
|
792
|
-
return jsi::Function::createFromHostFunction(
|
|
793
|
-
runtime,
|
|
794
|
-
name,
|
|
795
|
-
0,
|
|
796
|
-
[this](
|
|
797
|
-
jsi::Runtime& /*runtime*/,
|
|
798
|
-
const jsi::Value& /*thisValue*/,
|
|
799
|
-
const jsi::Value* /*arguments*/,
|
|
800
|
-
size_t /*count*/) -> jsi::Value {
|
|
801
|
-
return {serialize(currentEventPriority_)};
|
|
802
|
-
});
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
if (methodName == "unstable_DefaultEventPriority") {
|
|
806
|
-
return {serialize(ReactEventPriority::Default)};
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
if (methodName == "unstable_DiscreteEventPriority") {
|
|
810
|
-
return {serialize(ReactEventPriority::Discrete)};
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
if (methodName == "findShadowNodeByTag_DEPRECATED") {
|
|
814
|
-
auto paramCount = 1;
|
|
815
|
-
return jsi::Function::createFromHostFunction(
|
|
816
|
-
runtime,
|
|
817
|
-
name,
|
|
818
|
-
paramCount,
|
|
819
|
-
[uiManager, methodName, paramCount](
|
|
820
|
-
jsi::Runtime& runtime,
|
|
821
|
-
const jsi::Value&,
|
|
822
|
-
const jsi::Value* arguments,
|
|
823
|
-
size_t count) -> jsi::Value {
|
|
824
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
825
|
-
|
|
826
|
-
auto shadowNode = uiManager->findShadowNodeByTag_DEPRECATED(
|
|
827
|
-
tagFromValue(arguments[0]));
|
|
828
|
-
|
|
829
|
-
if (!shadowNode) {
|
|
830
|
-
return jsi::Value::null();
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
return valueFromShadowNode(runtime, shadowNode);
|
|
834
|
-
});
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
/**
|
|
838
|
-
* DOM traversal and layout APIs
|
|
839
|
-
*/
|
|
840
|
-
|
|
841
|
-
if (methodName == "getBoundingClientRect") {
|
|
842
|
-
// This is a React Native implementation of
|
|
843
|
-
// `Element.prototype.getBoundingClientRect` (see
|
|
844
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
|
|
845
|
-
|
|
846
|
-
// This is similar to `measureInWindow`, except it's explicitly synchronous
|
|
847
|
-
// (returns the result instead of passing it to a callback).
|
|
848
|
-
|
|
849
|
-
// It allows indicating whether to include transforms so it can also be used
|
|
850
|
-
// to implement methods like
|
|
851
|
-
// [`offsetWidth`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth)
|
|
852
|
-
// and
|
|
853
|
-
// [`offsetHeight`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight).
|
|
854
|
-
|
|
855
|
-
// getBoundingClientRect(shadowNode: ShadowNode, includeTransform: boolean):
|
|
856
|
-
// [
|
|
857
|
-
// /* x: */ number,
|
|
858
|
-
// /* y: */ number,
|
|
859
|
-
// /* width: */ number,
|
|
860
|
-
// /* height: */ number
|
|
861
|
-
// ]
|
|
862
|
-
auto paramCount = 2;
|
|
863
|
-
return jsi::Function::createFromHostFunction(
|
|
864
|
-
runtime,
|
|
865
|
-
name,
|
|
866
|
-
paramCount,
|
|
867
|
-
[uiManager, methodName, paramCount](
|
|
868
|
-
jsi::Runtime& runtime,
|
|
869
|
-
const jsi::Value& /*thisValue*/,
|
|
870
|
-
const jsi::Value* arguments,
|
|
871
|
-
size_t count) -> jsi::Value {
|
|
872
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
873
|
-
|
|
874
|
-
bool includeTransform = arguments[1].getBool();
|
|
875
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ includeTransform, /* .includeViewportOffset = */ true};
|
|
876
|
-
|
|
877
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
878
|
-
*shadowNodeFromValue(runtime, arguments[0]),
|
|
879
|
-
nullptr,
|
|
880
|
-
policy);
|
|
881
|
-
|
|
882
|
-
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
883
|
-
return jsi::Value::undefined();
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
auto frame = layoutMetrics.frame;
|
|
887
|
-
return jsi::Array::createWithElements(
|
|
888
|
-
runtime,
|
|
889
|
-
jsi::Value{(double)frame.origin.x},
|
|
890
|
-
jsi::Value{(double)frame.origin.y},
|
|
891
|
-
jsi::Value{(double)frame.size.width},
|
|
892
|
-
jsi::Value{(double)frame.size.height});
|
|
893
|
-
});
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
if (methodName == "getParentNode") {
|
|
897
|
-
// This is a React Native implementation of `Node.prototype.parentNode`
|
|
898
|
-
// (see https://developer.mozilla.org/en-US/docs/Web/API/Node/parentNode).
|
|
899
|
-
|
|
900
|
-
// If a version of the given shadow node is present in the current revision
|
|
901
|
-
// of an active shadow tree, it returns the instance handle of its parent.
|
|
902
|
-
// Otherwise, it returns null.
|
|
903
|
-
|
|
904
|
-
// getParent(shadowNode: ShadowNode): ?InstanceHandle
|
|
905
|
-
auto paramCount = 1;
|
|
906
|
-
return jsi::Function::createFromHostFunction(
|
|
907
|
-
runtime,
|
|
908
|
-
name,
|
|
909
|
-
paramCount,
|
|
910
|
-
[uiManager, methodName, paramCount](
|
|
911
|
-
jsi::Runtime& runtime,
|
|
912
|
-
const jsi::Value& /*thisValue*/,
|
|
913
|
-
const jsi::Value* arguments,
|
|
914
|
-
size_t count) -> jsi::Value {
|
|
915
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
916
|
-
|
|
917
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
918
|
-
auto parentShadowNode =
|
|
919
|
-
uiManager->getNewestParentOfShadowNode(*shadowNode);
|
|
920
|
-
|
|
921
|
-
// shadowNode is a RootShadowNode
|
|
922
|
-
if (!parentShadowNode) {
|
|
923
|
-
return jsi::Value::null();
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
return (*parentShadowNode).getInstanceHandle(runtime);
|
|
927
|
-
});
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
if (methodName == "getChildNodes") {
|
|
931
|
-
// This is a React Native implementation of `Node.prototype.childNodes`
|
|
932
|
-
// (see https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes).
|
|
933
|
-
|
|
934
|
-
// If a version of the given shadow node is present in the current revision
|
|
935
|
-
// of an active shadow tree, it returns an array of instance handles of its
|
|
936
|
-
// children. Otherwise, it returns an empty array.
|
|
937
|
-
|
|
938
|
-
// getChildren(shadowNode: ShadowNode): Array<InstanceHandle>
|
|
939
|
-
auto paramCount = 1;
|
|
940
|
-
return jsi::Function::createFromHostFunction(
|
|
941
|
-
runtime,
|
|
942
|
-
name,
|
|
943
|
-
paramCount,
|
|
944
|
-
[uiManager, methodName, paramCount](
|
|
945
|
-
jsi::Runtime& runtime,
|
|
946
|
-
const jsi::Value& /*thisValue*/,
|
|
947
|
-
const jsi::Value* arguments,
|
|
948
|
-
size_t count) -> jsi::Value {
|
|
949
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
950
|
-
|
|
951
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
952
|
-
|
|
953
|
-
auto newestCloneOfShadowNode =
|
|
954
|
-
uiManager->getNewestCloneOfShadowNode(*shadowNode);
|
|
955
|
-
|
|
956
|
-
// There's no version of this node in the current shadow tree
|
|
957
|
-
if (newestCloneOfShadowNode == nullptr) {
|
|
958
|
-
return jsi::Array(runtime, 0);
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
auto childShadowNodes = newestCloneOfShadowNode->getChildren();
|
|
962
|
-
return getArrayOfInstanceHandlesFromShadowNodes(
|
|
963
|
-
childShadowNodes, runtime);
|
|
964
|
-
});
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
if (methodName == "isConnected") {
|
|
968
|
-
// This is a React Native implementation of `Node.prototype.isConnected`
|
|
969
|
-
// (see https://developer.mozilla.org/en-US/docs/Web/API/Node/isConnected).
|
|
970
|
-
|
|
971
|
-
// Indicates whether a version of the given shadow node is present in
|
|
972
|
-
// the current revision of an active shadow tree.
|
|
973
|
-
|
|
974
|
-
// isConnected(shadowNode: ShadowNode): boolean
|
|
975
|
-
auto paramCount = 1;
|
|
976
|
-
return jsi::Function::createFromHostFunction(
|
|
977
|
-
runtime,
|
|
978
|
-
name,
|
|
979
|
-
paramCount,
|
|
980
|
-
[uiManager, methodName, paramCount](
|
|
981
|
-
jsi::Runtime& runtime,
|
|
982
|
-
const jsi::Value& /*thisValue*/,
|
|
983
|
-
const jsi::Value* arguments,
|
|
984
|
-
size_t count) -> jsi::Value {
|
|
985
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
986
|
-
|
|
987
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
988
|
-
|
|
989
|
-
auto newestCloneOfShadowNode =
|
|
990
|
-
uiManager->getNewestCloneOfShadowNode(*shadowNode);
|
|
991
|
-
|
|
992
|
-
return jsi::Value(newestCloneOfShadowNode != nullptr);
|
|
993
|
-
});
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
if (methodName == "compareDocumentPosition") {
|
|
997
|
-
// This is a React Native implementation of
|
|
998
|
-
// `Node.prototype.compareDocumentPosition` (see
|
|
999
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition).
|
|
1000
|
-
|
|
1001
|
-
// It uses the version of the shadow nodes that are present in the current
|
|
1002
|
-
// revision of the shadow tree (if any). If any of the nodes is not present,
|
|
1003
|
-
// it just indicates they are disconnected.
|
|
1004
|
-
|
|
1005
|
-
// compareDocumentPosition(shadowNode: ShadowNode, otherShadowNode:
|
|
1006
|
-
// ShadowNode): number
|
|
1007
|
-
auto paramCount = 2;
|
|
1008
|
-
return jsi::Function::createFromHostFunction(
|
|
1009
|
-
runtime,
|
|
1010
|
-
name,
|
|
1011
|
-
paramCount,
|
|
1012
|
-
[uiManager, methodName, paramCount](
|
|
1013
|
-
jsi::Runtime& runtime,
|
|
1014
|
-
const jsi::Value& /*thisValue*/,
|
|
1015
|
-
const jsi::Value* arguments,
|
|
1016
|
-
size_t count) -> jsi::Value {
|
|
1017
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1018
|
-
|
|
1019
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1020
|
-
auto otherShadowNode = shadowNodeFromValue(runtime, arguments[1]);
|
|
1021
|
-
|
|
1022
|
-
auto documentPosition =
|
|
1023
|
-
uiManager->compareDocumentPosition(*shadowNode, *otherShadowNode);
|
|
1024
|
-
|
|
1025
|
-
return jsi::Value(documentPosition);
|
|
1026
|
-
});
|
|
1027
|
-
}
|
|
1028
|
-
|
|
1029
|
-
if (methodName == "getTextContent") {
|
|
1030
|
-
// This is a React Native implementation of
|
|
1031
|
-
// `Element.prototype.textContent` (see
|
|
1032
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/textContent).
|
|
1033
|
-
|
|
1034
|
-
// It uses the version of the shadow node that is present in the current
|
|
1035
|
-
// revision of the shadow tree.
|
|
1036
|
-
// If the version is present, is traverses all its children in DFS and
|
|
1037
|
-
// concatenates all the text contents. Otherwise, it returns an empty
|
|
1038
|
-
// string.
|
|
1039
|
-
|
|
1040
|
-
// This is also used to access the text content of text nodes, which does
|
|
1041
|
-
// not need any traversal.
|
|
1042
|
-
|
|
1043
|
-
// getTextContent(shadowNode: ShadowNode): string
|
|
1044
|
-
auto paramCount = 1;
|
|
1045
|
-
return jsi::Function::createFromHostFunction(
|
|
1046
|
-
runtime,
|
|
1047
|
-
name,
|
|
1048
|
-
paramCount,
|
|
1049
|
-
[uiManager, methodName, paramCount](
|
|
1050
|
-
jsi::Runtime& runtime,
|
|
1051
|
-
const jsi::Value& /*thisValue*/,
|
|
1052
|
-
const jsi::Value* arguments,
|
|
1053
|
-
size_t count) -> jsi::Value {
|
|
1054
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1055
|
-
|
|
1056
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1057
|
-
|
|
1058
|
-
auto textContent =
|
|
1059
|
-
uiManager->getTextContentInNewestCloneOfShadowNode(*shadowNode);
|
|
1060
|
-
|
|
1061
|
-
return jsi::Value(
|
|
1062
|
-
runtime, jsi::String::createFromUtf8(runtime, textContent));
|
|
1063
|
-
});
|
|
1064
|
-
}
|
|
1065
|
-
|
|
1066
|
-
if (methodName == "getOffset") {
|
|
1067
|
-
// This is a method to access the offset information for a shadow node, to
|
|
1068
|
-
// implement these methods:
|
|
1069
|
-
// * `HTMLElement.prototype.offsetParent`: see
|
|
1070
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent.
|
|
1071
|
-
// * `HTMLElement.prototype.offsetTop`: see
|
|
1072
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop.
|
|
1073
|
-
// * `HTMLElement.prototype.offsetLeft`: see
|
|
1074
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetLeft.
|
|
1075
|
-
|
|
1076
|
-
// It uses the version of the shadow node that is present in the current
|
|
1077
|
-
// revision of the shadow tree. If the node is not present or is not
|
|
1078
|
-
// displayed (because any of its ancestors or itself have 'display: none'),
|
|
1079
|
-
// it returns undefined. Otherwise, it returns its parent (as all nodes in
|
|
1080
|
-
// React Native are currently "positioned") and its offset relative to its
|
|
1081
|
-
// parent.
|
|
1082
|
-
|
|
1083
|
-
// getOffset(shadowNode: ShadowNode):
|
|
1084
|
-
// ?[
|
|
1085
|
-
// /* parent: */ InstanceHandle,
|
|
1086
|
-
// /* top: */ number,
|
|
1087
|
-
// /* left: */ number,
|
|
1088
|
-
// ]
|
|
1089
|
-
auto paramCount = 1;
|
|
1090
|
-
return jsi::Function::createFromHostFunction(
|
|
1091
|
-
runtime,
|
|
1092
|
-
name,
|
|
1093
|
-
paramCount,
|
|
1094
|
-
[uiManager, methodName, paramCount](
|
|
1095
|
-
jsi::Runtime& runtime,
|
|
1096
|
-
const jsi::Value& /*thisValue*/,
|
|
1097
|
-
const jsi::Value* arguments,
|
|
1098
|
-
size_t count) -> jsi::Value {
|
|
1099
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1100
|
-
|
|
1101
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1102
|
-
|
|
1103
|
-
auto newestCloneOfShadowNode =
|
|
1104
|
-
uiManager->getNewestCloneOfShadowNode(*shadowNode);
|
|
1105
|
-
auto newestParentOfShadowNode =
|
|
1106
|
-
uiManager->getNewestParentOfShadowNode(*shadowNode);
|
|
1107
|
-
// The node is no longer part of an active shadow tree, or it is the
|
|
1108
|
-
// root node
|
|
1109
|
-
if (newestCloneOfShadowNode == nullptr ||
|
|
1110
|
-
newestParentOfShadowNode == nullptr) {
|
|
1111
|
-
return jsi::Value::undefined();
|
|
1112
|
-
}
|
|
1113
|
-
|
|
1114
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
1115
|
-
|
|
1116
|
-
// If the node is not displayed (itself or any of its ancestors has
|
|
1117
|
-
// "display: none"), this returns an empty layout metrics object.
|
|
1118
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
1119
|
-
*shadowNode, nullptr, policy);
|
|
1120
|
-
|
|
1121
|
-
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
1122
|
-
return jsi::Value::undefined();
|
|
1123
|
-
}
|
|
1124
|
-
|
|
1125
|
-
auto layoutableShadowNode = traitCast<LayoutableShadowNode const*>(
|
|
1126
|
-
newestCloneOfShadowNode.get());
|
|
1127
|
-
// This should never happen
|
|
1128
|
-
if (layoutableShadowNode == nullptr) {
|
|
1129
|
-
return jsi::Value::undefined();
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
auto layoutableParentShadowNode =
|
|
1133
|
-
traitCast<LayoutableShadowNode const*>(
|
|
1134
|
-
newestParentOfShadowNode.get());
|
|
1135
|
-
// This should never happen
|
|
1136
|
-
if (layoutableParentShadowNode == nullptr) {
|
|
1137
|
-
return jsi::Value::undefined();
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
auto originRelativeToParentOuterBorder =
|
|
1141
|
-
layoutableShadowNode->getLayoutMetrics().frame.origin;
|
|
1142
|
-
|
|
1143
|
-
// On the Web, offsets are computed from the inner border of the
|
|
1144
|
-
// parent.
|
|
1145
|
-
auto offsetTop = originRelativeToParentOuterBorder.y -
|
|
1146
|
-
layoutableParentShadowNode->getLayoutMetrics().borderWidth.top;
|
|
1147
|
-
auto offsetLeft = originRelativeToParentOuterBorder.x -
|
|
1148
|
-
layoutableParentShadowNode->getLayoutMetrics().borderWidth.left;
|
|
1149
|
-
|
|
1150
|
-
return jsi::Array::createWithElements(
|
|
1151
|
-
runtime,
|
|
1152
|
-
(*newestParentOfShadowNode).getInstanceHandle(runtime),
|
|
1153
|
-
jsi::Value{(double)offsetTop},
|
|
1154
|
-
jsi::Value{(double)offsetLeft});
|
|
1155
|
-
});
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
|
-
if (methodName == "getScrollPosition") {
|
|
1159
|
-
// This is a method to access scroll information for a shadow node, to
|
|
1160
|
-
// implement these methods:
|
|
1161
|
-
// * `Element.prototype.scrollLeft`: see
|
|
1162
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft.
|
|
1163
|
-
// * `Element.prototype.scrollTop`: see
|
|
1164
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop.
|
|
1165
|
-
|
|
1166
|
-
// It uses the version of the shadow node that is present in the current
|
|
1167
|
-
// revision of the shadow tree. If the node is not present or is not
|
|
1168
|
-
// displayed (because any of its ancestors or itself have 'display: none'),
|
|
1169
|
-
// it returns undefined. Otherwise, it returns the scroll position.
|
|
1170
|
-
|
|
1171
|
-
// getScrollPosition(shadowNode: ShadowNode):
|
|
1172
|
-
// ?[
|
|
1173
|
-
// /* scrollLeft: */ number,
|
|
1174
|
-
// /* scrollTop: */ number,
|
|
1175
|
-
// ]
|
|
1176
|
-
auto paramCount = 1;
|
|
1177
|
-
return jsi::Function::createFromHostFunction(
|
|
1178
|
-
runtime,
|
|
1179
|
-
name,
|
|
1180
|
-
paramCount,
|
|
1181
|
-
[uiManager, methodName, paramCount](
|
|
1182
|
-
jsi::Runtime& runtime,
|
|
1183
|
-
const jsi::Value& /*thisValue*/,
|
|
1184
|
-
const jsi::Value* arguments,
|
|
1185
|
-
size_t count) -> jsi::Value {
|
|
1186
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1187
|
-
|
|
1188
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1189
|
-
|
|
1190
|
-
auto newestCloneOfShadowNode =
|
|
1191
|
-
uiManager->getNewestCloneOfShadowNode(*shadowNode);
|
|
1192
|
-
// The node is no longer part of an active shadow tree, or it is the
|
|
1193
|
-
// root node
|
|
1194
|
-
if (newestCloneOfShadowNode == nullptr) {
|
|
1195
|
-
return jsi::Value::undefined();
|
|
1196
|
-
}
|
|
1197
|
-
|
|
1198
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
1199
|
-
|
|
1200
|
-
// If the node is not displayed (itself or any of its ancestors has
|
|
1201
|
-
// "display: none"), this returns an empty layout metrics object.
|
|
1202
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
1203
|
-
*shadowNode, nullptr, policy);
|
|
1204
|
-
|
|
1205
|
-
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
1206
|
-
return jsi::Value::undefined();
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
|
-
auto layoutableShadowNode = traitCast<LayoutableShadowNode const*>(
|
|
1210
|
-
newestCloneOfShadowNode.get());
|
|
1211
|
-
// This should never happen
|
|
1212
|
-
if (layoutableShadowNode == nullptr) {
|
|
1213
|
-
return jsi::Value::undefined();
|
|
1214
|
-
}
|
|
1215
|
-
|
|
1216
|
-
auto scrollPosition = layoutableShadowNode->getContentOriginOffset();
|
|
1217
|
-
|
|
1218
|
-
return jsi::Array::createWithElements(
|
|
1219
|
-
runtime,
|
|
1220
|
-
jsi::Value{scrollPosition.x == 0 ? 0 : (double)-scrollPosition.x},
|
|
1221
|
-
jsi::Value{scrollPosition.y == 0 ? 0 : (double)-scrollPosition.y});
|
|
1222
|
-
});
|
|
1223
|
-
}
|
|
1224
|
-
|
|
1225
|
-
if (methodName == "getScrollSize") {
|
|
1226
|
-
// This is a method to access the scroll information of a shadow node, to
|
|
1227
|
-
// implement these methods:
|
|
1228
|
-
// * `Element.prototype.scrollWidth`: see
|
|
1229
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollWidth.
|
|
1230
|
-
// * `Element.prototype.scrollHeight`: see
|
|
1231
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight.
|
|
1232
|
-
|
|
1233
|
-
// It uses the version of the shadow node that is present in the current
|
|
1234
|
-
// revision of the shadow tree. If the node is not present or is not
|
|
1235
|
-
// displayed (because any of its ancestors or itself have 'display: none'),
|
|
1236
|
-
// it returns undefined. Otherwise, it returns the scroll size.
|
|
1237
|
-
|
|
1238
|
-
// getScrollSize(shadowNode: ShadowNode):
|
|
1239
|
-
// ?[
|
|
1240
|
-
// /* scrollWidth: */ number,
|
|
1241
|
-
// /* scrollHeight: */ number,
|
|
1242
|
-
// ]
|
|
1243
|
-
auto paramCount = 1;
|
|
1244
|
-
return jsi::Function::createFromHostFunction(
|
|
1245
|
-
runtime,
|
|
1246
|
-
name,
|
|
1247
|
-
paramCount,
|
|
1248
|
-
[uiManager, methodName, paramCount](
|
|
1249
|
-
jsi::Runtime& runtime,
|
|
1250
|
-
const jsi::Value& /*thisValue*/,
|
|
1251
|
-
const jsi::Value* arguments,
|
|
1252
|
-
size_t count) -> jsi::Value {
|
|
1253
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1254
|
-
|
|
1255
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1256
|
-
|
|
1257
|
-
auto newestCloneOfShadowNode =
|
|
1258
|
-
uiManager->getNewestCloneOfShadowNode(*shadowNode);
|
|
1259
|
-
// The node is no longer part of an active shadow tree, or it is the
|
|
1260
|
-
// root node
|
|
1261
|
-
if (newestCloneOfShadowNode == nullptr) {
|
|
1262
|
-
return jsi::Value::undefined();
|
|
1263
|
-
}
|
|
1264
|
-
|
|
1265
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
1266
|
-
|
|
1267
|
-
// If the node is not displayed (itself or any of its ancestors has
|
|
1268
|
-
// "display: none"), this returns an empty layout metrics object.
|
|
1269
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
1270
|
-
*shadowNode, nullptr, policy);
|
|
1271
|
-
|
|
1272
|
-
if (layoutMetrics == EmptyLayoutMetrics ||
|
|
1273
|
-
layoutMetrics.displayType == DisplayType::Inline) {
|
|
1274
|
-
return jsi::Value::undefined();
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1277
|
-
auto layoutableShadowNode =
|
|
1278
|
-
traitCast<YogaLayoutableShadowNode const*>(
|
|
1279
|
-
newestCloneOfShadowNode.get());
|
|
1280
|
-
// This should never happen
|
|
1281
|
-
if (layoutableShadowNode == nullptr) {
|
|
1282
|
-
return jsi::Value::undefined();
|
|
1283
|
-
}
|
|
1284
|
-
|
|
1285
|
-
Size scrollSize = getScrollSize(
|
|
1286
|
-
layoutMetrics, layoutableShadowNode->getContentBounds());
|
|
1287
|
-
|
|
1288
|
-
return jsi::Array::createWithElements(
|
|
1289
|
-
runtime,
|
|
1290
|
-
jsi::Value{(double)std::round(scrollSize.width)},
|
|
1291
|
-
jsi::Value{(double)std::round(scrollSize.height)});
|
|
1292
|
-
});
|
|
1293
|
-
}
|
|
1294
|
-
|
|
1295
|
-
if (methodName == "getInnerSize") {
|
|
1296
|
-
// This is a method to access the inner size of a shadow node, to implement
|
|
1297
|
-
// these methods:
|
|
1298
|
-
// * `Element.prototype.clientWidth`: see
|
|
1299
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth.
|
|
1300
|
-
// * `Element.prototype.clientHeight`: see
|
|
1301
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight.
|
|
1302
|
-
|
|
1303
|
-
// It uses the version of the shadow node that is present in the current
|
|
1304
|
-
// revision of the shadow tree. If the node is not present, it is not
|
|
1305
|
-
// displayed (because any of its ancestors or itself have 'display: none'),
|
|
1306
|
-
// or it has an inline display, it returns undefined.
|
|
1307
|
-
// Otherwise, it returns its inner size.
|
|
1308
|
-
|
|
1309
|
-
// getInnerSize(shadowNode: ShadowNode):
|
|
1310
|
-
// ?[
|
|
1311
|
-
// /* width: */ number,
|
|
1312
|
-
// /* height: */ number,
|
|
1313
|
-
// ]
|
|
1314
|
-
auto paramCount = 1;
|
|
1315
|
-
return jsi::Function::createFromHostFunction(
|
|
1316
|
-
runtime,
|
|
1317
|
-
name,
|
|
1318
|
-
paramCount,
|
|
1319
|
-
[uiManager, methodName, paramCount](
|
|
1320
|
-
jsi::Runtime& runtime,
|
|
1321
|
-
const jsi::Value& /*thisValue*/,
|
|
1322
|
-
const jsi::Value* arguments,
|
|
1323
|
-
size_t count) -> jsi::Value {
|
|
1324
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1325
|
-
|
|
1326
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1327
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
1328
|
-
// If the node is not displayed (itself or any of its ancestors has
|
|
1329
|
-
// "display: none"), this returns an empty layout metrics object.
|
|
1330
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
1331
|
-
*shadowNode, nullptr, policy);
|
|
1332
|
-
|
|
1333
|
-
if (layoutMetrics == EmptyLayoutMetrics ||
|
|
1334
|
-
layoutMetrics.displayType == DisplayType::Inline) {
|
|
1335
|
-
return jsi::Value::undefined();
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
|
-
auto paddingFrame = layoutMetrics.getPaddingFrame();
|
|
1339
|
-
|
|
1340
|
-
return jsi::Array::createWithElements(
|
|
1341
|
-
runtime,
|
|
1342
|
-
jsi::Value{(double)std::round(paddingFrame.size.width)},
|
|
1343
|
-
jsi::Value{(double)std::round(paddingFrame.size.height)});
|
|
1344
|
-
});
|
|
1345
|
-
}
|
|
1346
|
-
|
|
1347
|
-
if (methodName == "getBorderSize") {
|
|
1348
|
-
// This is a method to access the border size of a shadow node, to implement
|
|
1349
|
-
// these methods:
|
|
1350
|
-
// * `Element.prototype.clientLeft`: see
|
|
1351
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/clientLeft.
|
|
1352
|
-
// * `Element.prototype.clientTop`: see
|
|
1353
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/clientTop.
|
|
1354
|
-
|
|
1355
|
-
// It uses the version of the shadow node that is present in the current
|
|
1356
|
-
// revision of the shadow tree. If the node is not present, it is not
|
|
1357
|
-
// displayed (because any of its ancestors or itself have 'display: none'),
|
|
1358
|
-
// or it has an inline display, it returns undefined.
|
|
1359
|
-
// Otherwise, it returns its border size.
|
|
1360
|
-
|
|
1361
|
-
// getBorderSize(shadowNode: ShadowNode):
|
|
1362
|
-
// ?[
|
|
1363
|
-
// /* topWidth: */ number,
|
|
1364
|
-
// /* rightWidth: */ number,
|
|
1365
|
-
// /* bottomWidth: */ number,
|
|
1366
|
-
// /* leftWidth: */ number,
|
|
1367
|
-
// ]
|
|
1368
|
-
auto paramCount = 1;
|
|
1369
|
-
return jsi::Function::createFromHostFunction(
|
|
1370
|
-
runtime,
|
|
1371
|
-
name,
|
|
1372
|
-
paramCount,
|
|
1373
|
-
[uiManager, methodName, paramCount](
|
|
1374
|
-
jsi::Runtime& runtime,
|
|
1375
|
-
const jsi::Value& /*thisValue*/,
|
|
1376
|
-
const jsi::Value* arguments,
|
|
1377
|
-
size_t count) -> jsi::Value {
|
|
1378
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1379
|
-
|
|
1380
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1381
|
-
LayoutableShadowNode::LayoutInspectingPolicy policy = {/* .includeTransform = */ false};
|
|
1382
|
-
// If the node is not displayed (itself or any of its ancestors has
|
|
1383
|
-
// "display: none"), this returns an empty layout metrics object.
|
|
1384
|
-
auto layoutMetrics = uiManager->getRelativeLayoutMetrics(
|
|
1385
|
-
*shadowNode, nullptr, policy);
|
|
1386
|
-
|
|
1387
|
-
if (layoutMetrics == EmptyLayoutMetrics ||
|
|
1388
|
-
layoutMetrics.displayType == DisplayType::Inline) {
|
|
1389
|
-
return jsi::Value::undefined();
|
|
1390
|
-
}
|
|
1391
|
-
|
|
1392
|
-
return jsi::Array::createWithElements(
|
|
1393
|
-
runtime,
|
|
1394
|
-
jsi::Value{(double)std::round(layoutMetrics.borderWidth.top)},
|
|
1395
|
-
jsi::Value{(double)std::round(layoutMetrics.borderWidth.right)},
|
|
1396
|
-
jsi::Value{(double)std::round(layoutMetrics.borderWidth.bottom)},
|
|
1397
|
-
jsi::Value{(double)std::round(layoutMetrics.borderWidth.left)});
|
|
1398
|
-
});
|
|
1399
|
-
}
|
|
1400
|
-
|
|
1401
|
-
if (methodName == "getTagName") {
|
|
1402
|
-
// This is a method to access the normalized tag name of a shadow node, to
|
|
1403
|
-
// implement `Element.prototype.tagName` (see
|
|
1404
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName).
|
|
1405
|
-
|
|
1406
|
-
// getTagName(shadowNode: ShadowNode): string
|
|
1407
|
-
auto paramCount = 1;
|
|
1408
|
-
return jsi::Function::createFromHostFunction(
|
|
1409
|
-
runtime,
|
|
1410
|
-
name,
|
|
1411
|
-
paramCount,
|
|
1412
|
-
[methodName, paramCount](
|
|
1413
|
-
jsi::Runtime& runtime,
|
|
1414
|
-
const jsi::Value& /*thisValue*/,
|
|
1415
|
-
const jsi::Value* arguments,
|
|
1416
|
-
size_t count) -> jsi::Value {
|
|
1417
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1418
|
-
|
|
1419
|
-
auto shadowNode = shadowNodeFromValue(runtime, arguments[0]);
|
|
1420
|
-
|
|
1421
|
-
std::string canonicalComponentName = shadowNode->getComponentName();
|
|
1422
|
-
|
|
1423
|
-
// FIXME(T162807327): Remove Android-specific prefixes and unify
|
|
1424
|
-
// shadow node implementations
|
|
1425
|
-
if (canonicalComponentName == "AndroidTextInput") {
|
|
1426
|
-
canonicalComponentName = "TextInput";
|
|
1427
|
-
} else if (canonicalComponentName == "AndroidSwitch") {
|
|
1428
|
-
canonicalComponentName = "Switch";
|
|
1429
|
-
}
|
|
1430
|
-
|
|
1431
|
-
// Prefix with RN:
|
|
1432
|
-
canonicalComponentName.insert(0, "RN:");
|
|
1433
|
-
|
|
1434
|
-
return jsi::String::createFromUtf8(runtime, canonicalComponentName);
|
|
1435
|
-
});
|
|
1436
|
-
}
|
|
1437
|
-
|
|
1438
|
-
/**
|
|
1439
|
-
* Pointer Capture APIs
|
|
1440
|
-
*/
|
|
1441
|
-
if (methodName == "hasPointerCapture") {
|
|
1442
|
-
auto paramCount = 2;
|
|
1443
|
-
return jsi::Function::createFromHostFunction(
|
|
1444
|
-
runtime,
|
|
1445
|
-
name,
|
|
1446
|
-
paramCount,
|
|
1447
|
-
[this, methodName, paramCount](
|
|
1448
|
-
jsi::Runtime& runtime,
|
|
1449
|
-
const jsi::Value& /*thisValue*/,
|
|
1450
|
-
const jsi::Value* arguments,
|
|
1451
|
-
size_t count) -> jsi::Value {
|
|
1452
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1453
|
-
bool isCapturing = pointerEventsProcessor_.hasPointerCapture(
|
|
1454
|
-
static_cast<int>(arguments[1].asNumber()),
|
|
1455
|
-
shadowNodeFromValue(runtime, arguments[0]).get());
|
|
1456
|
-
return jsi::Value(isCapturing);
|
|
1457
|
-
});
|
|
1458
|
-
}
|
|
1459
|
-
|
|
1460
|
-
if (methodName == "setPointerCapture") {
|
|
1461
|
-
auto paramCount = 2;
|
|
1462
|
-
return jsi::Function::createFromHostFunction(
|
|
1463
|
-
runtime,
|
|
1464
|
-
name,
|
|
1465
|
-
paramCount,
|
|
1466
|
-
[this, methodName, paramCount](
|
|
1467
|
-
jsi::Runtime& runtime,
|
|
1468
|
-
const jsi::Value& /*thisValue*/,
|
|
1469
|
-
const jsi::Value* arguments,
|
|
1470
|
-
size_t count) -> jsi::Value {
|
|
1471
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1472
|
-
pointerEventsProcessor_.setPointerCapture(
|
|
1473
|
-
static_cast<int>(arguments[1].asNumber()),
|
|
1474
|
-
shadowNodeFromValue(runtime, arguments[0]));
|
|
1475
|
-
return jsi::Value::undefined();
|
|
1476
|
-
});
|
|
1477
|
-
}
|
|
1478
|
-
|
|
1479
|
-
if (methodName == "releasePointerCapture") {
|
|
1480
|
-
auto paramCount = 2;
|
|
1481
|
-
return jsi::Function::createFromHostFunction(
|
|
1482
|
-
runtime,
|
|
1483
|
-
name,
|
|
1484
|
-
paramCount,
|
|
1485
|
-
[this, methodName, paramCount](
|
|
1486
|
-
jsi::Runtime& runtime,
|
|
1487
|
-
const jsi::Value& /*thisValue*/,
|
|
1488
|
-
const jsi::Value* arguments,
|
|
1489
|
-
size_t count) -> jsi::Value {
|
|
1490
|
-
validateArgumentCount(runtime, methodName, paramCount, count);
|
|
1491
|
-
pointerEventsProcessor_.releasePointerCapture(
|
|
1492
|
-
static_cast<int>(arguments[1].asNumber()),
|
|
1493
|
-
shadowNodeFromValue(runtime, arguments[0]).get());
|
|
1494
|
-
return jsi::Value::undefined();
|
|
1495
|
-
});
|
|
1496
|
-
}
|
|
1497
|
-
|
|
1498
|
-
return jsi::Value::undefined();
|
|
1499
|
-
}
|
|
1500
|
-
|
|
1501
|
-
UIManager& UIManagerBinding::getUIManager() {
|
|
1502
|
-
return *uiManager_;
|
|
1503
|
-
}
|
|
1504
|
-
|
|
1505
|
-
} // namespace facebook::react
|