one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 6.18 kB
Source Map (JSON)
{"version":3,"file":"WebStackView.js","names":[],"sources":["esm/router/web/WebStackView.js"],"sourcesContent":["\"use client\";\nimport {\n StackActions\n} from \"@react-navigation/routers\";\nimport {\n Activity,\n Fragment,\n useCallback,\n useEffect,\n useState\n} from \"react\";\nimport useLatestCallback from \"use-latest-callback\";\nimport { useWebPresentations } from \"../../headless/Presentations\";\nimport {\n StackStateProvider,\n useStack\n} from \"../../headless/useStack\";\nimport { findLastNonOverlayIndex } from \"./stackStateUtils\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction WebStackView({\n state,\n navigation,\n descriptors,\n customChildren\n}) {\n return /* @__PURE__ */ jsx(\n StackStateProvider,\n {\n state,\n descriptors,\n children: /* @__PURE__ */ jsx(\n HeadlessStackView,\n {\n state,\n navigation,\n descriptors,\n customChildren\n }\n )\n }\n );\n}\nfunction HeadlessStackView({\n state,\n navigation,\n descriptors,\n customChildren\n}) {\n const stack = useStack();\n const presentations = useWebPresentations();\n if (customChildren?.length) {\n return /* @__PURE__ */ jsx(Fragment, { children: customChildren });\n }\n const lastBaseIndex = findLastNonOverlayIndex(\n state,\n descriptors,\n (options) => getPresentationType(options) !== void 0\n );\n const baseRouteKeys = new Set(\n state.routes.slice(0, lastBaseIndex + 1).map((route) => route.key)\n );\n const baseFocusedKey = state.routes[lastBaseIndex]?.key;\n const overlayRoutes = state.routes.slice(lastBaseIndex + 1, state.index + 1);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n stack.screens.map((screen) => {\n if (!baseRouteKeys.has(screen.key)) return null;\n if (screen.key === baseFocusedKey) {\n return screen.keepMounted ? /* @__PURE__ */ jsx(Activity, { mode: \"visible\", children: screen.element }, screen.key) : /* @__PURE__ */ jsx(Fragment, { children: screen.element }, screen.key);\n }\n if (!screen.keepMounted) return null;\n return /* @__PURE__ */ jsx(Activity, { mode: \"hidden\", children: screen.element }, screen.key);\n }),\n overlayRoutes.map((route) => {\n const screen = stack.screens.find((entry) => entry.key === route.key);\n const type = getPresentationType(descriptors[route.key]?.options);\n if (!screen || !type) return null;\n return /* @__PURE__ */ jsx(\n PresentationScreen,\n {\n screen,\n type,\n presentations,\n onDismiss: () => navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: state.key\n })\n },\n route.key\n );\n })\n ] });\n}\nfunction PresentationScreen({\n screen,\n type,\n presentations,\n onDismiss\n}) {\n const dismiss = useLatestCallback(onDismiss);\n const onOpenChange = useCallback(\n (nextOpen) => {\n if (!nextOpen) dismiss();\n },\n [dismiss]\n );\n const [open, setOpen] = useState(false);\n useEffect(() => setOpen(true), []);\n if (type === \"sheet\") {\n const Sheet = presentations?.sheet;\n if (!Sheet) return screen.element;\n return /* @__PURE__ */ jsx(\n Sheet,\n {\n open,\n onOpenChange,\n options: screen.options,\n screen,\n children: screen.element\n }\n );\n }\n const Modal = presentations?.modal;\n if (!Modal) return screen.element;\n return /* @__PURE__ */ jsx(\n Modal,\n {\n open,\n onOpenChange,\n options: screen.options,\n screen,\n children: screen.element\n }\n );\n}\nfunction getPresentationType(options) {\n const presentation = options?.presentation;\n if (!presentation || presentation === \"card\" || presentation === \"push\") {\n return void 0;\n }\n if (presentation === \"sheet\" || presentation === \"formSheet\" || presentation === \"pageSheet\") {\n return \"sheet\";\n }\n return \"modal\";\n}\nexport {\n WebStackView\n};\n//# sourceMappingURL=WebStackView.js.map\n"],"mappings":";;;;;;;;;;;AAmBA,SAAS,aAAa,EACpB,OACA,YACA,aACA,kBACC;CACD,OAAuB,oBACrB,oBACA;EACE;EACA;EACA,UAA0B,oBACxB,mBACA;GACE;GACA;GACA;GACA;EACF,CACF;CACF,CACF;AACF;AACA,SAAS,kBAAkB,EACzB,OACA,YACA,aACA,kBACC;CACD,MAAM,QAAQ,SAAS;CACvB,MAAM,gBAAgB,oBAAoB;CAC1C,IAAI,gBAAgB,QAAQ;EAC1B,OAAuB,oBAAI,UAAU,EAAE,UAAU,eAAe,CAAC;CACnE;CACA,MAAM,gBAAgB,wBACpB,OACA,cACC,YAAY,oBAAoB,OAAO,MAAM,KAAK,CACrD;CACA,MAAM,gBAAgB,IAAI,IACxB,MAAM,OAAO,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,UAAU,MAAM,GAAG,CACnE;CACA,MAAM,iBAAiB,MAAM,OAAO,cAAc,EAAE;CACpD,MAAM,gBAAgB,MAAM,OAAO,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC;CAC3E,OAAuB,qBAAK,UAAU,EAAE,UAAU,CAChD,MAAM,QAAQ,KAAK,WAAW;EAC5B,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,GAAG,OAAO;EAC3C,IAAI,OAAO,QAAQ,gBAAgB;GACjC,OAAO,OAAO,cAA8B,oBAAI,UAAU;IAAE,MAAM;IAAW,UAAU,OAAO;GAAQ,GAAG,OAAO,GAAG,IAAoB,oBAAI,UAAU,EAAE,UAAU,OAAO,QAAQ,GAAG,OAAO,GAAG;EAC/L;EACA,IAAI,CAAC,OAAO,aAAa,OAAO;EAChC,OAAuB,oBAAI,UAAU;GAAE,MAAM;GAAU,UAAU,OAAO;EAAQ,GAAG,OAAO,GAAG;CAC/F,CAAC,GACD,cAAc,KAAK,UAAU;EAC3B,MAAM,SAAS,MAAM,QAAQ,MAAM,UAAU,MAAM,QAAQ,MAAM,GAAG;EACpE,MAAM,OAAO,oBAAoB,YAAY,MAAM,IAAI,EAAE,OAAO;EAChE,IAAI,CAAC,UAAU,CAAC,MAAM,OAAO;EAC7B,OAAuB,oBACrB,oBACA;GACE;GACA;GACA;GACA,iBAAiB,WAAW,SAAS;IACnC,GAAG,aAAa,IAAI;IACpB,QAAQ,MAAM;IACd,QAAQ,MAAM;GAChB,CAAC;EACH,GACA,MAAM,GACR;CACF,CAAC,CACH,EAAE,CAAC;AACL;AACA,SAAS,mBAAmB,EAC1B,QACA,MACA,eACA,aACC;CACD,MAAM,UAAU,kBAAkB,SAAS;CAC3C,MAAM,eAAe,aAClB,aAAa;EACZ,IAAI,CAAC,UAAU,QAAQ;CACzB,GACA,CAAC,OAAO,CACV;CACA,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CACtC,gBAAgB,QAAQ,IAAI,GAAG,CAAC,CAAC;CACjC,IAAI,SAAS,SAAS;EACpB,MAAM,QAAQ,eAAe;EAC7B,IAAI,CAAC,OAAO,OAAO,OAAO;EAC1B,OAAuB,oBACrB,OACA;GACE;GACA;GACA,SAAS,OAAO;GAChB;GACA,UAAU,OAAO;EACnB,CACF;CACF;CACA,MAAM,QAAQ,eAAe;CAC7B,IAAI,CAAC,OAAO,OAAO,OAAO;CAC1B,OAAuB,oBACrB,OACA;EACE;EACA;EACA,SAAS,OAAO;EAChB;EACA,UAAU,OAAO;CACnB,CACF;AACF;AACA,SAAS,oBAAoB,SAAS;CACpC,MAAM,eAAe,SAAS;CAC9B,IAAI,CAAC,gBAAgB,iBAAiB,UAAU,iBAAiB,QAAQ;EACvE,OAAO,KAAK;CACd;CACA,IAAI,iBAAiB,WAAW,iBAAiB,eAAe,iBAAiB,aAAa;EAC5F,OAAO;CACT;CACA,OAAO;AACT"}