UNPKG

linkmore-design

Version:

🌈 πŸš€lmη»„δ»ΆεΊ“γ€‚πŸš€

68 lines (64 loc) β€’ 2.16 kB
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 { ItemGroup } from 'rc-menu'; import * as React from 'react'; import MenuDivider from "../MenuDivider"; import MenuItem from "../MenuItem"; import SubMenu from "../SubMenu"; function convertItemsToNodes(list) { 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(ItemGroup, _extends({ key: mergedKey }, restProps, { title: label }), convertItemsToNodes(children)); } // Sub Menu return /*#__PURE__*/React.createElement(SubMenu, _extends({ key: mergedKey }, restProps, { title: label }), convertItemsToNodes(children)); } // MenuItem & Divider if (type === 'divider') { return /*#__PURE__*/React.createElement(MenuDivider, _extends({ key: mergedKey }, restProps)); } return /*#__PURE__*/React.createElement(MenuItem, _extends({ key: mergedKey }, restProps), label); } return null; }).filter(function (opt) { return opt; }); } // FIXME: Move logic here in v5 /** * We simply convert `items` to ReactNode for reuse origin component logic. But we need move all the * logic from component into this hooks when in v5 */ export default function useItems(items) { return React.useMemo(function () { if (!items) { return items; } return convertItemsToNodes(items); }, [items]); }