UNPKG

react-native-split-screen

Version:

![预览图](https://s3.bmp.ovh/imgs/2022/12/22/602e25854a2ff0af.gif)

133 lines (121 loc) 3.96 kB
'use strict'; 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