@office-iss/react-native-win32 0.72.8 → 0.73.0-preview.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +15 -5
- package/CHANGELOG.json +530 -101
- package/CHANGELOG.md +213 -56
- package/IntegrationTests/PromiseTest.js +1 -0
- package/IntegrationTests/websocket_integration_test_server.js +1 -1
- package/Libraries/Animated/Animated.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
- package/Libraries/Animated/NativeAnimatedHelper.win32.js +16 -12
- package/Libraries/Animated/NativeAnimatedModule.js +6 -2
- package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
- package/Libraries/Animated/animations/Animation.js +57 -3
- package/Libraries/Animated/animations/DecayAnimation.js +9 -0
- package/Libraries/Animated/animations/SpringAnimation.js +8 -0
- package/Libraries/Animated/animations/TimingAnimation.js +8 -0
- package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
- package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +1 -0
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
- package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
- package/Libraries/Animated/useAnimatedProps.js +9 -10
- package/Libraries/AppState/AppState.d.ts +1 -1
- package/Libraries/AppState/NativeAppState.js +8 -4
- package/Libraries/BatchedBridge/MessageQueue.js +45 -36
- package/Libraries/Blob/Blob.js +6 -2
- package/Libraries/Blob/BlobManager.js +9 -10
- package/Libraries/Blob/BlobRegistry.js +14 -9
- package/Libraries/Blob/File.js +1 -1
- package/Libraries/Blob/FileReader.js +1 -2
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +1 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +7 -48
- package/Libraries/Components/Button/ButtonWin32.Props.d.ts +1 -1
- package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
- package/Libraries/Components/Button/ButtonWin32.d.ts +1 -1
- package/Libraries/Components/Button/ButtonWin32.js +1 -4
- package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
- package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
- package/Libraries/Components/EnterString.win32.d.ts +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
- package/Libraries/Components/Pressable/Pressable.js +3 -2
- package/Libraries/Components/Pressable/Pressable.win32.js +4 -3
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +7 -8
- package/Libraries/Components/ScrollView/ScrollView.js +3 -1
- package/Libraries/Components/ScrollView/ScrollView.win32.js +3 -1
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
- package/Libraries/Components/Switch/Switch.js +1 -0
- package/Libraries/Components/Text/TextWin32.d.ts +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
- package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
- package/Libraries/Components/TextInput/TextInput.js +62 -10
- package/Libraries/Components/TextInput/TextInput.win32.js +953 -206
- package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +23 -0
- package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +9 -1
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +2 -2
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
- package/Libraries/Components/Touchable/TouchableWin32.d.ts +1 -1
- package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
- package/Libraries/Components/View/View.js +46 -32
- package/Libraries/Components/View/View.win32.js +37 -6
- package/Libraries/Components/View/ViewAccessibility.d.ts +8 -2
- package/Libraries/Components/View/ViewNativeComponent.js +1 -0
- package/Libraries/Components/View/ViewPropTypes.js +18 -3
- package/Libraries/Components/View/ViewPropTypes.win32.js +30 -4
- package/Libraries/Components/View/ViewWin32.js +3 -2
- package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
- package/Libraries/Core/ExceptionsManager.js +16 -7
- package/Libraries/Core/ExtendedError.js +12 -0
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +0 -2
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
- package/Libraries/Core/setUpDeveloperTools.js +5 -1
- package/Libraries/Core/setUpIntersectionObserver.js +16 -0
- package/Libraries/{Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → Core/setUpMutationObserver.js} +6 -2
- package/Libraries/Core/setUpPerformance.js +6 -13
- package/Libraries/Core/setUpPerformanceObserver.js +16 -0
- package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
- package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
- package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
- package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
- package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
- package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
- package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
- package/Libraries/Image/Image.android.js +8 -2
- package/Libraries/Image/Image.d.ts +1 -1
- package/Libraries/Image/Image.ios.js +4 -1
- package/Libraries/Image/Image.win32.js +6 -3
- package/Libraries/Image/ImageBackground.js +3 -0
- package/Libraries/Image/resolveAssetSource.win32.js +1 -1
- package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
- package/Libraries/Inspector/NetworkOverlay.js +2 -2
- package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
- package/Libraries/Interaction/PanResponder.js +1 -4
- package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
- package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
- package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +2 -1
- package/Libraries/Lists/FlatList.js +15 -5
- package/Libraries/Lists/SectionList.js +4 -0
- package/Libraries/LogBox/Data/LogBoxData.js +2 -1
- package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
- package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
- package/Libraries/MutationObserver/MutationObserver.js +184 -0
- package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
- package/Libraries/MutationObserver/MutationRecord.js +82 -0
- package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
- package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +33 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +13 -9
- package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
- package/Libraries/Network/RCTNetworking.android.js +2 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
- package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
- package/Libraries/Pressability/Pressability.js +28 -3
- package/Libraries/Pressability/Pressability.win32.js +30 -5
- package/Libraries/ReactNative/AppContainer.js +2 -3
- package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
- package/Libraries/ReactNative/AppRegistry.js +66 -53
- package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
- package/Libraries/ReactNative/FabricUIManager.js +143 -34
- package/Libraries/ReactNative/I18nManager.js +5 -11
- package/Libraries/ReactNative/NativeI18nManager.js +7 -5
- package/Libraries/ReactNative/PaperUIManager.win32.js +2 -2
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
- package/Libraries/ReactNative/UIManager.js +8 -0
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
- package/Libraries/Renderer/shims/ReactFabric.js +5 -6
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
- package/Libraries/Renderer/shims/ReactNative.js +2 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
- package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
- package/Libraries/Share/Share.d.ts +3 -9
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
- package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +14 -4
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
- package/Libraries/StyleSheet/StyleSheet.js +3 -0
- package/Libraries/StyleSheet/StyleSheet.win32.js +3 -0
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
- package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
- package/Libraries/StyleSheet/flattenStyle.js +4 -0
- package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
- package/Libraries/StyleSheet/processColor.js +1 -2
- package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
- package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
- package/Libraries/Text/Text.d.ts +5 -5
- package/Libraries/Text/Text.js +17 -10
- package/Libraries/Text/Text.win32.js +354 -0
- package/Libraries/Text/TextProps.win32.js +281 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
- package/Libraries/Types/CoreEventTypes.d.ts +5 -2
- package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
- package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
- package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
- package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
- package/Libraries/Utilities/Platform.android.js +12 -8
- package/Libraries/Utilities/Platform.d.ts +1 -0
- package/Libraries/Utilities/Platform.flow.js +84 -0
- package/Libraries/Utilities/Platform.flow.win32.js +111 -0
- package/Libraries/Utilities/Platform.ios.js +12 -8
- package/Libraries/Utilities/Platform.win32.js +12 -8
- package/Libraries/Utilities/PolyfillFunctions.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/createPerformanceLogger.js +63 -32
- package/Libraries/Utilities/useColorScheme.js +7 -8
- package/Libraries/WebPerformance/MemoryInfo.js +1 -1
- package/Libraries/WebPerformance/NativePerformance.js +3 -8
- package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
- package/Libraries/WebPerformance/Performance.js +42 -15
- package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
- package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
- package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
- package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
- package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
- package/Libraries/promiseRejectionTrackingOptions.js +21 -9
- package/Libraries/vendor/emitter/EventEmitter.js +17 -17
- package/flow/global.js +1 -3
- package/flow/jest.js +5 -1
- package/{Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
- package/jest/__tests__/setup-test.js +18 -0
- package/jest/mockModal.js +6 -4
- package/jest/setup.js +61 -30
- package/jest.config.js +1 -1
- package/just-task.js +1 -0
- package/overrides.json +54 -60
- package/package.json +35 -33
- package/src/Libraries/Components/Button/ButtonWin32.Props.ts +1 -1
- package/src/Libraries/Components/Button/ButtonWin32.tsx +0 -2
- package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
- package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
- package/src/Libraries/Components/View/ViewAccessibility.d.ts +8 -2
- package/src/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
- package/types/experimental.d.ts +44 -0
- package/types/index.d.ts +2 -1
- package/types/modules/Devtools.d.ts +1 -0
- package/types/modules/globals.d.ts +16 -1
- package/IntegrationTests/BUCK +0 -32
- package/IntegrationTests/PropertiesUpdateTest.js +0 -29
- package/IntegrationTests/RCTRootViewIntegrationTestApp.js +0 -86
- package/IntegrationTests/ReactContentSizeUpdateTest.js +0 -89
- package/IntegrationTests/SizeFlexibilityUpdateTest.js +0 -106
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +0 -37
- package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +0 -51
- package/Libraries/Components/TextInput/TextInput.Types.win32.js +0 -3
- package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +0 -1
- package/Libraries/Utilities/AcessibilityMapping.js +0 -154
- package/Libraries/Utilities/AcessibilityMapping.win32.js +0 -156
- package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
- package/Libraries/Utilities/useColorScheme.win32.js +0 -26
- package/flow/use-sync-external-store.js +0 -20
- package/flow-typed/npm/base64-js_v1.x.x.js +0 -12
- package/flow-typed/npm/glob_v7.x.x.js +0 -79
- package/flow-typed/npm/pretty-format_v26.x.x.js +0 -49
- package/flow-typed/npm/promise_v8.x.x.js +0 -30
- package/flow-typed/npm/react-dom_v17.x.x.js +0 -139
- package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -79
- package/flow-typed/npm/stacktrace-parser_v0.1.x.js +0 -17
- package/flow-typed/npm/yargs_v17.x.x.js +0 -341
- package/src/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +0 -161
- package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +0 -68
- /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
|
@@ -14,26 +14,47 @@ import type {RootTag} from '../Types/RootTagTypes';
|
|
|
14
14
|
|
|
15
15
|
import {unstable_hasComponent} from '../NativeComponent/NativeComponentRegistryUnstable';
|
|
16
16
|
|
|
17
|
+
let cachedConstants = null;
|
|
18
|
+
|
|
17
19
|
const errorMessageForMethod = (methodName: string): string =>
|
|
18
20
|
"[ReactNative Architecture][JS] '" +
|
|
19
21
|
methodName +
|
|
20
22
|
"' is not available in the new React Native architecture.";
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
function nativeViewConfigsInBridgelessModeEnabled(): boolean {
|
|
25
|
+
return global.RN$LegacyInterop_UIManager_getConstants !== undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function getCachedConstants(): Object {
|
|
29
|
+
if (!cachedConstants) {
|
|
30
|
+
cachedConstants = global.RN$LegacyInterop_UIManager_getConstants();
|
|
31
|
+
}
|
|
32
|
+
return cachedConstants;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const UIManagerJS: {[string]: $FlowFixMe} = {
|
|
23
36
|
getViewManagerConfig: (viewManagerName: string): mixed => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
if (nativeViewConfigsInBridgelessModeEnabled()) {
|
|
38
|
+
return getCachedConstants()[viewManagerName];
|
|
39
|
+
} else {
|
|
40
|
+
console.error(
|
|
41
|
+
errorMessageForMethod('getViewManagerConfig') +
|
|
42
|
+
'Use hasViewManagerConfig instead. viewManagerName: ' +
|
|
43
|
+
viewManagerName,
|
|
44
|
+
);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
30
47
|
},
|
|
31
48
|
hasViewManagerConfig: (viewManagerName: string): boolean => {
|
|
32
49
|
return unstable_hasComponent(viewManagerName);
|
|
33
50
|
},
|
|
34
51
|
getConstants: (): Object => {
|
|
35
|
-
|
|
36
|
-
|
|
52
|
+
if (nativeViewConfigsInBridgelessModeEnabled()) {
|
|
53
|
+
return getCachedConstants();
|
|
54
|
+
} else {
|
|
55
|
+
console.error(errorMessageForMethod('getConstants'));
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
37
58
|
},
|
|
38
59
|
getConstantsForViewManager: (viewManagerName: string): Object => {
|
|
39
60
|
console.error(errorMessageForMethod('getConstantsForViewManager'));
|
|
@@ -160,3 +181,11 @@ module.exports = {
|
|
|
160
181
|
dismissPopupMenu: (): void =>
|
|
161
182
|
console.error(errorMessageForMethod('dismissPopupMenu')),
|
|
162
183
|
};
|
|
184
|
+
|
|
185
|
+
if (nativeViewConfigsInBridgelessModeEnabled()) {
|
|
186
|
+
Object.keys(getCachedConstants()).forEach(viewConfigName => {
|
|
187
|
+
UIManagerJS[viewConfigName] = getCachedConstants()[viewConfigName];
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
module.exports = UIManagerJS;
|
|
@@ -11,71 +11,180 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
+
InternalInstanceHandle,
|
|
14
15
|
LayoutAnimationConfig,
|
|
15
16
|
MeasureInWindowOnSuccessCallback,
|
|
16
17
|
MeasureLayoutOnSuccessCallback,
|
|
17
18
|
MeasureOnSuccessCallback,
|
|
19
|
+
Node,
|
|
18
20
|
} from '../Renderer/shims/ReactNativeTypes';
|
|
19
21
|
import type {RootTag} from '../Types/RootTagTypes';
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
type NodeSet = Array<Node>;
|
|
24
|
-
type NodeProps = {...};
|
|
25
|
-
|
|
26
|
-
export type Spec = {|
|
|
23
|
+
import defineLazyObjectProperty from '../Utilities/defineLazyObjectProperty';
|
|
24
|
+
|
|
25
|
+
export type NodeSet = Array<Node>;
|
|
26
|
+
export type NodeProps = {...};
|
|
27
|
+
export interface Spec {
|
|
27
28
|
+createNode: (
|
|
28
29
|
reactTag: number,
|
|
29
30
|
viewName: string,
|
|
30
31
|
rootTag: RootTag,
|
|
31
32
|
props: NodeProps,
|
|
32
|
-
instanceHandle:
|
|
33
|
-
) => Node
|
|
34
|
-
+cloneNode: (node: Node) => Node
|
|
35
|
-
+cloneNodeWithNewChildren: (node: Node) => Node
|
|
36
|
-
+cloneNodeWithNewProps: (node: Node, newProps: NodeProps) => Node
|
|
37
|
-
+cloneNodeWithNewChildrenAndProps: (node: Node, newProps: NodeProps) => Node
|
|
38
|
-
+createChildSet: (rootTag: RootTag) => NodeSet
|
|
39
|
-
+appendChild: (parentNode: Node, child: Node) => Node
|
|
40
|
-
+appendChildToSet: (childSet: NodeSet, child: Node) => void
|
|
41
|
-
+completeRoot: (rootTag: RootTag, childSet: NodeSet) => void
|
|
42
|
-
+measure: (node: Node, callback: MeasureOnSuccessCallback) => void
|
|
33
|
+
instanceHandle: InternalInstanceHandle,
|
|
34
|
+
) => Node;
|
|
35
|
+
+cloneNode: (node: Node) => Node;
|
|
36
|
+
+cloneNodeWithNewChildren: (node: Node) => Node;
|
|
37
|
+
+cloneNodeWithNewProps: (node: Node, newProps: NodeProps) => Node;
|
|
38
|
+
+cloneNodeWithNewChildrenAndProps: (node: Node, newProps: NodeProps) => Node;
|
|
39
|
+
+createChildSet: (rootTag: RootTag) => NodeSet;
|
|
40
|
+
+appendChild: (parentNode: Node, child: Node) => Node;
|
|
41
|
+
+appendChildToSet: (childSet: NodeSet, child: Node) => void;
|
|
42
|
+
+completeRoot: (rootTag: RootTag, childSet: NodeSet) => void;
|
|
43
|
+
+measure: (node: Node, callback: MeasureOnSuccessCallback) => void;
|
|
43
44
|
+measureInWindow: (
|
|
44
45
|
node: Node,
|
|
45
46
|
callback: MeasureInWindowOnSuccessCallback,
|
|
46
|
-
) => void
|
|
47
|
+
) => void;
|
|
47
48
|
+measureLayout: (
|
|
48
49
|
node: Node,
|
|
49
50
|
relativeNode: Node,
|
|
50
51
|
onFail: () => void,
|
|
51
52
|
onSuccess: MeasureLayoutOnSuccessCallback,
|
|
52
|
-
) => void
|
|
53
|
+
) => void;
|
|
53
54
|
+configureNextLayoutAnimation: (
|
|
54
55
|
config: LayoutAnimationConfig,
|
|
55
56
|
callback: () => void, // check what is returned here
|
|
56
57
|
errorCallback: () => void,
|
|
57
|
-
) => void
|
|
58
|
-
+sendAccessibilityEvent: (node: Node, eventType: string) => void
|
|
59
|
-
+findShadowNodeByTag_DEPRECATED: (reactTag: number) => ?Node
|
|
60
|
-
+
|
|
61
|
-
node: Node,
|
|
62
|
-
) => [
|
|
63
|
-
/* x:*/ number,
|
|
64
|
-
/* y:*/ number,
|
|
65
|
-
/* width:*/ number,
|
|
66
|
-
/* height:*/ number,
|
|
67
|
-
],
|
|
68
|
-
+setNativeProps: (node: Node, newProps: NodeProps) => void,
|
|
58
|
+
) => void;
|
|
59
|
+
+sendAccessibilityEvent: (node: Node, eventType: string) => void;
|
|
60
|
+
+findShadowNodeByTag_DEPRECATED: (reactTag: number) => ?Node;
|
|
61
|
+
+setNativeProps: (node: Node, newProps: NodeProps) => void;
|
|
69
62
|
+dispatchCommand: (
|
|
70
63
|
node: Node,
|
|
71
64
|
commandName: string,
|
|
72
65
|
args: Array<mixed>,
|
|
73
|
-
) => void
|
|
74
|
-
|
|
66
|
+
) => void;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Support methods for the DOM-compatible APIs.
|
|
70
|
+
*/
|
|
71
|
+
+getParentNode: (node: Node) => ?InternalInstanceHandle;
|
|
72
|
+
+getChildNodes: (node: Node) => $ReadOnlyArray<InternalInstanceHandle>;
|
|
73
|
+
+isConnected: (node: Node) => boolean;
|
|
74
|
+
+compareDocumentPosition: (node: Node, otherNode: Node) => number;
|
|
75
|
+
+getTextContent: (node: Node) => string;
|
|
76
|
+
+getBoundingClientRect: (
|
|
77
|
+
node: Node,
|
|
78
|
+
includeTransform: boolean,
|
|
79
|
+
) => ?[
|
|
80
|
+
/* x: */ number,
|
|
81
|
+
/* y: */ number,
|
|
82
|
+
/* width: */ number,
|
|
83
|
+
/* height: */ number,
|
|
84
|
+
];
|
|
85
|
+
+getOffset: (
|
|
86
|
+
node: Node,
|
|
87
|
+
) => ?[
|
|
88
|
+
/* offsetParent: */ InternalInstanceHandle,
|
|
89
|
+
/* offsetTop: */ number,
|
|
90
|
+
/* offsetLeft: */ number,
|
|
91
|
+
];
|
|
92
|
+
+getScrollPosition: (
|
|
93
|
+
node: Node,
|
|
94
|
+
) => ?[/* scrollLeft: */ number, /* scrollTop: */ number];
|
|
95
|
+
+getScrollSize: (
|
|
96
|
+
node: Node,
|
|
97
|
+
) => ?[/* scrollWidth: */ number, /* scrollHeight: */ number];
|
|
98
|
+
+getInnerSize: (node: Node) => ?[/* width: */ number, /* height: */ number];
|
|
99
|
+
+getBorderSize: (
|
|
100
|
+
node: Node,
|
|
101
|
+
) => ?[
|
|
102
|
+
/* topWidth: */ number,
|
|
103
|
+
/* rightWidth: */ number,
|
|
104
|
+
/* bottomWidth: */ number,
|
|
105
|
+
/* leftWidth: */ number,
|
|
106
|
+
];
|
|
107
|
+
+getTagName: (node: Node) => string;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Support methods for the Pointer Capture APIs.
|
|
111
|
+
*/
|
|
112
|
+
+hasPointerCapture: (node: Node, pointerId: number) => boolean;
|
|
113
|
+
+setPointerCapture: (node: Node, pointerId: number) => void;
|
|
114
|
+
+releasePointerCapture: (node: Node, pointerId: number) => void;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
let nativeFabricUIManagerProxy: ?Spec;
|
|
118
|
+
|
|
119
|
+
// This is a list of all the methods in global.nativeFabricUIManager that we'll
|
|
120
|
+
// cache in JavaScript, as the current implementation of the binding
|
|
121
|
+
// creates a new host function every time methods are accessed.
|
|
122
|
+
const CACHED_PROPERTIES = [
|
|
123
|
+
'createNode',
|
|
124
|
+
'cloneNode',
|
|
125
|
+
'cloneNodeWithNewChildren',
|
|
126
|
+
'cloneNodeWithNewProps',
|
|
127
|
+
'cloneNodeWithNewChildrenAndProps',
|
|
128
|
+
'createChildSet',
|
|
129
|
+
'appendChild',
|
|
130
|
+
'appendChildToSet',
|
|
131
|
+
'completeRoot',
|
|
132
|
+
'measure',
|
|
133
|
+
'measureInWindow',
|
|
134
|
+
'measureLayout',
|
|
135
|
+
'configureNextLayoutAnimation',
|
|
136
|
+
'sendAccessibilityEvent',
|
|
137
|
+
'findShadowNodeByTag_DEPRECATED',
|
|
138
|
+
'setNativeProps',
|
|
139
|
+
'dispatchCommand',
|
|
140
|
+
'getParentNode',
|
|
141
|
+
'getChildNodes',
|
|
142
|
+
'isConnected',
|
|
143
|
+
'compareDocumentPosition',
|
|
144
|
+
'getTextContent',
|
|
145
|
+
'getBoundingClientRect',
|
|
146
|
+
'getOffset',
|
|
147
|
+
'getScrollPosition',
|
|
148
|
+
'getScrollSize',
|
|
149
|
+
'getInnerSize',
|
|
150
|
+
'getBorderSize',
|
|
151
|
+
'getTagName',
|
|
152
|
+
'hasPointerCapture',
|
|
153
|
+
'setPointerCapture',
|
|
154
|
+
'releasePointerCapture',
|
|
155
|
+
];
|
|
75
156
|
|
|
76
157
|
// This is exposed as a getter because apps using the legacy renderer AND
|
|
77
158
|
// Fabric can define the binding lazily. If we evaluated the global and cached
|
|
78
159
|
// it in the module we might be caching an `undefined` value before it is set.
|
|
79
160
|
export function getFabricUIManager(): ?Spec {
|
|
80
|
-
|
|
161
|
+
if (
|
|
162
|
+
nativeFabricUIManagerProxy == null &&
|
|
163
|
+
global.nativeFabricUIManager != null
|
|
164
|
+
) {
|
|
165
|
+
nativeFabricUIManagerProxy = createProxyWithCachedProperties(
|
|
166
|
+
global.nativeFabricUIManager,
|
|
167
|
+
CACHED_PROPERTIES,
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
return nativeFabricUIManagerProxy;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
*
|
|
175
|
+
* Returns an object that caches the specified properties the first time they
|
|
176
|
+
* are accessed, and falls back to the original object for other properties.
|
|
177
|
+
*/
|
|
178
|
+
function createProxyWithCachedProperties(
|
|
179
|
+
implementation: Spec,
|
|
180
|
+
propertiesToCache: $ReadOnlyArray<string>,
|
|
181
|
+
): Spec {
|
|
182
|
+
const proxy = Object.create(implementation);
|
|
183
|
+
for (const propertyName of propertiesToCache) {
|
|
184
|
+
defineLazyObjectProperty(proxy, propertyName, {
|
|
185
|
+
// $FlowExpectedError[prop-missing]
|
|
186
|
+
get: () => implementation[propertyName],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return proxy;
|
|
81
190
|
}
|
|
@@ -8,15 +8,13 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {I18nManagerConstants} from './NativeI18nManager';
|
|
12
|
+
|
|
11
13
|
import NativeI18nManager from './NativeI18nManager';
|
|
12
14
|
|
|
13
|
-
const i18nConstants:
|
|
14
|
-
doLeftAndRightSwapInRTL: boolean,
|
|
15
|
-
isRTL: boolean,
|
|
16
|
-
localeIdentifier?: ?string,
|
|
17
|
-
|} = getI18nManagerConstants();
|
|
15
|
+
const i18nConstants: I18nManagerConstants = getI18nManagerConstants();
|
|
18
16
|
|
|
19
|
-
function getI18nManagerConstants() {
|
|
17
|
+
function getI18nManagerConstants(): I18nManagerConstants {
|
|
20
18
|
if (NativeI18nManager) {
|
|
21
19
|
const {isRTL, doLeftAndRightSwapInRTL, localeIdentifier} =
|
|
22
20
|
NativeI18nManager.getConstants();
|
|
@@ -30,11 +28,7 @@ function getI18nManagerConstants() {
|
|
|
30
28
|
}
|
|
31
29
|
|
|
32
30
|
module.exports = {
|
|
33
|
-
getConstants: (): {
|
|
34
|
-
doLeftAndRightSwapInRTL: boolean,
|
|
35
|
-
isRTL: boolean,
|
|
36
|
-
localeIdentifier: ?string,
|
|
37
|
-
|} => {
|
|
31
|
+
getConstants: (): I18nManagerConstants => {
|
|
38
32
|
return i18nConstants;
|
|
39
33
|
},
|
|
40
34
|
|
|
@@ -12,12 +12,14 @@ import type {TurboModule} from '../TurboModule/RCTExport';
|
|
|
12
12
|
|
|
13
13
|
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
|
|
14
14
|
|
|
15
|
+
export type I18nManagerConstants = {|
|
|
16
|
+
doLeftAndRightSwapInRTL: boolean,
|
|
17
|
+
isRTL: boolean,
|
|
18
|
+
localeIdentifier?: ?string,
|
|
19
|
+
|};
|
|
20
|
+
|
|
15
21
|
export interface Spec extends TurboModule {
|
|
16
|
-
+getConstants: () =>
|
|
17
|
-
isRTL: boolean,
|
|
18
|
-
doLeftAndRightSwapInRTL: boolean,
|
|
19
|
-
localeIdentifier: ?string,
|
|
20
|
-
|};
|
|
22
|
+
+getConstants: () => I18nManagerConstants;
|
|
21
23
|
allowRTL: (allowRTL: boolean) => void;
|
|
22
24
|
forceRTL: (forceRTL: boolean) => void;
|
|
23
25
|
swapLeftAndRightInRTL: (flipStyles: boolean) => void;
|
|
@@ -107,8 +107,8 @@ UIManagerJS.hasViewManagerConfig = (viewManagerName: string) =>
|
|
|
107
107
|
// instead of `UIManager.getViewManagerConfig()` off UIManager.js.
|
|
108
108
|
// This is a workaround for now.
|
|
109
109
|
// [Windows - This is incompatible with running UIManager as a JSI object.
|
|
110
|
-
// getViewManagerConfig is implemented on the JSI object, so we
|
|
111
|
-
// need to hook this unless we are
|
|
110
|
+
// getViewManagerConfig is implemented on the JSI object, so we don't
|
|
111
|
+
// need to hook this unless we are running in webdebugger
|
|
112
112
|
if (!global.nativeCallSyncHook)
|
|
113
113
|
// $FlowFixMe
|
|
114
114
|
NativeUIManager.getViewManagerConfig = UIManagerJS.getViewManagerConfig;
|
|
@@ -0,0 +1,151 @@
|
|
|
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
|
+
* @format
|
|
8
|
+
* @flow strict-local
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {
|
|
12
|
+
HostComponent,
|
|
13
|
+
INativeMethods,
|
|
14
|
+
InternalInstanceHandle,
|
|
15
|
+
MeasureInWindowOnSuccessCallback,
|
|
16
|
+
MeasureLayoutOnSuccessCallback,
|
|
17
|
+
MeasureOnSuccessCallback,
|
|
18
|
+
ViewConfig,
|
|
19
|
+
} from '../../Renderer/shims/ReactNativeTypes';
|
|
20
|
+
import type {ElementRef} from 'react';
|
|
21
|
+
|
|
22
|
+
import TextInputState from '../../Components/TextInput/TextInputState';
|
|
23
|
+
import {getNodeFromInternalInstanceHandle} from '../../Renderer/shims/ReactFabric';
|
|
24
|
+
import {getFabricUIManager} from '../FabricUIManager';
|
|
25
|
+
import {create} from './ReactNativeAttributePayload';
|
|
26
|
+
import warnForStyleProps from './warnForStyleProps';
|
|
27
|
+
import nullthrows from 'nullthrows';
|
|
28
|
+
|
|
29
|
+
const {
|
|
30
|
+
measure: fabricMeasure,
|
|
31
|
+
measureInWindow: fabricMeasureInWindow,
|
|
32
|
+
measureLayout: fabricMeasureLayout,
|
|
33
|
+
getBoundingClientRect: fabricGetBoundingClientRect,
|
|
34
|
+
setNativeProps,
|
|
35
|
+
} = nullthrows(getFabricUIManager());
|
|
36
|
+
|
|
37
|
+
const noop = () => {};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* This is used for refs on host components.
|
|
41
|
+
*/
|
|
42
|
+
export default class ReactFabricHostComponent implements INativeMethods {
|
|
43
|
+
// These need to be accessible from `ReactFabricPublicInstanceUtils`.
|
|
44
|
+
__nativeTag: number;
|
|
45
|
+
__internalInstanceHandle: InternalInstanceHandle;
|
|
46
|
+
|
|
47
|
+
_viewConfig: ViewConfig;
|
|
48
|
+
|
|
49
|
+
constructor(
|
|
50
|
+
tag: number,
|
|
51
|
+
viewConfig: ViewConfig,
|
|
52
|
+
internalInstanceHandle: InternalInstanceHandle,
|
|
53
|
+
) {
|
|
54
|
+
this.__nativeTag = tag;
|
|
55
|
+
this._viewConfig = viewConfig;
|
|
56
|
+
this.__internalInstanceHandle = internalInstanceHandle;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
blur() {
|
|
60
|
+
// $FlowFixMe[incompatible-exact] Migrate all usages of `NativeMethods` to an interface to fix this.
|
|
61
|
+
TextInputState.blurTextInput(this);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
focus() {
|
|
65
|
+
// $FlowFixMe[incompatible-exact] Migrate all usages of `NativeMethods` to an interface to fix this.
|
|
66
|
+
TextInputState.focusTextInput(this);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
measure(callback: MeasureOnSuccessCallback) {
|
|
70
|
+
const node = getNodeFromInternalInstanceHandle(
|
|
71
|
+
this.__internalInstanceHandle,
|
|
72
|
+
);
|
|
73
|
+
if (node != null) {
|
|
74
|
+
fabricMeasure(node, callback);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
measureInWindow(callback: MeasureInWindowOnSuccessCallback) {
|
|
79
|
+
const node = getNodeFromInternalInstanceHandle(
|
|
80
|
+
this.__internalInstanceHandle,
|
|
81
|
+
);
|
|
82
|
+
if (node != null) {
|
|
83
|
+
fabricMeasureInWindow(node, callback);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
measureLayout(
|
|
88
|
+
relativeToNativeNode: number | ElementRef<HostComponent<mixed>>,
|
|
89
|
+
onSuccess: MeasureLayoutOnSuccessCallback,
|
|
90
|
+
onFail?: () => void /* currently unused */,
|
|
91
|
+
) {
|
|
92
|
+
if (
|
|
93
|
+
typeof relativeToNativeNode === 'number' ||
|
|
94
|
+
!(relativeToNativeNode instanceof ReactFabricHostComponent)
|
|
95
|
+
) {
|
|
96
|
+
if (__DEV__) {
|
|
97
|
+
console.error(
|
|
98
|
+
'Warning: ref.measureLayout must be called with a ref to a native component.',
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const toStateNode = getNodeFromInternalInstanceHandle(
|
|
106
|
+
this.__internalInstanceHandle,
|
|
107
|
+
);
|
|
108
|
+
const fromStateNode = getNodeFromInternalInstanceHandle(
|
|
109
|
+
relativeToNativeNode.__internalInstanceHandle,
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
if (toStateNode != null && fromStateNode != null) {
|
|
113
|
+
fabricMeasureLayout(
|
|
114
|
+
toStateNode,
|
|
115
|
+
fromStateNode,
|
|
116
|
+
onFail != null ? onFail : noop,
|
|
117
|
+
onSuccess != null ? onSuccess : noop,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
unstable_getBoundingClientRect(): DOMRect {
|
|
123
|
+
const node = getNodeFromInternalInstanceHandle(
|
|
124
|
+
this.__internalInstanceHandle,
|
|
125
|
+
);
|
|
126
|
+
if (node != null) {
|
|
127
|
+
const rect = fabricGetBoundingClientRect(node, true);
|
|
128
|
+
|
|
129
|
+
if (rect) {
|
|
130
|
+
return new DOMRect(rect[0], rect[1], rect[2], rect[3]);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Empty rect if any of the above failed
|
|
135
|
+
return new DOMRect(0, 0, 0, 0);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
setNativeProps(nativeProps: {...}): void {
|
|
139
|
+
if (__DEV__) {
|
|
140
|
+
warnForStyleProps(nativeProps, this._viewConfig.validAttributes);
|
|
141
|
+
}
|
|
142
|
+
const updatePayload = create(nativeProps, this._viewConfig.validAttributes);
|
|
143
|
+
|
|
144
|
+
const node = getNodeFromInternalInstanceHandle(
|
|
145
|
+
this.__internalInstanceHandle,
|
|
146
|
+
);
|
|
147
|
+
if (node != null && updatePayload != null) {
|
|
148
|
+
setNativeProps(node, updatePayload);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
* @format
|
|
8
|
+
* @flow strict-local
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type ReactNativeElement from '../../DOM/Nodes/ReactNativeElement';
|
|
12
|
+
import type ReadOnlyText from '../../DOM/Nodes/ReadOnlyText';
|
|
13
|
+
import typeof ReactFabricType from '../../Renderer/shims/ReactFabric';
|
|
14
|
+
import type {
|
|
15
|
+
InternalInstanceHandle,
|
|
16
|
+
Node,
|
|
17
|
+
ViewConfig,
|
|
18
|
+
} from '../../Renderer/shims/ReactNativeTypes';
|
|
19
|
+
import type ReactFabricHostComponent from './ReactFabricHostComponent';
|
|
20
|
+
|
|
21
|
+
import ReactNativeFeatureFlags from '../ReactNativeFeatureFlags';
|
|
22
|
+
|
|
23
|
+
// Lazy loaded to avoid evaluating the module when using the legacy renderer.
|
|
24
|
+
let PublicInstanceClass:
|
|
25
|
+
| Class<ReactFabricHostComponent>
|
|
26
|
+
| Class<ReactNativeElement>;
|
|
27
|
+
let ReadOnlyTextClass: Class<ReadOnlyText>;
|
|
28
|
+
|
|
29
|
+
// Lazy loaded to avoid evaluating the module when using the legacy renderer.
|
|
30
|
+
let ReactFabric: ReactFabricType;
|
|
31
|
+
|
|
32
|
+
export function createPublicInstance(
|
|
33
|
+
tag: number,
|
|
34
|
+
viewConfig: ViewConfig,
|
|
35
|
+
internalInstanceHandle: InternalInstanceHandle,
|
|
36
|
+
): ReactFabricHostComponent | ReactNativeElement {
|
|
37
|
+
if (PublicInstanceClass == null) {
|
|
38
|
+
// We don't use inline requires in react-native, so this forces lazy loading
|
|
39
|
+
// the right module to avoid eagerly loading both.
|
|
40
|
+
if (ReactNativeFeatureFlags.enableAccessToHostTreeInFabric()) {
|
|
41
|
+
PublicInstanceClass =
|
|
42
|
+
require('../../DOM/Nodes/ReactNativeElement').default;
|
|
43
|
+
} else {
|
|
44
|
+
PublicInstanceClass = require('./ReactFabricHostComponent').default;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return new PublicInstanceClass(tag, viewConfig, internalInstanceHandle);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function createPublicTextInstance(
|
|
52
|
+
internalInstanceHandle: InternalInstanceHandle,
|
|
53
|
+
): ReadOnlyText {
|
|
54
|
+
if (ReadOnlyTextClass == null) {
|
|
55
|
+
ReadOnlyTextClass = require('../../DOM/Nodes/ReadOnlyText').default;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return new ReadOnlyTextClass(internalInstanceHandle);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function getNativeTagFromPublicInstance(
|
|
62
|
+
publicInstance: ReactFabricHostComponent | ReactNativeElement,
|
|
63
|
+
): number {
|
|
64
|
+
return publicInstance.__nativeTag;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function getNodeFromPublicInstance(
|
|
68
|
+
publicInstance: ReactFabricHostComponent | ReactNativeElement,
|
|
69
|
+
): ?Node {
|
|
70
|
+
// Avoid loading ReactFabric if using an instance from the legacy renderer.
|
|
71
|
+
if (publicInstance.__internalInstanceHandle == null) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (ReactFabric == null) {
|
|
76
|
+
ReactFabric = require('../../Renderer/shims/ReactFabric');
|
|
77
|
+
}
|
|
78
|
+
return ReactFabric.getNodeFromInternalInstanceHandle(
|
|
79
|
+
publicInstance.__internalInstanceHandle,
|
|
80
|
+
);
|
|
81
|
+
}
|