{"version":3,"file":"useFilters.cjs","sources":["../../../../components/data-view/hooks/useFilters.tsx"],"sourcesContent":["'use client';\n\nimport {\n  FilterOperatorTypes,\n  FilterType,\n  filterOperators\n} from '~/types/filters';\nimport { DataViewField } from '../data-view.types';\nimport { getDataType } from '../utils/filter-operations';\nimport { useDataView } from './useDataView';\n\nexport function useFilters<TData>() {\n  const { updateTableQuery } = useDataView<TData>();\n\n  function onAddFilter(field: DataViewField<TData>) {\n    const options = field.filterOptions || [];\n    const filterType = field.filterType || FilterType.string;\n    const dataType = getDataType({ filterType, dataType: field.dataType });\n    const defaultFilter = filterOperators[filterType][0];\n    const defaultValue =\n      field.defaultFilterValue ??\n      (filterType === FilterType.date\n        ? new Date()\n        : filterType === FilterType.select\n          ? options[0]?.value\n          : '');\n\n    updateTableQuery(query => ({\n      ...query,\n      filters: [\n        ...(query.filters || []),\n        {\n          _dataType: dataType,\n          _type: filterType,\n          name: field.accessorKey,\n          value: defaultValue,\n          operator: defaultFilter.value\n        }\n      ]\n    }));\n  }\n\n  function handleRemoveFilter(fieldAccessor: string) {\n    updateTableQuery(query => ({\n      ...query,\n      filters: query.filters?.filter(f => f.name !== fieldAccessor)\n    }));\n  }\n\n  function handleFilterValueChange(fieldAccessor: string, value: any) {\n    updateTableQuery(query => ({\n      ...query,\n      filters: query.filters?.map(f =>\n        f.name === fieldAccessor ? { ...f, value } : f\n      )\n    }));\n  }\n\n  function handleFilterOperationChange(\n    fieldAccessor: string,\n    operator: FilterOperatorTypes\n  ) {\n    updateTableQuery(query => ({\n      ...query,\n      filters: query.filters?.map(f =>\n        f.name === fieldAccessor ? { ...f, operator } : f\n      )\n    }));\n  }\n\n  return {\n    onAddFilter,\n    handleRemoveFilter,\n    handleFilterValueChange,\n    handleFilterOperationChange\n  };\n}\n"],"names":[],"mappings":";;;;;;;;AAYE;;AAGE;;AAEA;;AAEA;AAEE;;AAEE;AACE;;AAGN;AACE;AACA;AACE;AACA;AACE;AACA;;AAEA;;AAED;AACF;AACF;;;AAID;AACE;AACA;AACD;;AAGH;AACE;AACE;AACA;AAGD;;AAGH;AAIE;AACE;AACA;AAGD;;;;;;;;AASL;;"}