File size: 1,928 Bytes
2bdad3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import { CommaIcon, SemicolonIcon } from '@/assets/icon/Icon';
import { Form, Select } from 'antd';
import {
  CornerDownLeft,
  IndentIncrease,
  Minus,
  Slash,
  Underline,
} from 'lucide-react';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { IOperatorForm } from '../../interface';
import DynamicInputVariable from '../components/dynamic-input-variable';

const optionList = [
  {
    value: ',',
    icon: CommaIcon,
    text: 'comma',
  },
  {
    value: '\n',
    icon: CornerDownLeft,
    text: 'lineBreak',
  },
  {
    value: 'tab',
    icon: IndentIncrease,
    text: 'tab',
  },
  {
    value: '_',
    icon: Underline,
    text: 'underline',
  },
  {
    value: '/',
    icon: Slash,
    text: 'diagonal',
  },
  {
    value: '-',
    icon: Minus,
    text: 'minus',
  },
  {
    value: ';',
    icon: SemicolonIcon,
    text: 'semicolon',
  },
];

const IterationForm = ({ onValuesChange, form, node }: IOperatorForm) => {
  const { t } = useTranslation();

  const options = useMemo(() => {
    return optionList.map((x) => {
      let Icon = x.icon;

      return {
        value: x.value,
        label: (
          <div className="flex items-center gap-2">
            <Icon className={'size-4'}></Icon>
            {t(`flow.delimiterOptions.${x.text}`)}
          </div>
        ),
      };
    });
  }, [t]);

  return (
    <Form
      name="basic"
      autoComplete="off"
      form={form}
      onValuesChange={onValuesChange}
      layout={'vertical'}
    >
      <DynamicInputVariable node={node}></DynamicInputVariable>
      <Form.Item
        name={['delimiter']}
        label={t('knowledgeDetails.delimiter')}
        initialValue={`\\n!?;。;!?`}
        rules={[{ required: true }]}
        tooltip={t('flow.delimiterTip')}
      >
        <Select options={options}></Select>
      </Form.Item>
    </Form>
  );
};

export default IterationForm;