UNPKG

mui-nav-menu

Version:

Navigation menu component based on material ui

42 lines (41 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConditionalWrapper = exports.getNodeIdPaths = exports.parseItemsToNodes = void 0; const tslib_1 = require("tslib"); const react_1 = require("react"); const jsx_runtime_1 = require("react/jsx-runtime"); const MenuItem_1 = tslib_1.__importDefault(require("./MenuItem")); const SubMenu_1 = tslib_1.__importDefault(require("./SubMenu")); const MenuItemGroup_1 = tslib_1.__importDefault(require("./MenuItemGroup")); const Divider_1 = tslib_1.__importDefault(require("./Divider")); const parseItemsToNodes = (childrens) => { return childrens && childrens.length > 0 ? childrens.map((item, index) => { const { children, type, ...rest } = item; if ((children && children.length) || type == "group") { if (type == "group") { return ((0, jsx_runtime_1.jsx)(MenuItemGroup_1.default, { id: rest.id, label: rest.label, children: (0, exports.parseItemsToNodes)(children) }, rest.id)); } return ((0, react_1.createElement)(SubMenu_1.default, { ...rest, key: rest.id }, (0, exports.parseItemsToNodes)(children))); } if (type == "divider") { return (0, jsx_runtime_1.jsx)(Divider_1.default, {}, index); } return (0, react_1.createElement)(MenuItem_1.default, { ...rest, key: rest.id }); }) : undefined; }; exports.parseItemsToNodes = parseItemsToNodes; const getNodeIdPaths = (node, getNodeFn) => { const paths = []; while (node) { paths.unshift(node.id); node = getNodeFn(node.parentId); } return paths; }; exports.getNodeIdPaths = getNodeIdPaths; const ConditionalWrapper = ({ condition, wrapper, children, }) => { return (condition ? wrapper(children) : children); }; exports.ConditionalWrapper = ConditionalWrapper;