/**
 * @FixMenuItemIcon 菜单图标手动导入
 * 
 * 
 */
import React from 'react';
import { MenuDataItem } from '@ant-design/pro-layout';
import {CarOutlined, UserOutlined, TableOutlined,
  DollarCircleOutlined, ShopOutlined, UserSwitchOutlined,
  HomeOutlined, SettingOutlined, TeamOutlined, DotChartOutlined,
  BlockOutlined, DesktopOutlined, DatabaseOutlined,
  WarningOutlined, CalendarOutlined, ExperimentOutlined,
  ThunderboltOutlined, BugOutlined, AreaChartOutlined,ContactsOutlined, GatewayOutlined, BellOutlined,
  PictureOutlined
} from '@ant-design/icons';

const iconMap:any = {
  'CarOutlined': <CarOutlined/>,
  'UserOutlined': <UserOutlined/>,
  'TableOutlined': <TableOutlined/>,
  'DollarCircleOutlined': <DollarCircleOutlined/>,
  'ShopOutlined': <ShopOutlined/>,
  'UserSwitchOutlined': <UserSwitchOutlined/>,
  'HomeOutlined': <HomeOutlined/>,
  'SettingOutlined': <SettingOutlined/>,
  'TeamOutlined': <TeamOutlined/>,
  'DotChartOutlined': <DotChartOutlined/>,
  'BlockOutlined': <BlockOutlined/>,
  'DesktopOutlined': <DesktopOutlined/>,
  'DatabaseOutlined': <DatabaseOutlined/>,
  'WarningOutlined': <WarningOutlined/>,
  'CalendarOutlined': <CalendarOutlined/>,
  'ExperimentOutlined': <ExperimentOutlined/>,
  'ThunderboltOutlined': <ThunderboltOutlined/>,
  'BugOutlined': <BugOutlined/>,
  'AreaChartOutlined': <AreaChartOutlined/>,
  'ContactsOutlined': <ContactsOutlined/>,
  'GatewayOutlined': <GatewayOutlined/>,
  'BellOutlined': <BellOutlined/>,
  'PictureOutlined': <PictureOutlined/>
}
// FIX从接口获取菜单时icon为string类型
const fixMenuItemIcon = (menus: MenuDataItem[], iconType = 'Outlined'): MenuDataItem[] => {
  menus.forEach((item) => {
    const { icon, children } = item;
    if (typeof icon === 'string') {
      console.log(22, icon)
      if (icon in iconMap) {
        item.icon = iconMap[icon];
      } else {
        item.icon = iconMap['TableOutlined'];
      }
      // let fixIconName = icon.slice(0, 1).toLocaleUpperCase() + icon.slice(1) + iconType;
      // // @ts-ignore
      // item.icon = React.createElement(allIcons[fixIconName] || allIcons[icon]);
    }
    // eslint-disable-next-line @typescript-eslint/no-unused-expressions
    children && children.length > 0 ? (item.children = fixMenuItemIcon(children)) : null;
  });
  return menus;
};

export default fixMenuItemIcon;