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