import { Group, Stack } from '@mantine/core'; import { Select } from '/@/renderer/components/select'; import { AnimatePresence, motion } from 'framer-motion'; import { RiAddLine, RiMore2Line } from 'react-icons/ri'; import { Button } from '/@/renderer/components/button'; import { DropdownMenu } from '/@/renderer/components/dropdown-menu'; import { QueryBuilderOption } from '/@/renderer/components/query-builder/query-builder-option'; import { QueryBuilderGroup, QueryBuilderRule } from '/@/renderer/types'; const FILTER_GROUP_OPTIONS_DATA = [ { label: 'Match all', value: 'all', }, { label: 'Match any', value: 'any', }, ]; type AddArgs = { groupIndex: number[]; level: number; }; type DeleteArgs = { groupIndex: number[]; level: number; uniqueId: string; }; interface QueryBuilderProps { data: Record; filters: { label: string; value: string }[]; groupIndex: number[]; level: number; onAddRule: (args: AddArgs) => void; onAddRuleGroup: (args: AddArgs) => void; onChangeField: (args: any) => void; onChangeOperator: (args: any) => void; onChangeType: (args: any) => void; onChangeValue: (args: any) => void; onDeleteRule: (args: DeleteArgs) => void; onDeleteRuleGroup: (args: DeleteArgs) => void; uniqueId: string; } export const QueryBuilder = ({ data, level, onAddRule, onDeleteRuleGroup, onDeleteRule, onAddRuleGroup, onChangeType, onChangeField, onChangeOperator, onChangeValue, groupIndex, uniqueId, filters, }: QueryBuilderProps) => { const handleAddRule = () => { onAddRule({ groupIndex, level }); }; const handleAddRuleGroup = () => { onAddRuleGroup({ groupIndex, level }); }; const handleDeleteRuleGroup = () => { onDeleteRuleGroup({ groupIndex, level, uniqueId }); }; const handleChangeType = (value: string | null) => { onChangeType({ groupIndex, level, value }); }; return (