@office-iss/react-native-win32 0.72.7 → 0.73.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 +15 -4
- package/CHANGELOG.json +523 -94
- package/CHANGELOG.md +209 -52
- 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/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/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 +3 -5
- 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 +1 -3
- 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 +51 -46
- 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/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/TextInput/TextInput.Types.win32.ts +0 -68
- /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
|
@@ -65,6 +65,8 @@ const PERMISSIONS = Object.freeze({
|
|
|
65
65
|
READ_MEDIA_IMAGES: 'android.permission.READ_MEDIA_IMAGES',
|
|
66
66
|
READ_MEDIA_VIDEO: 'android.permission.READ_MEDIA_VIDEO',
|
|
67
67
|
READ_MEDIA_AUDIO: 'android.permission.READ_MEDIA_AUDIO',
|
|
68
|
+
READ_MEDIA_VISUAL_USER_SELECTED:
|
|
69
|
+
'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',
|
|
68
70
|
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
|
|
69
71
|
BLUETOOTH_CONNECT: 'android.permission.BLUETOOTH_CONNECT',
|
|
70
72
|
BLUETOOTH_SCAN: 'android.permission.BLUETOOTH_SCAN',
|
|
@@ -115,6 +117,7 @@ class PermissionsAndroid {
|
|
|
115
117
|
READ_MEDIA_IMAGES: string,
|
|
116
118
|
READ_MEDIA_VIDEO: string,
|
|
117
119
|
READ_MEDIA_AUDIO: string,
|
|
120
|
+
READ_MEDIA_VISUAL_USER_SELECTED: string,
|
|
118
121
|
READ_PHONE_NUMBERS: string,
|
|
119
122
|
READ_PHONE_STATE: string,
|
|
120
123
|
READ_SMS: string,
|
|
@@ -287,7 +290,6 @@ class PermissionsAndroid {
|
|
|
287
290
|
NativePermissionsAndroid,
|
|
288
291
|
'PermissionsAndroid is not installed correctly.',
|
|
289
292
|
);
|
|
290
|
-
|
|
291
293
|
return NativePermissionsAndroid.requestMultiplePermissions(permissions);
|
|
292
294
|
}
|
|
293
295
|
}
|
|
@@ -131,9 +131,17 @@ export type PressabilityConfig = $ReadOnly<{|
|
|
|
131
131
|
*/
|
|
132
132
|
onPressOut?: ?(event: PressEvent) => mixed,
|
|
133
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Whether to prevent any other native components from becoming responder
|
|
136
|
+
* while this pressable is responder.
|
|
137
|
+
*/
|
|
138
|
+
blockNativeResponder?: ?boolean,
|
|
139
|
+
|
|
134
140
|
/**
|
|
135
141
|
* Returns whether a long press gesture should cancel the press gesture.
|
|
136
142
|
* Defaults to true.
|
|
143
|
+
*
|
|
144
|
+
* @deprecated
|
|
137
145
|
*/
|
|
138
146
|
onLongPressShouldCancelPress_DEPRECATED?: ?() => boolean,
|
|
139
147
|
|
|
@@ -142,6 +150,8 @@ export type PressabilityConfig = $ReadOnly<{|
|
|
|
142
150
|
*
|
|
143
151
|
* Returns whether to yield to a lock termination request (e.g. if a native
|
|
144
152
|
* scroll gesture attempts to steal the responder lock).
|
|
153
|
+
*
|
|
154
|
+
* @deprecated
|
|
145
155
|
*/
|
|
146
156
|
onResponderTerminationRequest_DEPRECATED?: ?() => boolean,
|
|
147
157
|
|
|
@@ -163,7 +173,7 @@ export type EventHandlers = $ReadOnly<{|
|
|
|
163
173
|
onMouseLeave?: (event: MouseEvent) => void,
|
|
164
174
|
onPointerEnter?: (event: PointerEvent) => void,
|
|
165
175
|
onPointerLeave?: (event: PointerEvent) => void,
|
|
166
|
-
onResponderGrant: (event: PressEvent) => void,
|
|
176
|
+
onResponderGrant: (event: PressEvent) => void | boolean,
|
|
167
177
|
onResponderMove: (event: PressEvent) => void,
|
|
168
178
|
onResponderRelease: (event: PressEvent) => void,
|
|
169
179
|
onResponderTerminate: (event: PressEvent) => void,
|
|
@@ -295,7 +305,7 @@ let longPressDeactivationDistance = DEFAULT_LONG_PRESS_DEACTIVATION_DISTANCE;
|
|
|
295
305
|
*
|
|
296
306
|
* - When a press has activated (e.g. highlight an element)
|
|
297
307
|
* - When a press has deactivated (e.g. un-highlight an element)
|
|
298
|
-
* - When a press
|
|
308
|
+
* - When a press should trigger an action, meaning it activated and deactivated
|
|
299
309
|
* while within the geometry of the element without the lock being stolen.
|
|
300
310
|
*
|
|
301
311
|
* A high quality interaction isn't as simple as you might think. There should
|
|
@@ -464,7 +474,7 @@ export default class Pressability {
|
|
|
464
474
|
return !disabled;
|
|
465
475
|
},
|
|
466
476
|
|
|
467
|
-
onResponderGrant: (event: PressEvent): void => {
|
|
477
|
+
onResponderGrant: (event: PressEvent): void | boolean => {
|
|
468
478
|
event.persist();
|
|
469
479
|
|
|
470
480
|
this._cancelPressOutDelayTimeout();
|
|
@@ -490,6 +500,8 @@ export default class Pressability {
|
|
|
490
500
|
this._longPressDelayTimeout = setTimeout(() => {
|
|
491
501
|
this._handleLongPress(event);
|
|
492
502
|
}, delayLongPress + delayPressIn);
|
|
503
|
+
|
|
504
|
+
return this._config.blockNativeResponder === true;
|
|
493
505
|
},
|
|
494
506
|
|
|
495
507
|
onResponderMove: (event: PressEvent): void => {
|
|
@@ -547,6 +559,19 @@ export default class Pressability {
|
|
|
547
559
|
},
|
|
548
560
|
|
|
549
561
|
onClick: (event: PressEvent): void => {
|
|
562
|
+
// If event has `pointerType`, it was emitted from a PointerEvent and
|
|
563
|
+
// we should ignore it to avoid triggering `onPress` twice.
|
|
564
|
+
if (event?.nativeEvent?.hasOwnProperty?.('pointerType')) {
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// for non-pointer click events (e.g. accessibility clicks), we should only dispatch when we're the "real" target
|
|
569
|
+
// in particular, we shouldn't respond to clicks from nested pressables
|
|
570
|
+
if (event?.currentTarget !== event?.target) {
|
|
571
|
+
event?.stopPropagation();
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
|
|
550
575
|
const {onPress, disabled} = this._config;
|
|
551
576
|
if (onPress != null && disabled !== true) {
|
|
552
577
|
onPress(event);
|
|
@@ -52,7 +52,7 @@ export type PressabilityConfig = $ReadOnly<{|
|
|
|
52
52
|
pressRectOffset?: ?RectOrSize,
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
* Whether to disable the
|
|
55
|
+
* Whether to disable the system sound when `onPress` fires on Android.
|
|
56
56
|
**/
|
|
57
57
|
android_disableSound?: ?boolean,
|
|
58
58
|
|
|
@@ -123,7 +123,7 @@ export type PressabilityConfig = $ReadOnly<{|
|
|
|
123
123
|
onLongPress?: ?(event: PressEvent) => mixed,
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
|
-
* Called when a press
|
|
126
|
+
* Called when a press gesture has been triggered.
|
|
127
127
|
*/
|
|
128
128
|
onPress?: ?(event: PressEvent) => mixed,
|
|
129
129
|
|
|
@@ -142,9 +142,17 @@ export type PressabilityConfig = $ReadOnly<{|
|
|
|
142
142
|
*/
|
|
143
143
|
onPressOut?: ?(event: PressEvent) => mixed,
|
|
144
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Whether to prevent any other native components from becoming responder
|
|
147
|
+
* while this pressable is responder.
|
|
148
|
+
*/
|
|
149
|
+
blockNativeResponder?: ?boolean,
|
|
150
|
+
|
|
145
151
|
/**
|
|
146
152
|
* Returns whether a long press gesture should cancel the press gesture.
|
|
147
153
|
* Defaults to true.
|
|
154
|
+
*
|
|
155
|
+
* @deprecated
|
|
148
156
|
*/
|
|
149
157
|
onLongPressShouldCancelPress_DEPRECATED?: ?() => boolean,
|
|
150
158
|
|
|
@@ -153,6 +161,8 @@ export type PressabilityConfig = $ReadOnly<{|
|
|
|
153
161
|
*
|
|
154
162
|
* Returns whether to yield to a lock termination request (e.g. if a native
|
|
155
163
|
* scroll gesture attempts to steal the responder lock).
|
|
164
|
+
*
|
|
165
|
+
* @deprecated
|
|
156
166
|
*/
|
|
157
167
|
onResponderTerminationRequest_DEPRECATED?: ?() => boolean,
|
|
158
168
|
|
|
@@ -190,7 +200,7 @@ export type EventHandlers = $ReadOnly<{|
|
|
|
190
200
|
onMouseLeave?: (event: MouseEvent) => void,
|
|
191
201
|
onPointerEnter?: (event: PointerEvent) => void,
|
|
192
202
|
onPointerLeave?: (event: PointerEvent) => void,
|
|
193
|
-
onResponderGrant: (event: PressEvent) => void,
|
|
203
|
+
onResponderGrant: (event: PressEvent) => void | boolean,
|
|
194
204
|
onResponderMove: (event: PressEvent) => void,
|
|
195
205
|
onResponderRelease: (event: PressEvent) => void,
|
|
196
206
|
onResponderTerminate: (event: PressEvent) => void,
|
|
@@ -326,7 +336,7 @@ let longPressDeactivationDistance = DEFAULT_LONG_PRESS_DEACTIVATION_DISTANCE;
|
|
|
326
336
|
*
|
|
327
337
|
* - When a press has activated (e.g. highlight an element)
|
|
328
338
|
* - When a press has deactivated (e.g. un-highlight an element)
|
|
329
|
-
* - When a press
|
|
339
|
+
* - When a press should trigger an action, meaning it activated and deactivated
|
|
330
340
|
* while within the geometry of the element without the lock being stolen.
|
|
331
341
|
*
|
|
332
342
|
* A high quality interaction isn't as simple as you might think. There should
|
|
@@ -497,7 +507,7 @@ export default class Pressability {
|
|
|
497
507
|
return !disabled;
|
|
498
508
|
},
|
|
499
509
|
|
|
500
|
-
onResponderGrant: (event: PressEvent): void => {
|
|
510
|
+
onResponderGrant: (event: PressEvent): void | boolean => {
|
|
501
511
|
event.persist();
|
|
502
512
|
|
|
503
513
|
this._cancelPressOutDelayTimeout();
|
|
@@ -523,6 +533,8 @@ export default class Pressability {
|
|
|
523
533
|
this._longPressDelayTimeout = setTimeout(() => {
|
|
524
534
|
this._handleLongPress(event);
|
|
525
535
|
}, delayLongPress + delayPressIn);
|
|
536
|
+
|
|
537
|
+
return this._config.blockNativeResponder === true;
|
|
526
538
|
},
|
|
527
539
|
|
|
528
540
|
onResponderMove: (event: PressEvent): void => {
|
|
@@ -580,6 +592,19 @@ export default class Pressability {
|
|
|
580
592
|
},
|
|
581
593
|
|
|
582
594
|
onClick: (event: PressEvent): void => {
|
|
595
|
+
// If event has `pointerType`, it was emitted from a PointerEvent and
|
|
596
|
+
// we should ignore it to avoid triggering `onPress` twice.
|
|
597
|
+
if (event?.nativeEvent?.hasOwnProperty?.('pointerType')) {
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// for non-pointer click events (e.g. accessibility clicks), we should only dispatch when we're the "real" target
|
|
602
|
+
// in particular, we shouldn't respond to clicks from nested pressables
|
|
603
|
+
if (event?.currentTarget !== event?.target) {
|
|
604
|
+
event?.stopPropagation();
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
607
|
+
|
|
583
608
|
const {onPress, disabled} = this._config;
|
|
584
609
|
if (onPress != null && disabled !== true) {
|
|
585
610
|
onPress(event);
|
|
@@ -36,7 +36,6 @@ type State = {|
|
|
|
36
36
|
devtoolsOverlay: ?React.Node,
|
|
37
37
|
traceUpdateOverlay: ?React.Node,
|
|
38
38
|
mainKey: number,
|
|
39
|
-
hasError: boolean,
|
|
40
39
|
|};
|
|
41
40
|
|
|
42
41
|
class AppContainer extends React.Component<Props, State> {
|
|
@@ -45,7 +44,6 @@ class AppContainer extends React.Component<Props, State> {
|
|
|
45
44
|
devtoolsOverlay: null,
|
|
46
45
|
traceUpdateOverlay: null,
|
|
47
46
|
mainKey: 1,
|
|
48
|
-
hasError: false,
|
|
49
47
|
};
|
|
50
48
|
_mainRef: ?React.ElementRef<typeof View>;
|
|
51
49
|
_subscription: ?EventSubscription = null;
|
|
@@ -151,10 +149,11 @@ class AppContainer extends React.Component<Props, State> {
|
|
|
151
149
|
</Wrapper>
|
|
152
150
|
);
|
|
153
151
|
}
|
|
152
|
+
|
|
154
153
|
return (
|
|
155
154
|
<RootTagContext.Provider value={createRootTag(this.props.rootTag)}>
|
|
156
155
|
<View style={styles.appContainer} pointerEvents="box-none">
|
|
157
|
-
{
|
|
156
|
+
{innerView}
|
|
158
157
|
{this.state.traceUpdateOverlay}
|
|
159
158
|
{this.state.devtoolsOverlay}
|
|
160
159
|
{this.state.inspector}
|
|
@@ -85,11 +85,6 @@ export namespace AppRegistry {
|
|
|
85
85
|
displayMode?: number,
|
|
86
86
|
): void;
|
|
87
87
|
|
|
88
|
-
export function registerHeadlessTask(
|
|
89
|
-
appKey: string,
|
|
90
|
-
task: TaskProvider,
|
|
91
|
-
): void;
|
|
92
|
-
|
|
93
88
|
export function getRunnable(appKey: string): Runnable | undefined;
|
|
94
89
|
|
|
95
90
|
export function getRegistry(): {sections: string[]; runnables: Runnable[]};
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import type {RootTag} from '../Types/RootTagTypes';
|
|
12
12
|
import type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';
|
|
13
|
+
import type {DisplayModeType} from './DisplayMode';
|
|
13
14
|
|
|
14
15
|
import BatchedBridge from '../BatchedBridge/BatchedBridge';
|
|
15
16
|
import BugReporting from '../BugReporting/BugReporting';
|
|
@@ -30,29 +31,34 @@ type TaskCancelProvider = () => TaskCanceller;
|
|
|
30
31
|
|
|
31
32
|
export type ComponentProvider = () => React$ComponentType<any>;
|
|
32
33
|
export type ComponentProviderInstrumentationHook = (
|
|
33
|
-
|
|
34
|
+
component_: ComponentProvider,
|
|
34
35
|
scopedPerformanceLogger: IPerformanceLogger,
|
|
35
36
|
) => React$ComponentType<any>;
|
|
36
37
|
export type AppConfig = {
|
|
37
38
|
appKey: string,
|
|
38
39
|
component?: ComponentProvider,
|
|
39
|
-
run?:
|
|
40
|
+
run?: Runnable,
|
|
40
41
|
section?: boolean,
|
|
41
42
|
...
|
|
42
43
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
type AppParameters = {
|
|
45
|
+
initialProps: $ReadOnly<{[string]: mixed, ...}>,
|
|
46
|
+
rootTag: RootTag,
|
|
47
|
+
fabric?: boolean,
|
|
48
|
+
concurrentRoot?: boolean,
|
|
47
49
|
};
|
|
48
|
-
export type
|
|
50
|
+
export type Runnable = (
|
|
51
|
+
appParameters: AppParameters,
|
|
52
|
+
displayMode: DisplayModeType,
|
|
53
|
+
) => void;
|
|
54
|
+
export type Runnables = {[appKey: string]: Runnable};
|
|
49
55
|
export type Registry = {
|
|
50
|
-
sections:
|
|
56
|
+
sections: $ReadOnlyArray<string>,
|
|
51
57
|
runnables: Runnables,
|
|
52
58
|
...
|
|
53
59
|
};
|
|
54
60
|
export type WrapperComponentProvider = (
|
|
55
|
-
appParameters:
|
|
61
|
+
appParameters: Object,
|
|
56
62
|
) => React$ComponentType<any>;
|
|
57
63
|
|
|
58
64
|
const runnables: Runnables = {};
|
|
@@ -110,30 +116,28 @@ const AppRegistry = {
|
|
|
110
116
|
componentProvider: ComponentProvider,
|
|
111
117
|
section?: boolean,
|
|
112
118
|
): string {
|
|
113
|
-
|
|
114
|
-
runnables[appKey] = {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
componentProvider,
|
|
123
|
-
scopedPerformanceLogger,
|
|
124
|
-
),
|
|
125
|
-
appParameters.initialProps,
|
|
126
|
-
appParameters.rootTag,
|
|
127
|
-
wrapperComponentProvider && wrapperComponentProvider(appParameters),
|
|
128
|
-
appParameters.fabric,
|
|
129
|
-
showArchitectureIndicator,
|
|
119
|
+
const scopedPerformanceLogger = createPerformanceLogger();
|
|
120
|
+
runnables[appKey] = (appParameters, displayMode) => {
|
|
121
|
+
const concurrentRootEnabled = Boolean(
|
|
122
|
+
appParameters.initialProps?.concurrentRoot ||
|
|
123
|
+
appParameters.concurrentRoot,
|
|
124
|
+
);
|
|
125
|
+
renderApplication(
|
|
126
|
+
componentProviderInstrumentationHook(
|
|
127
|
+
componentProvider,
|
|
130
128
|
scopedPerformanceLogger,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
),
|
|
130
|
+
appParameters.initialProps,
|
|
131
|
+
appParameters.rootTag,
|
|
132
|
+
wrapperComponentProvider && wrapperComponentProvider(appParameters),
|
|
133
|
+
appParameters.fabric,
|
|
134
|
+
showArchitectureIndicator,
|
|
135
|
+
scopedPerformanceLogger,
|
|
136
|
+
appKey === 'LogBox', // is logbox
|
|
137
|
+
appKey,
|
|
138
|
+
displayMode,
|
|
139
|
+
concurrentRootEnabled,
|
|
140
|
+
);
|
|
137
141
|
};
|
|
138
142
|
if (section) {
|
|
139
143
|
sections[appKey] = runnables[appKey];
|
|
@@ -141,8 +145,8 @@ const AppRegistry = {
|
|
|
141
145
|
return appKey;
|
|
142
146
|
},
|
|
143
147
|
|
|
144
|
-
registerRunnable(appKey: string, run:
|
|
145
|
-
runnables[appKey] =
|
|
148
|
+
registerRunnable(appKey: string, run: Runnable): string {
|
|
149
|
+
runnables[appKey] = run;
|
|
146
150
|
return appKey;
|
|
147
151
|
},
|
|
148
152
|
|
|
@@ -150,11 +154,11 @@ const AppRegistry = {
|
|
|
150
154
|
AppRegistry.registerComponent(appKey, component, true);
|
|
151
155
|
},
|
|
152
156
|
|
|
153
|
-
getAppKeys():
|
|
157
|
+
getAppKeys(): $ReadOnlyArray<string> {
|
|
154
158
|
return Object.keys(runnables);
|
|
155
159
|
},
|
|
156
160
|
|
|
157
|
-
getSectionKeys():
|
|
161
|
+
getSectionKeys(): $ReadOnlyArray<string> {
|
|
158
162
|
return Object.keys(sections);
|
|
159
163
|
},
|
|
160
164
|
|
|
@@ -188,7 +192,7 @@ const AppRegistry = {
|
|
|
188
192
|
*/
|
|
189
193
|
runApplication(
|
|
190
194
|
appKey: string,
|
|
191
|
-
appParameters:
|
|
195
|
+
appParameters: AppParameters,
|
|
192
196
|
displayMode?: number,
|
|
193
197
|
): void {
|
|
194
198
|
if (appKey !== 'LogBox') {
|
|
@@ -203,7 +207,7 @@ const AppRegistry = {
|
|
|
203
207
|
);
|
|
204
208
|
}
|
|
205
209
|
invariant(
|
|
206
|
-
runnables[appKey]
|
|
210
|
+
runnables[appKey],
|
|
207
211
|
`"${appKey}" has not been registered. This can happen if:\n` +
|
|
208
212
|
'* Metro (the local dev server) is run from the wrong folder. ' +
|
|
209
213
|
'Check if Metro is running, stop it and restart it in the current project.\n' +
|
|
@@ -211,7 +215,7 @@ const AppRegistry = {
|
|
|
211
215
|
);
|
|
212
216
|
|
|
213
217
|
SceneTracker.setActiveScene({name: appKey});
|
|
214
|
-
runnables[appKey]
|
|
218
|
+
runnables[appKey](appParameters, coerceDisplayMode(displayMode));
|
|
215
219
|
},
|
|
216
220
|
|
|
217
221
|
/**
|
|
@@ -219,7 +223,7 @@ const AppRegistry = {
|
|
|
219
223
|
*/
|
|
220
224
|
setSurfaceProps(
|
|
221
225
|
appKey: string,
|
|
222
|
-
appParameters:
|
|
226
|
+
appParameters: Object,
|
|
223
227
|
displayMode?: number,
|
|
224
228
|
): void {
|
|
225
229
|
if (appKey !== 'LogBox') {
|
|
@@ -235,14 +239,14 @@ const AppRegistry = {
|
|
|
235
239
|
);
|
|
236
240
|
}
|
|
237
241
|
invariant(
|
|
238
|
-
runnables[appKey]
|
|
242
|
+
runnables[appKey],
|
|
239
243
|
`"${appKey}" has not been registered. This can happen if:\n` +
|
|
240
244
|
'* Metro (the local dev server) is run from the wrong folder. ' +
|
|
241
245
|
'Check if Metro is running, stop it and restart it in the current project.\n' +
|
|
242
246
|
"* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.",
|
|
243
247
|
);
|
|
244
248
|
|
|
245
|
-
runnables[appKey]
|
|
249
|
+
runnables[appKey](appParameters, coerceDisplayMode(displayMode));
|
|
246
250
|
},
|
|
247
251
|
|
|
248
252
|
/**
|
|
@@ -338,18 +342,27 @@ const AppRegistry = {
|
|
|
338
342
|
},
|
|
339
343
|
};
|
|
340
344
|
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
// Register LogBox as a default surface
|
|
346
|
+
AppRegistry.registerComponent('LogBox', () => {
|
|
347
|
+
if (__DEV__ && typeof jest === 'undefined') {
|
|
348
|
+
return require('../LogBox/LogBoxInspectorContainer').default;
|
|
349
|
+
} else {
|
|
350
|
+
return function NoOp() {
|
|
351
|
+
return null;
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
});
|
|
343
355
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
356
|
+
global.RN$AppRegistry = AppRegistry;
|
|
357
|
+
|
|
358
|
+
// Backwards compat with SurfaceRegistry, remove me later
|
|
359
|
+
global.RN$SurfaceRegistry = {
|
|
360
|
+
renderSurface: AppRegistry.runApplication,
|
|
361
|
+
setSurfaceProps: AppRegistry.setSurfaceProps,
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
if (global.RN$Bridgeless !== true) {
|
|
365
|
+
BatchedBridge.registerCallableModule('AppRegistry', AppRegistry);
|
|
353
366
|
}
|
|
354
367
|
|
|
355
368
|
module.exports = AppRegistry;
|
|
@@ -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;
|