diff --git a/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js b/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js index 56305508edc23c..7b0bff3a248f8a 100644 --- a/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +++ b/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js @@ -10,82 +10,70 @@ 'use strict'; -const DeprecatedViewPropTypes = require('DeprecatedViewPropTypes'); -const Image = require('Image'); -const NativeMethodsMixin = require('NativeMethodsMixin'); -const PropTypes = require('prop-types'); const React = require('React'); -const ReactNative = require('ReactNative'); const StyleSheet = require('StyleSheet'); const createReactClass = require('create-react-class'); const requireNativeComponent = require('requireNativeComponent'); +import type {NativeComponent} from 'ReactNative'; import type {ImageSource} from 'ImageSource'; import type {ColorValue} from 'StyleSheetTypes'; import type {ViewProps} from 'ViewPropTypes'; -const RCTProgressView = requireNativeComponent('RCTProgressView'); - type Props = $ReadOnly<{| ...ViewProps, + + /** + * The progress bar style. + */ progressViewStyle?: ?('default' | 'bar'), + + /** + * The progress value (between 0 and 1). + */ progress?: ?number, + + /** + * The tint color of the progress bar itself. + */ progressTintColor?: ?ColorValue, - trackTintColor?: ?string, + + /** + * The tint color of the progress bar track. + */ + trackTintColor?: ?ColorValue, + + /** + * A stretchable image to display as the progress bar. + */ progressImage?: ?ImageSource, + + /** + * A stretchable image to display behind the progress bar. + */ trackImage?: ?ImageSource, |}>; +type NativeProgressViewIOS = Class>; + +const RCTProgressView = ((requireNativeComponent( + 'RCTProgressView', +): any): NativeProgressViewIOS); + /** * Use `ProgressViewIOS` to render a UIProgressView on iOS. */ -const ProgressViewIOS = createReactClass({ - displayName: 'ProgressViewIOS', - mixins: [NativeMethodsMixin], - - propTypes: { - ...DeprecatedViewPropTypes, - /** - * The progress bar style. - */ - progressViewStyle: PropTypes.oneOf(['default', 'bar']), - - /** - * The progress value (between 0 and 1). - */ - progress: PropTypes.number, - - /** - * The tint color of the progress bar itself. - */ - progressTintColor: PropTypes.string, - - /** - * The tint color of the progress bar track. - */ - trackTintColor: PropTypes.string, - - /** - * A stretchable image to display as the progress bar. - */ - progressImage: Image.propTypes.source, - - /** - * A stretchable image to display behind the progress bar. - */ - trackImage: Image.propTypes.source, - }, - - render: function() { - return ( - - ); - }, -}); +const ProgressViewIOS = ( + props: Props, + forwardedRef?: ?React.Ref, +) => ( + +); const styles = StyleSheet.create({ progressView: { @@ -93,6 +81,7 @@ const styles = StyleSheet.create({ }, }); -module.exports = ((ProgressViewIOS: any): Class< - ReactNative.NativeComponent, ->); +// $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet. +const ProgressViewIOSWithRef = React.forwardRef(ProgressViewIOS); + +module.exports = (ProgressViewIOSWithRef: NativeProgressViewIOS);