react-native-split-screen
Version:

133 lines (121 loc) • 3.96 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var React = _interopDefault(require('react'));
var reactNative = require('react-native');
var native = require('@react-navigation/native');
var SplitView = function SplitView(_ref) {
var master = _ref.master,
detail = _ref.detail,
containerStyle = _ref.containerStyle,
masterStyle = _ref.masterStyle,
detailStyle = _ref.detailStyle;
return React.createElement(reactNative.View, {
style: [styles.container, containerStyle]
}, React.createElement(reactNative.View, {
style: [styles.masterView, masterStyle]
}, master), React.createElement(reactNative.View, {
style: [styles.detailView, detailStyle]
}, detail));
};
var styles = /*#__PURE__*/reactNative.StyleSheet.create({
container: {
flex: 1,
flexDirection: 'row'
},
masterView: {
flex: 1,
maxWidth: 400,
borderRightWidth: 1
},
detailView: {
flex: 1,
overflow: 'hidden'
}
});
var TabletContext = /*#__PURE__*/React.createContext(false);
var TabletContextProvider = function TabletContextProvider(_ref) {
var _ref$isTablet = _ref.isTablet,
isTablet = _ref$isTablet === void 0 ? false : _ref$isTablet,
children = _ref.children;
var state = React.useState(isTablet);
return React.createElement(TabletContext.Provider, {
value: state
}, children);
};
var useIsTablet = function useIsTablet() {
return React.useContext(TabletContext);
};
var Navigator = function Navigator() {
var _this = this;
// 设置路由
this.setNavigator = function (navigatorInstance) {
_this.navigator = navigatorInstance;
};
// 校验当前路由是否已挂载
this.isMounted = function () {
return Boolean(_this.navigator);
};
// 路由dispatch方法
this.dispatch = function (action) {
_this.navigator.dispatch(action);
};
// 调用CommonActions.navigate
this.navigate = function (screenName, params) {
_this.dispatch(native.CommonActions.navigate({
name: screenName,
params: params
}));
};
// 调用StackActions.push
this.push = function (screenName, params) {
_this.dispatch(native.StackActions.push(screenName, params));
};
};
var _Navigator = /*#__PURE__*/new Navigator(),
isDetailNavigatorMounted = _Navigator.isMounted,
detailPush = _Navigator.push,
detailNavigate = _Navigator.navigate,
setDetailNavigator = _Navigator.setNavigator;
var _Navigator$1 = /*#__PURE__*/new Navigator(),
masterPush = _Navigator$1.push,
masterNavigate = _Navigator$1.navigate,
setMasterNavigator = _Navigator$1.setNavigator;
/**
* 调用路由navigate方法
* @param routeName 路由名称
* @param params 路由参数
*/
var navigate = function navigate(routeName, params) {
if (isDetailNavigatorMounted()) {
return detailNavigate(routeName, params);
}
return masterNavigate(routeName, params);
};
/**
* 调用路由push方法
* @param routeName 路由名称
* @param params 路由参数
*/
var push = function push(routeName, params) {
if (isDetailNavigatorMounted()) {
return detailPush(routeName, params);
}
return masterPush(routeName, params);
};
var SplitView$1 = function SplitView$1(props) {
return React.createElement(SplitView, Object.assign({}, props));
};
exports.SplitView = SplitView$1;
exports.TabletContextProvider = TabletContextProvider;
exports.detailNavigate = detailNavigate;
exports.detailPush = detailPush;
exports.isDetailNavigatorMounted = isDetailNavigatorMounted;
exports.masterNavigate = masterNavigate;
exports.masterPush = masterPush;
exports.navigate = navigate;
exports.push = push;
exports.setDetailNavigator = setDetailNavigator;
exports.setMasterNavigator = setMasterNavigator;
exports.useIsTablet = useIsTablet;
//# sourceMappingURL=react-native-split-screen.cjs.development.js.map