mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-20 04:39:00 +08:00
### What problem does this PR solve? Feat: Translate the splitter operator field #9869 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
import { IconFont } from '@/components/icon-font';
|
|
import { cn } from '@/lib/utils';
|
|
import {
|
|
Blocks,
|
|
FileChartColumnIncreasing,
|
|
Heading,
|
|
HousePlus,
|
|
ListMinus,
|
|
} from 'lucide-react';
|
|
import { Operator } from './constant';
|
|
|
|
interface IProps {
|
|
name: Operator;
|
|
className?: string;
|
|
}
|
|
|
|
export const OperatorIconMap = {
|
|
[Operator.Begin]: 'house-plus',
|
|
[Operator.Note]: 'notebook-pen',
|
|
};
|
|
|
|
export const SVGIconMap = {
|
|
[Operator.Parser]: FileChartColumnIncreasing,
|
|
[Operator.Tokenizer]: ListMinus,
|
|
[Operator.Splitter]: Blocks,
|
|
[Operator.HierarchicalMerger]: Heading,
|
|
};
|
|
|
|
const Empty = () => {
|
|
return <div className="hidden"></div>;
|
|
};
|
|
|
|
const OperatorIcon = ({ name, className }: IProps) => {
|
|
const Icon = OperatorIconMap[name as keyof typeof OperatorIconMap] || Empty;
|
|
const SvgIcon = SVGIconMap[name as keyof typeof SVGIconMap] || Empty;
|
|
|
|
if (name === Operator.Begin) {
|
|
return (
|
|
<div
|
|
className={cn(
|
|
'inline-block p-1 bg-accent-primary rounded-sm',
|
|
className,
|
|
)}
|
|
>
|
|
<HousePlus className="rounded size-3" />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return typeof Icon === 'string' ? (
|
|
<IconFont name={Icon} className={cn('size-5 ', className)}></IconFont>
|
|
) : (
|
|
<SvgIcon className="size-5"></SvgIcon>
|
|
);
|
|
};
|
|
|
|
export default OperatorIcon;
|