UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

82 lines (80 loc) 2.37 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 { devHeadlessNote } from "../headless/devHeadlessNote.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, NavigationContent } = useNavigationBuilder(DrawerRouter, { ...rest, children, initialRouteName, defaultStatus, backBehavior, screenOptions }); return /* @__PURE__ */jsx(NavigationContent, { children: /* @__PURE__ */jsx(DrawerStateProvider, { state, descriptors, navigation, children: /* @__PURE__ */jsx(HeadlessDrawerView, { customChildren: headlessChildren }) }) }); } function HeadlessDrawerView({ customChildren }) { const { screens, focused } = useDrawer(); const visited = useVisitedScreens(focused.key); devHeadlessNote("Drawer"); 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