react-navigation-stack
Version:
Stack navigator component for React Navigation
2 lines • 6.49 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 _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));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 _TouchableItem=_interopRequireDefault(require("../TouchableItem"));var _backIcon=_interopRequireDefault(require("../assets/back-icon.png"));var _BackButtonWeb=_interopRequireDefault(require("./BackButtonWeb"));var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-stack/src/views/Header/HeaderBackButton.tsx";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(source,true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(source).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var HeaderBackButton=function(_React$PureComponent){(0,_inherits2.default)(HeaderBackButton,_React$PureComponent);function HeaderBackButton(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,HeaderBackButton);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)(HeaderBackButton)).call.apply(_getPrototypeOf2,[this].concat(args)));_this.state={};_this.handleTextLayout=function(e){if(_this.state.initialTextWidth){return;}_this.setState({initialTextWidth:e.nativeEvent.layout.x+e.nativeEvent.layout.width});};_this.getTitleText=function(){var _this$props=_this.props,width=_this$props.width,title=_this$props.title,truncatedTitle=_this$props.truncatedTitle;var initialTextWidth=_this.state.initialTextWidth;if(title===null){return null;}else if(!title){return truncatedTitle;}else if(initialTextWidth&&width&&initialTextWidth>width){return truncatedTitle;}else{return title;}};return _this;}(0,_createClass2.default)(HeaderBackButton,[{key:"renderBackImage",value:function renderBackImage(){var _this$props2=this.props,backImage=_this$props2.backImage,backTitleVisible=_this$props2.backTitleVisible,tintColor=_this$props2.tintColor;var title=this.getTitleText();if(React.isValidElement(backImage)){return backImage;}else if(backImage){return backImage({tintColor:tintColor,title:title});}else{return React.createElement(_reactNative.Image,{style:[styles.icon,!!backTitleVisible&&styles.iconWithTitle,!!tintColor&&{tintColor:tintColor}],source:_backIcon.default,fadeDuration:0,__source:{fileName:_jsxFileName,lineNumber:62}});}}},{key:"maybeRenderTitle",value:function maybeRenderTitle(){var _this$props3=this.props,allowFontScaling=_this$props3.allowFontScaling,backTitleVisible=_this$props3.backTitleVisible,titleStyle=_this$props3.titleStyle,tintColor=_this$props3.tintColor;var backTitleText=this.getTitleText();if(!backTitleVisible||backTitleText===null){return null;}return React.createElement(_reactNative.Text,{accessible:false,onLayout:this.handleTextLayout,style:[styles.title,!!tintColor&&{color:tintColor},titleStyle],numberOfLines:1,allowFontScaling:!!allowFontScaling,__source:{fileName:_jsxFileName,lineNumber:105}},this.getTitleText());}},{key:"render",value:function render(){var _this$props4=this.props,onPress=_this$props4.onPress,pressColorAndroid=_this$props4.pressColorAndroid,title=_this$props4.title,disabled=_this$props4.disabled;var button=React.createElement(_TouchableItem.default,{disabled:disabled,accessible:true,accessibilityRole:"button",accessibilityComponentType:"button",accessibilityLabel:title?title+", back":'Go back',accessibilityTraits:"button",testID:"header-back",delayPressIn:0,onPress:disabled?undefined:onPress,pressColor:pressColorAndroid,style:[styles.container,disabled&&styles.disabled],borderless:true,__source:{fileName:_jsxFileName,lineNumber:121}},React.createElement(_reactNative.View,{style:styles.container,__source:{fileName:_jsxFileName,lineNumber:135}},this.renderBackImage(),this.maybeRenderTitle()));if(_reactNative.Platform.OS==='ios'){return button;}else{return React.createElement(_reactNative.View,{style:styles.androidButtonWrapper,__source:{fileName:_jsxFileName,lineNumber:145}},button);}}}]);return HeaderBackButton;}(React.PureComponent);HeaderBackButton.defaultProps={pressColorAndroid:'rgba(0, 0, 0, .32)',tintColor:_reactNative.Platform.select({ios:'#037aff',web:'#5f6368'}),truncatedTitle:'Back',backImage:_reactNative.Platform.select({web:_BackButtonWeb.default})};var styles=_reactNative.StyleSheet.create({disabled:{opacity:0.5},androidButtonWrapper:_objectSpread({margin:13,backgroundColor:'transparent'},_reactNative.Platform.select({web:{marginLeft:21},default:{}})),container:{alignItems:'center',flexDirection:'row',backgroundColor:'transparent'},title:{fontSize:17,paddingRight:10},icon:_reactNative.Platform.select({ios:{backgroundColor:'transparent',height:21,width:13,marginLeft:9,marginRight:22,marginVertical:12,resizeMode:'contain',transform:[{scaleX:_reactNative.I18nManager.isRTL?-1:1}]},default:{height:24,width:24,margin:3,resizeMode:'contain',backgroundColor:'transparent',transform:[{scaleX:_reactNative.I18nManager.isRTL?-1:1}]}}),iconWithTitle:_reactNative.Platform.OS==='ios'?{marginRight:6}:{}});var _default=HeaderBackButton;exports.default=_default;
//# sourceMappingURL=HeaderBackButton.js.map