Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import Editor, { loader } from '@monaco-editor/react';
  2. import { Form, Select } from 'antd';
  3. import { IOperatorForm } from '../../interface';
  4. import { DynamicInputVariable } from './dynamic-input-variable';
  5. import { CodeTemplateStrMap, ProgrammingLanguage } from '@/constants/agent';
  6. import { ICodeForm } from '@/interfaces/database/flow';
  7. import { useCallback } from 'react';
  8. import useGraphStore from '../../store';
  9. import styles from './index.less';
  10. loader.config({ paths: { vs: '/vs' } });
  11. const options = [
  12. ProgrammingLanguage.Python,
  13. ProgrammingLanguage.Javascript,
  14. ].map((x) => ({ value: x, label: x }));
  15. const CodeForm = ({ onValuesChange, form, node }: IOperatorForm) => {
  16. const formData = node?.data.form as ICodeForm;
  17. const updateNodeForm = useGraphStore((state) => state.updateNodeForm);
  18. const handleChange = useCallback(
  19. (value: ProgrammingLanguage) => {
  20. if (node?.id) {
  21. updateNodeForm(
  22. node?.id,
  23. CodeTemplateStrMap[value as ProgrammingLanguage],
  24. ['script'],
  25. );
  26. }
  27. },
  28. [node?.id, updateNodeForm],
  29. );
  30. return (
  31. <Form
  32. name="basic"
  33. autoComplete="off"
  34. form={form}
  35. onValuesChange={onValuesChange}
  36. layout={'vertical'}
  37. >
  38. <DynamicInputVariable node={node}></DynamicInputVariable>
  39. <Form.Item
  40. name={'script'}
  41. label={
  42. <Form.Item name={'lang'} className={styles.languageItem}>
  43. <Select
  44. defaultValue={ProgrammingLanguage.Python}
  45. popupMatchSelectWidth={false}
  46. options={options}
  47. onChange={handleChange}
  48. />
  49. </Form.Item>
  50. }
  51. className="bg-gray-100 rounded dark:bg-gray-800"
  52. >
  53. <Editor
  54. height={600}
  55. theme="vs-dark"
  56. language={formData.lang}
  57. options={{
  58. minimap: { enabled: false },
  59. automaticLayout: true,
  60. }}
  61. />
  62. </Form.Item>
  63. </Form>
  64. );
  65. };
  66. export default CodeForm;