@react-navigation/stack
Version:
Stack navigator component for iOS and Android with animated transitions and gestures
75 lines (73 loc) • 2.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createStackNavigator = createStackNavigator;
var _native = require("@react-navigation/native");
var React = _interopRequireWildcard(require("react"));
var _StackView = require("../views/Stack/StackView.js");
var _jsxRuntime = require("react/jsx-runtime");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function StackNavigator({
id,
initialRouteName,
children,
layout,
screenListeners,
screenOptions,
screenLayout,
UNSTABLE_router,
...rest
}) {
const {
direction
} = (0, _native.useLocale)();
const {
state,
describe,
descriptors,
navigation,
NavigationContent
} = (0, _native.useNavigationBuilder)(_native.StackRouter, {
id,
initialRouteName,
children,
layout,
screenListeners,
screenOptions,
screenLayout,
UNSTABLE_router
});
React.useEffect(() =>
// @ts-expect-error: there may not be a tab navigator in parent
navigation.addListener?.('tabPress', e => {
const isFocused = navigation.isFocused();
// Run the operation in the next frame so we're sure all listeners have been run
// This is necessary to know if preventDefault() has been called
requestAnimationFrame(() => {
if (state.index > 0 && isFocused && !e.defaultPrevented) {
// When user taps on already focused tab and we're inside the tab,
// reset the stack to replicate native behaviour
navigation.dispatch({
..._native.StackActions.popToTop(),
target: state.key
});
}
});
}), [navigation, state.index, state.key]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(NavigationContent, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackView, {
...rest,
direction: direction,
state: state,
describe: describe,
descriptors: descriptors,
navigation: navigation
})
});
}
function createStackNavigator(config) {
return (0, _native.createNavigatorFactory)(StackNavigator)(config);
}
//# sourceMappingURL=createStackNavigator.js.map
;