react-native-tab-view
Version:
Tab view component for React Native
2 lines • 3.37 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _jsxFileName="/Users/satya/Workspace/Projects/react-native-tab-view/src/SceneView.tsx";var SceneView=function(_React$Component){(0,_inherits2.default)(SceneView,_React$Component);function SceneView(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,SceneView);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(SceneView)).call.apply(_getPrototypeOf2,[this].concat(args)));_this.state={loading:Math.abs(_this.props.navigationState.index-_this.props.index)>_this.props.lazyPreloadDistance};_this.handleEnter=function(value){var index=_this.props.index;if(value===index&&_this.state.loading){_this.setState({loading:false});}};return _this;}(0,_createClass2.default)(SceneView,[{key:"componentDidMount",value:function componentDidMount(){var _this2=this;if(this.props.lazy){this.props.addListener('enter',this.handleEnter);}else if(this.state.loading){setTimeout(function(){return _this2.setState({loading:false});},0);}}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){if(this.props.lazy!==prevProps.lazy||this.state.loading!==prevState.loading){if(this.props.lazy&&this.state.loading){this.props.addListener('enter',this.handleEnter);}else{this.props.removeListener('enter',this.handleEnter);}}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.props.removeListener('enter',this.handleEnter);}},{key:"render",value:function render(){var _this$props=this.props,navigationState=_this$props.navigationState,index=_this$props.index,layout=_this$props.layout,style=_this$props.style;var loading=this.state.loading;var focused=navigationState.index===index;return React.createElement(_reactNative.View,{accessibilityElementsHidden:!focused,importantForAccessibility:focused?'auto':'no-hide-descendants',style:[styles.route,layout.width?{width:layout.width}:focused?_reactNative.StyleSheet.absoluteFill:null,style],__source:{fileName:_jsxFileName,lineNumber:92}},focused||layout.width?this.props.children({loading:loading}):null);}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(props,state){if(state.loading&&Math.abs(props.navigationState.index-props.index)<=props.lazyPreloadDistance){return{loading:false};}return null;}}]);return SceneView;}(React.Component);exports.default=SceneView;var styles=_reactNative.StyleSheet.create({route:{flex:1,overflow:'hidden'}});
//# sourceMappingURL=SceneView.js.map