UNPKG

@minimaltech/ra-infra

Version:

Minimal Technology ReactJS Infrastructure

30 lines 2.14 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import React from 'react'; import { CoreBindings } from '../../common'; import { Logger } from '../../helpers'; import { Admin, CustomRoutes, Resource } from 'react-admin'; import { Provider as ReduxProvider } from 'react-redux'; import { Route } from 'react-router-dom'; import { ApplicationContext } from '../context'; const Wrapper = ({ context, reduxStore, suspense, enableDebug = false, children }) => { return (_jsx(ApplicationContext.Provider, { value: { context, logger: Logger.getInstance({ enableDebug }) }, children: _jsx(ReduxProvider, { store: reduxStore, children: _jsx(React.Suspense, { fallback: suspense, children: children }) }) })); }; // ----------------------------------------------------------------- export const RaApplication = (props) => { const { context, reduxStore, suspense, enableDebug = false, resources, customRoutes, ...raProps } = props; const { layout, routes } = customRoutes ?? {}; // ------------------------------------------------------------------------------- const adminProps = React.useMemo(() => { const dataProvider = context.getSync(CoreBindings.DEFAULT_REST_DATA_PROVIDER); const authProvider = context.getSync(CoreBindings.DEFAULT_AUTH_PROVIDER); const i18nProvider = context.getSync(CoreBindings.DEFAULT_I18N_PROVIDER); return { dataProvider, authProvider, i18nProvider, ...raProps }; }, [context, raProps]); // ------------------------------------------------------------------------------- return (_jsx(Wrapper, { context: context, reduxStore: reduxStore, suspense: suspense, enableDebug: enableDebug, children: _jsxs(Admin, { ...adminProps, children: [resources.map(resource => { return _jsx(Resource, { ...resource }, resource.name); }), _jsx(CustomRoutes, { children: _jsx(Route, { element: layout, children: routes?.map(resource => { return _jsx(Route, { ...resource }, resource.id ?? resource.path); }) }) })] }) })); }; //# sourceMappingURL=RaApplication.js.map