one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 6.52 kB
Source Map (JSON)
{"version":3,"file":"Tabs.shared.js","names":[],"sources":["esm/ui/Tabs.shared.js"],"sourcesContent":["import {\n LinkingContext,\n useNavigationBuilder\n} from \"@react-navigation/native\";\nimport {\n Children,\n Fragment,\n isValidElement,\n use,\n useMemo,\n useRef\n} from \"react\";\nimport { useRouteInfo } from \"../hooks\";\nimport { resolveHref } from \"../link/href\";\nimport { useContextKey, useRouteNode } from \"../router/Route\";\nimport { shouldLinkExternally } from \"../utils/url\";\nimport { NavigatorContext } from \"../views/Navigator\";\nimport { triggersToScreens } from \"./common\";\nimport {\n TabTriggerMapContext\n} from \"./TabContext\";\nimport { isTabList } from \"./TabList\";\nimport { ExpoTabRouter } from \"./TabRouter\";\nimport { isTabSlot } from \"./TabSlot\";\nimport { isTabTrigger } from \"./TabTrigger\";\nimport { useComponent } from \"./useComponent\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction useTabsWithChildren(options) {\n const { children, ...rest } = options;\n return useTabsWithTriggers({\n triggers: parseTriggersFromChildren(children),\n ...rest\n });\n}\nfunction useTabsWithTriggers(options) {\n const { triggers, ...rest } = options;\n const parentTriggerMap = use(TabTriggerMapContext);\n const routeNode = useRouteNode();\n const contextKey = useContextKey();\n const linking = use(LinkingContext).options;\n const routeInfo = useRouteInfo();\n if (!routeNode || !linking) {\n throw new Error(\"No RouteNode. This is likely a bug in one router.\");\n }\n const { children, triggerMap } = triggersToScreens(\n triggers,\n routeNode,\n linking,\n routeNode.initialRouteName,\n parentTriggerMap,\n routeInfo,\n contextKey\n );\n const navigatorContext = useNavigationBuilder(ExpoTabRouter, {\n children,\n ...rest,\n triggerMap,\n initialRouteName: routeNode.initialRouteName\n });\n const { state, descriptors, navigation, render } = navigatorContext;\n const descriptorsRef = useRef(descriptors);\n descriptorsRef.current = descriptors;\n const navigatorContextValue = useMemo(\n () => ({\n state,\n navigation,\n contextKey,\n router: ExpoTabRouter,\n descriptorsRef\n }),\n [state, navigation, contextKey]\n );\n const NavigationContent = useComponent((children2) => /* @__PURE__ */ jsx(TabTriggerMapContext.Provider, { value: triggerMap, children: /* @__PURE__ */ jsx(NavigatorContext.Provider, { value: navigatorContextValue, children: render(children2) }) }));\n return { state, descriptors, navigation, NavigationContent };\n}\nfunction parseTriggersFromChildren(children, screenTriggers = [], isInTabList = false) {\n Children.forEach(children, (child) => {\n if (!child || !isValidElement(child) || isTabSlot(child)) return;\n if (isFragment(child) && typeof child.props.children !== \"function\") {\n return parseTriggersFromChildren(\n child.props.children,\n screenTriggers,\n isInTabList || isTabList(child)\n );\n }\n if (isTabList(child) && typeof child.props.children !== \"function\") {\n let children2 = child.props.children;\n if (child.props.asChild && isValidElement(children2) && children2.props && typeof children2.props === \"object\" && \"children\" in children2.props) {\n children2 = children2.props.children;\n }\n return parseTriggersFromChildren(\n children2,\n screenTriggers,\n isInTabList || isTabList(child)\n );\n }\n if (!isInTabList || !isTabTrigger(child)) return;\n const { href, name } = child.props;\n if (!href) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `<TabTrigger name={${name}}> does not have a 'href' prop. TabTriggers within a <TabList /> are required to have an href.`\n );\n }\n return;\n }\n const resolvedHref = resolveHref(href);\n if (shouldLinkExternally(resolvedHref)) {\n screenTriggers.push({ type: \"external\", name, href: resolvedHref });\n return;\n }\n if (!name) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `<TabTrigger> does not have a 'name' prop. TabTriggers within a <TabList /> are required to have a name.`\n );\n }\n return;\n }\n screenTriggers.push({ type: \"internal\", href: resolvedHref, name });\n });\n return screenTriggers;\n}\nfunction isFragment(child) {\n return child.type === Fragment;\n}\nexport {\n useTabsWithChildren,\n useTabsWithTriggers\n};\n//# sourceMappingURL=Tabs.shared.js.map\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,SAAS,oBAAoB,SAAS;CACpC,MAAM,EAAE,UAAU,GAAG,SAAS;CAC9B,OAAO,oBAAoB;EACzB,UAAU,0BAA0B,QAAQ;EAC5C,GAAG;CACL,CAAC;AACH;AACA,SAAS,oBAAoB,SAAS;CACpC,MAAM,EAAE,UAAU,GAAG,SAAS;CAC9B,MAAM,mBAAmB,IAAI,oBAAoB;CACjD,MAAM,YAAY,aAAa;CAC/B,MAAM,aAAa,cAAc;CACjC,MAAM,UAAU,IAAI,cAAc,CAAC,CAAC;CACpC,MAAM,YAAY,aAAa;CAC/B,IAAI,CAAC,aAAa,CAAC,SAAS;EAC1B,MAAM,IAAI,MAAM,mDAAmD;CACrE;CACA,MAAM,EAAE,UAAU,eAAe,kBAC/B,UACA,WACA,SACA,UAAU,kBACV,kBACA,WACA,UACF;CACA,MAAM,mBAAmB,qBAAqB,eAAe;EAC3D;EACA,GAAG;EACH;EACA,kBAAkB,UAAU;CAC9B,CAAC;CACD,MAAM,EAAE,OAAO,aAAa,YAAY,WAAW;CACnD,MAAM,iBAAiB,OAAO,WAAW;CACzC,eAAe,UAAU;CACzB,MAAM,wBAAwB,eACrB;EACL;EACA;EACA;EACA,QAAQ;EACR;CACF,IACA;EAAC;EAAO;EAAY;CAAU,CAChC;CACA,MAAM,oBAAoB,cAAc,cAA8B,oBAAI,qBAAqB,UAAU;EAAE,OAAO;EAAY,UAA0B,oBAAI,iBAAiB,UAAU;GAAE,OAAO;GAAuB,UAAU,OAAO,SAAS;EAAE,CAAC;CAAE,CAAC,CAAC;CACxP,OAAO;EAAE;EAAO;EAAa;EAAY;CAAkB;AAC7D;AACA,SAAS,0BAA0B,UAAU,iBAAiB,CAAC,GAAG,cAAc,OAAO;CACrF,SAAS,QAAQ,WAAW,UAAU;EACpC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,UAAU,KAAK,GAAG;EAC1D,IAAI,WAAW,KAAK,KAAK,OAAO,MAAM,MAAM,aAAa,YAAY;GACnE,OAAO,0BACL,MAAM,MAAM,UACZ,gBACA,eAAe,UAAU,KAAK,CAChC;EACF;EACA,IAAI,UAAU,KAAK,KAAK,OAAO,MAAM,MAAM,aAAa,YAAY;GAClE,IAAI,YAAY,MAAM,MAAM;GAC5B,IAAI,MAAM,MAAM,WAAW,eAAe,SAAS,KAAK,UAAU,SAAS,OAAO,UAAU,UAAU,YAAY,cAAc,UAAU,OAAO;IAC/I,YAAY,UAAU,MAAM;GAC9B;GACA,OAAO,0BACL,WACA,gBACA,eAAe,UAAU,KAAK,CAChC;EACF;EACA,IAAI,CAAC,eAAe,CAAC,aAAa,KAAK,GAAG;EAC1C,MAAM,EAAE,MAAM,SAAS,MAAM;EAC7B,IAAI,CAAC,MAAM;GACT,IAAI,QAAQ,IAAI,aAAa,eAAe;IAC1C,QAAQ,KACN,qBAAqB,KAAK,+FAC5B;GACF;GACA;EACF;EACA,MAAM,eAAe,YAAY,IAAI;EACrC,IAAI,qBAAqB,YAAY,GAAG;GACtC,eAAe,KAAK;IAAE,MAAM;IAAY;IAAM,MAAM;GAAa,CAAC;GAClE;EACF;EACA,IAAI,CAAC,MAAM;GACT,IAAI,QAAQ,IAAI,aAAa,eAAe;IAC1C,QAAQ,KACN,yGACF;GACF;GACA;EACF;EACA,eAAe,KAAK;GAAE,MAAM;GAAY,MAAM;GAAc;EAAK,CAAC;CACpE,CAAC;CACD,OAAO;AACT;AACA,SAAS,WAAW,OAAO;CACzB,OAAO,MAAM,SAAS;AACxB"}