react-page-routes
Version:
Simplify coding your react-router-dom <Routes/> and <NavLinks/> by using attributes in your component.
38 lines (37 loc) • 1.75 kB
JavaScript
;
exports.__esModule = true;
exports.routes = exports.useDirectory = void 0;
var tslib_1 = require("tslib");
var react_router_dom_1 = require("react-router-dom");
var react_1 = tslib_1.__importDefault(require("react"));
function useDirectory() {
var pages = [];
for (var _i = 0; _i < arguments.length; _i++) {
pages[_i] = arguments[_i];
}
return {
Pages: function (props) {
if (pages instanceof Array) {
if ('map' in props && props.map) {
return react_1["default"].createElement(react_router_dom_1.Routes, null, pages.map(props.map));
}
else {
return react_1["default"].createElement(react_router_dom_1.Routes, null, pages.map(PageToRoute));
}
}
return react_1["default"].createElement(react_1["default"].Fragment, null);
},
NavBar: function (props) {
var defaultMapper = function (E) { return (react_1["default"].createElement(react_router_dom_1.NavLink, { key: E.path.toString(), to: E.path.toString() }, E.title)); };
if (pages instanceof Array) {
return react_1["default"].createElement(react_1["default"].Fragment, null, props.map && 'map' in props ? pages.map(props.map) : pages.map(defaultMapper));
}
return react_1["default"].createElement(react_1["default"].Fragment, null);
}
};
}
exports.useDirectory = useDirectory;
function PageToRoute(E) {
return react_1["default"].createElement(react_router_dom_1.Route, { key: String(E.name), element: react_1["default"].createElement(E, null), path: 'path' in E ? String(E.path) : '' });
}
exports.routes = useDirectory;