react-antd-admin-panel
Version:
Easy prototyping admin panel using React and Antd
45 lines • 1.9 kB
JavaScript
import React from "react";
import { matchPath } from "react-router-dom";
import { useNavigate } from "react-router-dom";
import Path from "../typescript/models/Path";
import { message } from "antd";
const Mapping = (props) => {
const doNavigate = useNavigate();
function buildPath(actualPath) {
let url = new URL(`http://localhost${actualPath}`);
let route = null;
let match = null;
let routes = Object.keys(props.main.$config.routes).map((key) => {
var _a;
let route = props.main.$config.routes[key];
return { exact: (_a = route._exact) !== null && _a !== void 0 ? _a : false, path: route._path._matchedPath, route: route };
});
routes.forEach(r => {
let path = r.path;
if (matchPath(Object.assign(Object.assign({}, r), { path }), url.pathname)) {
route = r.route;
match = matchPath(Object.assign(Object.assign({}, r), { path }), url.pathname);
}
});
let obj = {
route: route,
search: url.search,
params: match === null || match === void 0 ? void 0 : match.params,
actualPath: url.pathname,
matchedPath: match === null || match === void 0 ? void 0 : match.pathnameBase,
};
return new Path(obj);
}
function navigate(to) {
props.main._setSiderRightClose();
doNavigate(to);
}
props.main.$map.$navigate = navigate;
props.main.$map.$loading = props.state.toggleLoading;
props.main.$map.$path = buildPath;
props.main.tsxErrorMessage = (m) => message.error(m);
props.main.tsxSuccessMessage = (m) => message.success(m);
return (React.createElement("div", { style: { display: 'none' } }, "Mapping"));
};
export default Mapping;
//# sourceMappingURL=Mapping.js.map