import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import _typeof from "@babel/runtime/helpers/esm/typeof"; var _excluded = ["label", "children", "key", "type"]; import * as React from 'react'; import Divider from "../Divider"; import MenuItem from "../MenuItem"; import MenuItemGroup from "../MenuItemGroup"; import SubMenu from "../SubMenu"; import { parseChildren } from "./commonUtil"; function convertItemsToNodes(list, components) { var MergedMenuItem = components.item, MergedMenuItemGroup = components.group, MergedSubMenu = components.submenu, MergedDivider = components.divider; return (list || []).map(function (opt, index) { if (opt && _typeof(opt) === 'object') { var _ref = opt, label = _ref.label, children = _ref.children, key = _ref.key, type = _ref.type, restProps = _objectWithoutProperties(_ref, _excluded); var mergedKey = key !== null && key !== void 0 ? key : "tmp-".concat(index); // MenuItemGroup & SubMenuItem if (children || type === 'group') { if (type === 'group') { // Group return /*#__PURE__*/React.createElement(MergedMenuItemGroup, _extends({ key: mergedKey }, restProps, { title: label }), convertItemsToNodes(children, components)); } // Sub Menu return /*#__PURE__*/React.createElement(MergedSubMenu, _extends({ key: mergedKey }, restProps, { title: label }), convertItemsToNodes(children, components)); } // MenuItem & Divider if (type === 'divider') { return /*#__PURE__*/React.createElement(MergedDivider, _extends({ key: mergedKey }, restProps)); } return /*#__PURE__*/React.createElement(MergedMenuItem, _extends({ key: mergedKey }, restProps), label); } return null; }).filter(function (opt) { return opt; }); } export function parseItems(children, items, keyPath, components) { var childNodes = children; var mergedComponents = _objectSpread({ divider: Divider, item: MenuItem, group: MenuItemGroup, submenu: SubMenu }, components); if (items) { childNodes = convertItemsToNodes(items, mergedComponents); } return parseChildren(childNodes, keyPath); }