@gaddario98/react-native-core
Version:
```bash npm install @gaddario98/native ```
44 lines (43 loc) • 2.07 kB
JavaScript
import {jsx}from'react/jsx-runtime';import {Stack}from'expo-router';import {useMemo,useCallback}from'react';import {useAuthValue}from'@gaddario98/react-core/auth';import {usePageConfigValue}from'../pages/index.mjs';var layoutGeneratorConfig;
var setLayoutGeneratorConfig = function setLayoutGeneratorConfig(config) {
layoutGeneratorConfig = config;
};var LayoutGenerator = function LayoutGenerator(_ref) {
var screens = _ref.screens,
userType = _ref.userType,
initialRouteName = _ref.initialRouteName;
var user = useAuthValue();
var _usePageConfigValue = usePageConfigValue(),
isLogged = _usePageConfigValue.isLogged;
var isAuthenticated = useMemo(function () {
return isLogged(user);
}, [isLogged, user]);
var isRedirect = useCallback(function (screen) {
var val = false;
if (!screen) return false;
if (screen.requireAuth) val = !isAuthenticated;
if (screen.hideIfAuth) val = isAuthenticated;
if (screen.userType && userType !== screen.userType) val = true;
return val;
}, [isAuthenticated, userType]);
var screenOptions = useMemo(function () {
return {
headerShown: false,
keyboardHandlingEnabled: true
};
}, []);
return jsx(Stack, {
screenOptions: screenOptions,
initialRouteName: initialRouteName,
children: screens.map(function (screen_0) {
var _a;
return jsx(Stack.Screen, {
name: screen_0.name,
options: Object.assign({
headerShown: Boolean(screen_0.header || (layoutGeneratorConfig === null || layoutGeneratorConfig === void 0 ? void 0 : layoutGeneratorConfig.header)),
header: screen_0.header || (layoutGeneratorConfig === null || layoutGeneratorConfig === void 0 ? void 0 : layoutGeneratorConfig.header)
}, (_a = screen_0 === null || screen_0 === void 0 ? void 0 : screen_0.options) !== null && _a !== void 0 ? _a : {}),
redirect: isRedirect(screen_0)
}, screen_0.name);
})
});
};export{LayoutGenerator,layoutGeneratorConfig,setLayoutGeneratorConfig};//# sourceMappingURL=index.mjs.map