react-native-popup-navigation
Version:
2 lines • 4.67 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 _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _pop_up=_interopRequireDefault(require("./pop_up"));var _jsxFileName="/Users/mnshkv/develop/opensource/popupNavigation/lib/components/navigation/index.js";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 _Dimensions$get=_reactNative.Dimensions.get('window'),width=_Dimensions$get.width,height=_Dimensions$get.height;var Navigator=function Navigator(props){var _useState=(0,_react.useState)(null),_useState2=(0,_slicedToArray2.default)(_useState,2),popUpScreen=_useState2[0],setPopUpScreen=_useState2[1];var background=new _reactNative.Animated.Value(0);var backgroundRef=(0,_react.useRef)(background);var popupRef=(0,_react.useRef)(_react.default.createRef());var pages=props.pages;var initPage=pages.find(function(page){return page.init;})||pages[0];var scale=backgroundRef.current.interpolate({inputRange:[0,1],outputRange:[1,0.9],extrapolate:'clamp'});var border=backgroundRef.current.interpolate({inputRange:[0,1],outputRange:[0,12],extrapolate:'clamp'});var animateBackground=function animateBackground(value){_reactNative.Animated.spring(backgroundRef.current,{toValue:1,tension:68,friction:12,toValue:value,useNativeDriver:true}).start();};(0,_react.useEffect)(function(){if(popUpScreen!=null){animateBackground(1);}else{animateBackground(0);}},[popUpScreen]);present=function present(name){var params=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var presentPage=pages.find(function(page){return page.name===name;});setPopUpScreen({name:presentPage.name,props:_objectSpread({},presentPage.props,{},params)});};dismiss=function dismiss(){var animted=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(animted){popupRef.current.snapTo(height);}setTimeout(function(){setPopUpScreen(null);},animted?150:0);};renderInitPage=function renderInitPage(){return _react.default.createElement(initPage.screen,_objectSpread({},initPage.props,{present:present,dismiss:dismiss}));};renderPopUp=function renderPopUp(){if(!popUpScreen){return null;}var page=pages.find(function(p){return p.name===popUpScreen.name;});var renderContent=function renderContent(){return _react.default.createElement(page.screen,_objectSpread({},popUpScreen.props,{dismiss:dismiss}));};return _react.default.createElement(_reactNative.View,{style:[{flex:1,position:'absolute',top:0,left:0}],__source:{fileName:_jsxFileName,lineNumber:78}},_react.default.createElement(_reactNative.StatusBar,{backgroundColor:'#000',animated:true,barStyle:"light-content",__source:{fileName:_jsxFileName,lineNumber:79}}),_react.default.createElement(_pop_up.default,{ref:popupRef,snapPoints:page.snapPoints||[50,height],renderContent:renderContent,dismiss:dismiss,scrollStyle:page.popupStyle,__source:{fileName:_jsxFileName,lineNumber:80}}));};return _react.default.createElement(_reactNative.View,{style:{width:width,height:height,backgroundColor:'#000'},__source:{fileName:_jsxFileName,lineNumber:92}},_react.default.createElement(_reactNative.StatusBar,{backgroundColor:'#fff',animated:true,barStyle:"dark-content",__source:{fileName:_jsxFileName,lineNumber:93}}),_react.default.createElement(_reactNative.Animated.View,{style:{width:width,height:height,overflow:'hidden',transform:[{scale:scale}],backgroundColor:'#fff',borderRadius:border},__source:{fileName:_jsxFileName,lineNumber:94}},renderInitPage()),renderPopUp());};var _default=Navigator;exports.default=_default;
//# sourceMappingURL=index.js.map