drf-react-by-schema
Version:
Components and Tools for building a React App having Django Rest Framework (DRF) as server
54 lines (53 loc) • 2.25 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const styles_1 = require("@mui/material/styles");
const CssBaseline_1 = __importDefault(require("@mui/material/CssBaseline"));
const theme_1 = __importDefault(require("../styles/theme"));
const Overlays_1 = __importDefault(require("./Overlays"));
const DRFReactBySchemaContext_1 = require("./DRFReactBySchemaContext");
/**
*
*
* @param {*} props
* @returns {*}
*/
const DRFReactBySchemaProvider = ({ serverEndPoint, theme, isInBatches, firstBatchLength, children, }) => {
if (serverEndPoint) {
const defaultKeys = [
'autocomplete',
'api',
'getToken',
['refreshToken', 'refresh'],
['verifyToken', 'verify'],
];
for (const key of defaultKeys) {
if (key === 'getToken') {
serverEndPoint[key] = serverEndPoint.apiTokenUrl;
continue;
}
const hybridKey = typeof key === 'string' ? key : key[0];
const hybridUrl = typeof key === 'string' ? key : key[1];
if (serverEndPoint[hybridKey]) {
continue;
}
serverEndPoint[hybridKey] = ['refreshToken', 'verifyToken'].includes(hybridKey)
? `${serverEndPoint.apiTokenUrl}${hybridUrl}/`
: `${serverEndPoint.url}/${hybridUrl}`;
}
}
const mergedTheme = theme ? Object.assign(Object.assign({}, theme_1.default), theme) : theme_1.default;
return (react_1.default.createElement(styles_1.ThemeProvider, { theme: mergedTheme },
react_1.default.createElement(CssBaseline_1.default, null),
react_1.default.createElement(DRFReactBySchemaContext_1.DRFReactBySchemaContext.Provider, { value: {
serverEndPoint,
theme: mergedTheme,
isInBatches,
firstBatchLength,
} },
react_1.default.createElement(Overlays_1.default, null, children))));
};
exports.default = DRFReactBySchemaProvider;