@tanstack/table-core 8.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +112 -0
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/build/cjs/aggregationTypes.js +130 -0
  4. package/build/cjs/aggregationTypes.js.map +1 -0
  5. package/build/cjs/core.js +545 -0
  6. package/build/cjs/core.js.map +1 -0
  7. package/build/cjs/createTable.js +65 -0
  8. package/build/cjs/createTable.js.map +1 -0
  9. package/build/cjs/features/ColumnSizing.js +316 -0
  10. package/build/cjs/features/ColumnSizing.js.map +1 -0
  11. package/build/cjs/features/Expanding.js +238 -0
  12. package/build/cjs/features/Expanding.js.map +1 -0
  13. package/build/cjs/features/Filters.js +413 -0
  14. package/build/cjs/features/Filters.js.map +1 -0
  15. package/build/cjs/features/Grouping.js +227 -0
  16. package/build/cjs/features/Grouping.js.map +1 -0
  17. package/build/cjs/features/Headers.js +630 -0
  18. package/build/cjs/features/Headers.js.map +1 -0
  19. package/build/cjs/features/Ordering.js +86 -0
  20. package/build/cjs/features/Ordering.js.map +1 -0
  21. package/build/cjs/features/Pagination.js +193 -0
  22. package/build/cjs/features/Pagination.js.map +1 -0
  23. package/build/cjs/features/Pinning.js +148 -0
  24. package/build/cjs/features/Pinning.js.map +1 -0
  25. package/build/cjs/features/RowSelection.js +525 -0
  26. package/build/cjs/features/RowSelection.js.map +1 -0
  27. package/build/cjs/features/Sorting.js +313 -0
  28. package/build/cjs/features/Sorting.js.map +1 -0
  29. package/build/cjs/features/Visibility.js +172 -0
  30. package/build/cjs/features/Visibility.js.map +1 -0
  31. package/build/cjs/filterTypes.js +172 -0
  32. package/build/cjs/filterTypes.js.map +1 -0
  33. package/build/cjs/index.js +75 -0
  34. package/build/cjs/index.js.map +1 -0
  35. package/build/cjs/sortTypes.js +122 -0
  36. package/build/cjs/sortTypes.js.map +1 -0
  37. package/build/cjs/types.js +22 -0
  38. package/build/cjs/types.js.map +1 -0
  39. package/build/cjs/utils/columnFilterRowsFn.js +131 -0
  40. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -0
  41. package/build/cjs/utils/expandRowsFn.js +38 -0
  42. package/build/cjs/utils/expandRowsFn.js.map +1 -0
  43. package/build/cjs/utils/globalFilterRowsFn.js +101 -0
  44. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -0
  45. package/build/cjs/utils/groupRowsFn.js +155 -0
  46. package/build/cjs/utils/groupRowsFn.js.map +1 -0
  47. package/build/cjs/utils/paginateRowsFn.js +44 -0
  48. package/build/cjs/utils/paginateRowsFn.js.map +1 -0
  49. package/build/cjs/utils/sortRowsFn.js +94 -0
  50. package/build/cjs/utils/sortRowsFn.js.map +1 -0
  51. package/build/cjs/utils.js +167 -0
  52. package/build/cjs/utils.js.map +1 -0
  53. package/build/esm/index.js +4689 -0
  54. package/build/esm/index.js.map +1 -0
  55. package/build/stats-html.html +2689 -0
  56. package/build/stats-react.json +939 -0
  57. package/build/types/aggregationTypes.d.ts +22 -0
  58. package/build/types/core.d.ts +105 -0
  59. package/build/types/createTable.d.ts +42 -0
  60. package/build/types/features/ColumnSizing.d.ts +75 -0
  61. package/build/types/features/Expanding.d.ts +50 -0
  62. package/build/types/features/Filters.d.ts +92 -0
  63. package/build/types/features/Grouping.d.ts +85 -0
  64. package/build/types/features/Headers.d.ts +43 -0
  65. package/build/types/features/Ordering.d.ts +21 -0
  66. package/build/types/features/Pagination.d.ts +41 -0
  67. package/build/types/features/Pinning.d.ts +41 -0
  68. package/build/types/features/RowSelection.d.ts +60 -0
  69. package/build/types/features/Sorting.d.ts +81 -0
  70. package/build/types/features/Visibility.d.ts +49 -0
  71. package/build/types/filterTypes.d.ts +50 -0
  72. package/build/types/index.d.ts +23 -0
  73. package/build/types/sortTypes.d.ts +18 -0
  74. package/build/types/types.d.ts +138 -0
  75. package/build/types/utils/columnFilterRowsFn.d.ts +2 -0
  76. package/build/types/utils/expandRowsFn.d.ts +2 -0
  77. package/build/types/utils/globalFilterRowsFn.d.ts +2 -0
  78. package/build/types/utils/groupRowsFn.d.ts +2 -0
  79. package/build/types/utils/paginateRowsFn.d.ts +2 -0
  80. package/build/types/utils/sortRowsFn.d.ts +2 -0
  81. package/build/types/utils.d.ts +23 -0
  82. package/build/umd/index.development.js +4728 -0
  83. package/build/umd/index.development.js.map +1 -0
  84. package/build/umd/index.production.js +12 -0
  85. package/build/umd/index.production.js.map +1 -0
  86. package/package.json +40 -0
  87. package/src/.DS_Store +0 -0
  88. package/src/aggregationTypes.ts +115 -0
  89. package/src/core.tsx +763 -0
  90. package/src/createTable.tsx +137 -0
  91. package/src/features/ColumnSizing.ts +432 -0
  92. package/src/features/Expanding.ts +320 -0
  93. package/src/features/Filters.ts +567 -0
  94. package/src/features/Grouping.ts +363 -0
  95. package/src/features/Headers.ts +747 -0
  96. package/src/features/Ordering.ts +112 -0
  97. package/src/features/Pagination.ts +252 -0
  98. package/src/features/Pinning.ts +177 -0
  99. package/src/features/RowSelection.ts +655 -0
  100. package/src/features/Sorting.ts +460 -0
  101. package/src/features/Visibility.ts +242 -0
  102. package/src/filterTypes.ts +188 -0
  103. package/src/index.tsx +23 -0
  104. package/src/sortTypes.ts +147 -0
  105. package/src/types.ts +311 -0
  106. package/src/utils/columnFilterRowsFn.ts +113 -0
  107. package/src/utils/expandRowsFn.ts +30 -0
  108. package/src/utils/globalFilterRowsFn.ts +89 -0
  109. package/src/utils/groupRowsFn.ts +170 -0
  110. package/src/utils/paginateRowsFn.ts +28 -0
  111. package/src/utils/sortRowsFn.ts +95 -0
  112. package/src/utils.tsx +221 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expanding.js","sources":["../../../src/features/Expanding.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport {\n Getter,\n OnChangeFn,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport type ExpandedTableState = {\n expanded: ExpandedState\n}\n\nexport type ExpandedRow = {\n toggleExpanded: (expanded?: boolean) => void\n getIsExpanded: () => boolean\n getCanExpand: () => boolean\n getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n}\n\nexport type ExpandedOptions<TGenerics extends PartialGenerics> = {\n onExpandedChange?: OnChangeFn<ExpandedState>\n autoResetExpanded?: boolean\n enableExpanded?: boolean\n expandRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n expandSubRows?: boolean\n defaultCanExpand?: boolean\n getIsRowExpanded?: (row: Row<TGenerics>) => boolean\n getRowCanExpand?: (row: Row<TGenerics>) => boolean\n paginateExpandedRows?: boolean\n}\n\nexport type ToggleExpandedProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type ExpandedInstance<TGenerics extends PartialGenerics> = {\n _notifyExpandedReset: () => void\n setExpanded: (updater: Updater<ExpandedState>) => void\n toggleRowExpanded: (rowId: string, expanded?: boolean) => void\n toggleAllRowsExpanded: (expanded?: boolean) => void\n resetExpanded: () => void\n getRowCanExpand: (rowId: string) => boolean\n getIsRowExpanded: (rowId: string) => boolean\n getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n rowId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n getToggleAllRowsExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n getIsAllRowsExpanded: () => boolean\n getExpandedDepth: () => number\n getExpandedRowModel: () => RowModel<TGenerics>\n getPreExpandedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Expanding = {\n getInitialState: (): ExpandedTableState => {\n return {\n expanded: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedOptions<TGenerics> => {\n return {\n onExpandedChange: makeStateUpdater('expanded', instance),\n autoResetExpanded: true,\n getIsRowExpanded: row => !!(row?.original as { expanded?: any }).expanded,\n expandSubRows: true,\n paginateExpandedRows: true,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyExpandedReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetExpanded\n ) {\n instance.resetExpanded()\n }\n },\n setExpanded: updater =>\n instance.options.onExpandedChange?.(\n updater,\n functionalUpdate(updater, instance.getState().expanded)\n ),\n toggleRowExpanded: (rowId, expanded) => {\n if (!rowId) return\n\n instance.setExpanded(old => {\n const exists = old === true ? true : !!old?.[rowId]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(instance.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [rowId]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [rowId]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n },\n toggleAllRowsExpanded: expanded => {\n if (expanded ?? !instance.getIsAllRowsExpanded()) {\n instance.setExpanded(true)\n } else {\n instance.setExpanded({})\n }\n },\n resetExpanded: () => {\n instance.setExpanded(instance.initialState?.expanded ?? {})\n },\n getIsRowExpanded: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ReactTable] getIsRowExpanded: no row found with id ${rowId}`\n )\n }\n throw new Error()\n }\n\n const expanded = instance.getState().expanded\n\n return !!(\n instance.options.getIsRowExpanded?.(row) ??\n (expanded || expanded?.[rowId])\n )\n },\n getRowCanExpand: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ReactTable] getRowCanExpand: no row found with id ${rowId}`\n )\n }\n throw new Error()\n }\n\n return (\n instance.options.getRowCanExpand?.(row) ??\n instance.options.enableExpanded ??\n instance.options.defaultCanExpand ??\n !!row.subRows?.length\n )\n },\n getToggleExpandedProps: (rowId, userProps) => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n return\n }\n\n const canExpand = instance.getRowCanExpand(rowId)\n\n const initialProps: ToggleExpandedProps = {\n title: canExpand ? 'Toggle Expanded' : undefined,\n onClick: canExpand\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n instance.toggleRowExpanded(rowId)\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n getToggleAllRowsExpandedProps: userProps => {\n const initialProps: ToggleExpandedProps = {\n title: 'Toggle All Expanded',\n onClick: (e: MouseEvent | TouchEvent) => {\n e.persist()\n instance.toggleAllRowsExpanded()\n },\n }\n\n return propGetter(initialProps, userProps)\n },\n getIsAllRowsExpanded: () => {\n const expanded = instance.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (expanded === true) {\n return true\n }\n\n // If any row is not expanded, return false\n if (\n Object.keys(instance.getRowModel().rowsById).some(\n id => !instance.getIsRowExpanded(id)\n )\n ) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n },\n getExpandedDepth: () => {\n let maxDepth = 0\n\n const rowIds =\n instance.getState().expanded === true\n ? Object.keys(instance.getRowModel().rowsById)\n : Object.keys(instance.getState().expanded)\n\n rowIds.forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n },\n getExpandedRowModel: memo(\n () => [\n instance.getState().expanded,\n instance.getGroupedRowModel(),\n instance.options.expandRowsFn,\n instance.options.paginateExpandedRows,\n ],\n (expanded, rowModel, expandRowsFn, paginateExpandedRows) => {\n if (\n !expandRowsFn ||\n // Do not expand if rows are not included in pagination\n !paginateExpandedRows ||\n !Object.keys(expanded ?? {}).length\n ) {\n return rowModel\n }\n\n return expandRowsFn(instance, rowModel)\n },\n {\n key: 'getExpandedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifyPageIndexReset()\n },\n }\n ),\n\n getPreExpandedRowModel: () => instance.getGroupedRowModel(),\n }\n },\n\n createRow: <TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ExpandedRow => {\n return {\n toggleExpanded: expanded =>\n void instance.toggleRowExpanded(row.id, expanded),\n getIsExpanded: () => instance.getIsRowExpanded(row.id),\n getCanExpand: () => row.subRows && !!row.subRows.length,\n getToggleExpandedProps: userProps => {\n const initialProps: ToggleExpandedProps = {\n title: 'Toggle Row Expanded',\n onClick: (e: MouseEvent | TouchEvent) => {\n e.stopPropagation()\n instance.toggleRowExpanded(row.id)\n },\n }\n return propGetter(initialProps, userProps)\n },\n }\n },\n}\n"],"names":["Expanding","getInitialState","expanded","getDefaultOptions","instance","onExpandedChange","makeStateUpdater","autoResetExpanded","getIsRowExpanded","row","original","expandSubRows","paginateExpandedRows","getInstance","registered","_notifyExpandedReset","options","autoResetAll","resetExpanded","setExpanded","updater","functionalUpdate","getState","toggleRowExpanded","rowId","old","exists","oldExpanded","Object","keys","getRowModel","rowsById","forEach","rest","toggleAllRowsExpanded","getIsAllRowsExpanded","initialState","getRow","process","env","NODE_ENV","console","warn","Error","getRowCanExpand","enableExpanded","defaultCanExpand","subRows","length","getToggleExpandedProps","userProps","canExpand","initialProps","title","undefined","onClick","e","persist","propGetter","getToggleAllRowsExpandedProps","some","id","getExpandedDepth","maxDepth","rowIds","splitId","split","Math","max","getExpandedRowModel","memo","getGroupedRowModel","expandRowsFn","rowModel","key","debug","debugAll","debugTable","onChange","_notifyPageIndexReset","getPreExpandedRowModel","createRow","toggleExpanded","getIsExpanded","getCanExpand","stopPropagation"],"mappings":"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"}
@@ -0,0 +1,413 @@
1
+ /**
2
+ * table-core
3
+ *
4
+ * Copyright (c) TanStack
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var filterTypes = require('../filterTypes.js');
16
+ var utils = require('../utils.js');
17
+
18
+ //
19
+ function getDefaultColumn() {
20
+ return {
21
+ filterType: 'auto'
22
+ };
23
+ }
24
+ var Filters = {
25
+ getInitialState: function getInitialState() {
26
+ return {
27
+ columnFilters: [],
28
+ globalFilter: undefined
29
+ };
30
+ },
31
+ getDefaultOptions: function getDefaultOptions(instance) {
32
+ return {
33
+ onColumnFiltersChange: utils.makeStateUpdater('columnFilters', instance),
34
+ onGlobalFilterChange: utils.makeStateUpdater('globalFilter', instance),
35
+ autoResetColumnFilters: true,
36
+ filterFromChildrenUp: true,
37
+ autoResetGlobalFilter: true,
38
+ globalFilterType: 'auto',
39
+ getColumnCanGlobalFilterFn: function getColumnCanGlobalFilterFn(column) {
40
+ var _instance$getCoreRowM, _instance$getCoreRowM2;
41
+
42
+ var value = (_instance$getCoreRowM = instance.getCoreRowModel().flatRows[0]) == null ? void 0 : (_instance$getCoreRowM2 = _instance$getCoreRowM.getAllCellsByColumnId()[column.id]) == null ? void 0 : _instance$getCoreRowM2.value;
43
+ return typeof value === 'string';
44
+ }
45
+ };
46
+ },
47
+ createColumn: function createColumn(column, instance) {
48
+ var getFacetInfo = utils.memo(function () {
49
+ return [column.getPreFilteredRows()];
50
+ }, function (rows) {
51
+ var _rows$0$values$column, _rows$, _rows$0$values$column2, _rows$2;
52
+
53
+ if (rows === void 0) {
54
+ rows = [];
55
+ }
56
+
57
+ var preFilteredUniqueValues = new Map();
58
+ var preFilteredMinMaxValues = [(_rows$0$values$column = (_rows$ = rows[0]) == null ? void 0 : _rows$.values[column.id]) != null ? _rows$0$values$column : null, (_rows$0$values$column2 = (_rows$2 = rows[0]) == null ? void 0 : _rows$2.values[column.id]) != null ? _rows$0$values$column2 : null];
59
+
60
+ for (var i = 0; i < rows.length; i++) {
61
+ var _rows$i;
62
+
63
+ var _value = (_rows$i = rows[i]) == null ? void 0 : _rows$i.values[column.id];
64
+
65
+ if (preFilteredUniqueValues.has(_value)) {
66
+ var _preFilteredUniqueVal;
67
+
68
+ preFilteredUniqueValues.set(_value, ((_preFilteredUniqueVal = preFilteredUniqueValues.get(_value)) != null ? _preFilteredUniqueVal : 0) + 1);
69
+ } else {
70
+ preFilteredUniqueValues.set(_value, 1);
71
+ }
72
+
73
+ if (_value < preFilteredMinMaxValues[0]) {
74
+ preFilteredMinMaxValues[0] = _value;
75
+ } else if (_value > preFilteredMinMaxValues[1]) {
76
+ preFilteredMinMaxValues[1] = _value;
77
+ }
78
+ }
79
+
80
+ return {
81
+ preFilteredUniqueValues: preFilteredUniqueValues,
82
+ preFilteredMinMaxValues: preFilteredMinMaxValues
83
+ };
84
+ }, {
85
+ key: 'column.getFacetInfo',
86
+ debug: function debug() {
87
+ var _instance$options$deb;
88
+
89
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugColumns;
90
+ }
91
+ });
92
+ return {
93
+ filterType: column.filterType,
94
+ getCanColumnFilter: function getCanColumnFilter() {
95
+ return instance.getColumnCanColumnFilter(column.id);
96
+ },
97
+ getCanGlobalFilter: function getCanGlobalFilter() {
98
+ return instance.getColumnCanGlobalFilter(column.id);
99
+ },
100
+ getColumnFilterIndex: function getColumnFilterIndex() {
101
+ return instance.getColumnFilterIndex(column.id);
102
+ },
103
+ getIsColumnFiltered: function getIsColumnFiltered() {
104
+ return instance.getColumnIsFiltered(column.id);
105
+ },
106
+ getColumnFilterValue: function getColumnFilterValue() {
107
+ return instance.getColumnFilterValue(column.id);
108
+ },
109
+ setColumnFilterValue: function setColumnFilterValue(val) {
110
+ return instance.setColumnFilterValue(column.id, val);
111
+ },
112
+ getPreFilteredUniqueValues: function getPreFilteredUniqueValues() {
113
+ return getFacetInfo().preFilteredUniqueValues;
114
+ },
115
+ getPreFilteredMinMaxValues: function getPreFilteredMinMaxValues() {
116
+ return getFacetInfo().preFilteredMinMaxValues;
117
+ },
118
+ getPreFilteredRows: function getPreFilteredRows() {
119
+ return undefined;
120
+ }
121
+ };
122
+ },
123
+ getInstance: function getInstance(instance) {
124
+ var registered = false;
125
+ return {
126
+ _notifyFiltersReset: function _notifyFiltersReset() {
127
+ if (!registered) {
128
+ registered = true;
129
+ return;
130
+ }
131
+
132
+ if (instance.options.autoResetAll === false) {
133
+ return;
134
+ }
135
+
136
+ if (instance.options.autoResetAll === true) {
137
+ instance.resetSorting();
138
+ } else {
139
+ if (instance.options.autoResetColumnFilters) {
140
+ instance.resetColumnFilters();
141
+ }
142
+
143
+ if (instance.options.autoResetGlobalFilter) {
144
+ instance.resetGlobalFilter();
145
+ }
146
+ }
147
+ },
148
+ getColumnAutoFilterFn: function getColumnAutoFilterFn(columnId) {
149
+ var firstRow = instance.getCoreRowModel().flatRows[0];
150
+ var value = firstRow == null ? void 0 : firstRow.values[columnId];
151
+
152
+ if (typeof value === 'string') {
153
+ return filterTypes.filterTypes.includesString;
154
+ }
155
+
156
+ if (typeof value === 'number') {
157
+ return filterTypes.filterTypes.betweenNumberRange;
158
+ }
159
+
160
+ if (value !== null && typeof value === 'object') {
161
+ return filterTypes.filterTypes.equals;
162
+ }
163
+
164
+ if (Array.isArray(value)) {
165
+ return filterTypes.filterTypes.arrIncludes;
166
+ }
167
+
168
+ return filterTypes.filterTypes.weakEquals;
169
+ },
170
+ getGlobalAutoFilterFn: function getGlobalAutoFilterFn() {
171
+ return filterTypes.filterTypes.includesString;
172
+ },
173
+ getColumnFilterFn: function getColumnFilterFn(columnId) {
174
+ var _ref;
175
+
176
+ var column = instance.getColumn(columnId);
177
+ var userFilterTypes = instance.options.filterTypes;
178
+
179
+ if (!column) {
180
+ throw new Error();
181
+ }
182
+
183
+ return utils.isFunction(column.filterType) ? column.filterType : column.filterType === 'auto' ? instance.getColumnAutoFilterFn(columnId) : (_ref = userFilterTypes == null ? void 0 : userFilterTypes[column.filterType]) != null ? _ref : filterTypes.filterTypes[column.filterType];
184
+ },
185
+ getGlobalFilterFn: function getGlobalFilterFn() {
186
+ var _ref2;
187
+
188
+ var _instance$options = instance.options,
189
+ userFilterTypes = _instance$options.filterTypes,
190
+ globalFilterType = _instance$options.globalFilterType;
191
+ return utils.isFunction(globalFilterType) ? globalFilterType : globalFilterType === 'auto' ? instance.getGlobalAutoFilterFn() : (_ref2 = userFilterTypes == null ? void 0 : userFilterTypes[globalFilterType]) != null ? _ref2 : filterTypes.filterTypes[globalFilterType];
192
+ },
193
+ setColumnFilters: function setColumnFilters(updater) {
194
+ var leafColumns = instance.getAllLeafColumns();
195
+
196
+ var updateFn = function updateFn(old) {
197
+ var _functionalUpdate;
198
+
199
+ return (_functionalUpdate = utils.functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(function (filter) {
200
+ var column = leafColumns.find(function (d) {
201
+ return d.id === filter.id;
202
+ });
203
+
204
+ if (column) {
205
+ var filterFn = instance.getColumnFilterFn(column.id);
206
+
207
+ if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
208
+ return false;
209
+ }
210
+ }
211
+
212
+ return true;
213
+ });
214
+ };
215
+
216
+ instance.options.onColumnFiltersChange == null ? void 0 : instance.options.onColumnFiltersChange(updateFn, updateFn(instance.getState().columnFilters));
217
+ },
218
+ setGlobalFilter: function setGlobalFilter(updater) {
219
+ instance.options.onGlobalFilterChange == null ? void 0 : instance.options.onGlobalFilterChange(updater, utils.functionalUpdate(updater, instance.getState().globalFilter));
220
+ },
221
+ resetGlobalFilter: function resetGlobalFilter() {
222
+ instance.setGlobalFilter(undefined);
223
+ },
224
+ getColumnCanColumnFilter: function getColumnCanColumnFilter(columnId) {
225
+ var _ref3, _ref4, _ref5, _ref6, _ref7, _column$enableAllFilt;
226
+
227
+ var column = instance.getColumn(columnId);
228
+
229
+ if (!column) {
230
+ throw new Error();
231
+ }
232
+
233
+ return (_ref3 = (_ref4 = (_ref5 = (_ref6 = (_ref7 = (_column$enableAllFilt = column.enableAllFilters) != null ? _column$enableAllFilt : column.enableColumnFilter) != null ? _ref7 : instance.options.enableFilters) != null ? _ref6 : instance.options.enableColumnFilters) != null ? _ref5 : column.defaultCanFilter) != null ? _ref4 : column.defaultCanColumnFilter) != null ? _ref3 : !!column.accessorFn;
234
+ },
235
+ getColumnCanGlobalFilter: function getColumnCanGlobalFilter(columnId) {
236
+ var _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _instance$options$ena;
237
+
238
+ var column = instance.getColumn(columnId);
239
+
240
+ if (!column) {
241
+ throw new Error();
242
+ }
243
+
244
+ return (_ref8 = ((_ref9 = (_ref10 = (_ref11 = (_ref12 = (_ref13 = (_instance$options$ena = instance.options.enableFilters) != null ? _instance$options$ena : instance.options.enableGlobalFilter) != null ? _ref13 : column.enableAllFilters) != null ? _ref12 : column.enableGlobalFilter) != null ? _ref11 : column.defaultCanFilter) != null ? _ref10 : column.defaultCanGlobalFilter) != null ? _ref9 : !!column.accessorFn) && (instance.options.getColumnCanGlobalFilterFn == null ? void 0 : instance.options.getColumnCanGlobalFilterFn(column))) != null ? _ref8 : true;
245
+ },
246
+ getColumnIsFiltered: function getColumnIsFiltered(columnId) {
247
+ return instance.getColumnFilterIndex(columnId) > -1;
248
+ },
249
+ getColumnFilterValue: function getColumnFilterValue(columnId) {
250
+ var _instance$getState$co, _instance$getState$co2;
251
+
252
+ return (_instance$getState$co = instance.getState().columnFilters) == null ? void 0 : (_instance$getState$co2 = _instance$getState$co.find(function (d) {
253
+ return d.id === columnId;
254
+ })) == null ? void 0 : _instance$getState$co2.value;
255
+ },
256
+ getColumnFilterIndex: function getColumnFilterIndex(columnId) {
257
+ var _instance$getState$co3, _instance$getState$co4;
258
+
259
+ return (_instance$getState$co3 = (_instance$getState$co4 = instance.getState().columnFilters) == null ? void 0 : _instance$getState$co4.findIndex(function (d) {
260
+ return d.id === columnId;
261
+ })) != null ? _instance$getState$co3 : -1;
262
+ },
263
+ setColumnFilterValue: function setColumnFilterValue(columnId, value) {
264
+ if (!columnId) return;
265
+ instance.setColumnFilters(function (old) {
266
+ var column = instance.getColumn(columnId);
267
+
268
+ if (!column) {
269
+ if (process.env.NODE_ENV !== 'production') {
270
+ console.warn("React-Table: Could not find a column with id: " + columnId);
271
+ }
272
+
273
+ throw new Error();
274
+ }
275
+
276
+ var filterFn = instance.getColumnFilterFn(column.id);
277
+ var previousfilter = old == null ? void 0 : old.find(function (d) {
278
+ return d.id === columnId;
279
+ });
280
+ var newFilter = utils.functionalUpdate(value, previousfilter ? previousfilter.value : undefined); //
281
+
282
+ if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
283
+ var _old$filter;
284
+
285
+ return (_old$filter = old == null ? void 0 : old.filter(function (d) {
286
+ return d.id !== columnId;
287
+ })) != null ? _old$filter : [];
288
+ }
289
+
290
+ var newFilterObj = {
291
+ id: columnId,
292
+ value: newFilter
293
+ };
294
+
295
+ if (previousfilter) {
296
+ var _old$map;
297
+
298
+ return (_old$map = old == null ? void 0 : old.map(function (d) {
299
+ if (d.id === columnId) {
300
+ return newFilterObj;
301
+ }
302
+
303
+ return d;
304
+ })) != null ? _old$map : [];
305
+ }
306
+
307
+ if (old != null && old.length) {
308
+ return [].concat(old, [newFilterObj]);
309
+ }
310
+
311
+ return [newFilterObj];
312
+ });
313
+ },
314
+ resetColumnFilters: function resetColumnFilters() {
315
+ var _instance$initialStat, _instance$initialStat2;
316
+
317
+ instance.setColumnFilters((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.columnFilters) != null ? _instance$initialStat : []);
318
+ },
319
+ getPreFilteredRowModel: function getPreFilteredRowModel() {
320
+ return instance.getCoreRowModel();
321
+ },
322
+ getPreColumnFilteredRowModel: function getPreColumnFilteredRowModel() {
323
+ return instance.getCoreRowModel();
324
+ },
325
+ getColumnFilteredRowModel: utils.memo(function () {
326
+ return [instance.getState().columnFilters, instance.getCoreRowModel(), instance.options.columnFilterRowsFn];
327
+ }, function (columnFilters, rowModel, columnFiltersFn) {
328
+ var columnFilteredRowModel = function () {
329
+ if (!(columnFilters != null && columnFilters.length) || !columnFiltersFn) {
330
+ return rowModel;
331
+ }
332
+
333
+ return columnFiltersFn(instance, rowModel);
334
+ }(); // Now that each filtered column has it's partially filtered rows,
335
+ // lets assign the final filtered rows to all of the other columns
336
+
337
+
338
+ var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
339
+ var _instance$getState$co5;
340
+
341
+ return !((_instance$getState$co5 = instance.getState().columnFilters) != null && _instance$getState$co5.find(function (d) {
342
+ return d.id === column.id;
343
+ }));
344
+ }); // This essentially enables faceted filter options to be built easily
345
+ // using every column's preFilteredRows value
346
+
347
+ nonFilteredColumns.forEach(function (column) {
348
+ column.getPreFilteredRows = function () {
349
+ return columnFilteredRowModel.rows;
350
+ };
351
+ });
352
+ return columnFilteredRowModel;
353
+ }, {
354
+ key: 'getColumnFilteredRowModel',
355
+ debug: function debug() {
356
+ var _instance$options$deb2;
357
+
358
+ return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
359
+ }
360
+ }),
361
+ getPreGlobalFilteredRowModel: function getPreGlobalFilteredRowModel() {
362
+ return instance.getColumnFilteredRowModel();
363
+ },
364
+ getGlobalFilteredRowModel: utils.memo(function () {
365
+ return [instance.getState().globalFilter, instance.getColumnFilteredRowModel(), instance.options.globalFilterRowsFn];
366
+ }, function (globalFilterValue, columnFilteredRowModel, globalFiltersFn) {
367
+ var globalFilteredRowModel = function () {
368
+ if (!globalFiltersFn || !globalFilterValue) {
369
+ return columnFilteredRowModel;
370
+ }
371
+
372
+ return globalFiltersFn(instance, columnFilteredRowModel);
373
+ }(); // Now that each filtered column has it's partially filtered rows,
374
+ // lets assign the final filtered rows to all of the other columns
375
+
376
+
377
+ var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
378
+ var _instance$getState$co6;
379
+
380
+ return !((_instance$getState$co6 = instance.getState().columnFilters) != null && _instance$getState$co6.find(function (d) {
381
+ return d.id === column.id;
382
+ }));
383
+ }); // This essentially enables faceted filter options to be built easily
384
+ // using every column's preFilteredRows value
385
+
386
+ nonFilteredColumns.forEach(function (column) {
387
+ column.getPreFilteredRows = function () {
388
+ return globalFilteredRowModel.rows;
389
+ };
390
+ });
391
+ return globalFilteredRowModel;
392
+ }, {
393
+ key: 'getGlobalFilteredRowModel',
394
+ debug: function debug() {
395
+ var _instance$options$deb3;
396
+
397
+ return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugTable;
398
+ },
399
+ onChange: function onChange() {
400
+ instance._notifySortingReset();
401
+ }
402
+ })
403
+ };
404
+ }
405
+ };
406
+ function shouldAutoRemoveFilter(filterFn, value, column) {
407
+ return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;
408
+ }
409
+
410
+ exports.Filters = Filters;
411
+ exports.getDefaultColumn = getDefaultColumn;
412
+ exports.shouldAutoRemoveFilter = shouldAutoRemoveFilter;
413
+ //# sourceMappingURL=Filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.js","sources":["../../../src/features/Filters.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInFilterType, filterTypes } from '../filterTypes'\nimport {\n Column,\n OnChangeFn,\n PartialGenerics,\n TableInstance,\n Row,\n Updater,\n} from '../types'\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n} from '../utils'\n\nexport type ColumnFilter = {\n id: string\n value: unknown\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport type FilterFn<TGenerics extends PartialGenerics> = {\n (rows: Row<TGenerics>[], columnIds: string[], filterValue: any): any\n autoRemove?: ColumnFilterAutoRemoveTestFn<TGenerics>\n}\n\nexport type ColumnFilterAutoRemoveTestFn<TGenerics extends PartialGenerics> = (\n value: unknown,\n column?: Column<TGenerics>\n) => boolean\n\nexport type CustomFilterTypes<TGenerics extends PartialGenerics> = Record<\n string,\n FilterFn<TGenerics>\n>\n\nexport type FiltersTableState = {\n columnFilters: ColumnFiltersState\n globalFilter: any\n}\n\nexport type FilterType<TGenerics extends PartialGenerics> =\n | 'auto'\n | BuiltInFilterType\n | TGenerics['FilterFns']\n | FilterFn<TGenerics>\n\nexport type FiltersColumnDef<TGenerics extends PartialGenerics> = {\n filterType?: FilterType<Overwrite<TGenerics, { Value: any }>>\n enableAllFilters?: boolean\n enableColumnFilter?: boolean\n enableGlobalFilter?: boolean\n defaultCanFilter?: boolean\n defaultCanColumnFilter?: boolean\n defaultCanGlobalFilter?: boolean\n}\n\nexport type FiltersColumn<TGenerics extends PartialGenerics> = {\n filterType: FilterType<Overwrite<TGenerics, { Value: any }>>\n getCanColumnFilter: () => boolean\n getCanGlobalFilter: () => boolean\n getColumnFilterIndex: () => number\n getIsColumnFiltered: () => boolean\n getColumnFilterValue: () => unknown\n setColumnFilterValue: (value: any) => void\n getPreFilteredRows: () => Row<TGenerics>[] | undefined\n getPreFilteredUniqueValues: () => Map<any, number>\n getPreFilteredMinMaxValues: () => [any, any]\n}\n\nexport type FiltersOptions<TGenerics extends PartialGenerics> = {\n filterFromChildrenUp?: boolean\n filterTypes?: TGenerics['FilterFns']\n enableFilters?: boolean\n // Column\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n autoResetColumnFilters?: boolean\n enableColumnFilters?: boolean\n columnFilterRowsFn?: (\n instance: TableInstance<TGenerics>,\n coreRowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n // Global\n globalFilterType?: FilterType<TGenerics>\n onGlobalFilterChange?: OnChangeFn<any>\n enableGlobalFilters?: boolean\n autoResetGlobalFilter?: boolean\n enableGlobalFilter?: boolean\n globalFilterRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean\n}\n\nexport type FiltersInstance<TGenerics extends PartialGenerics> = {\n _notifyFiltersReset: () => void\n getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined\n\n getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n setColumnFilterValue: (columnId: string, value: any) => void\n resetColumnFilters: () => void\n getColumnCanColumnFilter: (columnId: string) => boolean\n getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean\n\n getColumnIsFiltered: (columnId: string) => boolean\n getColumnFilterValue: (columnId: string) => unknown\n getColumnFilterIndex: (columnId: string) => number\n\n // All\n getPreFilteredRowModel: () => RowModel<TGenerics>\n\n // Column Filters\n getPreColumnFilteredRowModel: () => RowModel<TGenerics>\n getColumnFilteredRowModel: () => RowModel<TGenerics>\n\n // Global Filters\n setGlobalFilter: (updater: Updater<any>) => void\n resetGlobalFilter: () => void\n getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined\n getGlobalFilterFn: () => FilterFn<TGenerics> | undefined\n getColumnCanGlobalFilter: (columnId: string) => boolean\n getPreGlobalFilteredRowModel: () => RowModel<TGenerics>\n getGlobalFilteredRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport function getDefaultColumn<\n TGenerics extends PartialGenerics\n>(): FiltersColumnDef<TGenerics> {\n return {\n filterType: 'auto',\n }\n}\n\nexport const Filters = {\n getInitialState: (): FiltersTableState => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): FiltersOptions<TGenerics> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', instance),\n onGlobalFilterChange: makeStateUpdater('globalFilter', instance),\n autoResetColumnFilters: true,\n filterFromChildrenUp: true,\n autoResetGlobalFilter: true,\n globalFilterType: 'auto',\n getColumnCanGlobalFilterFn: column => {\n const value = instance\n .getCoreRowModel()\n .flatRows[0]?.getAllCellsByColumnId()[column.id]?.value\n\n return typeof value === 'string'\n },\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): FiltersColumn<TGenerics> => {\n const getFacetInfo = memo(\n () => [column.getPreFilteredRows()],\n (rows = []) => {\n let preFilteredUniqueValues = new Map<any, number>()\n\n let preFilteredMinMaxValues: [any, any] = [\n rows[0]?.values[column.id] ?? null,\n rows[0]?.values[column.id] ?? null,\n ]\n\n for (let i = 0; i < rows.length; i++) {\n const value = rows[i]?.values[column.id]\n\n if (preFilteredUniqueValues.has(value)) {\n preFilteredUniqueValues.set(\n value,\n (preFilteredUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n preFilteredUniqueValues.set(value, 1)\n }\n\n if (value < preFilteredMinMaxValues[0]) {\n preFilteredMinMaxValues[0] = value\n } else if (value > preFilteredMinMaxValues[1]) {\n preFilteredMinMaxValues[1] = value\n }\n }\n\n return {\n preFilteredUniqueValues,\n preFilteredMinMaxValues,\n }\n },\n {\n key: 'column.getFacetInfo',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n )\n\n return {\n filterType: column.filterType,\n getCanColumnFilter: () => instance.getColumnCanColumnFilter(column.id),\n getCanGlobalFilter: () => instance.getColumnCanGlobalFilter(column.id),\n getColumnFilterIndex: () => instance.getColumnFilterIndex(column.id),\n getIsColumnFiltered: () => instance.getColumnIsFiltered(column.id),\n getColumnFilterValue: () => instance.getColumnFilterValue(column.id),\n setColumnFilterValue: val =>\n instance.setColumnFilterValue(column.id, val),\n getPreFilteredUniqueValues: () => getFacetInfo().preFilteredUniqueValues,\n getPreFilteredMinMaxValues: () => getFacetInfo().preFilteredMinMaxValues,\n getPreFilteredRows: () => undefined,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): FiltersInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyFiltersReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (instance.options.autoResetAll === true) {\n instance.resetSorting()\n } else {\n if (instance.options.autoResetColumnFilters) {\n instance.resetColumnFilters()\n }\n if (instance.options.autoResetGlobalFilter) {\n instance.resetGlobalFilter()\n }\n }\n },\n getColumnAutoFilterFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return filterTypes.includesString\n }\n\n if (typeof value === 'number') {\n return filterTypes.betweenNumberRange\n }\n\n if (value !== null && typeof value === 'object') {\n return filterTypes.equals\n }\n\n if (Array.isArray(value)) {\n return filterTypes.arrIncludes\n }\n\n return filterTypes.weakEquals\n },\n getGlobalAutoFilterFn: () => {\n return filterTypes.includesString\n },\n getColumnFilterFn: columnId => {\n const column = instance.getColumn(columnId)\n const userFilterTypes = instance.options.filterTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.filterType)\n ? column.filterType\n : column.filterType === 'auto'\n ? instance.getColumnAutoFilterFn(columnId)\n : (userFilterTypes as Record<string, any>)?.[\n column.filterType as string\n ] ??\n (filterTypes[\n column.filterType as BuiltInFilterType\n ] as FilterFn<TGenerics>)\n },\n\n getGlobalFilterFn: () => {\n const { filterTypes: userFilterTypes, globalFilterType } =\n instance.options\n\n return isFunction(globalFilterType)\n ? globalFilterType\n : globalFilterType === 'auto'\n ? instance.getGlobalAutoFilterFn()\n : (userFilterTypes as Record<string, any>)?.[\n globalFilterType as string\n ] ??\n (filterTypes[\n globalFilterType as BuiltInFilterType\n ] as FilterFn<TGenerics>)\n },\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = instance.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = instance.getColumnFilterFn(column.id)\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n instance.options.onColumnFiltersChange?.(\n updateFn,\n updateFn(instance.getState().columnFilters)\n )\n },\n\n setGlobalFilter: updater => {\n instance.options.onGlobalFilterChange?.(\n updater,\n functionalUpdate(updater, instance.getState().globalFilter)\n )\n },\n\n resetGlobalFilter: () => {\n instance.setGlobalFilter(undefined)\n },\n\n getColumnCanColumnFilter: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableAllFilters ??\n column.enableColumnFilter ??\n instance.options.enableFilters ??\n instance.options.enableColumnFilters ??\n column.defaultCanFilter ??\n column.defaultCanColumnFilter ??\n !!column.accessorFn\n )\n },\n\n getColumnCanGlobalFilter: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n ((instance.options.enableFilters ??\n instance.options.enableGlobalFilter ??\n column.enableAllFilters ??\n column.enableGlobalFilter ??\n column.defaultCanFilter ??\n column.defaultCanGlobalFilter ??\n !!column.accessorFn) &&\n instance.options.getColumnCanGlobalFilterFn?.(column)) ??\n true\n )\n },\n\n getColumnIsFiltered: columnId =>\n instance.getColumnFilterIndex(columnId) > -1,\n\n getColumnFilterValue: columnId =>\n instance.getState().columnFilters?.find(d => d.id === columnId)?.value,\n\n getColumnFilterIndex: columnId =>\n instance.getState().columnFilters?.findIndex(d => d.id === columnId) ??\n -1,\n\n setColumnFilterValue: (columnId, value) => {\n if (!columnId) return\n\n instance.setColumnFilters(old => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `React-Table: Could not find a column with id: ${columnId}`\n )\n }\n throw new Error()\n }\n\n const filterFn = instance.getColumnFilterFn(column.id)\n const previousfilter = old?.find(d => d.id === columnId)\n\n const newFilter = functionalUpdate(\n value,\n previousfilter ? previousfilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(\n filterFn as FilterFn<TGenerics>,\n newFilter,\n column\n )\n ) {\n return old?.filter(d => d.id !== columnId) ?? []\n }\n\n const newFilterObj = { id: columnId, value: newFilter }\n\n if (previousfilter) {\n return (\n old?.map(d => {\n if (d.id === columnId) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n },\n\n resetColumnFilters: () => {\n instance.setColumnFilters(instance.initialState?.columnFilters ?? [])\n },\n\n getPreFilteredRowModel: () => instance.getCoreRowModel(),\n getPreColumnFilteredRowModel: () => instance.getCoreRowModel(),\n getColumnFilteredRowModel: memo(\n () => [\n instance.getState().columnFilters,\n instance.getCoreRowModel(),\n instance.options.columnFilterRowsFn,\n ],\n (columnFilters, rowModel, columnFiltersFn) => {\n const columnFilteredRowModel = (() => {\n if (!columnFilters?.length || !columnFiltersFn) {\n return rowModel\n }\n\n return columnFiltersFn(instance as any, rowModel)\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance\n .getState()\n .columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => columnFilteredRowModel.rows\n })\n\n return columnFilteredRowModel\n },\n {\n key: 'getColumnFilteredRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n getPreGlobalFilteredRowModel: () => instance.getColumnFilteredRowModel(),\n getGlobalFilteredRowModel: memo(\n () => [\n instance.getState().globalFilter,\n instance.getColumnFilteredRowModel(),\n instance.options.globalFilterRowsFn,\n ],\n (globalFilterValue, columnFilteredRowModel, globalFiltersFn) => {\n const globalFilteredRowModel = (() => {\n if (!globalFiltersFn || !globalFilterValue) {\n return columnFilteredRowModel\n }\n\n return globalFiltersFn(\n instance as TableInstance<TGenerics>,\n columnFilteredRowModel\n )\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance\n .getState()\n .columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => globalFilteredRowModel.rows\n })\n\n return globalFilteredRowModel\n },\n {\n key: 'getGlobalFilteredRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifySortingReset()\n },\n }\n ),\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TGenerics extends PartialGenerics>(\n filterFn?: FilterFn<TGenerics>,\n value?: any,\n column?: Column<TGenerics>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":["getDefaultColumn","filterType","Filters","getInitialState","columnFilters","globalFilter","undefined","getDefaultOptions","instance","onColumnFiltersChange","makeStateUpdater","onGlobalFilterChange","autoResetColumnFilters","filterFromChildrenUp","autoResetGlobalFilter","globalFilterType","getColumnCanGlobalFilterFn","column","value","getCoreRowModel","flatRows","getAllCellsByColumnId","id","createColumn","getFacetInfo","memo","getPreFilteredRows","rows","preFilteredUniqueValues","Map","preFilteredMinMaxValues","values","i","length","has","set","get","key","debug","options","debugAll","debugColumns","getCanColumnFilter","getColumnCanColumnFilter","getCanGlobalFilter","getColumnCanGlobalFilter","getColumnFilterIndex","getIsColumnFiltered","getColumnIsFiltered","getColumnFilterValue","setColumnFilterValue","val","getPreFilteredUniqueValues","getPreFilteredMinMaxValues","getInstance","registered","_notifyFiltersReset","autoResetAll","resetSorting","resetColumnFilters","resetGlobalFilter","getColumnAutoFilterFn","columnId","firstRow","filterTypes","includesString","betweenNumberRange","equals","Array","isArray","arrIncludes","weakEquals","getGlobalAutoFilterFn","getColumnFilterFn","getColumn","userFilterTypes","Error","isFunction","getGlobalFilterFn","setColumnFilters","updater","leafColumns","getAllLeafColumns","updateFn","old","functionalUpdate","filter","find","d","filterFn","shouldAutoRemoveFilter","getState","setGlobalFilter","enableAllFilters","enableColumnFilter","enableFilters","enableColumnFilters","defaultCanFilter","defaultCanColumnFilter","accessorFn","enableGlobalFilter","defaultCanGlobalFilter","findIndex","process","env","NODE_ENV","console","warn","previousfilter","newFilter","newFilterObj","map","initialState","getPreFilteredRowModel","getPreColumnFilteredRowModel","getColumnFilteredRowModel","columnFilterRowsFn","rowModel","columnFiltersFn","columnFilteredRowModel","nonFilteredColumns","forEach","debugTable","getPreGlobalFilteredRowModel","getGlobalFilteredRowModel","globalFilterRowsFn","globalFilterValue","globalFiltersFn","globalFilteredRowModel","onChange","_notifySortingReset","autoRemove"],"mappings":"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"}