import { type FC } from 'react' import { Select, type SelectProps } from 'antd' import type { Suggestion } from '../Editor/plugin/AutocompletePlugin' type LabelRender = SelectProps['labelRender']; interface VariableSelectProps extends SelectProps { options: Suggestion[]; value?: string; onChange?: (value: string) => void; } const VariableSelect: FC = ({ placeholder, options, value, onChange, }) => { const handleChange = (value: string) => { onChange?.(value); } const labelRender: LabelRender = (props) => { const { value } = props const filterOption = options.find(vo => vo.value === value) if (filterOption) { return ( {filterOption.nodeData?.name} / {filterOption.label} ) } return null } const groupedSuggestions = options.reduce((groups: Record, suggestion) => { const { nodeData } = suggestion const nodeId = nodeData.id as string; if (!groups[nodeId]) { groups[nodeId] = []; } groups[nodeId].push(suggestion); return groups; }, {}); const groupedOptions = Object.entries(groupedSuggestions).map(([nodeId, suggestions]) => ({ label: suggestions[0].nodeData.name, options: suggestions.map(s => ({ label: s.label, value: s.value })) })); return (