@tanstack/table-core 8.9.0 → 8.9.2

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.
@@ -53,7 +53,11 @@ function getSortedRowModel() {
53
53
  const aUndefined = typeof aValue === 'undefined';
54
54
  const bUndefined = typeof bValue === 'undefined';
55
55
  if (aUndefined || bUndefined) {
56
- return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
56
+ let undefinedSort = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
57
+ if (isDesc && undefinedSort !== 0) {
58
+ undefinedSort *= -1;
59
+ }
60
+ return undefinedSort;
57
61
  }
58
62
  }
59
63
 
@@ -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 if (!column) return\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?.length) {\n row.subRows = sortData(row.subRows)\n }\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","_table$getColumn","getColumn","id","getCanSort","columnInfoById","forEach","sortEntry","column","sortUndefined","columnDef","invertSorting","sortingFn","getSortingFn","sortData","sortedData","rowA","rowB","i","_sortEntry$desc","columnInfo","isDesc","desc","aValue","getValue","bValue","aUndefined","bUndefined","sortInt","index","row","_row$subRows","push","subRows","flatRows","rowsById","key","process","env","NODE_ENV","debug","_table$options$debugA","options","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":";;;;;;;;;;;;;;;;AAIO,SAASA,iBAAiBA,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;IAEA,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,IAAA;AAAA,MAAA,IAAAC,gBAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,gBAAA,GAC/Cb,KAAK,CAACc,SAAS,CAACF,IAAI,CAACG,EAAE,CAAC,KAAxBF,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAA0BG,UAAU,EAAE,CAAA;AAAA,KACxC,CAAC,CAAA;IAED,MAAMC,cAOL,GAAG,EAAE,CAAA;AAENP,IAAAA,gBAAgB,CAACQ,OAAO,CAACC,SAAS,IAAI;MACpC,MAAMC,MAAM,GAAGpB,KAAK,CAACc,SAAS,CAACK,SAAS,CAACJ,EAAE,CAAC,CAAA;MAC5C,IAAI,CAACK,MAAM,EAAE,OAAA;AAEbH,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;AAC7CC,QAAAA,SAAS,EAAEJ,MAAM,CAACK,YAAY,EAAC;OAChC,CAAA;AACH,KAAC,CAAC,CAAA;IAEF,MAAMC,QAAQ,GAAIpB,IAAkB,IAAK;AACvC;AACA;AACA,MAAA,MAAMqB,UAAU,GAAG,CAAC,GAAGrB,IAAI,CAAC,CAAA;AAE5BqB,MAAAA,UAAU,CAACf,IAAI,CAAC,CAACgB,IAAI,EAAEC,IAAI,KAAK;AAC9B,QAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpB,gBAAgB,CAACH,MAAM,EAAEuB,CAAC,IAAI,CAAC,EAAE;AAAA,UAAA,IAAAC,eAAA,CAAA;AACnD,UAAA,MAAMZ,SAAS,GAAGT,gBAAgB,CAACoB,CAAC,CAAE,CAAA;AACtC,UAAA,MAAME,UAAU,GAAGf,cAAc,CAACE,SAAS,CAACJ,EAAE,CAAE,CAAA;AAChD,UAAA,MAAMkB,MAAM,GAAA,CAAAF,eAAA,GAAGZ,SAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAATA,SAAS,CAAEe,IAAI,KAAA,IAAA,GAAAH,eAAA,GAAI,KAAK,CAAA;UAEvC,IAAIC,UAAU,CAACX,aAAa,EAAE;YAC5B,MAAMc,MAAM,GAAGP,IAAI,CAACQ,QAAQ,CAACjB,SAAS,CAACJ,EAAE,CAAC,CAAA;YAC1C,MAAMsB,MAAM,GAAGR,IAAI,CAACO,QAAQ,CAACjB,SAAS,CAACJ,EAAE,CAAC,CAAA;AAE1C,YAAA,MAAMuB,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,CAACX,aAAa,GACxB,CAACW,UAAU,CAACX,aAAa,CAAA;AAC/B,aAAA;AACF,WAAA;;AAEA;AACA,UAAA,IAAImB,OAAO,GAAGR,UAAU,CAACR,SAAS,CAACI,IAAI,EAAEC,IAAI,EAAEV,SAAS,CAACJ,EAAE,CAAC,CAAA;UAE5D,IAAIyB,OAAO,KAAK,CAAC,EAAE;AACjB,YAAA,IAAIP,MAAM,EAAE;cACVO,OAAO,IAAI,CAAC,CAAC,CAAA;AACf,aAAA;YAEA,IAAIR,UAAU,CAACT,aAAa,EAAE;cAC5BiB,OAAO,IAAI,CAAC,CAAC,CAAA;AACf,aAAA;AAEA,YAAA,OAAOA,OAAO,CAAA;AAChB,WAAA;AACF,SAAA;AAEA,QAAA,OAAOZ,IAAI,CAACa,KAAK,GAAGZ,IAAI,CAACY,KAAK,CAAA;AAChC,OAAC,CAAC,CAAA;;AAEF;AACAd,MAAAA,UAAU,CAACT,OAAO,CAACwB,GAAG,IAAI;AAAA,QAAA,IAAAC,YAAA,CAAA;AACxBlC,QAAAA,cAAc,CAACmC,IAAI,CAACF,GAAG,CAAC,CAAA;QACxB,IAAAC,CAAAA,YAAA,GAAID,GAAG,CAACG,OAAO,KAAXF,IAAAA,IAAAA,YAAA,CAAapC,MAAM,EAAE;UACvBmC,GAAG,CAACG,OAAO,GAAGnB,QAAQ,CAACgB,GAAG,CAACG,OAAO,CAAC,CAAA;AACrC,SAAA;AACF,OAAC,CAAC,CAAA;AAEF,MAAA,OAAOlB,UAAU,CAAA;KAClB,CAAA;IAED,OAAO;AACLrB,MAAAA,IAAI,EAAEoB,QAAQ,CAACrB,QAAQ,CAACC,IAAI,CAAC;AAC7BwC,MAAAA,QAAQ,EAAErC,cAAc;MACxBsC,QAAQ,EAAE1C,QAAQ,CAAC0C,QAAAA;KACpB,CAAA;AACH,GAAC,EACD;IACEC,GAAG,EAAEC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAI,mBAAmB;AAClEC,IAAAA,KAAK,EAAEA,MAAA;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,qBAAA,GAAMrD,KAAK,CAACsD,OAAO,CAACC,QAAQ,KAAAF,IAAAA,GAAAA,qBAAA,GAAIrD,KAAK,CAACsD,OAAO,CAACE,UAAU,CAAA;AAAA,KAAA;IAC/DC,QAAQ,EAAEA,MAAM;MACdzD,KAAK,CAAC0D,mBAAmB,EAAE,CAAA;AAC7B,KAAA;AACF,GACF,CAAC,CAAA;AACL;;;;"}
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 if (!column) return\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 let undefinedSort =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? columnInfo.sortUndefined\n : -columnInfo.sortUndefined\n\n if (isDesc && undefinedSort !== 0) {\n undefinedSort *= -1\n }\n\n return undefinedSort\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?.length) {\n row.subRows = sortData(row.subRows)\n }\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","_table$getColumn","getColumn","id","getCanSort","columnInfoById","forEach","sortEntry","column","sortUndefined","columnDef","invertSorting","sortingFn","getSortingFn","sortData","sortedData","rowA","rowB","i","_sortEntry$desc","columnInfo","isDesc","desc","aValue","getValue","bValue","aUndefined","bUndefined","undefinedSort","sortInt","index","row","_row$subRows","push","subRows","flatRows","rowsById","key","process","env","NODE_ENV","debug","_table$options$debugA","options","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":"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"}
@@ -23,6 +23,7 @@ export declare function noop(): void;
23
23
  export declare function makeStateUpdater<K extends keyof TableState>(key: K, instance: unknown): (updater: Updater<TableState[K]>) => void;
24
24
  type AnyFunction = (...args: any) => any;
25
25
  export declare function isFunction<T extends AnyFunction>(d: any): d is T;
26
+ export declare function isNumberArray(d: any): d is number[];
26
27
  export declare function flattenBy<TNode>(arr: TNode[], getChildren: (item: TNode) => TNode[]): TNode[];
27
28
  export declare function memo<TDeps extends readonly any[], TResult>(getDeps: () => [...TDeps], fn: (...args: NoInfer<[...TDeps]>) => TResult, opts: {
28
29
  key: any;
@@ -37,6 +37,9 @@ function makeStateUpdater(key, instance) {
37
37
  function isFunction(d) {
38
38
  return d instanceof Function;
39
39
  }
40
+ function isNumberArray(d) {
41
+ return Array.isArray(d) && d.every(val => typeof val === 'number');
42
+ }
40
43
  function flattenBy(arr, getChildren) {
41
44
  const flat = [];
42
45
  const recurse = subArr => {
@@ -92,6 +95,7 @@ function memo(getDeps, fn, opts) {
92
95
  exports.flattenBy = flattenBy;
93
96
  exports.functionalUpdate = functionalUpdate;
94
97
  exports.isFunction = isFunction;
98
+ exports.isNumberArray = isNumberArray;
95
99
  exports.makeStateUpdater = makeStateUpdater;
96
100
  exports.memo = memo;
97
101
  exports.noop = noop;
@@ -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":"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"}
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 isNumberArray(d: any): d is number[] {\n return Array.isArray(d) && d.every(val => typeof val === 'number')\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","isNumberArray","Array","isArray","every","val","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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"}
@@ -39,6 +39,9 @@
39
39
  function isFunction(d) {
40
40
  return d instanceof Function;
41
41
  }
42
+ function isNumberArray(d) {
43
+ return Array.isArray(d) && d.every(val => typeof val === 'number');
44
+ }
42
45
  function flattenBy(arr, getChildren) {
43
46
  const flat = [];
44
47
  const recurse = subArr => {
@@ -1285,16 +1288,16 @@
1285
1288
  if (!leafRows.length) {
1286
1289
  return;
1287
1290
  }
1288
- let min = 0;
1289
- let max = 0;
1290
- leafRows.forEach(row => {
1291
- let value = row.getValue(columnId);
1292
- if (typeof value === 'number') {
1293
- min = Math.min(min, value);
1294
- max = Math.max(max, value);
1295
- }
1296
- });
1297
- return (min + max) / 2;
1291
+ const values = leafRows.map(row => row.getValue(columnId));
1292
+ if (!isNumberArray(values)) {
1293
+ return;
1294
+ }
1295
+ if (values.length === 1) {
1296
+ return values[0];
1297
+ }
1298
+ const mid = Math.floor(values.length / 2);
1299
+ const nums = values.sort((a, b) => a - b);
1300
+ return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
1298
1301
  };
1299
1302
  const unique = (columnId, leafRows) => {
1300
1303
  return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
@@ -3360,7 +3363,11 @@
3360
3363
  const aUndefined = typeof aValue === 'undefined';
3361
3364
  const bUndefined = typeof bValue === 'undefined';
3362
3365
  if (aUndefined || bUndefined) {
3363
- return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3366
+ let undefinedSort = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3367
+ if (isDesc && undefinedSort !== 0) {
3368
+ undefinedSort *= -1;
3369
+ }
3370
+ return undefinedSort;
3364
3371
  }
3365
3372
  }
3366
3373
 
@@ -3665,6 +3672,7 @@
3665
3672
  exports.getPaginationRowModel = getPaginationRowModel;
3666
3673
  exports.getSortedRowModel = getSortedRowModel;
3667
3674
  exports.isFunction = isFunction;
3675
+ exports.isNumberArray = isNumberArray;
3668
3676
  exports.isRowSelected = isRowSelected;
3669
3677
  exports.isSubRowSelected = isSubRowSelected;
3670
3678
  exports.makeStateUpdater = makeStateUpdater;