"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProductGroupList = void 0;
const react_1 = __importDefault(require("react"));
const react_web_components_1 = require("@nimles/react-web-components");
const react_redux_1 = require("react-redux");
const Link_1 = require("./Link");
const toTree = (productGroups, parent) => {
    return productGroups
        .filter((pg) => (parent ? pg.parentId === parent.id : !pg.parentId))
        .map((pg) => {
        return Object.assign(Object.assign({}, pg), { children: toTree(productGroups, pg) });
    });
};
const ProductGroup = ({ productGroup }) => {
    return (<react_web_components_1.ListItem key={productGroup.id}>
      <Link_1.NavLink to={`/${productGroup.uniqueName}`}>{productGroup.name}</Link_1.NavLink>
      <react_web_components_1.List>
        {productGroup.children.map((productGroup) => (<ProductGroup productGroup={productGroup}/>))}
      </react_web_components_1.List>
    </react_web_components_1.ListItem>);
};
const ProductGroupList = () => {
    const productGroups = (0, react_redux_1.useSelector)(({ publicProductGroups }) => publicProductGroups.values);
    const productGroupTree = toTree(productGroups);
    return (<react_web_components_1.List>
      {productGroupTree.map((productGroup) => (<ProductGroup productGroup={productGroup}/>))}
    </react_web_components_1.List>);
};
exports.ProductGroupList = ProductGroupList;
//# sourceMappingURL=ProductGroupList.jsx.map