UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

42 lines (41 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.flattenItems = flattenItems; const getListItemId_1 = require("./getListItemId.js"); const groupItemId_1 = require("./groupItemId.js"); const isTreeItemGuard_1 = require("./isTreeItemGuard.js"); function flattenItems({ items, getItemId, expandedById = {}, }) { const rootIds = []; const visibleFlattenIds = []; const visit = (item, index, parentId) => { const groupedId = (0, groupItemId_1.getGroupItemId)(index, parentId); const id = (0, getListItemId_1.getListItemId)({ groupedId, item, getItemId }); // only top level array if (!parentId) { rootIds.push(id); } visibleFlattenIds.push(id); if ((0, isTreeItemGuard_1.isTreeItemGuard)(item) && item.children) { // don't include collapsed groups const isCollapsed = id in expandedById && !expandedById[id]; if (!isCollapsed) { for (let i = 0; i < item.children.length; i++) { visit(item.children[i], i, id); } } } }; for (let i = 0; i < items.length; i++) { visit(items[i], i); } const idToFlattenIndex = {}; for (let i = 0; i < visibleFlattenIds.length; i++) { idToFlattenIndex[visibleFlattenIds[i]] = i; } return { rootIds, visibleFlattenIds, idToFlattenIndex, }; } //# sourceMappingURL=flattenItems.js.map