@minimaltech/ra-infra
Version:
Minimal Technology ReactJS Infrastructure
30 lines • 2.14 kB
JavaScript
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