{"version":3,"file":"index.mjs","sources":["../../layouts/config.ts","../../layouts/LayoutGenerator.tsx"],"sourcesContent":["import { LayoutGeneratorConfig } from \"./types\";\n\nlet layoutGeneratorConfig: LayoutGeneratorConfig;\n\nconst setLayoutGeneratorConfig = (config: LayoutGeneratorConfig) => {\n  layoutGeneratorConfig = config;\n};\n\nexport { layoutGeneratorConfig, setLayoutGeneratorConfig };\n","import { Stack } from \"expo-router\";\nimport { ComponentProps, useCallback, useMemo } from \"react\";\nimport \"react-native-reanimated\";\nimport { LayoutGeneratorProps, Screen } from \"./types\";\nimport { useAuthValue } from \"@gaddario98/react-core/auth\";\nimport { layoutGeneratorConfig } from \"./config\";\nimport { usePageConfigValue } from \"../pages\";\n\nconst LayoutGenerator = ({\n  screens,\n  userType,\n  initialRouteName,\n}: LayoutGeneratorProps) => {\n  const user = useAuthValue();\n  const { isLogged } = usePageConfigValue();\n\n  const isAuthenticated = useMemo(() => isLogged(user), [isLogged, user]);\n\n  const isRedirect = useCallback(\n    (screen: Screen) => {\n      let val = false;\n      if (!screen) return false;\n      if (screen.requireAuth) val = !isAuthenticated;\n      if (screen.hideIfAuth) val = isAuthenticated;\n      if (screen.userType && userType !== screen.userType) val = true;\n      return val;\n    },\n    [isAuthenticated, userType],\n  );\n\n  const screenOptions = useMemo(\n    (): ComponentProps<typeof Stack>[\"screenOptions\"] => ({\n      headerShown: false,\n      keyboardHandlingEnabled: true,\n    }),\n    [],\n  );\n\n  return (\n    <Stack screenOptions={screenOptions} initialRouteName={initialRouteName}>\n      {screens.map((screen) => {\n        return (\n          <Stack.Screen\n            key={screen.name}\n            name={screen.name}\n            options={{\n              headerShown: Boolean(\n                screen.header || layoutGeneratorConfig?.header,\n              ),\n              header: screen.header || layoutGeneratorConfig?.header,\n              ...(screen?.options ?? {}),\n            }}\n            redirect={isRedirect(screen)}\n          />\n        );\n      })}\n    </Stack>\n  );\n};\n\nexport default LayoutGenerator;\n"],"names":["layoutGeneratorConfig","setLayoutGeneratorConfig","config","LayoutGenerator","_ref","screens","userType","initialRouteName","user","useAuthValue","_usePageConfigValue","usePageConfigValue","isLogged","isAuthenticated","useMemo","isRedirect","useCallback","screen","val","requireAuth","hideIfAuth","screenOptions","headerShown","keyboardHandlingEnabled","_jsx","Stack","children","map","Screen","name","options","Object","assign","Boolean","header","_a","redirect"],"mappings":"uNAEA,IAAIA;AAEJ,IAAMC,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAIC,MAA6B,EAAI;AACjEF,EAAAA,qBAAqB,GAAGE,MAAM;AAChC,ECEA,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA,EAIM;AAAA,EAAA,IAHzBC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,gBAAgB,GAAAH,IAAA,CAAhBG,gBAAgB;AAEhB,EAAA,IAAMC,IAAI,GAAGC,YAAY,EAAE;AAC3B,EAAA,IAAAC,mBAAA,GAAqBC,kBAAkB,EAAE;IAAjCC,QAAQ,GAAAF,mBAAA,CAARE,QAAQ;EAEhB,IAAMC,eAAe,GAAGC,OAAO,CAAC,YAAA;IAAA,OAAMF,QAAQ,CAACJ,IAAI,CAAC;AAAA,EAAA,CAAA,EAAE,CAACI,QAAQ,EAAEJ,IAAI,CAAC,CAAC;AAEvE,EAAA,IAAMO,UAAU,GAAGC,WAAW,CAC5B,UAACC,MAAc,EAAI;IACjB,IAAIC,GAAG,GAAG,KAAK;AACf,IAAA,IAAI,CAACD,MAAM,EAAE,OAAO,KAAK;AACzB,IAAA,IAAIA,MAAM,CAACE,WAAW,EAAED,GAAG,GAAG,CAACL,eAAe;AAC9C,IAAA,IAAII,MAAM,CAACG,UAAU,EAAEF,GAAG,GAAGL,eAAe;AAC5C,IAAA,IAAII,MAAM,CAACX,QAAQ,IAAIA,QAAQ,KAAKW,MAAM,CAACX,QAAQ,EAAEY,GAAG,GAAG,IAAI;AAC/D,IAAA,OAAOA,GAAG;AACZ,EAAA,CAAC,EACD,CAACL,eAAe,EAAEP,QAAQ,CAAC,CAC5B;EAED,IAAMe,aAAa,GAAGP,OAAO,CAC3B,YAAA;IAAA,OAAsD;AACpDQ,MAAAA,WAAW,EAAE,KAAK;AAClBC,MAAAA,uBAAuB,EAAE;KAC1B;EAAA,CAAC,EACF,EAAE,CACH;EAED,OACEC,GAAA,CAACC,KAAK;AAACJ,IAAAA,aAAa,EAAEA,aAAa;AAAEd,IAAAA,gBAAgB,EAAEA,gBAAgB;AAAAmB,IAAAA,QAAA,EACpErB,OAAO,CAACsB,GAAG,CAAC,UAACV,QAAM,EAAI;;AACtB,MAAA,OACEO,GAAA,CAACC,KAAK,CAACG,MAAM,EAAA;QAEXC,IAAI,EAAEZ,QAAM,CAACY,IAAI;AACjBC,QAAAA,OAAO,EAAAC,MAAA,CAAAC,MAAA,CAAA;UACLV,WAAW,EAAEW,OAAO,CAClBhB,QAAM,CAACiB,MAAM,KAAIlC,qBAAqB,aAArBA,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArBA,qBAAqB,CAAEkC,MAAM,CAAA,CAC/C;AACDA,UAAAA,MAAM,EAAEjB,QAAM,CAACiB,MAAM,KAAIlC,qBAAqB,KAAA,IAAA,IAArBA,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArBA,qBAAqB,CAAEkC,MAAM;AAAA,SAAA,EAClD,CAAAC,EAAA,GAAAlB,QAAM,KAAA,IAAA,IAANA,QAAM,uBAANA,QAAM,CAAEa,OAAO,MAAA,IAAA,IAAAK,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,EAAG,CAAA;QAE5BC,QAAQ,EAAErB,UAAU,CAACE,QAAM;SATtBA,QAAM,CAACY,IAAI,CAUhB;IAEN,CAAC;AAAC,GAAA,CACI;AAEZ"}