Skip to content

Commit

Permalink
Migrate DrawerAndroid, ProgressBarAndroid, SafeAreaView, ScrollView, …
Browse files Browse the repository at this point in the history
…TextInput, ToastAndroid, UnimplementedView and View components to export syntax (facebook#48807)

Summary:
Pull Request resolved: facebook#48807

## Motivation
Modernising the react-native codebase to allow for ingestion by modern Flow tooling.

## This diff
- Updates a handful of components in `Libraries/Components` to use `export` syntax
  - `export default` for qualified objects, many `export` statements for collections (determined by how it's imported)
- Appends `.default` to requires of the changed files.
- Updates test files.
- Updates the public API snapshot (intented breaking change)

Changelog:
[General][Breaking] - Files inside `Libraries/Components` use `export` syntax, which requires the addition of `.default` when imported with the CJS `require` syntax.

Reviewed By: huntie

Differential Revision: D68436127
  • Loading branch information
iwoplaza authored and facebook-github-bot committed Jan 24, 2025
1 parent 6c6e0a9 commit f8a2d3b
Show file tree
Hide file tree
Showing 42 changed files with 107 additions and 89 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@

import typeof DrawerLayoutAndroid from './DrawerLayoutAndroid.android';

export default require('../UnimplementedViews/UnimplementedView') as $FlowFixMe as DrawerLayoutAndroid;
export default require('../UnimplementedViews/UnimplementedView')
.default as $FlowFixMe as DrawerLayoutAndroid;
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@

'use strict';

const ReactNativeTestTools = require('../../../Utilities/ReactNativeTestTools');
const View = require('../../View/View');
import * as ReactNativeTestTools from '../../../Utilities/ReactNativeTestTools';
import View from '../../View/View';
/* $FlowFixMe[cannot-resolve-module] (>=0.99.0 site=react_native_ios_fb) This
* comment suppresses an error found when Flow v0.99 was deployed. To see the
* error, delete this comment and run Flow. */
// $FlowFixMe[missing-platform-support]
const DrawerLayoutAndroid = require('../DrawerLayoutAndroid.android').default;
const React = require('react');
import DrawerLayoutAndroid from '../DrawerLayoutAndroid.android';
import * as React from 'react';

describe('<DrawerLayoutAndroid />', () => {
it('should render as expected', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ import typeof ProgressBarAndroidNativeComponentType from './ProgressBarAndroidNa

export type {ProgressBarAndroidProps} from './ProgressBarAndroid.android';

export default (require('../UnimplementedViews/UnimplementedView'):
export default require('../UnimplementedViews/UnimplementedView').default as
| UnimplementedViewType
| ProgressBarAndroidNativeComponentType);
| ProgressBarAndroidNativeComponentType;
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,11 @@

'use strict';

import Text from '../../../Text/Text';
import * as ReactNativeTestTools from '../../../Utilities/ReactNativeTestTools';
import View from '../../View/View';
import SafeAreaView from '../SafeAreaView';

const Text = require('../../../Text/Text');
const ReactNativeTestTools = require('../../../Utilities/ReactNativeTestTools');
const View = require('../../View/View');
const React = require('react');
import * as React from 'react';

describe('<SafeAreaView />', () => {
it('should render as expected', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

'use strict';

const {create, unmount, update} = require('../../../../jest/renderer');
const Text = require('../../../Text/Text');
const ReactNativeTestTools = require('../../../Utilities/ReactNativeTestTools');
const View = require('../../View/View');
const ScrollView = require('../ScrollView').default;
const React = require('react');
import {create, unmount, update} from '../../../../jest/renderer';
import Text from '../../../Text/Text';
import * as ReactNativeTestTools from '../../../Utilities/ReactNativeTestTools';
import View from '../../View/View';
import ScrollView from '../ScrollView';
import * as React from 'react';

describe('ScrollView', () => {
beforeEach(() => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,4 +166,4 @@ const RCTTextInputViewConfig = {
},
};

module.exports = (RCTTextInputViewConfig: PartialViewConfigWithoutName);
export default RCTTextInputViewConfig as PartialViewConfigWithoutName;
Original file line number Diff line number Diff line change
Expand Up @@ -1900,4 +1900,4 @@ const verticalAlignToTextAlignVerticalMap = {
};

// $FlowFixMe[unclear-type] Unclear type. Using `any` type is not safe.
module.exports = ((ExportedForwardRef: any): TextInputType);
export default ExportedForwardRef as any as TextInputType;
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ function isTextInput(textField: HostInstance): boolean {
return inputs.has(textField);
}

module.exports = {
const TextInputState = {
currentlyFocusedInput,
focusInput,
blurInput,
Expand All @@ -210,3 +210,5 @@ module.exports = {
unregisterInput,
isTextInput,
};

export default TextInputState;
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@

'use strict';

const render = require('../../../../jest/renderer');
const View = require('../../View/View');
const InputAccessoryView = require('../InputAccessoryView').default;
const React = require('react');
import * as render from '../../../../jest/renderer';
import View from '../../View/View';
import InputAccessoryView from '../InputAccessoryView';
import * as React from 'react';

describe('InputAccessoryView', () => {
it('should render as <RCTInputAccessoryView> when mocked', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
* @format
*/

const {create} = require('../../../../jest/renderer');
const ReactNativeFeatureFlags = require('../../../../src/private/featureflags/ReactNativeFeatureFlags');
const ReactNative = require('../../../ReactNative/RendererProxy');
const {
import {create} from '../../../../jest/renderer';
import ReactNativeFeatureFlags from '../../../../src/private/featureflags/ReactNativeFeatureFlags';
import ReactNative from '../../../ReactNative/RendererProxy';
import {
enter,
expectRendersMatchingSnapshot,
} = require('../../../Utilities/ReactNativeTestTools');
const TextInput = require('../TextInput');
const React = require('react');
const ReactTestRenderer = require('react-test-renderer');
} from '../../../Utilities/ReactNativeTestTools';
import TextInput from '../TextInput';
import * as React from 'react';
import ReactTestRenderer from 'react-test-renderer';

jest.unmock('../TextInput');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,4 @@ const ToastAndroid = {
},
};

module.exports = ToastAndroid;
export default ToastAndroid;
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ const ToastAndroid = {
},
};

module.exports = ToastAndroid;
export default ToastAndroid;
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type Props = $ReadOnly<{
class UnimplementedView extends React.Component<Props> {
render(): React.Node {
// Workaround require cycle from requireNativeComponent
const View = require('../View/View');
const View = require('../View/View').default;
return (
<View style={[styles.unimplementedView, this.props.style]}>
{this.props.children}
Expand All @@ -46,4 +46,4 @@ const styles = StyleSheet.create({
: {},
});

module.exports = UnimplementedView;
export default UnimplementedView;
Original file line number Diff line number Diff line change
Expand Up @@ -215,4 +215,4 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
objectFit: true,
};

module.exports = ReactNativeStyleAttributes;
export default ReactNativeStyleAttributes;
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@ const ReactNativeViewAttributes = {
RCTView: RCTView,
};

module.exports = ReactNativeViewAttributes;
export default ReactNativeViewAttributes;
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Components/View/View.js
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,4 @@ const View: component(

View.displayName = 'View';

module.exports = View;
export default View;
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import '../../../Core/InitializeCore.js';
import * as Fantom from '@react-native/fantom';
import * as React from 'react';

const View = require('../View');
const View = require('../View').default;

describe('width and height style', () => {
it('handles correct percentage-based dimensions', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

const render = require('../../../../jest/renderer');
const React = require('../React');
const View = require('../View');
const View = require('../View').default;

jest.unmock('../View');
jest.unmock('../ViewNativeComponent');
Expand Down
3 changes: 2 additions & 1 deletion packages/react-native/Libraries/Core/setUpReactDevTools.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ if (__DEV__) {
const reactDevToolsFuseboxGlobalBindingName =
fuseboxReactDevToolsDispatcher.BINDING_NAME;

const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
const ReactNativeStyleAttributes =
require('../Components/View/ReactNativeStyleAttributes').default;
const resolveRNStyle = require('../StyleSheet/flattenStyle');

function handleReactDevToolsSettingsUpdate(settings: Object) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@

jest.disableAutomock();

const {create} = require('../../../jest/renderer');
const View = require('../../Components/View/View');
const Image = require('../Image');
const React = require('react');
import {create} from '../../../jest/renderer';
import View from '../../Components/View/View';
import Image from '../Image';
import * as React from 'react';

it('renders assets based on relative path', async () => {
expect(
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Inspector/BorderBox.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import type {ViewStyleProp} from '../StyleSheet/StyleSheet';

import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;

type Props = $ReadOnly<{
children: React.Node,
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Inspector/BoxInspector.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import type {InspectedElementFrame} from './Inspector';

import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text');
const resolveBoxStyle = require('./resolveBoxStyle');
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Inspector/ElementBox.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import type {InspectedElementFrame} from './Inspector';

import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const flattenStyle = require('../StyleSheet/flattenStyle');
const StyleSheet = require('../StyleSheet/StyleSheet');
const Dimensions = require('../Utilities/Dimensions').default;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const TouchableHighlight =
require('../Components/Touchable/TouchableHighlight').default;
const TouchableWithoutFeedback =
require('../Components/Touchable/TouchableWithoutFeedback').default;
const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const flattenStyle = require('../StyleSheet/flattenStyle');
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text');
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Inspector/Inspector.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import type {ReactDevToolsAgent} from '../Types/ReactDevToolsTypes';
import SafeAreaView from '../../src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE';
import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const PressabilityDebug = require('../Pressability/PressabilityDebug');
const {findNodeHandle} = require('../ReactNative/RendererProxy');
const StyleSheet = require('../StyleSheet/StyleSheet');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import type {InspectedElement} from './Inspector';

import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const ElementBox = require('./ElementBox');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import React from 'react';
const ScrollView = require('../Components/ScrollView/ScrollView').default;
const TouchableHighlight =
require('../Components/Touchable/TouchableHighlight').default;
const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text');
const ElementProperties = require('./ElementProperties');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import React from 'react';

const TouchableHighlight =
require('../Components/Touchable/TouchableHighlight').default;
const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const FlatList = require('../Lists/FlatList');
const XHRInterceptor = require('../Network/XHRInterceptor');
const StyleSheet = require('../StyleSheet/StyleSheet');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text');
const PerformanceLogger = require('../Utilities/GlobalPerformanceLogger');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import type {____FlattenStyleProp_Internal} from '../StyleSheet/StyleSheetTypes'

import React from 'react';

const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text');

Expand Down
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Modal/Modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {VirtualizedListContextResetter} from '@react-native/virtualized-lists';
import React from 'react';

const ScrollView = require('../Components/ScrollView/ScrollView').default;
const View = require('../Components/View/View');
const View = require('../Components/View/View').default;
const AppContainer = require('../ReactNative/AppContainer');
const I18nManager = require('../ReactNative/I18nManager');
const {RootTagContext} = require('../ReactNative/RootTag');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
'use strict';

const render = require('../../../jest/renderer');
const View = require('../../Components/View/View');
const View = require('../../Components/View/View').default;
const Modal = require('../Modal');
const React = require('react');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

import processBoxShadow from '../StyleSheet/processBoxShadow';

const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
const ReactNativeStyleAttributes =
require('../Components/View/ReactNativeStyleAttributes').default;
const resolveAssetSource = require('../Image/resolveAssetSource');
const processBackgroundImage =
require('../StyleSheet/processBackgroundImage').default;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ module.exports = {
return require('../Renderer/shims/ReactNativeViewConfigRegistry');
},
get TextInputState(): TextInputState {
return require('../Components/TextInput/TextInputState');
return require('../Components/TextInput/TextInputState').default;
},
get UIManager(): UIManager {
return require('../ReactNative/UIManager');
Expand Down
3 changes: 2 additions & 1 deletion packages/react-native/Libraries/StyleSheet/StyleSheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ import type {
import composeStyles from '../../src/private/styles/composeStyles';
import flatten from './flattenStyle';

const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
const ReactNativeStyleAttributes =
require('../Components/View/ReactNativeStyleAttributes').default;
const PixelRatio = require('../Utilities/PixelRatio').default;

export type {NativeColorValue} from './StyleSheetTypes';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import React from 'react';
import ReactTestRenderer from 'react-test-renderer';

const Switch = require('../Components/Switch/Switch').default;
const TextInput = require('../Components/TextInput/TextInput');
const View = require('../Components/View/View');
const TextInput = require('../Components/TextInput/TextInput').default;
const View = require('../Components/View/View').default;
const Text = require('../Text/Text');
const {VirtualizedList} = require('@react-native/virtualized-lists');

Expand Down
3 changes: 2 additions & 1 deletion packages/react-native/Libraries/Utilities/dismissKeyboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

'use strict';

const TextInputState = require('../Components/TextInput/TextInputState');
const TextInputState =
require('../Components/TextInput/TextInputState').default;

function dismissKeyboard() {
TextInputState.blurTextInput(TextInputState.currentlyFocusedInput());
Expand Down
Loading

0 comments on commit f8a2d3b

Please sign in to comment.