UNPKG

one

Version:

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

53 lines (49 loc) • 2.09 kB
"use client"; import { createNavigatorFactory, useNavigationBuilder } from "@react-navigation/core"; import { DrawerRouter } from "@react-navigation/routers"; import { Children, forwardRef } from "react"; import { getCustomNavigatorChildren, isNavigatorConfigChild } from "../headless/children.mjs"; import { renderKeptMountedScreens, useVisitedScreens } from "../headless/keepMounted.mjs"; import { DrawerStateProvider, useDrawer } from "../headless/useDrawer.mjs"; import { withLayoutContext } from "./withLayoutContext.mjs"; import { Fragment, jsx } from "react/jsx-runtime"; function WebDrawerNavigator({ children, headlessChildren, initialRouteName, defaultStatus, backBehavior, screenOptions, ...rest }) { const { state, descriptors, navigation, render } = useNavigationBuilder(DrawerRouter, { ...rest, children, initialRouteName, defaultStatus, backBehavior, screenOptions }); return render(/* @__PURE__ */ jsx(DrawerStateProvider, { state, descriptors, navigation, children: /* @__PURE__ */ jsx(HeadlessDrawerView, { customChildren: headlessChildren }) })); } function HeadlessDrawerView({ customChildren }) { const { screens, focused } = useDrawer(); const visited = useVisitedScreens(focused.key); if (customChildren?.length) { return /* @__PURE__ */ jsx(Fragment, { children: customChildren }); } return renderKeptMountedScreens(screens, visited); } const DrawerNavigator = createNavigatorFactory(WebDrawerNavigator)().Navigator; const RNDrawer = withLayoutContext(DrawerNavigator); const DrawerWithHeadless = forwardRef((props, ref) => { const { children, ...rest } = props; const customChildren = getCustomNavigatorChildren(children); return /* @__PURE__ */ jsx(RNDrawer, { ...rest, ref, headlessChildren: customChildren.length ? customChildren : void 0, children: Children.toArray(children).filter(isNavigatorConfigChild) }); }); const Drawer = Object.assign(DrawerWithHeadless, { Screen: RNDrawer.Screen }); var Drawer_web_default = Drawer; export { Drawer, Drawer_web_default as default }; //# sourceMappingURL=Drawer.mjs.map