/* eslint-disable react/require-default-props */ /* eslint-disable sonarjs/no-duplicate-string */ import './TraceOperator.styles.scss'; import { Button, Tooltip, Typography } from 'antd'; import cx from 'classnames'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { useQueryOperations } from 'hooks/queryBuilder/useQueryBuilderOperations'; import { Trash2 } from 'lucide-react'; import { useCallback } from 'react'; import { IBuilderQuery, IBuilderTraceOperator, } from 'types/api/queryBuilder/queryBuilderData'; import { DataSource } from 'types/common/queryBuilder'; import QueryAddOns from '../QueryAddOns/QueryAddOns'; import QueryAggregation from '../QueryAggregation/QueryAggregation'; import TraceOperatorEditor from './TraceOperatorEditor'; export default function TraceOperator({ traceOperator, isListViewPanel = false, }: { traceOperator: IBuilderTraceOperator; isListViewPanel?: boolean; }): JSX.Element { const { panelType, removeTraceOperator } = useQueryBuilder(); const { handleChangeQueryData } = useQueryOperations({ index: 0, query: traceOperator, entityVersion: '', isForTraceOperator: true, }); const handleTraceOperatorChange = useCallback( (traceOperatorExpression: string) => { handleChangeQueryData('expression', traceOperatorExpression); }, [handleChangeQueryData], ); const handleChangeAggregateEvery = useCallback( (value: IBuilderQuery['stepInterval']) => { handleChangeQueryData('stepInterval', value); }, [handleChangeQueryData], ); const handleChangeAggregation = useCallback( (value: string) => { handleChangeQueryData('aggregations', [ { expression: value, }, ]); }, [handleChangeQueryData], ); return (