@tanstack/table-core 8.5.18 → 8.5.20

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 (49) hide show
  1. package/build/cjs/columnHelper.js.map +1 -1
  2. package/build/cjs/core/cell.js.map +1 -1
  3. package/build/cjs/core/column.js.map +1 -1
  4. package/build/cjs/core/headers.js.map +1 -1
  5. package/build/cjs/core/row.js.map +1 -1
  6. package/build/cjs/core/table.js.map +1 -1
  7. package/build/cjs/features/ColumnSizing.js.map +1 -1
  8. package/build/cjs/features/Expanding.js.map +1 -1
  9. package/build/cjs/features/Filters.js.map +1 -1
  10. package/build/cjs/features/Grouping.js.map +1 -1
  11. package/build/cjs/features/Ordering.js.map +1 -1
  12. package/build/cjs/features/Pagination.js.map +1 -1
  13. package/build/cjs/features/Pinning.js.map +1 -1
  14. package/build/cjs/features/RowSelection.js.map +1 -1
  15. package/build/cjs/features/Sorting.js.map +1 -1
  16. package/build/cjs/features/Visibility.js.map +1 -1
  17. package/build/cjs/utils/getSortedRowModel.js +1 -1
  18. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  19. package/build/cjs/utils.js +0 -4
  20. package/build/cjs/utils.js.map +1 -1
  21. package/build/esm/index.js +1 -5
  22. package/build/esm/index.js.map +1 -1
  23. package/build/stats-html.html +1 -1
  24. package/build/stats-react.json +314 -314
  25. package/build/types/index.d.ts +253 -199
  26. package/build/umd/index.development.js +1 -5
  27. package/build/umd/index.development.js.map +1 -1
  28. package/build/umd/index.production.js +1 -1
  29. package/build/umd/index.production.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/columnHelper.ts +27 -20
  32. package/src/core/cell.ts +3 -3
  33. package/src/core/column.ts +2 -5
  34. package/src/core/headers.ts +5 -5
  35. package/src/core/row.ts +1 -1
  36. package/src/core/table.ts +6 -7
  37. package/src/features/ColumnSizing.ts +8 -8
  38. package/src/features/Expanding.ts +4 -4
  39. package/src/features/Filters.ts +17 -11
  40. package/src/features/Grouping.ts +16 -10
  41. package/src/features/Ordering.ts +5 -5
  42. package/src/features/Pagination.ts +6 -6
  43. package/src/features/Pinning.ts +8 -8
  44. package/src/features/RowSelection.ts +4 -4
  45. package/src/features/Sorting.ts +15 -9
  46. package/src/features/Visibility.ts +7 -7
  47. package/src/types.ts +133 -110
  48. package/src/utils/getSortedRowModel.ts +1 -1
  49. package/src/utils.ts +59 -46
@@ -1 +1 @@
1
- {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } 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 SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFn<TData extends RowData> = {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport type SortingColumnDef<TData extends RowData> = {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TData extends RowData> = {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\nexport type SortingOptions<TData extends RowData> = {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n} & (keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n })\n\nexport type SortingInstance<TData extends RowData> = {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && 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 // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","Error","isFunction","columnDef","options","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","accessorFn","enableMultiSort","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
1
+ {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface ColumnSort {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport interface SortingColumn<TData extends RowData> {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\ninterface SortingOptionsBase {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && 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 // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","Error","isFunction","columnDef","options","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","accessorFn","enableMultiSort","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":";;;;;;;;;;;;;;;;;AAyGA;;AAEO,MAAMA,OAAqB,GAAG;EACnCC,eAAe,EAAGC,KAAK,IAAwB;IAC7C,OAAO;AACLC,MAAAA,OAAO,EAAE,EAAE;MACX,GAAGD,KAAAA;KACJ,CAAA;GACF;AAEDE,EAAAA,mBAAmB,EAAE,MAAsD;IACzE,OAAO;AACLC,MAAAA,SAAS,EAAE,MAAA;KACZ,CAAA;GACF;EAEDC,iBAAiB,EACfC,KAAmB,IACO;IAC1B,OAAO;AACLC,MAAAA,eAAe,EAAEC,sBAAgB,CAAC,SAAS,EAAEF,KAAK,CAAC;MACnDG,gBAAgB,EAAGC,CAAU,IAAK;QAChC,OAAQA,CAAC,CAAgBC,QAAQ,CAAA;AACnC,OAAA;KACD,CAAA;GACF;AAEDC,EAAAA,YAAY,EAAE,CACZC,MAA6B,EAC7BP,KAAmB,KACM;IACzB,OAAO;AACLQ,MAAAA,gBAAgB,EAAE,MAAM;AACtB,QAAA,MAAMC,SAAS,GAAGT,KAAK,CAACU,mBAAmB,EAAE,CAACC,QAAQ,CAACC,KAAK,CAAC,EAAE,CAAC,CAAA;QAEhE,IAAIC,QAAQ,GAAG,KAAK,CAAA;AAEpB,QAAA,KAAK,MAAMC,GAAG,IAAIL,SAAS,EAAE;UAC3B,MAAMM,KAAK,GAAGD,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAEE,QAAQ,CAACT,MAAM,CAACU,EAAE,CAAC,CAAA;AAEtC,UAAA,IAAIC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACN,KAAK,CAAC,KAAK,eAAe,EAAE;YAC7D,OAAOO,qBAAU,CAACC,QAAQ,CAAA;AAC5B,WAAA;AAEA,UAAA,IAAI,OAAOR,KAAK,KAAK,QAAQ,EAAE;AAC7BF,YAAAA,QAAQ,GAAG,IAAI,CAAA;YAEf,IAAIE,KAAK,CAACS,KAAK,CAACC,8BAAmB,CAAC,CAACC,MAAM,GAAG,CAAC,EAAE;cAC/C,OAAOJ,qBAAU,CAACK,YAAY,CAAA;AAChC,aAAA;AACF,WAAA;AACF,SAAA;AAEA,QAAA,IAAId,QAAQ,EAAE;UACZ,OAAOS,qBAAU,CAACM,IAAI,CAAA;AACxB,SAAA;QAEA,OAAON,qBAAU,CAACO,KAAK,CAAA;OACxB;AACDC,MAAAA,cAAc,EAAE,MAAM;QACpB,MAAMC,QAAQ,GAAG/B,KAAK,CAACU,mBAAmB,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAExD,MAAMI,KAAK,GAAGgB,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEf,QAAQ,CAACT,MAAM,CAACU,EAAE,CAAC,CAAA;AAE3C,QAAA,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;AAC7B,UAAA,OAAO,KAAK,CAAA;AACd,SAAA;AAEA,QAAA,OAAO,MAAM,CAAA;OACd;AACDiB,MAAAA,YAAY,EAAE,MAAM;AAAA,QAAA,IAAA,qBAAA,CAAA;QAClB,IAAI,CAACzB,MAAM,EAAE;UACX,MAAM,IAAI0B,KAAK,EAAE,CAAA;AACnB,SAAA;QAEA,OAAOC,gBAAU,CAAC3B,MAAM,CAAC4B,SAAS,CAACrC,SAAS,CAAC,GACzCS,MAAM,CAAC4B,SAAS,CAACrC,SAAS,GAC1BS,MAAM,CAAC4B,SAAS,CAACrC,SAAS,KAAK,MAAM,GACrCS,MAAM,CAACC,gBAAgB,EAAE,GACzB,0BAAAR,KAAK,CAACoC,OAAO,CAACd,UAAU,KAAxB,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAA2Bf,MAAM,CAAC4B,SAAS,CAACrC,SAAS,CAAW,KAChEwB,qBAAU,CAACf,MAAM,CAAC4B,SAAS,CAACrC,SAAS,CAAqB,CAAA;OAC/D;AACDuC,MAAAA,aAAa,EAAE,CAACC,IAAI,EAAEC,KAAK,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAA,MAAMC,gBAAgB,GAAGjC,MAAM,CAACkC,mBAAmB,EAAE,CAAA;QACrD,MAAMC,cAAc,GAAG,OAAOJ,IAAI,KAAK,WAAW,IAAIA,IAAI,KAAK,IAAI,CAAA;AAEnEtC,QAAAA,KAAK,CAAC2C,UAAU,CAACC,GAAG,IAAI;AACtB;AACA,UAAA,MAAMC,eAAe,GAAGD,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAEE,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,CAAC,CAAA;AAC1D,UAAA,MAAM+B,aAAa,GAAGJ,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAEK,SAAS,CAACF,CAAC,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,CAAC,CAAA;UAE7D,IAAIiC,UAAwB,GAAG,EAAE,CAAA;;AAEjC;AACA,UAAA,IAAIC,UAAmD,CAAA;UACvD,IAAIC,QAAQ,GAAGV,cAAc,GAAGJ,IAAI,GAAGE,gBAAgB,KAAK,MAAM,CAAA;;AAElE;AACA,UAAA,IAAII,GAAG,IAAA,IAAA,IAAHA,GAAG,CAAElB,MAAM,IAAInB,MAAM,CAAC8C,eAAe,EAAE,IAAId,KAAK,EAAE;AACpD,YAAA,IAAIM,eAAe,EAAE;AACnBM,cAAAA,UAAU,GAAG,QAAQ,CAAA;AACvB,aAAC,MAAM;AACLA,cAAAA,UAAU,GAAG,KAAK,CAAA;AACpB,aAAA;AACF,WAAC,MAAM;AACL;AACA,YAAA,IAAIP,GAAG,IAAA,IAAA,IAAHA,GAAG,CAAElB,MAAM,IAAIsB,aAAa,KAAKJ,GAAG,CAAClB,MAAM,GAAG,CAAC,EAAE;AACnDyB,cAAAA,UAAU,GAAG,SAAS,CAAA;aACvB,MAAM,IAAIN,eAAe,EAAE;AAC1BM,cAAAA,UAAU,GAAG,QAAQ,CAAA;AACvB,aAAC,MAAM;AACLA,cAAAA,UAAU,GAAG,SAAS,CAAA;AACxB,aAAA;AACF,WAAA;;AAEA;UACA,IAAIA,UAAU,KAAK,QAAQ,EAAE;AAC3B;YACA,IAAI,CAACT,cAAc,EAAE;AACnB;cACA,IAAI,CAACF,gBAAgB,EAAE;AACrBW,gBAAAA,UAAU,GAAG,QAAQ,CAAA;AACvB,eAAA;AACF,aAAA;AACF,WAAA;UAEA,IAAIA,UAAU,KAAK,KAAK,EAAE;AACxBD,YAAAA,UAAU,GAAG,CACX,GAAGN,GAAG,EACN;cACE3B,EAAE,EAAEV,MAAM,CAACU,EAAE;AACbqB,cAAAA,IAAI,EAAEc,QAAAA;AACR,aAAC,CACF,CAAA;AACD;AACAF,YAAAA,UAAU,CAACI,MAAM,CACf,CAAC,EACDJ,UAAU,CAACxB,MAAM,IACd1B,KAAK,CAACoC,OAAO,CAACmB,oBAAoB,IAAIC,MAAM,CAACC,gBAAgB,CAAC,CAClE,CAAA;AACH,WAAC,MAAM,IAAIN,UAAU,KAAK,QAAQ,EAAE;AAClC;AACAD,YAAAA,UAAU,GAAGN,GAAG,CAACc,GAAG,CAACX,CAAC,IAAI;AACxB,cAAA,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,EAAE;gBACtB,OAAO;AACL,kBAAA,GAAG8B,CAAC;AACJT,kBAAAA,IAAI,EAAEc,QAAAA;iBACP,CAAA;AACH,eAAA;AACA,cAAA,OAAOL,CAAC,CAAA;AACV,aAAC,CAAC,CAAA;AACJ,WAAC,MAAM,IAAII,UAAU,KAAK,QAAQ,EAAE;AAClCD,YAAAA,UAAU,GAAGN,GAAG,CAACe,MAAM,CAACZ,CAAC,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,CAAC,CAAA;AAClD,WAAC,MAAM;AACLiC,YAAAA,UAAU,GAAG,CACX;cACEjC,EAAE,EAAEV,MAAM,CAACU,EAAE;AACbqB,cAAAA,IAAI,EAAEc,QAAAA;AACR,aAAC,CACF,CAAA;AACH,WAAA;AAEA,UAAA,OAAOF,UAAU,CAAA;AACnB,SAAC,CAAC,CAAA;OACH;AAEDU,MAAAA,eAAe,EAAE,MAAM;AACrB,QAAA,MAAMC,aAAa,GACjBtD,MAAM,CAAC4B,SAAS,CAAC0B,aAAa,IAC9B7D,KAAK,CAACoC,OAAO,CAACyB,aAAa,IAC3BtD,MAAM,CAACuB,cAAc,EAAE,KAAK,MAAM,CAAA;AACpC,QAAA,OAAO+B,aAAa,GAAG,MAAM,GAAG,KAAK,CAAA;OACtC;MAEDpB,mBAAmB,EAAGF,KAAe,IAAK;AACxC,QAAA,MAAMuB,kBAAkB,GAAGvD,MAAM,CAACqD,eAAe,EAAE,CAAA;AACnD,QAAA,MAAMG,QAAQ,GAAGxD,MAAM,CAACyD,WAAW,EAAE,CAAA;QAErC,IAAI,CAACD,QAAQ,EAAE;AACb,UAAA,OAAOD,kBAAkB,CAAA;AAC3B,SAAA;QAEA,IACEC,QAAQ,KAAKD,kBAAkB,KAC9B9D,KAAK,CAACoC,OAAO,CAAC6B,oBAAoB,IAAI,IAAI,CAAC;AAAI;QAC/C1B,KAAK,GAAGvC,KAAK,CAACoC,OAAO,CAAC8B,iBAAiB,IAAI,IAAI,GAAG,IAAI,CAAC;UACxD;AACA,UAAA,OAAO,KAAK,CAAA;AACd,SAAA;AACA,QAAA,OAAOH,QAAQ,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;OAC5C;AAEDI,MAAAA,UAAU,EAAE,MAAM;QAChB,OACE,CAAC5D,MAAM,CAAC4B,SAAS,CAACiC,aAAa,IAAI,IAAI,MACtCpE,KAAK,CAACoC,OAAO,CAACgC,aAAa,IAAI,IAAI,CAAC,IACrC,CAAC,CAAC7D,MAAM,CAAC8D,UAAU,CAAA;OAEtB;AAEDhB,MAAAA,eAAe,EAAE,MAAM;AACrB,QAAA,OACE9C,MAAM,CAAC4B,SAAS,CAACmC,eAAe,IAChCtE,KAAK,CAACoC,OAAO,CAACkC,eAAe,IAC7B,CAAC,CAAC/D,MAAM,CAAC8D,UAAU,CAAA;OAEtB;AAEDL,MAAAA,WAAW,EAAE,MAAM;AAAA,QAAA,IAAA,qBAAA,CAAA;QACjB,MAAMO,UAAU,4BAAGvE,KAAK,CACrBwE,QAAQ,EAAE,CACV5E,OAAO,KAFS,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAEPkD,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,CAAC,CAAA;QAEzC,OAAO,CAACsD,UAAU,GAAG,KAAK,GAAGA,UAAU,CAACjC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAA;OAC9D;AAEDmC,MAAAA,YAAY,EAAE,MAAA;AAAA,QAAA,IAAA,sBAAA,CAAA;QAAA,OACZ,CAAA,CAAA,sBAAA,GAAAzE,KAAK,CAACwE,QAAQ,EAAE,CAAC5E,OAAO,KAAxB,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAA0BqD,SAAS,CAACF,CAAC,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,CAAC,KAAI,CAAC,CAAC,CAAA;AAAA,OAAA;AAEpEyD,MAAAA,YAAY,EAAE,MAAM;AAClB;QACA1E,KAAK,CAAC2C,UAAU,CAACC,GAAG,IAClBA,GAAG,IAAA,IAAA,IAAHA,GAAG,CAAElB,MAAM,GAAGkB,GAAG,CAACe,MAAM,CAACZ,CAAC,IAAIA,CAAC,CAAC9B,EAAE,KAAKV,MAAM,CAACU,EAAE,CAAC,GAAG,EAAE,CACvD,CAAA;OACF;AAED0D,MAAAA,uBAAuB,EAAE,MAAM;AAC7B,QAAA,MAAMC,OAAO,GAAGrE,MAAM,CAAC4D,UAAU,EAAE,CAAA;AAEnC,QAAA,OAAQ/D,CAAU,IAAK;UACrB,IAAI,CAACwE,OAAO,EAAE,OAAA;AACZxE,UAAAA,CAAC,CAASyE,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAjBzE,CAAC,CAASyE,OAAO,EAAI,CAAA;AACvBtE,UAAAA,MAAM,CAAC8B,aAAa,IAApB9B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAC8B,aAAa,CAClByC,SAAS,EACTvE,MAAM,CAAC8C,eAAe,EAAE,GACpBrD,KAAK,CAACoC,OAAO,CAACjC,gBAAgB,IAA9BH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAACoC,OAAO,CAACjC,gBAAgB,CAAGC,CAAC,CAAC,GACnC,KAAK,CACV,CAAA;SACF,CAAA;AACH,OAAA;KACD,CAAA;GACF;EAED2E,WAAW,EACT/E,KAAmB,IACQ;IAC3B,OAAO;AACL2C,MAAAA,UAAU,EAAEqC,OAAO,IAAIhF,KAAK,CAACoC,OAAO,CAACnC,eAAe,IAA7BD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAACoC,OAAO,CAACnC,eAAe,CAAG+E,OAAO,CAAC;MAC/DC,YAAY,EAAEC,YAAY,IAAI;AAAA,QAAA,IAAA,mBAAA,CAAA;AAC5BlF,QAAAA,KAAK,CAAC2C,UAAU,CAACuC,YAAY,GAAG,EAAE,GAAG,CAAA,CAAA,mBAAA,GAAAlF,KAAK,CAACmF,YAAY,KAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAoBvF,OAAO,KAAI,EAAE,CAAC,CAAA;OACxE;AACDwF,MAAAA,oBAAoB,EAAE,MAAMpF,KAAK,CAACqF,kBAAkB,EAAE;AACtDC,MAAAA,iBAAiB,EAAE,MAAM;QACvB,IAAI,CAACtF,KAAK,CAACuF,kBAAkB,IAAIvF,KAAK,CAACoC,OAAO,CAACkD,iBAAiB,EAAE;UAChEtF,KAAK,CAACuF,kBAAkB,GAAGvF,KAAK,CAACoC,OAAO,CAACkD,iBAAiB,CAACtF,KAAK,CAAC,CAAA;AACnE,SAAA;QAEA,IAAIA,KAAK,CAACoC,OAAO,CAACoD,aAAa,IAAI,CAACxF,KAAK,CAACuF,kBAAkB,EAAE;UAC5D,OAAOvF,KAAK,CAACoF,oBAAoB,EAAE,CAAA;AACrC,SAAA;QAEA,OAAOpF,KAAK,CAACuF,kBAAkB,EAAE,CAAA;AACnC,OAAA;KACD,CAAA;AACH,GAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import { TableFeature } from '../core/table'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Updater,\n Row,\n RowData,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityInstance<TData extends RowData> = {\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n resetColumnVisibility: (defaultState?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n}\n\nexport type VisibilityRow<TData extends RowData> = {\n _getAllVisibleCells: () => Cell<TData, unknown>[]\n getVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport type VisibilityColumn = {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityHandler: () => (event: unknown) => void\n}\n\n//\n\nexport const Visibility: TableFeature = {\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): VisibilityColumn => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n },\n getIsVisible: () => {\n return table.getState().columnVisibility?.[column.id] ?? true\n },\n\n getCanHide: () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n },\n getToggleVisibilityHandler: () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): VisibilityRow<TData> => {\n return {\n _getAllVisibleCells: memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n cells => {\n return cells.filter(cell => cell.column.getIsVisible())\n },\n {\n key:\n process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n getVisibleCells: memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityInstance<TData> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[]\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter(d => d.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n columns => {\n return columns.filter(d => d.getIsVisible?.())\n },\n {\n key,\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => table.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => table.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => table.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => table.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => table.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n table.options.onColumnVisibilityChange?.(updater),\n\n resetColumnVisibility: defaultState => {\n table.setColumnVisibility(\n defaultState ? {} : table.initialState.columnVisibility ?? {}\n )\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getIsAllColumnsVisible: () =>\n !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n table.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityHandler: () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","state","columnVisibility","getDefaultOptions","table","onColumnVisibilityChange","makeStateUpdater","createColumn","column","toggleVisibility","value","getCanHide","setColumnVisibility","old","id","getIsVisible","getState","columnDef","enableHiding","options","getToggleVisibilityHandler","e","target","checked","createRow","row","_getAllVisibleCells","memo","getAllCells","cells","filter","cell","key","process","env","NODE_ENV","debug","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createTable","makeVisibleColumnsMethod","getColumns","d","map","join","columns","debugColumns","getVisibleFlatColumns","getAllFlatColumns","getVisibleLeafColumns","getAllLeafColumns","getLeftVisibleLeafColumns","getLeftLeafColumns","getRightVisibleLeafColumns","getRightLeafColumns","getCenterVisibleLeafColumns","getCenterLeafColumns","updater","resetColumnVisibility","defaultState","initialState","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler"],"mappings":"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"}
1
+ {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import { TableFeature } from '../core/table'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Updater,\n Row,\n RowData,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityState = Record<string, boolean>\n\nexport interface VisibilityTableState {\n columnVisibility: VisibilityState\n}\n\nexport interface VisibilityOptions {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport interface VisibilityDefaultOptions {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport interface VisibilityInstance<TData extends RowData> {\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n resetColumnVisibility: (defaultState?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n}\n\nexport interface VisibilityColumnDef {\n enableHiding?: boolean\n}\n\nexport interface VisibilityRow<TData extends RowData> {\n _getAllVisibleCells: () => Cell<TData, unknown>[]\n getVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface VisibilityColumn {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityHandler: () => (event: unknown) => void\n}\n\n//\n\nexport const Visibility: TableFeature = {\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): VisibilityColumn => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n },\n getIsVisible: () => {\n return table.getState().columnVisibility?.[column.id] ?? true\n },\n\n getCanHide: () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n },\n getToggleVisibilityHandler: () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): VisibilityRow<TData> => {\n return {\n _getAllVisibleCells: memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n cells => {\n return cells.filter(cell => cell.column.getIsVisible())\n },\n {\n key:\n process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n getVisibleCells: memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityInstance<TData> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[]\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter(d => d.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n columns => {\n return columns.filter(d => d.getIsVisible?.())\n },\n {\n key,\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => table.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => table.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => table.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => table.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => table.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n table.options.onColumnVisibilityChange?.(updater),\n\n resetColumnVisibility: defaultState => {\n table.setColumnVisibility(\n defaultState ? {} : table.initialState.columnVisibility ?? {}\n )\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getIsAllColumnsVisible: () =>\n !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n table.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityHandler: () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","state","columnVisibility","getDefaultOptions","table","onColumnVisibilityChange","makeStateUpdater","createColumn","column","toggleVisibility","value","getCanHide","setColumnVisibility","old","id","getIsVisible","getState","columnDef","enableHiding","options","getToggleVisibilityHandler","e","target","checked","createRow","row","_getAllVisibleCells","memo","getAllCells","cells","filter","cell","key","process","env","NODE_ENV","debug","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createTable","makeVisibleColumnsMethod","getColumns","d","map","join","columns","debugColumns","getVisibleFlatColumns","getAllFlatColumns","getVisibleLeafColumns","getAllLeafColumns","getLeftVisibleLeafColumns","getLeftLeafColumns","getRightVisibleLeafColumns","getRightLeafColumns","getCenterVisibleLeafColumns","getCenterLeafColumns","updater","resetColumnVisibility","defaultState","initialState","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler"],"mappings":"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"}
@@ -36,7 +36,7 @@ function getSortedRowModel() {
36
36
  const sortData = rows => {
37
37
  // This will also perform a stable sorting using the row index
38
38
  // if needed.
39
- const sortedData = rows.slice();
39
+ const sortedData = [...rows];
40
40
  sortedData.sort((rowA, rowB) => {
41
41
  for (let i = 0; i < availableSorting.length; i += 1) {
42
42
  const sortEntry = availableSorting[i];
@@ -1 +1 @@
1
- {"version":3,"file":"getSortedRowModel.js","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/Sorting'\nimport { memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n table.getColumn(sort.id).getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.slice()\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const isDesc = sortEntry?.desc ?? false\n\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = typeof aValue === 'undefined'\n const bUndefined = typeof bValue === 'undefined'\n\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined\n ? 0\n : aUndefined\n ? columnInfo.sortUndefined\n : -columnInfo.sortUndefined\n }\n }\n\n // This function should always return in ascending order\n let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length <= 1) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex()\n },\n }\n )\n}\n"],"names":["getSortedRowModel","table","memo","getState","sorting","getPreSortedRowModel","rowModel","rows","length","sortingState","sortedFlatRows","availableSorting","filter","sort","getColumn","id","getCanSort","columnInfoById","forEach","sortEntry","column","sortUndefined","columnDef","invertSorting","sortingFn","getSortingFn","sortData","sortedData","slice","rowA","rowB","i","columnInfo","isDesc","desc","aValue","getValue","bValue","aUndefined","bUndefined","sortInt","index","row","push","subRows","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":"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"}
1
+ {"version":3,"file":"getSortedRowModel.js","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/Sorting'\nimport { memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n table.getColumn(sort.id).getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = [...rows]\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const isDesc = sortEntry?.desc ?? false\n\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = typeof aValue === 'undefined'\n const bUndefined = typeof bValue === 'undefined'\n\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined\n ? 0\n : aUndefined\n ? columnInfo.sortUndefined\n : -columnInfo.sortUndefined\n }\n }\n\n // This function should always return in ascending order\n let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length <= 1) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex()\n },\n }\n )\n}\n"],"names":["getSortedRowModel","table","memo","getState","sorting","getPreSortedRowModel","rowModel","rows","length","sortingState","sortedFlatRows","availableSorting","filter","sort","getColumn","id","getCanSort","columnInfoById","forEach","sortEntry","column","sortUndefined","columnDef","invertSorting","sortingFn","getSortingFn","sortData","sortedData","rowA","rowB","i","columnInfo","isDesc","desc","aValue","getValue","bValue","aUndefined","bUndefined","sortInt","index","row","push","subRows","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":";;;;;;;;;;;;;;;;AAIO,SAASA,iBAAiB,GAEN;EACzB,OAAOC,KAAK,IACVC,UAAI,CACF,MAAM,CAACD,KAAK,CAACE,QAAQ,EAAE,CAACC,OAAO,EAAEH,KAAK,CAACI,oBAAoB,EAAE,CAAC,EAC9D,CAACD,OAAO,EAAEE,QAAQ,KAAK;AACrB,IAAA,IAAI,CAACA,QAAQ,CAACC,IAAI,CAACC,MAAM,IAAI,EAACJ,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEI,MAAM,CAAE,EAAA;AAC7C,MAAA,OAAOF,QAAQ,CAAA;AACjB,KAAA;AAEA,IAAA,MAAMG,YAAY,GAAGR,KAAK,CAACE,QAAQ,EAAE,CAACC,OAAO,CAAA;IAE7C,MAAMM,cAA4B,GAAG,EAAE,CAAA;;AAEvC;AACA,IAAA,MAAMC,gBAAgB,GAAGF,YAAY,CAACG,MAAM,CAACC,IAAI,IAC/CZ,KAAK,CAACa,SAAS,CAACD,IAAI,CAACE,EAAE,CAAC,CAACC,UAAU,EAAE,CACtC,CAAA;IAED,MAAMC,cAOL,GAAG,EAAE,CAAA;AAENN,IAAAA,gBAAgB,CAACO,OAAO,CAACC,SAAS,IAAI;MACpC,MAAMC,MAAM,GAAGnB,KAAK,CAACa,SAAS,CAACK,SAAS,CAACJ,EAAE,CAAC,CAAA;AAE5CE,MAAAA,cAAc,CAACE,SAAS,CAACJ,EAAE,CAAC,GAAG;AAC7BM,QAAAA,aAAa,EAAED,MAAM,CAACE,SAAS,CAACD,aAAa;AAC7CE,QAAAA,aAAa,EAAEH,MAAM,CAACE,SAAS,CAACC,aAAa;QAC7CC,SAAS,EAAEJ,MAAM,CAACK,YAAY,EAAA;OAC/B,CAAA;AACH,KAAC,CAAC,CAAA;IAEF,MAAMC,QAAQ,GAAInB,IAAkB,IAAK;AACvC;AACA;AACA,MAAA,MAAMoB,UAAU,GAAG,CAAC,GAAGpB,IAAI,CAAC,CAAA;AAE5BoB,MAAAA,UAAU,CAACd,IAAI,CAAC,CAACe,IAAI,EAAEC,IAAI,KAAK;AAC9B,QAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnB,gBAAgB,CAACH,MAAM,EAAEsB,CAAC,IAAI,CAAC,EAAE;AACnD,UAAA,MAAMX,SAAS,GAAGR,gBAAgB,CAACmB,CAAC,CAAE,CAAA;AACtC,UAAA,MAAMC,UAAU,GAAGd,cAAc,CAACE,SAAS,CAACJ,EAAE,CAAE,CAAA;UAChD,MAAMiB,MAAM,GAAG,CAAAb,SAAS,oBAATA,SAAS,CAAEc,IAAI,KAAI,KAAK,CAAA;UAEvC,IAAIF,UAAU,CAACV,aAAa,EAAE;YAC5B,MAAMa,MAAM,GAAGN,IAAI,CAACO,QAAQ,CAAChB,SAAS,CAACJ,EAAE,CAAC,CAAA;YAC1C,MAAMqB,MAAM,GAAGP,IAAI,CAACM,QAAQ,CAAChB,SAAS,CAACJ,EAAE,CAAC,CAAA;AAE1C,YAAA,MAAMsB,UAAU,GAAG,OAAOH,MAAM,KAAK,WAAW,CAAA;AAChD,YAAA,MAAMI,UAAU,GAAG,OAAOF,MAAM,KAAK,WAAW,CAAA;YAEhD,IAAIC,UAAU,IAAIC,UAAU,EAAE;AAC5B,cAAA,OAAOD,UAAU,IAAIC,UAAU,GAC3B,CAAC,GACDD,UAAU,GACVN,UAAU,CAACV,aAAa,GACxB,CAACU,UAAU,CAACV,aAAa,CAAA;AAC/B,aAAA;AACF,WAAA;;AAEA;AACA,UAAA,IAAIkB,OAAO,GAAGR,UAAU,CAACP,SAAS,CAACI,IAAI,EAAEC,IAAI,EAAEV,SAAS,CAACJ,EAAE,CAAC,CAAA;UAE5D,IAAIwB,OAAO,KAAK,CAAC,EAAE;AACjB,YAAA,IAAIP,MAAM,EAAE;cACVO,OAAO,IAAI,CAAC,CAAC,CAAA;AACf,aAAA;YAEA,IAAIR,UAAU,CAACR,aAAa,EAAE;cAC5BgB,OAAO,IAAI,CAAC,CAAC,CAAA;AACf,aAAA;AAEA,YAAA,OAAOA,OAAO,CAAA;AAChB,WAAA;AACF,SAAA;AAEA,QAAA,OAAOX,IAAI,CAACY,KAAK,GAAGX,IAAI,CAACW,KAAK,CAAA;AAChC,OAAC,CAAC,CAAA;;AAEF;AACAb,MAAAA,UAAU,CAACT,OAAO,CAACuB,GAAG,IAAI;AACxB/B,QAAAA,cAAc,CAACgC,IAAI,CAACD,GAAG,CAAC,CAAA;AACxB,QAAA,IAAI,CAACA,GAAG,CAACE,OAAO,IAAIF,GAAG,CAACE,OAAO,CAACnC,MAAM,IAAI,CAAC,EAAE;AAC3C,UAAA,OAAA;AACF,SAAA;QACAiC,GAAG,CAACE,OAAO,GAAGjB,QAAQ,CAACe,GAAG,CAACE,OAAO,CAAC,CAAA;AACrC,OAAC,CAAC,CAAA;AAEF,MAAA,OAAOhB,UAAU,CAAA;KAClB,CAAA;IAED,OAAO;AACLpB,MAAAA,IAAI,EAAEmB,QAAQ,CAACpB,QAAQ,CAACC,IAAI,CAAC;AAC7BqC,MAAAA,QAAQ,EAAElC,cAAc;MACxBmC,QAAQ,EAAEvC,QAAQ,CAACuC,QAAAA;KACpB,CAAA;AACH,GAAC,EACD;IACEC,GAAG,EAAEC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAI,mBAAmB;AAClEC,IAAAA,KAAK,EAAE,MAAMjD,KAAK,CAACkD,OAAO,CAACC,QAAQ,IAAInD,KAAK,CAACkD,OAAO,CAACE,UAAU;AAC/DC,IAAAA,QAAQ,EAAE,MAAM;MACdrD,KAAK,CAACsD,mBAAmB,EAAE,CAAA;AAC7B,KAAA;AACF,GAAC,CACF,CAAA;AACL;;;;"}
@@ -12,10 +12,6 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
- // Is this type a tuple?
16
-
17
- // If this type is a tuple, what indices are allowed?
18
-
19
15
  ///
20
16
 
21
17
  function functionalUpdate(updater, input) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = []\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T> = unknown extends T\n ? keyof T\n : object extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>>\n : T extends any[]\n ? never & 'Dynamic length array indexing is not supported'\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T>\n : never\n\ntype DeepKeysPrefix<T, TPrefix> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix]> & string}`\n : never\n\nexport type DeepValue<T, TProp> = T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\n///\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown\n) {\n return (updater: Updater<TableState[K]>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key\n )\n }\n }\n\n return result!\n }\n}\n"],"names":["functionalUpdate","updater","input","noop","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min"],"mappings":";;;;;;;;;;;;;;AA4BA;;AAOA;;AAsCA;;AAEO,SAASA,gBAAgB,CAAIC,OAAmB,EAAEC,KAAQ,EAAK;EACpE,OAAO,OAAOD,OAAO,KAAK,UAAU,GAC/BA,OAAO,CAAqBC,KAAK,CAAC,GACnCD,OAAO,CAAA;AACb,CAAA;AAEO,SAASE,IAAI,GAAG;AACrB;AACF,CAAA;AAEO,SAASC,gBAAgB,CAC9BC,GAAM,EACNC,QAAiB,EACjB;AACA,EAAA,OAAQL,OAA+B,IAAK;AACxCK,IAAAA,QAAQ,CAASC,QAAQ,CAAeC,GAAgB,IAAK;MAC7D,OAAO;AACL,QAAA,GAAGA,GAAG;QACN,CAACH,GAAG,GAAGL,gBAAgB,CAACC,OAAO,EAAGO,GAAG,CAASH,GAAG,CAAC,CAAA;OACnD,CAAA;AACH,KAAC,CAAC,CAAA;GACH,CAAA;AACH,CAAA;AAIO,SAASI,UAAU,CAAwBC,CAAM,EAAU;EAChE,OAAOA,CAAC,YAAYC,QAAQ,CAAA;AAC9B,CAAA;AAEO,SAASC,SAAS,CACvBC,GAAY,EACZC,WAAqC,EACrC;EACA,MAAMC,IAAa,GAAG,EAAE,CAAA;EAExB,MAAMC,OAAO,GAAIC,MAAe,IAAK;AACnCA,IAAAA,MAAM,CAACC,OAAO,CAACC,IAAI,IAAI;AACrBJ,MAAAA,IAAI,CAACK,IAAI,CAACD,IAAI,CAAC,CAAA;AACf,MAAA,MAAME,QAAQ,GAAGP,WAAW,CAACK,IAAI,CAAC,CAAA;AAClC,MAAA,IAAIE,QAAQ,IAAA,IAAA,IAARA,QAAQ,CAAEC,MAAM,EAAE;QACpBN,OAAO,CAACK,QAAQ,CAAC,CAAA;AACnB,OAAA;AACF,KAAC,CAAC,CAAA;GACH,CAAA;EAEDL,OAAO,CAACH,GAAG,CAAC,CAAA;AAEZ,EAAA,OAAOE,IAAI,CAAA;AACb,CAAA;AAEO,SAASQ,IAAI,CAClBC,OAAyB,EACzBC,EAA6C,EAC7CC,IAIC,EACc;EACf,IAAIC,IAAW,GAAG,EAAE,CAAA;AACpB,EAAA,IAAIC,MAA2B,CAAA;AAE/B,EAAA,OAAO,MAAM;AACX,IAAA,IAAIC,OAAe,CAAA;AACnB,IAAA,IAAIH,IAAI,CAACrB,GAAG,IAAIqB,IAAI,CAACI,KAAK,EAAED,OAAO,GAAGE,IAAI,CAACC,GAAG,EAAE,CAAA;IAEhD,MAAMC,OAAO,GAAGT,OAAO,EAAE,CAAA;IAEzB,MAAMU,WAAW,GACfD,OAAO,CAACX,MAAM,KAAKK,IAAI,CAACL,MAAM,IAC9BW,OAAO,CAACE,IAAI,CAAC,CAACC,GAAQ,EAAEC,KAAa,KAAKV,IAAI,CAACU,KAAK,CAAC,KAAKD,GAAG,CAAC,CAAA;IAEhE,IAAI,CAACF,WAAW,EAAE;AAChB,MAAA,OAAON,MAAM,CAAA;AACf,KAAA;AAEAD,IAAAA,IAAI,GAAGM,OAAO,CAAA;AAEd,IAAA,IAAIK,UAAkB,CAAA;AACtB,IAAA,IAAIZ,IAAI,CAACrB,GAAG,IAAIqB,IAAI,CAACI,KAAK,EAAEQ,UAAU,GAAGP,IAAI,CAACC,GAAG,EAAE,CAAA;AAEnDJ,IAAAA,MAAM,GAAGH,EAAE,CAAC,GAAGQ,OAAO,CAAC,CAAA;IACvBP,IAAI,IAAA,IAAA,GAAA,KAAA,CAAA,GAAJA,IAAI,CAAEa,QAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAdb,IAAI,CAAEa,QAAQ,CAAGX,MAAM,CAAC,CAAA;AAExB,IAAA,IAAIF,IAAI,CAACrB,GAAG,IAAIqB,IAAI,CAACI,KAAK,EAAE;AAC1B,MAAA,IAAIJ,IAAI,IAAJA,IAAAA,IAAAA,IAAI,CAAEI,KAAK,EAAE,EAAE;AACjB,QAAA,MAAMU,UAAU,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACX,IAAI,CAACC,GAAG,EAAE,GAAGH,OAAQ,IAAI,GAAG,CAAC,GAAG,GAAG,CAAA;AAClE,QAAA,MAAMc,aAAa,GAAGF,IAAI,CAACC,KAAK,CAAC,CAACX,IAAI,CAACC,GAAG,EAAE,GAAGM,UAAW,IAAI,GAAG,CAAC,GAAG,GAAG,CAAA;AACxE,QAAA,MAAMM,mBAAmB,GAAGD,aAAa,GAAG,EAAE,CAAA;AAE9C,QAAA,MAAME,GAAG,GAAG,CAACC,GAAoB,EAAEC,GAAW,KAAK;AACjDD,UAAAA,GAAG,GAAGE,MAAM,CAACF,GAAG,CAAC,CAAA;AACjB,UAAA,OAAOA,GAAG,CAACxB,MAAM,GAAGyB,GAAG,EAAE;YACvBD,GAAG,GAAG,GAAG,GAAGA,GAAG,CAAA;AACjB,WAAA;AACA,UAAA,OAAOA,GAAG,CAAA;SACX,CAAA;AAEDG,QAAAA,OAAO,CAACC,IAAI,CACT,OAAML,GAAG,CAACF,aAAa,EAAE,CAAC,CAAE,CAAA,EAAA,EAAIE,GAAG,CAACL,UAAU,EAAE,CAAC,CAAE,KAAI,EACvD,CAAA;AACX;AACA;AACA,uBAAyBC,EAAAA,IAAI,CAACU,GAAG,CACnB,CAAC,EACDV,IAAI,CAACW,GAAG,CAAC,GAAG,GAAG,GAAG,GAAGR,mBAAmB,EAAE,GAAG,CAAC,CAC9C,CAAA,cAAA,CAAe,EACnBlB,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAErB,GAAG,CACV,CAAA;AACH,OAAA;AACF,KAAA;AAEA,IAAA,OAAOuB,MAAM,CAAA;GACd,CAAA;AACH;;;;;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<T>\nexport type RequiredKeys<T, K extends keyof T> = T & { [P in K]-?: T[P] }\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype IndexableData = Record<string | number, any>\nexport type DeepValue<T, TProp> = T extends IndexableData\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : TProp extends keyof T\n ? T[TProp]\n : never\n : never\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Prev = [\n never,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n ...0[]\n]\n\ntype ExplicitLeaves =\n | Date\n | Number\n | BigInt\n | String\n | Set<unknown>\n | Map<unknown, unknown>\n | WeakSet<object>\n | WeakMap<object, unknown>\n\nexport type DeepKeys<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends ExplicitLeaves\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number\n ? `${K}` | Join<K, DeepKeys<T[K], Prev[D]>>\n : never\n }[keyof T]\n : ''\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\n///\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown\n) {\n return (updater: Updater<TableState[K]>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key\n )\n }\n }\n\n return result!\n }\n}\n"],"names":["functionalUpdate","updater","input","noop","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min"],"mappings":"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"}
@@ -8,10 +8,6 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- // Is this type a tuple?
12
-
13
- // If this type is a tuple, what indices are allowed?
14
-
15
11
  ///
16
12
 
17
13
  function functionalUpdate(updater, input) {
@@ -3094,7 +3090,7 @@ function getSortedRowModel() {
3094
3090
  const sortData = rows => {
3095
3091
  // This will also perform a stable sorting using the row index
3096
3092
  // if needed.
3097
- const sortedData = rows.slice();
3093
+ const sortedData = [...rows];
3098
3094
  sortedData.sort((rowA, rowB) => {
3099
3095
  for (let i = 0; i < availableSorting.length; i += 1) {
3100
3096
  const sortEntry = availableSorting[i];