{"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"}