UNPKG

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
"use strict"; 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;