UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

83 lines (79 loc) • 2.43 kB
"use client"; import { jsx } from "react/jsx-runtime"; import { createNavigatorFactory, useNavigationBuilder } from "@react-navigation/core"; import { CommonActions, StackActions, StackRouter } from "@react-navigation/routers"; import { useEffect } from "react"; import { findLastNonOverlayIndex } from "./stackStateUtils.native.js"; import { WebStackView } from "./WebStackView.native.js"; function WebStackNavigator(param) { var { initialRouteName, children, screenOptions, headlessChildren, ...rest } = param; var { state, navigation, descriptors, render } = useNavigationBuilder(StackRouter, { ...rest, children, screenOptions, initialRouteName }); useEffect(function() { if (!initialRouteName) return; if (!state.routeNames.includes(initialRouteName)) return; if (findLastNonOverlayIndex(state, descriptors) !== -1) return; var timer = setTimeout(function() { var current = navigation.getState(); if (findLastNonOverlayIndex(current, descriptors) !== -1) return; navigation.dispatch({ ...CommonActions.reset({ stale: true, routes: [{ name: initialRouteName, params: void 0 }, ...current.routes.map(function(param2) { var { key, name, params, path } = param2; return { key, name, params, path }; })], index: current.routes.length }), target: current.key }); }, 0); return function() { return clearTimeout(timer); }; }, [ initialRouteName, state, descriptors, navigation ]); useEffect(function() { var _navigation_addListener; return navigation === null || navigation === void 0 ? void 0 : (_navigation_addListener = navigation.addListener) === null || _navigation_addListener === void 0 ? void 0 : _navigation_addListener.call(navigation, "tabPress", function(e) { var isFocused = navigation.isFocused(); requestAnimationFrame(function() { if (state.index > 0 && isFocused && !e.defaultPrevented) { navigation.dispatch({ ...StackActions.popToTop(), target: state.key }); } }); }); }, [ navigation, state.index, state.key ]); return render(/* @__PURE__ */ jsx(WebStackView, { state, navigation, descriptors, customChildren: headlessChildren })); } var createWebStackNavigator = createNavigatorFactory(WebStackNavigator); export { createWebStackNavigator }; //# sourceMappingURL=WebStackNavigator.native.js.map