/** * table-core * * Copyright (c) TanStack * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ 'use strict'; var filterFns = require('../filterFns.js'); var utils = require('../utils.js'); // const ColumnFiltering = { getDefaultColumnDef: () => { return { filterFn: 'auto' }; }, getInitialState: state => { return { columnFilters: [], ...state }; }, getDefaultOptions: table => { return { onColumnFiltersChange: utils.makeStateUpdater('columnFilters', table), filterFromLeafRows: false, maxLeafRowFilterDepth: 100 }; }, createColumn: (column, table) => { column.getAutoFilterFn = () => { const firstRow = table.getCoreRowModel().flatRows[0]; const value = firstRow == null ? void 0 : firstRow.getValue(column.id); if (typeof value === 'string') { return filterFns.filterFns.includesString; } if (typeof value === 'number') { return filterFns.filterFns.inNumberRange; } if (typeof value === 'boolean') { return filterFns.filterFns.equals; } if (value !== null && typeof value === 'object') { return filterFns.filterFns.equals; } if (Array.isArray(value)) { return filterFns.filterFns.arrIncludes; } return filterFns.filterFns.weakEquals; }; column.getFilterFn = () => { var _table$options$filter, _table$options$filter2; return utils.isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns.filterFns[column.columnDef.filterFn]; }; column.getCanFilter = () => { var _column$columnDef$ena, _table$options$enable, _table$options$enable2; return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn; }; column.getIsFiltered = () => column.getFilterIndex() > -1; column.getFilterValue = () => { var _table$getState$colum; return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value; }; column.getFilterIndex = () => { var _table$getState$colum2, _table$getState$colum3; return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1; }; column.setFilterValue = value => { table.setColumnFilters(old => { const filterFn = column.getFilterFn(); const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id); const newFilter = utils.functionalUpdate(value, previousFilter ? previousFilter.value : undefined); // if (shouldAutoRemoveFilter(filterFn, newFilter, column)) { var _old$filter; return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : []; } const newFilterObj = { id: column.id, value: newFilter }; if (previousFilter) { var _old$map; return (_old$map = old == null ? void 0 : old.map(d => { if (d.id === column.id) { return newFilterObj; } return d; })) != null ? _old$map : []; } if (old != null && old.length) { return [...old, newFilterObj]; } return [newFilterObj]; }); }; }, createRow: (row, _table) => { row.columnFilters = {}; row.columnFiltersMeta = {}; }, createTable: table => { table.setColumnFilters = updater => { const leafColumns = table.getAllLeafColumns(); const updateFn = old => { var _functionalUpdate; return (_functionalUpdate = utils.functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => { const column = leafColumns.find(d => d.id === filter.id); if (column) { const filterFn = column.getFilterFn(); if (shouldAutoRemoveFilter(filterFn, filter.value, column)) { return false; } } return true; }); }; table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn); }; table.resetColumnFilters = defaultState => { var _table$initialState$c, _table$initialState; table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []); }; table.getPreFilteredRowModel = () => table.getCoreRowModel(); table.getFilteredRowModel = () => { if (!table._getFilteredRowModel && table.options.getFilteredRowModel) { table._getFilteredRowModel = table.options.getFilteredRowModel(table); } if (table.options.manualFiltering || !table._getFilteredRowModel) { return table.getPreFilteredRowModel(); } return table._getFilteredRowModel(); }; } }; function shouldAutoRemoveFilter(filterFn, value, column) { return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value; } exports.ColumnFiltering = ColumnFiltering; exports.shouldAutoRemoveFilter = shouldAutoRemoveFilter; //# sourceMappingURL=ColumnFiltering.js.map