{"version":3,"file":"useFilters.cjs","sources":["../../../../components/data-table/hooks/useFilters.tsx"],"sourcesContent":["import {\n  FilterOperatorTypes,\n  FilterType,\n  filterOperators\n} from '~/types/filters';\nimport { DataTableColumn } from '../data-table.types';\nimport { getDataType } from '../utils/filter-operations';\nimport { useDataTable } from './useDataTable';\n\nexport function useFilters<TData, TValue>() {\n  const { updateTableQuery } = useDataTable();\n\n  function onAddFilter(column: DataTableColumn<TData, TValue>) {\n    const columnDef = column.columnDef;\n    const id = columnDef.accessorKey || column.id;\n    const options = columnDef.filterOptions || [];\n    const filterType = columnDef.filterType || FilterType.string;\n    const dataType = getDataType({ filterType, dataType: columnDef.dataType });\n    const defaultFilter = filterOperators[filterType][0];\n    const defaultValue =\n      columnDef.defaultFilterValue ??\n      (filterType === FilterType.date\n        ? new Date()\n        : filterType === FilterType.select\n          ? options[0]?.value\n          : filterType === FilterType.multiselect\n            ? // first option preselected like select; [] when there are no options\n              options\n                .slice(0, 1)\n                .map(opt => opt.value)\n            : '');\n\n    updateTableQuery(query => {\n      return {\n        ...query,\n        filters: [\n          ...(query.filters || []),\n          {\n            _dataType: dataType,\n            _type: filterType,\n            name: id,\n            value: defaultValue,\n            operator: defaultFilter.value\n          }\n        ]\n      };\n    });\n  }\n\n  function handleRemoveFilter(columnId: string) {\n    updateTableQuery(query => {\n      return {\n        ...query,\n        filters: query.filters?.filter(filter => filter.name !== columnId)\n      };\n    });\n  }\n\n  function handleFilterValueChange(columnId: string, value: unknown) {\n    updateTableQuery(query => {\n      return {\n        ...query,\n        filters: query.filters?.map(filter => {\n          if (filter.name === columnId) {\n            return { ...filter, value };\n          }\n          return filter;\n        })\n      };\n    });\n  }\n\n  function handleFilterOperationChange(\n    columnId: string,\n    operator: FilterOperatorTypes\n  ) {\n    updateTableQuery(query => {\n      return {\n        ...query,\n        filters: query.filters?.map(filter => {\n          if (filter.name === columnId) {\n            return { ...filter, operator };\n          }\n          return filter;\n        })\n      };\n    });\n  }\n\n  return {\n    onAddFilter,\n    handleRemoveFilter,\n    handleFilterValueChange,\n    handleFilterOperationChange\n  };\n}\n"],"names":["useDataTable","FilterType","getDataType","filterOperators"],"mappings":"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"}