UNPKG

one

Version:

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

1 lines • 6.18 kB
{"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"}