@tanstack/table-core 8.0.0-alpha.22 → 8.0.0-alpha.25
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.
- package/build/cjs/aggregationTypes.js +21 -19
- package/build/cjs/aggregationTypes.js.map +1 -1
- package/build/cjs/core.js +17 -29
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +2 -2
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +23 -8
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +1 -8
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +1 -1
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +1 -1
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +3 -3
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterTypes.js.map +1 -1
- package/build/cjs/sortTypes.js.map +1 -1
- package/build/cjs/utils/columnFilterRowsFn.js +20 -78
- package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +100 -0
- package/build/cjs/utils/filterRowsUtils.js.map +1 -0
- package/build/cjs/utils/globalFilterRowsFn.js +10 -62
- package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/groupRowsFn.js +15 -15
- package/build/cjs/utils/groupRowsFn.js.map +1 -1
- package/build/cjs/utils/sortRowsFn.js +1 -1
- package/build/cjs/utils/sortRowsFn.js.map +1 -1
- package/build/esm/index.js +2587 -2620
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +368 -335
- package/build/types/aggregationTypes.d.ts +9 -9
- package/build/types/core.d.ts +8 -13
- package/build/types/createTable.d.ts +4 -4
- package/build/types/features/ColumnSizing.d.ts +13 -8
- package/build/types/features/Expanding.d.ts +6 -6
- package/build/types/features/Filters.d.ts +15 -15
- package/build/types/features/Grouping.d.ts +16 -16
- package/build/types/features/Headers.d.ts +6 -6
- package/build/types/features/Ordering.d.ts +4 -4
- package/build/types/features/Pagination.d.ts +5 -5
- package/build/types/features/Pinning.d.ts +5 -5
- package/build/types/features/RowSelection.d.ts +8 -8
- package/build/types/features/Sorting.d.ts +12 -12
- package/build/types/features/Visibility.d.ts +6 -6
- package/build/types/filterTypes.d.ts +10 -10
- package/build/types/sortTypes.d.ts +7 -7
- package/build/types/types.d.ts +22 -13
- package/build/types/utils/filterRowsUtils.d.ts +3 -0
- package/build/types/utils/sortRowsQuicksortFn.d.ts +11 -0
- package/build/umd/index.development.js +2587 -2620
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/aggregationTypes.ts +23 -19
- package/src/core.tsx +29 -55
- package/src/createTable.tsx +17 -11
- package/src/features/ColumnSizing.ts +31 -7
- package/src/features/Expanding.ts +7 -15
- package/src/features/Filters.ts +15 -15
- package/src/features/Grouping.ts +19 -19
- package/src/features/Headers.ts +5 -5
- package/src/features/Ordering.ts +3 -3
- package/src/features/Pagination.ts +4 -4
- package/src/features/Pinning.ts +4 -4
- package/src/features/RowSelection.ts +9 -11
- package/src/features/Sorting.ts +11 -11
- package/src/features/Visibility.ts +5 -5
- package/src/filterTypes.ts +9 -9
- package/src/sortTypes.ts +6 -6
- package/src/types.ts +34 -25
- package/src/utils/columnFilterRowsFn.ts +12 -73
- package/src/utils/filterRowsUtils.ts +107 -0
- package/src/utils/globalFilterRowsFn.ts +10 -66
- package/src/utils/groupRowsFn.ts +15 -17
- package/src/utils/sortRowsFn.ts +6 -8
- package/src/utils/sortRowsQuicksortFn.ts +174 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport { BuiltInSortType, reSplitAlphaNumeric, sortTypes } from '../sortTypes'\n\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n} from '../types'\n\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n propGetter,\n} from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingFn<TGenerics extends PartialGenerics> = {\n (rowA: Row<TGenerics>, rowB: Row<TGenerics>, columnId: string): number\n}\n\nexport type CustomSortingTypes<TGenerics extends PartialGenerics> = Record<\n string,\n SortingFn<TGenerics>\n>\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortType<TGenerics extends PartialGenerics> =\n | 'auto'\n | BuiltInSortType\n | keyof TGenerics['SortingFns']\n | SortingFn<TGenerics>\n\nexport type SortingColumnDef<TGenerics extends PartialGenerics> = {\n sortType?: SortType<Overwrite<TGenerics, { Value: any }>>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n defaultCanSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TGenerics extends PartialGenerics> = {\n sortType: SortType<Overwrite<TGenerics, { Value: any }>>\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n resetSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n}\n\nexport type SortingOptions<TGenerics extends PartialGenerics> = {\n sortTypes?: TGenerics['SortingFns']\n onSortingChange?: OnChangeFn<SortingState>\n autoResetSorting?: boolean\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n sortRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: MouseEvent | TouchEvent) => boolean\n}\n\nexport type ToggleSortingProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type SortingInstance<TGenerics extends PartialGenerics> = {\n _notifySortingReset: () => void\n getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined\n getColumnAutoSortDir: (columnId: string) => SortDirection\n\n getColumnSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined\n\n setSorting: (updater: Updater<SortingState>) => void\n toggleColumnSorting: (\n columnId: string,\n desc?: boolean,\n multi?: boolean\n ) => void\n resetSorting: (columnId?: string) => void\n getColumnCanSort: (columnId: string) => boolean\n getColumnCanMultiSort: (columnId: string) => boolean\n getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'\n getColumnSortIndex: (columnId: string) => number\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n getPreSortedRowModel: () => RowModel<TGenerics>\n getSortedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Sorting = {\n getDefaultColumn: <\n TGenerics extends PartialGenerics\n >(): SortingColumnDef<TGenerics> => {\n return {\n sortType: 'auto',\n }\n },\n\n getInitialState: (): SortingTableState => {\n return {\n sorting: [],\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingOptions<TGenerics> => {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n autoResetSorting: true,\n isMultiSortEvent: (e: MouseEvent | TouchEvent) => {\n return e.shiftKey\n },\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): SortingColumn<TGenerics> => {\n return {\n sortType: column.sortType,\n getCanSort: () => instance.getColumnCanSort(column.id),\n getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),\n getSortIndex: () => instance.getColumnSortIndex(column.id),\n getIsSorted: () => instance.getColumnIsSorted(column.id),\n resetSorting: () => instance.resetSorting(column.id),\n toggleSorting: (desc, isMulti) =>\n instance.toggleColumnSorting(column.id, desc, isMulti),\n getToggleSortingProps: userProps =>\n instance.getToggleSortingProps(column.id, userProps),\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifySortingReset: () => {\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.autoResetSorting\n ) {\n instance.resetSorting()\n }\n },\n getColumnAutoSortingFn: columnId => {\n const firstRows = instance\n .getGlobalFilteredRowModel()\n .flatRows.slice(100)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.values[columnId]\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortTypes.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortTypes.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortTypes.text\n }\n\n return sortTypes.basic\n },\n getColumnAutoSortDir: columnId => {\n const firstRow = instance.getGlobalFilteredRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getColumnSortingFn: columnId => {\n const column = instance.getColumn(columnId)\n const userSortTypes = instance.options.sortTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.sortType)\n ? column.sortType\n : column.sortType === 'auto'\n ? instance.getColumnAutoSortingFn(columnId)\n : (userSortTypes as Record<string, any>)?.[\n column.sortType as string\n ] ??\n (sortTypes[\n column.sortType as BuiltInSortType\n ] as SortingFn<TGenerics>)\n },\n\n setSorting: updater =>\n instance.options.onSortingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().sorting)\n ),\n\n toggleColumnSorting: (columnId, desc, multi) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === columnId)\n const existingIndex = old?.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n const sortDescFirst =\n column.sortDescFirst ??\n instance.options.sortDescFirst ??\n instance.getColumnAutoSortDir(columnId) === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ??\n Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== columnId)\n }\n\n return newSorting\n })\n },\n\n getColumnCanSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableSorting ??\n instance.options.enableSorting ??\n column.defaultCanSort ??\n !!column.accessorFn\n // (!!column.accessorFn ||\n // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??\n // false\n )\n },\n\n getColumnCanMultiSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getColumnIsSorted: columnId => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === columnId)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getColumnSortIndex: columnId =>\n instance.getState().sorting?.findIndex(d => d.id === columnId) ?? -1,\n\n resetSorting: (columnId?: string) => {\n if (columnId) {\n instance.setSorting(old =>\n old?.length ? old.filter(d => d.id !== columnId) : []\n )\n } else {\n instance.setSorting(instance.initialState?.sorting ?? [])\n }\n },\n\n getToggleSortingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const canSort = column.getCanSort()\n\n const initialProps: ToggleSortingProps = {\n title: canSort ? 'Toggle Sorting' : undefined,\n onClick: canSort\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getPreSortedRowModel: () => instance.getGlobalFilteredRowModel(),\n getSortedRowModel: memo(\n () => [\n instance.getState().sorting,\n instance.getGlobalFilteredRowModel(),\n instance.options.sortRowsFn,\n ],\n (sorting, rowModel, sortingFn) => {\n if (!sortingFn || !sorting?.length) {\n return rowModel\n }\n\n return sortingFn(instance, rowModel)\n },\n {\n key: 'getSortedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifyGroupingReset()\n },\n }\n ),\n }\n },\n}\n"],"names":["Sorting","getDefaultColumn","sortType","getInitialState","sorting","getDefaultOptions","instance","onSortingChange","makeStateUpdater","autoResetSorting","isMultiSortEvent","e","shiftKey","createColumn","column","getCanSort","getColumnCanSort","id","getCanMultiSort","getColumnCanMultiSort","getSortIndex","getColumnSortIndex","getIsSorted","getColumnIsSorted","resetSorting","toggleSorting","desc","isMulti","toggleColumnSorting","getToggleSortingProps","userProps","getInstance","registered","_notifySortingReset","options","autoResetAll","getColumnAutoSortingFn","columnId","firstRows","getGlobalFilteredRowModel","flatRows","slice","isString","row","value","values","Object","prototype","toString","call","sortTypes","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getColumnAutoSortDir","firstRow","getColumnSortingFn","getColumn","userSortTypes","Error","isFunction","setSorting","updater","functionalUpdate","getState","multi","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","enableSorting","defaultCanSort","accessorFn","enableMultiSort","columnSort","initialState","canSort","initialProps","title","undefined","onClick","persist","propGetter","getPreSortedRowModel","getSortedRowModel","memo","sortRowsFn","rowModel","sortingFn","key","debug","debugAll","debugTable","onChange","_notifyGroupingReset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport { BuiltInSortType, reSplitAlphaNumeric, sortTypes } from '../sortTypes'\n\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n} from '../types'\n\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n propGetter,\n} from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingFn<TGenerics extends AnyGenerics> = {\n (rowA: Row<TGenerics>, rowB: Row<TGenerics>, columnId: string): number\n}\n\nexport type CustomSortingTypes<TGenerics extends AnyGenerics> = Record<\n string,\n SortingFn<TGenerics>\n>\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortType<TGenerics extends AnyGenerics> =\n | 'auto'\n | BuiltInSortType\n | keyof TGenerics['SortingFns']\n | SortingFn<TGenerics>\n\nexport type SortingColumnDef<TGenerics extends AnyGenerics> = {\n sortType?: SortType<Overwrite<TGenerics, { Value: any }>>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n defaultCanSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TGenerics extends AnyGenerics> = {\n sortType: SortType<Overwrite<TGenerics, { Value: any }>>\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n resetSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n}\n\nexport type SortingOptions<TGenerics extends AnyGenerics> = {\n sortTypes?: TGenerics['SortingFns']\n onSortingChange?: OnChangeFn<SortingState>\n autoResetSorting?: boolean\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n sortRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: MouseEvent | TouchEvent) => boolean\n}\n\nexport type ToggleSortingProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type SortingInstance<TGenerics extends AnyGenerics> = {\n _notifySortingReset: () => void\n getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined\n getColumnAutoSortDir: (columnId: string) => SortDirection\n\n getColumnSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined\n\n setSorting: (updater: Updater<SortingState>) => void\n toggleColumnSorting: (\n columnId: string,\n desc?: boolean,\n multi?: boolean\n ) => void\n resetSorting: (columnId?: string) => void\n getColumnCanSort: (columnId: string) => boolean\n getColumnCanMultiSort: (columnId: string) => boolean\n getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'\n getColumnSortIndex: (columnId: string) => number\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n getPreSortedRowModel: () => RowModel<TGenerics>\n getSortedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Sorting = {\n getDefaultColumn: <\n TGenerics extends AnyGenerics\n >(): SortingColumnDef<TGenerics> => {\n return {\n sortType: 'auto',\n }\n },\n\n getInitialState: (): SortingTableState => {\n return {\n sorting: [],\n }\n },\n\n getDefaultOptions: <TGenerics extends AnyGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingOptions<TGenerics> => {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n autoResetSorting: true,\n isMultiSortEvent: (e: MouseEvent | TouchEvent) => {\n return e.shiftKey\n },\n }\n },\n\n createColumn: <TGenerics extends AnyGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): SortingColumn<TGenerics> => {\n return {\n sortType: column.sortType,\n getCanSort: () => instance.getColumnCanSort(column.id),\n getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),\n getSortIndex: () => instance.getColumnSortIndex(column.id),\n getIsSorted: () => instance.getColumnIsSorted(column.id),\n resetSorting: () => instance.resetSorting(column.id),\n toggleSorting: (desc, isMulti) =>\n instance.toggleColumnSorting(column.id, desc, isMulti),\n getToggleSortingProps: userProps =>\n instance.getToggleSortingProps(column.id, userProps),\n }\n },\n\n getInstance: <TGenerics extends AnyGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifySortingReset: () => {\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.autoResetSorting\n ) {\n instance.resetSorting()\n }\n },\n getColumnAutoSortingFn: columnId => {\n const firstRows = instance\n .getGlobalFilteredRowModel()\n .flatRows.slice(100)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.values[columnId]\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortTypes.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortTypes.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortTypes.text\n }\n\n return sortTypes.basic\n },\n getColumnAutoSortDir: columnId => {\n const firstRow = instance.getGlobalFilteredRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getColumnSortingFn: columnId => {\n const column = instance.getColumn(columnId)\n const userSortTypes = instance.options.sortTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.sortType)\n ? column.sortType\n : column.sortType === 'auto'\n ? instance.getColumnAutoSortingFn(columnId)\n : (userSortTypes as Record<string, any>)?.[\n column.sortType as string\n ] ??\n (sortTypes[\n column.sortType as BuiltInSortType\n ] as SortingFn<TGenerics>)\n },\n\n setSorting: updater =>\n instance.options.onSortingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().sorting)\n ),\n\n toggleColumnSorting: (columnId, desc, multi) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === columnId)\n const existingIndex = old?.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n const sortDescFirst =\n column.sortDescFirst ??\n instance.options.sortDescFirst ??\n instance.getColumnAutoSortDir(columnId) === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ??\n Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== columnId)\n }\n\n return newSorting\n })\n },\n\n getColumnCanSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableSorting ??\n instance.options.enableSorting ??\n column.defaultCanSort ??\n !!column.accessorFn\n // (!!column.accessorFn ||\n // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??\n // false\n )\n },\n\n getColumnCanMultiSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getColumnIsSorted: columnId => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === columnId)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getColumnSortIndex: columnId =>\n instance.getState().sorting?.findIndex(d => d.id === columnId) ?? -1,\n\n resetSorting: (columnId?: string) => {\n if (columnId) {\n instance.setSorting(old =>\n old?.length ? old.filter(d => d.id !== columnId) : []\n )\n } else {\n instance.setSorting(instance.initialState?.sorting ?? [])\n }\n },\n\n getToggleSortingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const canSort = column.getCanSort()\n\n const initialProps: ToggleSortingProps = {\n title: canSort ? 'Toggle Sorting' : undefined,\n onClick: canSort\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getPreSortedRowModel: () => instance.getGlobalFilteredRowModel(),\n getSortedRowModel: memo(\n () => [\n instance.getState().sorting,\n instance.getGlobalFilteredRowModel(),\n instance.options.sortRowsFn,\n ],\n (sorting, rowModel, sortingFn) => {\n if (!sortingFn || !sorting?.length) {\n return rowModel\n }\n\n return sortingFn(instance, rowModel)\n },\n {\n key: 'getSortedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifyGroupingReset()\n },\n }\n ),\n }\n },\n}\n"],"names":["Sorting","getDefaultColumn","sortType","getInitialState","sorting","getDefaultOptions","instance","onSortingChange","makeStateUpdater","autoResetSorting","isMultiSortEvent","e","shiftKey","createColumn","column","getCanSort","getColumnCanSort","id","getCanMultiSort","getColumnCanMultiSort","getSortIndex","getColumnSortIndex","getIsSorted","getColumnIsSorted","resetSorting","toggleSorting","desc","isMulti","toggleColumnSorting","getToggleSortingProps","userProps","getInstance","registered","_notifySortingReset","options","autoResetAll","getColumnAutoSortingFn","columnId","firstRows","getGlobalFilteredRowModel","flatRows","slice","isString","row","value","values","Object","prototype","toString","call","sortTypes","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getColumnAutoSortDir","firstRow","getColumnSortingFn","getColumn","userSortTypes","Error","isFunction","setSorting","updater","functionalUpdate","getState","multi","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","enableSorting","defaultCanSort","accessorFn","enableMultiSort","columnSort","initialState","canSort","initialProps","title","undefined","onClick","persist","propGetter","getPreSortedRowModel","getSortedRowModel","memo","sortRowsFn","rowModel","sortingFn","key","debug","debugAll","debugTable","onChange","_notifyGroupingReset"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityInstance<TGenerics extends PartialGenerics> = {\n getVisibleFlatColumns: () => Column<TGenerics>[]\n getVisibleLeafColumns: () => Column<TGenerics>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n toggleColumnVisibility: (columnId: string, value?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getColumnIsVisible: (columId: string) => boolean\n getColumnCanHide: (columnId: string) => boolean\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityProps: <\n TGetter extends Getter<ToggleAllColumnsVisibilityProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleAllColumnsVisibilityProps, TGetter>\n}\n\ntype ToggleVisibilityProps = {}\ntype ToggleAllColumnsVisibilityProps = {}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n defaultCanHide?: boolean\n defaultIsVisible?: boolean\n}\n\nexport type VisibilityRow<TGenerics extends PartialGenerics> = {\n getVisibleCells: () => Cell<TGenerics>[]\n}\n\nexport type VisibilityColumn = {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityProps: <TGetter extends Getter<ToggleVisibilityProps>>(\n userProps?: TGetter\n ) => PropGetterValue<ToggleVisibilityProps, TGetter>\n}\n\n//\n\nexport const Visibility = {\n getInitialState: (): VisibilityTableState => {\n return {\n columnVisibility: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance),\n }\n },\n\n getDefaultColumn: () => {\n return {\n defaultIsVisible: true,\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityColumn => {\n return {\n getCanHide: () => instance.getColumnCanHide(column.id),\n getIsVisible: () => instance.getColumnIsVisible(column.id),\n toggleVisibility: value =>\n instance.toggleColumnVisibility(column.id, value),\n getToggleVisibilityProps: userProps => {\n const props: ToggleVisibilityProps = {\n type: 'checkbox',\n checked: column.getIsVisible?.(),\n title: 'Toggle Column Visibility',\n onChange: (e: MouseEvent | TouchEvent) => {\n column.toggleVisibility?.((e.target as HTMLInputElement).checked)\n },\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityInstance<TGenerics> => {\n return {\n getVisibleFlatColumns: memo(\n () => [\n instance.getAllFlatColumns(),\n instance\n .getAllFlatColumns()\n .filter(d => d.getIsVisible?.())\n .map(d => d.id)\n .join('_'),\n ],\n allFlatColumns => {\n return allFlatColumns.filter(d => d.getIsVisible?.())\n },\n {\n key: 'getVisibleFlatColumns',\n debug: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n getVisibleLeafColumns: memo(\n () => [\n instance.getAllLeafColumns(),\n instance\n .getAllLeafColumns()\n .filter(d => d.getIsVisible?.())\n .map(d => d.id)\n .join('_'),\n ],\n allFlatColumns => {\n return allFlatColumns.filter(d => d.getIsVisible?.())\n },\n {\n key: 'getVisibleLeafColumns',\n debug: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n setColumnVisibility: updater =>\n instance.options.onColumnVisibilityChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnVisibility)\n ),\n\n toggleColumnVisibility: (columnId, value) => {\n if (!columnId) return\n\n if (instance.getColumnCanHide(columnId)) {\n instance.setColumnVisibility(old => ({\n ...old,\n [columnId]: value ?? !instance.getColumnIsVisible(columnId),\n }))\n }\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !instance.getIsAllColumnsVisible()\n\n instance.setColumnVisibility(\n instance.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getColumnIsVisible: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.getState().columnVisibility?.[columnId] ??\n column.defaultIsVisible ??\n true\n )\n },\n\n getColumnCanHide: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.options.enableHiding ??\n column.enableHiding ??\n column.defaultCanHide ??\n true\n )\n },\n\n getIsAllColumnsVisible: () =>\n !instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n instance.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityProps: userProps => {\n const props: ToggleAllColumnsVisibilityProps = {\n onChange: (e: MouseEvent) => {\n instance.toggleAllColumnsVisible(\n (e.target as HTMLInputElement)?.checked\n )\n },\n type: 'checkbox',\n title: 'Toggle visibility for all columns',\n checked: instance.getIsAllColumnsVisible(),\n indeterminate:\n !instance.getIsAllColumnsVisible() &&\n instance.getIsSomeColumnsVisible()\n ? 'indeterminate'\n : undefined,\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","columnVisibility","getDefaultOptions","instance","onColumnVisibilityChange","makeStateUpdater","getDefaultColumn","defaultIsVisible","createColumn","column","getCanHide","getColumnCanHide","id","getIsVisible","getColumnIsVisible","toggleVisibility","value","toggleColumnVisibility","getToggleVisibilityProps","userProps","props","type","checked","title","onChange","e","target","propGetter","getInstance","getVisibleFlatColumns","memo","getAllFlatColumns","filter","d","map","join","allFlatColumns","key","debug","options","debugAll","debugColumns","getVisibleLeafColumns","getAllLeafColumns","setColumnVisibility","updater","functionalUpdate","getState","columnId","old","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","getColumn","Error","enableHiding","defaultCanHide","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityProps","indeterminate","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityInstance<TGenerics extends AnyGenerics> = {\n getVisibleFlatColumns: () => Column<TGenerics>[]\n getVisibleLeafColumns: () => Column<TGenerics>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n toggleColumnVisibility: (columnId: string, value?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getColumnIsVisible: (columId: string) => boolean\n getColumnCanHide: (columnId: string) => boolean\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityProps: <\n TGetter extends Getter<ToggleAllColumnsVisibilityProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleAllColumnsVisibilityProps, TGetter>\n}\n\ntype ToggleVisibilityProps = {}\ntype ToggleAllColumnsVisibilityProps = {}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n defaultCanHide?: boolean\n defaultIsVisible?: boolean\n}\n\nexport type VisibilityRow<TGenerics extends AnyGenerics> = {\n getVisibleCells: () => Cell<TGenerics>[]\n}\n\nexport type VisibilityColumn = {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityProps: <TGetter extends Getter<ToggleVisibilityProps>>(\n userProps?: TGetter\n ) => PropGetterValue<ToggleVisibilityProps, TGetter>\n}\n\n//\n\nexport const Visibility = {\n getInitialState: (): VisibilityTableState => {\n return {\n columnVisibility: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends AnyGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance),\n }\n },\n\n getDefaultColumn: () => {\n return {\n defaultIsVisible: true,\n }\n },\n\n createColumn: <TGenerics extends AnyGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityColumn => {\n return {\n getCanHide: () => instance.getColumnCanHide(column.id),\n getIsVisible: () => instance.getColumnIsVisible(column.id),\n toggleVisibility: value =>\n instance.toggleColumnVisibility(column.id, value),\n getToggleVisibilityProps: userProps => {\n const props: ToggleVisibilityProps = {\n type: 'checkbox',\n checked: column.getIsVisible?.(),\n title: 'Toggle Column Visibility',\n onChange: (e: MouseEvent | TouchEvent) => {\n column.toggleVisibility?.((e.target as HTMLInputElement).checked)\n },\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n\n getInstance: <TGenerics extends AnyGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityInstance<TGenerics> => {\n return {\n getVisibleFlatColumns: memo(\n () => [\n instance.getAllFlatColumns(),\n instance\n .getAllFlatColumns()\n .filter(d => d.getIsVisible?.())\n .map(d => d.id)\n .join('_'),\n ],\n allFlatColumns => {\n return allFlatColumns.filter(d => d.getIsVisible?.())\n },\n {\n key: 'getVisibleFlatColumns',\n debug: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n getVisibleLeafColumns: memo(\n () => [\n instance.getAllLeafColumns(),\n instance\n .getAllLeafColumns()\n .filter(d => d.getIsVisible?.())\n .map(d => d.id)\n .join('_'),\n ],\n allFlatColumns => {\n return allFlatColumns.filter(d => d.getIsVisible?.())\n },\n {\n key: 'getVisibleLeafColumns',\n debug: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n setColumnVisibility: updater =>\n instance.options.onColumnVisibilityChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnVisibility)\n ),\n\n toggleColumnVisibility: (columnId, value) => {\n if (!columnId) return\n\n if (instance.getColumnCanHide(columnId)) {\n instance.setColumnVisibility(old => ({\n ...old,\n [columnId]: value ?? !instance.getColumnIsVisible(columnId),\n }))\n }\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !instance.getIsAllColumnsVisible()\n\n instance.setColumnVisibility(\n instance.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getColumnIsVisible: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.getState().columnVisibility?.[columnId] ??\n column.defaultIsVisible ??\n true\n )\n },\n\n getColumnCanHide: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.options.enableHiding ??\n column.enableHiding ??\n column.defaultCanHide ??\n true\n )\n },\n\n getIsAllColumnsVisible: () =>\n !instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n instance.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityProps: userProps => {\n const props: ToggleAllColumnsVisibilityProps = {\n onChange: (e: MouseEvent) => {\n instance.toggleAllColumnsVisible(\n (e.target as HTMLInputElement)?.checked\n )\n },\n type: 'checkbox',\n title: 'Toggle visibility for all columns',\n checked: instance.getIsAllColumnsVisible(),\n indeterminate:\n !instance.getIsAllColumnsVisible() &&\n instance.getIsSomeColumnsVisible()\n ? 'indeterminate'\n : undefined,\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","columnVisibility","getDefaultOptions","instance","onColumnVisibilityChange","makeStateUpdater","getDefaultColumn","defaultIsVisible","createColumn","column","getCanHide","getColumnCanHide","id","getIsVisible","getColumnIsVisible","toggleVisibility","value","toggleColumnVisibility","getToggleVisibilityProps","userProps","props","type","checked","title","onChange","e","target","propGetter","getInstance","getVisibleFlatColumns","memo","getAllFlatColumns","filter","d","map","join","allFlatColumns","key","debug","options","debugAll","debugColumns","getVisibleLeafColumns","getAllLeafColumns","setColumnVisibility","updater","functionalUpdate","getState","columnId","old","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","getColumn","Error","enableHiding","defaultCanHide","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityProps","indeterminate","undefined"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterTypes.js","sources":["../../src/filterTypes.ts"],"sourcesContent":["import { PartialGenerics, AnyGenerics, Row } from './types'\n\nexport const filterTypes = {\n includesString,\n includesStringSensitive,\n equalsString,\n equalsStringSensitive,\n arrIncludes,\n arrIncludesAll,\n equals,\n weakEquals,\n betweenNumberRange,\n}\n\nexport type BuiltInFilterType = keyof typeof filterTypes\n\nfunction includesString<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue).toLowerCase()\n\n rows = rows.filter(row => {\n return columnIds.some(id => {\n return String(row.values[id]).toLowerCase().includes(search)\n })\n })\n return rows\n}\n\nincludesString.autoRemove = (val: any) => testFalsey(val)\n\nfunction includesStringSensitive<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue)\n\n rows = rows.filter(row => {\n return columnIds.some(id => {\n return String(row.values[id]).includes(search)\n })\n })\n return rows\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nfunction equalsString<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue).toLowerCase()\n\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === search\n : true\n })\n })\n}\n\nequalsString.autoRemove = (val: any) => testFalsey(val)\n\nfunction equalsStringSensitive<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue)\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined ? String(rowValue) === search : true\n })\n })\n}\n\nequalsStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nfunction arrIncludes<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue.includes(filterValue)\n })\n })\n}\n\narrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nfunction arrIncludesAll<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown[]\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n })\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nfunction equals<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n })\n}\n\nequals.autoRemove = (val: any) => testFalsey(val)\n\nfunction weakEquals<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n })\n}\n\nweakEquals.autoRemove = (val: any) => testFalsey(val)\n\nfunction betweenNumberRange<TGenerics extends PartialGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: [unknown, unknown]\n) {\n let [unsafeMin, unsafeMax] = filterValue || []\n\n let parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\n let parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n })\n}\n\nbetweenNumberRange.autoRemove = (val: any) =>\n testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\n\n// Utils\n\nfunction testFalsey(val: any) {\n return val === undefined || val === null || val === ''\n}\n"],"names":["filterTypes","includesString","includesStringSensitive","equalsString","equalsStringSensitive","arrIncludes","arrIncludesAll","equals","weakEquals","betweenNumberRange","rows","columnIds","filterValue","search","String","toLowerCase","filter","row","some","id","values","includes","autoRemove","val","testFalsey","rowValue","undefined","length","every","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","min","Number","isNaN","Infinity","max","temp"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filterTypes.js","sources":["../../src/filterTypes.ts"],"sourcesContent":["import { PartialGenerics, AnyGenerics, Row } from './types'\n\nexport const filterTypes = {\n includesString,\n includesStringSensitive,\n equalsString,\n equalsStringSensitive,\n arrIncludes,\n arrIncludesAll,\n equals,\n weakEquals,\n betweenNumberRange,\n}\n\nexport type BuiltInFilterType = keyof typeof filterTypes\n\nfunction includesString<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue).toLowerCase()\n\n rows = rows.filter(row => {\n return columnIds.some(id => {\n return String(row.values[id]).toLowerCase().includes(search)\n })\n })\n return rows\n}\n\nincludesString.autoRemove = (val: any) => testFalsey(val)\n\nfunction includesStringSensitive<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue)\n\n rows = rows.filter(row => {\n return columnIds.some(id => {\n return String(row.values[id]).includes(search)\n })\n })\n return rows\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nfunction equalsString<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue).toLowerCase()\n\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === search\n : true\n })\n })\n}\n\nequalsString.autoRemove = (val: any) => testFalsey(val)\n\nfunction equalsStringSensitive<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n const search = String(filterValue)\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined ? String(rowValue) === search : true\n })\n })\n}\n\nequalsStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nfunction arrIncludes<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue.includes(filterValue)\n })\n })\n}\n\narrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nfunction arrIncludesAll<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown[]\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n })\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nfunction equals<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n })\n}\n\nequals.autoRemove = (val: any) => testFalsey(val)\n\nfunction weakEquals<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: unknown\n) {\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n })\n}\n\nweakEquals.autoRemove = (val: any) => testFalsey(val)\n\nfunction betweenNumberRange<TGenerics extends AnyGenerics>(\n rows: Row<TGenerics>[],\n columnIds: string[],\n filterValue: [unknown, unknown]\n) {\n let [unsafeMin, unsafeMax] = filterValue || []\n\n let parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\n let parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n return columnIds.some(id => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n })\n}\n\nbetweenNumberRange.autoRemove = (val: any) =>\n testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\n\n// Utils\n\nfunction testFalsey(val: any) {\n return val === undefined || val === null || val === ''\n}\n"],"names":["filterTypes","includesString","includesStringSensitive","equalsString","equalsStringSensitive","arrIncludes","arrIncludesAll","equals","weakEquals","betweenNumberRange","rows","columnIds","filterValue","search","String","toLowerCase","filter","row","some","id","values","includes","autoRemove","val","testFalsey","rowValue","undefined","length","every","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","min","Number","isNaN","Infinity","max","temp"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortTypes.js","sources":["../../src/sortTypes.ts"],"sourcesContent":["import { PartialGenerics, AnyGenerics, Row } from './types'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nexport const sortTypes = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortType = keyof typeof sortTypes\n\nfunction alphanumeric<TGenerics extends
|
|
1
|
+
{"version":3,"file":"sortTypes.js","sources":["../../src/sortTypes.ts"],"sourcesContent":["import { PartialGenerics, AnyGenerics, Row } from './types'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nexport const sortTypes = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortType = keyof typeof sortTypes\n\nfunction alphanumeric<TGenerics extends AnyGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareAlphanumeric(\n toString(rowA.values[columnId]).toLowerCase(),\n toString(rowB.values[columnId]).toLowerCase()\n )\n}\n\nfunction alphanumericCaseSensitive<TGenerics extends AnyGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareAlphanumeric(\n toString(rowA.values[columnId]),\n toString(rowB.values[columnId])\n )\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nfunction text<TGenerics extends AnyGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n toString(rowA.values[columnId]).toLowerCase(),\n toString(rowB.values[columnId]).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nfunction textCaseSensitive<TGenerics extends AnyGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n toString(rowA.values[columnId]),\n toString(rowB.values[columnId])\n )\n}\n\nfunction datetime<TGenerics extends AnyGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n (rowA.values[columnId] as Date).getTime(),\n (rowB.values[columnId] as Date).getTime()\n )\n}\n\nfunction basic<TGenerics extends AnyGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(rowA.values[columnId], rowB.values[columnId])\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n"],"names":["reSplitAlphaNumeric","sortTypes","alphanumeric","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","rowA","rowB","columnId","compareAlphanumeric","toString","values","toLowerCase","aStr","bStr","a","split","filter","Boolean","b","length","aa","shift","bb","an","parseInt","bn","combo","sort","isNaN","compareBasic","getTime","Infinity","String"],"mappings":"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"}
|
|
@@ -12,17 +12,18 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
+
var filterRowsUtils = require('./filterRowsUtils.js');
|
|
16
|
+
|
|
15
17
|
function columnFilterRowsFn(instance, rowModel) {
|
|
16
18
|
var columnFilters = instance.getState().columnFilters;
|
|
17
|
-
var
|
|
18
|
-
var newFilteredRowsById = {};
|
|
19
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
19
|
+
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
20
20
|
|
|
21
21
|
var filterRows = function filterRows(rowsToFilter, depth) {
|
|
22
|
-
columnFilters.
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
for (var i = 0; i < columnFilters.length; i++) {
|
|
23
|
+
var _columnFilters$i = columnFilters[i],
|
|
24
|
+
columnId = _columnFilters$i.id,
|
|
25
|
+
filterValue = _columnFilters$i.value; // Find the columnFilters column
|
|
26
|
+
|
|
26
27
|
var column = instance.getColumn(columnId);
|
|
27
28
|
|
|
28
29
|
if (!column) {
|
|
@@ -34,11 +35,13 @@ function columnFilterRowsFn(instance, rowModel) {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
if (depth === 0) {
|
|
37
|
-
|
|
38
|
+
(function () {
|
|
39
|
+
var preFilteredRows = [].concat(rowsToFilter);
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
column.getPreFilteredRows = function () {
|
|
42
|
+
return preFilteredRows;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
var filterFn = instance.getColumnFilterFn(column.id);
|
|
@@ -48,83 +51,22 @@ function columnFilterRowsFn(instance, rowModel) {
|
|
|
48
51
|
console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
|
|
49
52
|
}
|
|
50
53
|
|
|
51
|
-
|
|
54
|
+
continue;
|
|
52
55
|
} // Pass the rows, id, filterValue and column to the filterFn
|
|
53
56
|
// to get the filtered rows back
|
|
54
57
|
|
|
55
58
|
|
|
56
59
|
rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
|
|
57
|
-
});
|
|
58
|
-
return rowsToFilter;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
if (filterFromChildrenUp) {
|
|
62
|
-
var _recurseFilterRows = function _recurseFilterRows(rowsToFilter, depth) {
|
|
63
|
-
if (depth === void 0) {
|
|
64
|
-
depth = 0;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Filter from children up
|
|
68
|
-
rowsToFilter = rowsToFilter.filter(function (row) {
|
|
69
|
-
var _row$subRows;
|
|
70
|
-
|
|
71
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
row.subRows = _recurseFilterRows(row.subRows, depth + 1);
|
|
76
|
-
return row.subRows.length;
|
|
77
|
-
});
|
|
78
|
-
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
79
|
-
|
|
80
|
-
rowsToFilter.forEach(function (row) {
|
|
81
|
-
newFilteredFlatRows.push(row);
|
|
82
|
-
newFilteredRowsById[row.id] = row;
|
|
83
|
-
});
|
|
84
|
-
return rowsToFilter;
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
return {
|
|
88
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
89
|
-
flatRows: newFilteredFlatRows,
|
|
90
|
-
rowsById: newFilteredRowsById
|
|
91
|
-
};
|
|
92
|
-
} // Filters top level and nested rows
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
96
|
-
if (depth === void 0) {
|
|
97
|
-
depth = 0;
|
|
98
60
|
}
|
|
99
61
|
|
|
100
|
-
// Filter from parents downward
|
|
101
|
-
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
102
|
-
// We technically could do this recursively in the above loop,
|
|
103
|
-
// but that would severely hinder the API for the user, since they
|
|
104
|
-
// would be required to do that recursion in some scenarios
|
|
105
|
-
|
|
106
|
-
rowsToFilter.forEach(function (row) {
|
|
107
|
-
newFilteredFlatRows.push(row);
|
|
108
|
-
newFilteredRowsById[row.id] = row;
|
|
109
|
-
|
|
110
|
-
if (!filterFromChildrenUp) {
|
|
111
|
-
var _row$subRows2;
|
|
112
|
-
|
|
113
|
-
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
row.subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
62
|
return rowsToFilter;
|
|
121
63
|
};
|
|
122
64
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
65
|
+
if (filterFromLeafRows) {
|
|
66
|
+
return filterRowsUtils.filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return filterRowsUtils.filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
128
70
|
}
|
|
129
71
|
|
|
130
72
|
exports.columnFilterRowsFn = columnFilterRowsFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnFilterRowsFn.js","sources":["../../../src/utils/columnFilterRowsFn.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"columnFilterRowsFn.js","sources":["../../../src/utils/columnFilterRowsFn.ts"],"sourcesContent":["import { AnyGenerics, TableInstance, Row, RowModel } from '../types'\nimport {\n filterRowModelFromLeafs,\n filterRowModelFromRoot,\n} from './filterRowsUtils'\n\nexport function columnFilterRowsFn<TGenerics extends AnyGenerics>(\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n): RowModel<TGenerics> {\n const columnFilters = instance.getState().columnFilters\n const filterFromLeafRows = instance.options.filterFromLeafRows\n\n const filterRows = (rowsToFilter: Row<TGenerics>[], depth: number) => {\n for (let i = 0; i < columnFilters.length; i++) {\n const { id: columnId, value: filterValue } = columnFilters[i]\n // Find the columnFilters column\n const column = instance.getColumn(columnId)\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Table: Could not find a column with id: ${columnId}`)\n }\n throw new Error()\n }\n\n if (depth === 0) {\n const preFilteredRows = [...rowsToFilter]\n column.getPreFilteredRows = () => preFilteredRows\n }\n\n const filterFn = instance.getColumnFilterFn(column.id)\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Could not find a valid 'column.filterType' for column with the ID: ${column.id}.`\n )\n }\n continue\n }\n\n // Pass the rows, id, filterValue and column to the filterFn\n // to get the filtered rows back\n rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue)\n }\n\n return rowsToFilter\n }\n\n if (filterFromLeafRows) {\n return filterRowModelFromLeafs(rowModel.rows, filterRows, instance)\n }\n\n return filterRowModelFromRoot(rowModel.rows, filterRows, instance)\n}\n"],"names":["columnFilterRowsFn","instance","rowModel","columnFilters","getState","filterFromLeafRows","options","filterRows","rowsToFilter","depth","i","length","columnId","id","filterValue","value","column","getColumn","process","env","NODE_ENV","console","warn","Error","preFilteredRows","getPreFilteredRows","filterFn","getColumnFilterFn","filterRowModelFromLeafs","rows","filterRowModelFromRoot"],"mappings":";;;;;;;;;;;;;;;;AAMO,SAASA,kBAAT,CACLC,QADK,EAELC,QAFK,EAGgB;AACrB,MAAMC,aAAa,GAAGF,QAAQ,CAACG,QAAT,GAAoBD,aAA1C;AACA,MAAME,kBAAkB,GAAGJ,QAAQ,CAACK,OAAT,CAAiBD,kBAA5C;;AAEA,MAAME,UAAU,GAAG,SAAbA,UAAa,CAACC,YAAD,EAAiCC,KAAjC,EAAmD;AACpE,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,aAAa,CAACQ,MAAlC,EAA0CD,CAAC,EAA3C,EAA+C;AAC7C,6BAA6CP,aAAa,CAACO,CAAD,CAA1D;AAAA,UAAYE,QAAZ,oBAAQC,EAAR;AAAA,UAA6BC,WAA7B,oBAAsBC,KAAtB,CAD6C;;AAG7C,UAAMC,MAAM,GAAGf,QAAQ,CAACgB,SAAT,CAAmBL,QAAnB,CAAf;;AAEA,UAAI,CAACI,MAAL,EAAa;AACX,YAAIE,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCC,UAAAA,OAAO,CAACC,IAAR,8CAAwDV,QAAxD;AACD;;AACD,cAAM,IAAIW,KAAJ,EAAN;AACD;;AAED,UAAId,KAAK,KAAK,CAAd,EAAiB;AAAA;AACf,cAAMe,eAAe,aAAOhB,YAAP,CAArB;;AACAQ,UAAAA,MAAM,CAACS,kBAAP,GAA4B;AAAA,mBAAMD,eAAN;AAAA,WAA5B;AAFe;AAGhB;;AAED,UAAME,QAAQ,GAAGzB,QAAQ,CAAC0B,iBAAT,CAA2BX,MAAM,CAACH,EAAlC,CAAjB;;AAEA,UAAI,CAACa,QAAL,EAAe;AACb,YAAIR,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCC,UAAAA,OAAO,CAACC,IAAR,yEACwEN,MAAM,CAACH,EAD/E;AAGD;;AACD;AACD,OA1B4C;AA6B7C;;;AACAL,MAAAA,YAAY,GAAGkB,QAAQ,CAAClB,YAAD,EAAe,CAACI,QAAD,CAAf,EAA2BE,WAA3B,CAAvB;AACD;;AAED,WAAON,YAAP;AACD,GAnCD;;AAqCA,MAAIH,kBAAJ,EAAwB;AACtB,WAAOuB,uCAAuB,CAAC1B,QAAQ,CAAC2B,IAAV,EAAgBtB,UAAhB,EAA4BN,QAA5B,CAA9B;AACD;;AAED,SAAO6B,sCAAsB,CAAC5B,QAAQ,CAAC2B,IAAV,EAAgBtB,UAAhB,EAA4BN,QAA5B,CAA7B;AACD;;;;"}
|
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
|
|
16
|
+
var newFilteredFlatRows = [];
|
|
17
|
+
var newFilteredRowsById = {};
|
|
18
|
+
|
|
19
|
+
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
20
|
+
if (depth === void 0) {
|
|
21
|
+
depth = 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
rowsToFilter = rowsToFilter.slice(); // Filter from children up first
|
|
25
|
+
|
|
26
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
27
|
+
var _row$subRows;
|
|
28
|
+
|
|
29
|
+
var row = rowsToFilter[i];
|
|
30
|
+
|
|
31
|
+
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
36
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
37
|
+
|
|
38
|
+
if (!rowsToFilter[i].subRows.length) {
|
|
39
|
+
rowsToFilter.splice(i, 1);
|
|
40
|
+
i--;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
45
|
+
|
|
46
|
+
rowsToFilter.forEach(function (row) {
|
|
47
|
+
newFilteredFlatRows.push(row);
|
|
48
|
+
newFilteredRowsById[row.id] = row;
|
|
49
|
+
});
|
|
50
|
+
return rowsToFilter;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
55
|
+
flatRows: newFilteredFlatRows,
|
|
56
|
+
rowsById: newFilteredRowsById
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function filterRowModelFromRoot(rowsToFilter, filterRows, instance) {
|
|
60
|
+
var newFilteredFlatRows = [];
|
|
61
|
+
var newFilteredRowsById = {}; // Filters top level and nested rows
|
|
62
|
+
|
|
63
|
+
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
64
|
+
if (depth === void 0) {
|
|
65
|
+
depth = 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Filter from parents downward first
|
|
69
|
+
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
70
|
+
|
|
71
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
72
|
+
var _row$subRows2;
|
|
73
|
+
|
|
74
|
+
var row = rowsToFilter[i];
|
|
75
|
+
newFilteredFlatRows.push(row);
|
|
76
|
+
newFilteredRowsById[row.id] = row;
|
|
77
|
+
|
|
78
|
+
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
79
|
+
rowsToFilter.splice(i, 1);
|
|
80
|
+
i--;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
85
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return rowsToFilter;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
93
|
+
flatRows: newFilteredFlatRows,
|
|
94
|
+
rowsById: newFilteredRowsById
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
exports.filterRowModelFromLeafs = filterRowModelFromLeafs;
|
|
99
|
+
exports.filterRowModelFromRoot = filterRowModelFromRoot;
|
|
100
|
+
//# sourceMappingURL=filterRowsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterRowsUtils.js","sources":["../../../src/utils/filterRowsUtils.ts"],"sourcesContent":["import { AnyGenerics, Row, RowModel, TableInstance } from '../types'\n\nexport function filterRowModelFromLeafs<TGenerics extends AnyGenerics>(\n rowsToFilter: Row<TGenerics>[],\n filterRows: (\n rowsToFilter: Row<TGenerics>[],\n depth: number\n ) => Row<TGenerics>[],\n instance: TableInstance<TGenerics>\n): RowModel<TGenerics> {\n const newFilteredFlatRows: Row<TGenerics>[] = []\n const newFilteredRowsById: Record<string, Row<TGenerics>> = {}\n\n const recurseFilterRows = (rowsToFilter: Row<TGenerics>[], depth = 0) => {\n rowsToFilter = rowsToFilter.slice()\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n const row = rowsToFilter[i]\n\n if (!row.subRows?.length) {\n continue\n }\n\n rowsToFilter[i] = instance.createRow(\n row.id,\n row.original,\n row.index,\n row.depth,\n row.values\n )\n\n rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1)\n\n if (!rowsToFilter[i].subRows.length) {\n rowsToFilter.splice(i, 1)\n i--\n }\n }\n\n rowsToFilter = filterRows(rowsToFilter, depth)\n\n // Apply the filter to any subRows\n rowsToFilter.forEach(row => {\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n })\n\n return rowsToFilter\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n\nexport function filterRowModelFromRoot<TGenerics extends AnyGenerics>(\n rowsToFilter: Row<TGenerics>[],\n filterRows: (\n rowsToFilter: Row<TGenerics>[],\n depth: number\n ) => Row<TGenerics>[],\n instance: TableInstance<TGenerics>\n): RowModel<TGenerics> {\n const newFilteredFlatRows: Row<TGenerics>[] = []\n const newFilteredRowsById: Record<string, Row<TGenerics>> = {}\n\n // Filters top level and nested rows\n const recurseFilterRows = (rowsToFilter: Row<TGenerics>[], depth = 0) => {\n // Filter from parents downward first\n rowsToFilter = filterRows(rowsToFilter, depth)\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n const row = rowsToFilter[i]\n\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n\n if (!row.subRows?.length) {\n rowsToFilter.splice(i, 1)\n i--\n continue\n }\n\n rowsToFilter[i] = instance.createRow(\n row.id,\n row.original,\n row.index,\n row.depth,\n row.values\n )\n\n rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1)\n }\n\n return rowsToFilter\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n"],"names":["filterRowModelFromLeafs","rowsToFilter","filterRows","instance","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","depth","slice","i","length","row","subRows","createRow","id","original","index","values","splice","forEach","push","rows","flatRows","rowsById","filterRowModelFromRoot"],"mappings":"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"}
|