'use client'; import { api } from '@/app/_trpc/client'; import { ColorSquare } from '@/components/ColorSquare'; import { Dropdown } from '@/components/Dropdown'; import { Checkbox } from '@/components/ui/checkbox'; import { Combobox } from '@/components/ui/combobox'; import { Input } from '@/components/ui/input'; import { useDebounceFn } from '@/hooks/useDebounceFn'; import { useDispatch, useSelector } from '@/redux'; import type { IChartEvent } from '@/types'; import { GanttChart, GanttChartIcon, Users } from 'lucide-react'; import { useChartContext } from '../chart/ChartProvider'; import { addEvent, changeEvent, changePrevious, removeEvent, } from '../reportSlice'; import { EventPropertiesCombobox } from './EventPropertiesCombobox'; import { FiltersCombobox } from './filters/FiltersCombobox'; import { FiltersList } from './filters/FiltersList'; import { ReportEventMore } from './ReportEventMore'; import type { ReportEventMoreProps } from './ReportEventMore'; export function ReportEvents() { const previous = useSelector((state) => state.report.previous); const selectedEvents = useSelector((state) => state.report.events); const dispatch = useDispatch(); const { projectId } = useChartContext(); const eventsQuery = api.chart.events.useQuery({ projectId, }); const eventsCombobox = (eventsQuery.data ?? []).map((item) => ({ value: item.name, label: item.name, })); const dispatchChangeEvent = useDebounceFn((event: IChartEvent) => { dispatch(changeEvent(event)); }); const handleMore = (event: IChartEvent) => { const callback: ReportEventMoreProps['onClick'] = (action) => { switch (action) { case 'remove': { return dispatch(removeEvent(event)); } } }; return callback; }; return (