UNPKG

decentraland-ui

Version:

Decentraland's UI components and styles

58 lines (57 loc) 3.05 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SideMenu = void 0; var react_1 = __importStar(require("react")); var SideMenuItem_1 = require("./SideMenuItem"); require("./SideMenu.css"); var SideMenu = function (_a) { var items = _a.items, value = _a.value, onClick = _a.onClick; var branch = (0, react_1.useMemo)(function () { var branch = new Set(); var buildBranchOfSelectedItem = function (items) { for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { var item = items_1[_i]; if (item.id === value || (item.children && buildBranchOfSelectedItem(item.children))) { branch.add(item.id); return true; } } return false; }; buildBranchOfSelectedItem(items); return branch; }, [items, value]); var shouldRenderChildren = (0, react_1.useCallback)(function (item) { return item.children && branch.has(item.id); }, [branch]); return (react_1.default.createElement("ul", { className: "dui-side-menu" }, items.map(function (item1) { return (react_1.default.createElement(react_1.Fragment, { key: item1.id }, react_1.default.createElement(SideMenuItem_1.SideMenuItem, { item: item1, level: 1, branch: branch, value: value, onClick: onClick }), shouldRenderChildren(item1) && item1.children.map(function (item2) { return (react_1.default.createElement(react_1.Fragment, { key: item2.id }, react_1.default.createElement(SideMenuItem_1.SideMenuItem, { item: item2, level: 2, branch: branch, value: value, onClick: onClick }), shouldRenderChildren(item2) && item2.children.map(function (item3) { return (react_1.default.createElement(SideMenuItem_1.SideMenuItem, { key: item3.id, item: item3, level: 3, branch: branch, value: value, onClick: onClick })); }))); }))); }))); }; exports.SideMenu = SideMenu;