{"version":3,"file":"Stack.js","names":[],"sources":["esm/layouts/Stack.js"],"sourcesContent":["import React, { Children, useMemo } from \"react\";\nimport { isChildOfType } from \"../utils/children\";\nimport { Protected } from \"../views/Protected\";\nimport { Screen } from \"../views/Screen\";\nimport { createStackNavigator, getStackNavigatorProps } from \"./stack-navigator\";\nimport {\n  appendScreenStackPropsToOptions,\n  StackHeader,\n  StackHeaderComponent,\n  StackHeaderSearchBar,\n  StackScreen,\n  StackToolbarBadge,\n  StackToolbarButton,\n  StackToolbarComponent,\n  StackToolbarIcon,\n  StackToolbarLabel,\n  StackToolbarMenu,\n  StackToolbarMenuAction,\n  StackToolbarSearchBarSlot,\n  StackToolbarSpacer,\n  appendStackToolbarPropsToOptions\n} from \"./stack-utils\";\nimport { withLayoutContext } from \"./withLayoutContext\";\nimport { jsx } from \"react/jsx-runtime\";\nconst NativeStackNavigator = createStackNavigator().Navigator;\nconst RNStack = withLayoutContext(NativeStackNavigator, void 0, { undeclaredRoutes: true });\nfunction mapChildren(children) {\n  return Children.toArray(children).map((child, index) => {\n    if (isChildOfType(child, StackScreen)) {\n      const options = appendScreenStackPropsToOptions({}, child.props);\n      const { children: _, ...rest } = child.props;\n      return /* @__PURE__ */ jsx(Screen, { ...rest, options }, child.props.name ?? index);\n    }\n    if (isChildOfType(child, Protected)) {\n      return React.cloneElement(\n        child,\n        { key: `protected-${index}` },\n        mapChildren(child.props.children)\n      );\n    }\n    if (isChildOfType(child, StackHeaderComponent)) {\n      return null;\n    }\n    if (isChildOfType(child, StackToolbarComponent)) {\n      return null;\n    }\n    if (isChildOfType(child, Screen)) {\n      return child;\n    }\n    return null;\n  }).filter(Boolean);\n}\nconst StackWithComposition = React.forwardRef(\n  (props, ref) => {\n    const { children, screenOptions, ...rest } = props;\n    const screenOptionsWithHeader = useMemo(() => {\n      const stackHeader = Children.toArray(children).find(\n        (child) => isChildOfType(child, StackHeaderComponent)\n      );\n      const stackToolbars = Children.toArray(children).filter(\n        (child) => isChildOfType(child, StackToolbarComponent)\n      );\n      if (!stackHeader && !stackToolbars.length) return screenOptions;\n      const applyComposition = (opts) => {\n        let result = opts;\n        for (const stackToolbar of stackToolbars) {\n          result = appendStackToolbarPropsToOptions(\n            result,\n            stackToolbar.props\n          );\n        }\n        if (stackHeader && isChildOfType(stackHeader, StackHeaderComponent)) {\n          const headerProps = { children: stackHeader };\n          result = appendScreenStackPropsToOptions(\n            result,\n            headerProps\n          );\n        }\n        return result;\n      };\n      if (screenOptions) {\n        if (typeof screenOptions === \"function\") {\n          return (...args) => {\n            const opts = screenOptions(...args);\n            return applyComposition(opts);\n          };\n        }\n        return applyComposition(screenOptions);\n      }\n      return applyComposition({});\n    }, [children, screenOptions]);\n    const processedChildren = useMemo(() => mapChildren(children), [children]);\n    const navigatorProps = useMemo(() => getStackNavigatorProps(children), [children]);\n    return /* @__PURE__ */ jsx(\n      RNStack,\n      {\n        ...rest,\n        ...navigatorProps,\n        ref,\n        screenOptions: screenOptionsWithHeader,\n        children: processedChildren\n      }\n    );\n  }\n);\nconst StackToolbar = Object.assign(StackToolbarComponent, {\n  Button: StackToolbarButton,\n  Menu: StackToolbarMenu,\n  MenuAction: StackToolbarMenuAction,\n  Spacer: StackToolbarSpacer,\n  SearchBarSlot: StackToolbarSearchBarSlot,\n  Label: StackToolbarLabel,\n  Icon: StackToolbarIcon,\n  Badge: StackToolbarBadge\n});\nconst Stack = Object.assign(StackWithComposition, {\n  Screen: StackScreen,\n  Header: StackHeader,\n  Toolbar: StackToolbar,\n  Protected,\n  SearchBar: StackHeaderSearchBar\n});\nvar Stack_default = Stack;\nexport {\n  Stack,\n  Stack_default as default\n};\n//# sourceMappingURL=Stack.js.map\n"],"mappings":";;;;;;;;;;AAwBA,MAAM,uBAAuB,qBAAqB,CAAC,CAAC;AACpD,MAAM,UAAU,kBAAkB,sBAAsB,KAAK,GAAG,EAAE,kBAAkB,KAAK,CAAC;AAC1F,SAAS,YAAY,UAAU;CAC7B,OAAO,SAAS,QAAQ,QAAQ,CAAC,CAAC,KAAK,OAAO,UAAU;EACtD,IAAI,cAAc,OAAO,WAAW,GAAG;GACrC,MAAM,UAAU,gCAAgC,CAAC,GAAG,MAAM,KAAK;GAC/D,MAAM,EAAE,UAAU,GAAG,GAAG,SAAS,MAAM;GACvC,OAAuB,oBAAI,QAAQ;IAAE,GAAG;IAAM;GAAQ,GAAG,MAAM,MAAM,QAAQ,KAAK;EACpF;EACA,IAAI,cAAc,OAAO,SAAS,GAAG;GACnC,OAAO,MAAM,aACX,OACA,EAAE,KAAK,aAAa,QAAQ,GAC5B,YAAY,MAAM,MAAM,QAAQ,CAClC;EACF;EACA,IAAI,cAAc,OAAO,oBAAoB,GAAG;GAC9C,OAAO;EACT;EACA,IAAI,cAAc,OAAO,qBAAqB,GAAG;GAC/C,OAAO;EACT;EACA,IAAI,cAAc,OAAO,MAAM,GAAG;GAChC,OAAO;EACT;EACA,OAAO;CACT,CAAC,CAAC,CAAC,OAAO,OAAO;AACnB;AACA,MAAM,uBAAuB,MAAM,YAChC,OAAO,QAAQ;CACd,MAAM,EAAE,UAAU,eAAe,GAAG,SAAS;CAC7C,MAAM,0BAA0B,cAAc;EAC5C,MAAM,cAAc,SAAS,QAAQ,QAAQ,CAAC,CAAC,MAC5C,UAAU,cAAc,OAAO,oBAAoB,CACtD;EACA,MAAM,gBAAgB,SAAS,QAAQ,QAAQ,CAAC,CAAC,QAC9C,UAAU,cAAc,OAAO,qBAAqB,CACvD;EACA,IAAI,CAAC,eAAe,CAAC,cAAc,QAAQ,OAAO;EAClD,MAAM,oBAAoB,SAAS;GACjC,IAAI,SAAS;GACb,KAAK,MAAM,gBAAgB,eAAe;IACxC,SAAS,iCACP,QACA,aAAa,KACf;GACF;GACA,IAAI,eAAe,cAAc,aAAa,oBAAoB,GAAG;IACnE,MAAM,cAAc,EAAE,UAAU,YAAY;IAC5C,SAAS,gCACP,QACA,WACF;GACF;GACA,OAAO;EACT;EACA,IAAI,eAAe;GACjB,IAAI,OAAO,kBAAkB,YAAY;IACvC,QAAQ,GAAG,SAAS;KAClB,MAAM,OAAO,cAAc,GAAG,IAAI;KAClC,OAAO,iBAAiB,IAAI;IAC9B;GACF;GACA,OAAO,iBAAiB,aAAa;EACvC;EACA,OAAO,iBAAiB,CAAC,CAAC;CAC5B,GAAG,CAAC,UAAU,aAAa,CAAC;CAC5B,MAAM,oBAAoB,cAAc,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC;CACzE,MAAM,iBAAiB,cAAc,uBAAuB,QAAQ,GAAG,CAAC,QAAQ,CAAC;CACjF,OAAuB,oBACrB,SACA;EACE,GAAG;EACH,GAAG;EACH;EACA,eAAe;EACf,UAAU;CACZ,CACF;AACF,CACF;AACA,MAAM,eAAe,OAAO,OAAO,uBAAuB;CACxD,QAAQ;CACR,MAAM;CACN,YAAY;CACZ,QAAQ;CACR,eAAe;CACf,OAAO;CACP,MAAM;CACN,OAAO;AACT,CAAC;AACD,MAAM,QAAQ,OAAO,OAAO,sBAAsB;CAChD,QAAQ;CACR,QAAQ;CACR,SAAS;CACT;CACA,WAAW;AACb,CAAC;AACD,IAAI,gBAAgB"}