/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format * @flow strict-local */ 'use strict'; const React = require('react'); const TextAncestor = require('../../Text/TextAncestor'); const ViewNativeComponent = require('./ViewNativeComponent'); const invariant = require('invariant'); import type {ViewProps} from './ViewPropTypes'; export type Props = ViewProps; /** * The most fundamental component for building a UI, View is a container that * supports layout with flexbox, style, some touch handling, and accessibility * controls. * * @see http://facebook.github.io/react-native/docs/view.html */ let ViewToExport = ViewNativeComponent; if (__DEV__) { if (!global.__RCTProfileIsProfiling) { const View = ( props: Props, forwardedRef: React.Ref<typeof ViewNativeComponent>, ) => { return ( <TextAncestor.Consumer> {hasTextAncestor => { invariant( !hasTextAncestor, 'Nesting of <View> within <Text> is not currently supported.', ); return <ViewNativeComponent {...props} ref={forwardedRef} />; }} </TextAncestor.Consumer> ); }; ViewToExport = React.forwardRef(View); ViewToExport.displayName = 'View'; } } module.exports = ((ViewToExport: $FlowFixMe): typeof ViewNativeComponent);