ragflow / web /src /components /svg-icon.tsx
zxsipola123456's picture
Upload 769 files
ab2ded1 verified
raw
history blame
1.02 kB
import Icon from '@ant-design/icons';
import { IconComponentProps } from '@ant-design/icons/lib/components/Icon';
const importAll = (requireContext: __WebpackModuleApi.RequireContext) => {
const list = requireContext.keys().map((key) => {
const name = key.replace(/\.\/(.*)\.\w+$/, '$1');
return { name, value: requireContext(key) };
});
return list;
};
let routeList: { name: string; value: string }[] = [];
try {
routeList = importAll(require.context('@/assets/svg', true, /\.svg$/));
} catch (error) {
console.warn(error);
routeList = [];
}
interface IProps extends IconComponentProps {
name: string;
width: string | number;
height?: string | number;
}
const SvgIcon = ({ name, width, height, ...restProps }: IProps) => {
const ListItem = routeList.find((item) => item.name === name);
return (
<Icon
component={() => (
<img src={ListItem?.value} alt="" width={width} height={height} />
)}
{...(restProps as any)}
/>
);
};
export default SvgIcon;