@tanstack/table-core 8.5.15 → 8.5.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/aggregationFns.js +0 -15
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/columnHelper.js +10 -2
- package/build/cjs/columnHelper.js.map +1 -1
- package/build/cjs/core/cell.js +0 -3
- package/build/cjs/core/cell.js.map +1 -1
- package/build/cjs/core/column.js +7 -12
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/core/headers.js +18 -30
- package/build/cjs/core/headers.js.map +1 -1
- package/build/cjs/core/row.js +0 -5
- package/build/cjs/core/row.js.map +1 -1
- package/build/cjs/core/table.js +13 -30
- package/build/cjs/core/table.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +33 -32
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +9 -19
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +6 -34
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +1 -16
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Ordering.js +13 -10
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +11 -22
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +5 -11
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +35 -39
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +14 -29
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +5 -5
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +3 -28
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/sortingFns.js +24 -31
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +7 -19
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +11 -13
- package/build/cjs/utils/getCoreRowModel.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +0 -6
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +0 -6
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
- package/build/cjs/utils/getFacetedRowModel.js +0 -4
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedUniqueValues.js +0 -4
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModel.js +8 -20
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +21 -25
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +0 -6
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +6 -15
- package/build/cjs/utils/getSortedRowModel.js.map +1 -1
- package/build/cjs/utils.js +7 -13
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +267 -504
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +51 -41
- package/build/stats-react.json +369 -369
- package/build/umd/index.development.js +267 -502
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/core/column.ts +5 -0
- package/src/features/ColumnSizing.ts +11 -1
|
@@ -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 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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"}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
15
15
|
var utils = require('../utils.js');
|
|
16
16
|
|
|
17
17
|
//
|
|
18
|
+
|
|
18
19
|
const Visibility = {
|
|
19
20
|
getInitialState: state => {
|
|
20
21
|
return {
|
|
@@ -31,14 +32,14 @@ const Visibility = {
|
|
|
31
32
|
return {
|
|
32
33
|
toggleVisibility: value => {
|
|
33
34
|
if (column.getCanHide()) {
|
|
34
|
-
table.setColumnVisibility(old => ({
|
|
35
|
+
table.setColumnVisibility(old => ({
|
|
36
|
+
...old,
|
|
35
37
|
[column.id]: value ?? !column.getIsVisible()
|
|
36
38
|
}));
|
|
37
39
|
}
|
|
38
40
|
},
|
|
39
41
|
getIsVisible: () => {
|
|
40
42
|
var _table$getState$colum;
|
|
41
|
-
|
|
42
43
|
return ((_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) ?? true;
|
|
43
44
|
},
|
|
44
45
|
getCanHide: () => {
|
|
@@ -74,7 +75,6 @@ const Visibility = {
|
|
|
74
75
|
debug: () => table.options.debugAll ?? table.options.debugColumns
|
|
75
76
|
});
|
|
76
77
|
};
|
|
77
|
-
|
|
78
78
|
return {
|
|
79
79
|
getVisibleFlatColumns: makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns()),
|
|
80
80
|
getVisibleLeafColumns: makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns()),
|
|
@@ -87,7 +87,8 @@ const Visibility = {
|
|
|
87
87
|
},
|
|
88
88
|
toggleAllColumnsVisible: value => {
|
|
89
89
|
value = value ?? !table.getIsAllColumnsVisible();
|
|
90
|
-
table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({
|
|
90
|
+
table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({
|
|
91
|
+
...obj,
|
|
91
92
|
[column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value
|
|
92
93
|
}), {}));
|
|
93
94
|
},
|
|
@@ -96,7 +97,6 @@ const Visibility = {
|
|
|
96
97
|
getToggleAllColumnsVisibilityHandler: () => {
|
|
97
98
|
return e => {
|
|
98
99
|
var _target;
|
|
99
|
-
|
|
100
100
|
table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);
|
|
101
101
|
};
|
|
102
102
|
}
|
|
@@ -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 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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"}
|
package/build/cjs/filterFns.js
CHANGED
|
@@ -14,93 +14,68 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
14
14
|
|
|
15
15
|
const includesString = (row, columnId, filterValue) => {
|
|
16
16
|
var _row$getValue;
|
|
17
|
-
|
|
18
17
|
const search = filterValue.toLowerCase();
|
|
19
18
|
return (_row$getValue = row.getValue(columnId)) == null ? void 0 : _row$getValue.toLowerCase().includes(search);
|
|
20
19
|
};
|
|
21
|
-
|
|
22
20
|
includesString.autoRemove = val => testFalsey(val);
|
|
23
|
-
|
|
24
21
|
const includesStringSensitive = (row, columnId, filterValue) => {
|
|
25
22
|
var _row$getValue2;
|
|
26
|
-
|
|
27
23
|
return (_row$getValue2 = row.getValue(columnId)) == null ? void 0 : _row$getValue2.includes(filterValue);
|
|
28
24
|
};
|
|
29
|
-
|
|
30
25
|
includesStringSensitive.autoRemove = val => testFalsey(val);
|
|
31
|
-
|
|
32
26
|
const equalsString = (row, columnId, filterValue) => {
|
|
33
27
|
var _row$getValue3;
|
|
34
|
-
|
|
35
28
|
return ((_row$getValue3 = row.getValue(columnId)) == null ? void 0 : _row$getValue3.toLowerCase()) === filterValue.toLowerCase();
|
|
36
29
|
};
|
|
37
|
-
|
|
38
30
|
equalsString.autoRemove = val => testFalsey(val);
|
|
39
|
-
|
|
40
31
|
const arrIncludes = (row, columnId, filterValue) => {
|
|
41
32
|
var _row$getValue4;
|
|
42
|
-
|
|
43
33
|
return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);
|
|
44
34
|
};
|
|
45
|
-
|
|
46
35
|
arrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);
|
|
47
|
-
|
|
48
36
|
const arrIncludesAll = (row, columnId, filterValue) => {
|
|
49
37
|
return !filterValue.some(val => {
|
|
50
38
|
var _row$getValue5;
|
|
51
|
-
|
|
52
39
|
return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));
|
|
53
40
|
});
|
|
54
41
|
};
|
|
55
|
-
|
|
56
42
|
arrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);
|
|
57
|
-
|
|
58
43
|
const arrIncludesSome = (row, columnId, filterValue) => {
|
|
59
44
|
return filterValue.some(val => {
|
|
60
45
|
var _row$getValue6;
|
|
61
|
-
|
|
62
46
|
return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);
|
|
63
47
|
});
|
|
64
48
|
};
|
|
65
|
-
|
|
66
49
|
arrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);
|
|
67
|
-
|
|
68
50
|
const equals = (row, columnId, filterValue) => {
|
|
69
51
|
return row.getValue(columnId) === filterValue;
|
|
70
52
|
};
|
|
71
|
-
|
|
72
53
|
equals.autoRemove = val => testFalsey(val);
|
|
73
|
-
|
|
74
54
|
const weakEquals = (row, columnId, filterValue) => {
|
|
75
55
|
return row.getValue(columnId) == filterValue;
|
|
76
56
|
};
|
|
77
|
-
|
|
78
57
|
weakEquals.autoRemove = val => testFalsey(val);
|
|
79
|
-
|
|
80
58
|
const inNumberRange = (row, columnId, filterValue) => {
|
|
81
59
|
let [min, max] = filterValue;
|
|
82
60
|
const rowValue = row.getValue(columnId);
|
|
83
61
|
return rowValue >= min && rowValue <= max;
|
|
84
62
|
};
|
|
85
|
-
|
|
86
63
|
inNumberRange.resolveFilterValue = val => {
|
|
87
64
|
let [unsafeMin, unsafeMax] = val;
|
|
88
65
|
let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;
|
|
89
66
|
let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;
|
|
90
67
|
let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;
|
|
91
68
|
let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;
|
|
92
|
-
|
|
93
69
|
if (min > max) {
|
|
94
70
|
const temp = min;
|
|
95
71
|
min = max;
|
|
96
72
|
max = temp;
|
|
97
73
|
}
|
|
98
|
-
|
|
99
74
|
return [min, max];
|
|
100
75
|
};
|
|
76
|
+
inNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);
|
|
101
77
|
|
|
102
|
-
|
|
103
|
-
|
|
78
|
+
// Export
|
|
104
79
|
|
|
105
80
|
const filterFns = {
|
|
106
81
|
includesString,
|
|
@@ -113,8 +88,8 @@ const filterFns = {
|
|
|
113
88
|
weakEquals,
|
|
114
89
|
inNumberRange
|
|
115
90
|
};
|
|
116
|
-
|
|
117
91
|
// Utils
|
|
92
|
+
|
|
118
93
|
function testFalsey(val) {
|
|
119
94
|
return val === undefined || val === null || val === '';
|
|
120
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterFns.js","sources":["../../src/filterFns.ts"],"sourcesContent":["import { FilterFn } from './features/Filters'\n\nconst includesString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n const search = filterValue.toLowerCase()\n return row.getValue<string>(columnId)?.toLowerCase().includes(search)\n}\n\nincludesString.autoRemove = (val: any) => testFalsey(val)\n\nconst includesStringSensitive: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return row.getValue<string>(columnId)?.includes(filterValue)\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nconst equalsString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return (\n row.getValue<string>(columnId)?.toLowerCase() === filterValue.toLowerCase()\n )\n}\n\nequalsString.autoRemove = (val: any) => testFalsey(val)\n\nconst arrIncludes: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue<unknown[]>(columnId)?.includes(filterValue)\n}\n\narrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst arrIncludesAll: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return !filterValue.some(\n val => !row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst arrIncludesSome: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return filterValue.some(val =>\n row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {\n return row.getValue(columnId) === filterValue\n}\n\nequals.autoRemove = (val: any) => testFalsey(val)\n\nconst weakEquals: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue(columnId) == filterValue\n}\n\nweakEquals.autoRemove = (val: any) => testFalsey(val)\n\nconst inNumberRange: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: [number, number]\n) => {\n let [min, max] = filterValue\n\n const rowValue = row.getValue<number>(columnId)\n return rowValue >= min && rowValue <= max\n}\n\ninNumberRange.resolveFilterValue = (val: [any, any]) => {\n let [unsafeMin, unsafeMax] = val\n\n let parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\n let parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\ninNumberRange.autoRemove = (val: any) =>\n testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\n\n// Export\n\nexport const filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsey(val: any) {\n return val === undefined || val === null || val === ''\n}\n"],"names":["includesString","row","columnId","filterValue","search","toLowerCase","getValue","includes","autoRemove","val","testFalsey","includesStringSensitive","equalsString","arrIncludes","length","arrIncludesAll","some","arrIncludesSome","equals","weakEquals","inNumberRange","min","max","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","Number","isNaN","Infinity","temp","filterFns","undefined"],"mappings":";;;;;;;;;;;;;;AAEA,MAAMA,cAA6B,GAAG,CACpCC,
|
|
1
|
+
{"version":3,"file":"filterFns.js","sources":["../../src/filterFns.ts"],"sourcesContent":["import { FilterFn } from './features/Filters'\n\nconst includesString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n const search = filterValue.toLowerCase()\n return row.getValue<string>(columnId)?.toLowerCase().includes(search)\n}\n\nincludesString.autoRemove = (val: any) => testFalsey(val)\n\nconst includesStringSensitive: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return row.getValue<string>(columnId)?.includes(filterValue)\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nconst equalsString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return (\n row.getValue<string>(columnId)?.toLowerCase() === filterValue.toLowerCase()\n )\n}\n\nequalsString.autoRemove = (val: any) => testFalsey(val)\n\nconst arrIncludes: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue<unknown[]>(columnId)?.includes(filterValue)\n}\n\narrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst arrIncludesAll: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return !filterValue.some(\n val => !row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst arrIncludesSome: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return filterValue.some(val =>\n row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {\n return row.getValue(columnId) === filterValue\n}\n\nequals.autoRemove = (val: any) => testFalsey(val)\n\nconst weakEquals: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue(columnId) == filterValue\n}\n\nweakEquals.autoRemove = (val: any) => testFalsey(val)\n\nconst inNumberRange: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: [number, number]\n) => {\n let [min, max] = filterValue\n\n const rowValue = row.getValue<number>(columnId)\n return rowValue >= min && rowValue <= max\n}\n\ninNumberRange.resolveFilterValue = (val: [any, any]) => {\n let [unsafeMin, unsafeMax] = val\n\n let parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\n let parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\ninNumberRange.autoRemove = (val: any) =>\n testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\n\n// Export\n\nexport const filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsey(val: any) {\n return val === undefined || val === null || val === ''\n}\n"],"names":["includesString","row","columnId","filterValue","search","toLowerCase","getValue","includes","autoRemove","val","testFalsey","includesStringSensitive","equalsString","arrIncludes","length","arrIncludesAll","some","arrIncludesSome","equals","weakEquals","inNumberRange","min","max","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","Number","isNaN","Infinity","temp","filterFns","undefined"],"mappings":"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"}
|
package/build/cjs/sortingFns.js
CHANGED
|
@@ -13,107 +13,100 @@
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
15
|
const reSplitAlphaNumeric = /([0-9]+)/gm;
|
|
16
|
-
|
|
17
16
|
const alphanumeric = (rowA, rowB, columnId) => {
|
|
18
17
|
return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
19
18
|
};
|
|
20
|
-
|
|
21
19
|
const alphanumericCaseSensitive = (rowA, rowB, columnId) => {
|
|
22
20
|
return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
23
|
-
};
|
|
24
|
-
// but is much faster
|
|
25
|
-
|
|
21
|
+
};
|
|
26
22
|
|
|
23
|
+
// The text filter is more basic (less numeric support)
|
|
24
|
+
// but is much faster
|
|
27
25
|
const text = (rowA, rowB, columnId) => {
|
|
28
26
|
return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
29
|
-
};
|
|
30
|
-
// but is much faster
|
|
31
|
-
|
|
27
|
+
};
|
|
32
28
|
|
|
29
|
+
// The text filter is more basic (less numeric support)
|
|
30
|
+
// but is much faster
|
|
33
31
|
const textCaseSensitive = (rowA, rowB, columnId) => {
|
|
34
32
|
return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
35
33
|
};
|
|
36
|
-
|
|
37
34
|
const datetime = (rowA, rowB, columnId) => {
|
|
38
35
|
const a = rowA.getValue(columnId);
|
|
39
|
-
const b = rowB.getValue(columnId);
|
|
36
|
+
const b = rowB.getValue(columnId);
|
|
37
|
+
|
|
38
|
+
// Can handle nullish values
|
|
40
39
|
// Use > and < because == (and ===) doesn't work with
|
|
41
40
|
// Date objects (would require calling getTime()).
|
|
42
|
-
|
|
43
41
|
return a > b ? 1 : a < b ? -1 : 0;
|
|
44
42
|
};
|
|
45
|
-
|
|
46
43
|
const basic = (rowA, rowB, columnId) => {
|
|
47
44
|
return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
|
|
48
|
-
};
|
|
45
|
+
};
|
|
49
46
|
|
|
47
|
+
// Utils
|
|
50
48
|
|
|
51
49
|
function compareBasic(a, b) {
|
|
52
50
|
return a === b ? 0 : a > b ? 1 : -1;
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
function toString(a) {
|
|
56
53
|
if (typeof a === 'number') {
|
|
57
54
|
if (isNaN(a) || a === Infinity || a === -Infinity) {
|
|
58
55
|
return '';
|
|
59
56
|
}
|
|
60
|
-
|
|
61
57
|
return String(a);
|
|
62
58
|
}
|
|
63
|
-
|
|
64
59
|
if (typeof a === 'string') {
|
|
65
60
|
return a;
|
|
66
61
|
}
|
|
67
|
-
|
|
68
62
|
return '';
|
|
69
|
-
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Mixed sorting is slow, but very inclusive of many edge cases.
|
|
70
66
|
// It handles numbers, mixed alphanumeric combinations, and even
|
|
71
67
|
// null, undefined, and Infinity
|
|
72
|
-
|
|
73
|
-
|
|
74
68
|
function compareAlphanumeric(aStr, bStr) {
|
|
75
69
|
// Split on number groups, but keep the delimiter
|
|
76
70
|
// Then remove falsey split values
|
|
77
71
|
const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);
|
|
78
|
-
const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);
|
|
72
|
+
const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);
|
|
79
73
|
|
|
74
|
+
// While
|
|
80
75
|
while (a.length && b.length) {
|
|
81
76
|
const aa = a.shift();
|
|
82
77
|
const bb = b.shift();
|
|
83
78
|
const an = parseInt(aa, 10);
|
|
84
79
|
const bn = parseInt(bb, 10);
|
|
85
|
-
const combo = [an, bn].sort();
|
|
80
|
+
const combo = [an, bn].sort();
|
|
86
81
|
|
|
82
|
+
// Both are string
|
|
87
83
|
if (isNaN(combo[0])) {
|
|
88
84
|
if (aa > bb) {
|
|
89
85
|
return 1;
|
|
90
86
|
}
|
|
91
|
-
|
|
92
87
|
if (bb > aa) {
|
|
93
88
|
return -1;
|
|
94
89
|
}
|
|
95
|
-
|
|
96
90
|
continue;
|
|
97
|
-
}
|
|
98
|
-
|
|
91
|
+
}
|
|
99
92
|
|
|
93
|
+
// One is a string, one is a number
|
|
100
94
|
if (isNaN(combo[1])) {
|
|
101
95
|
return isNaN(an) ? -1 : 1;
|
|
102
|
-
}
|
|
103
|
-
|
|
96
|
+
}
|
|
104
97
|
|
|
98
|
+
// Both are numbers
|
|
105
99
|
if (an > bn) {
|
|
106
100
|
return 1;
|
|
107
101
|
}
|
|
108
|
-
|
|
109
102
|
if (bn > an) {
|
|
110
103
|
return -1;
|
|
111
104
|
}
|
|
112
105
|
}
|
|
113
|
-
|
|
114
106
|
return a.length - b.length;
|
|
115
|
-
}
|
|
107
|
+
}
|
|
116
108
|
|
|
109
|
+
// Exports
|
|
117
110
|
|
|
118
111
|
const sortingFns = {
|
|
119
112
|
alphanumeric,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { SortingFn } from './features/Sorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n const a = rowA.getValue<Date>(columnId)\n const b = rowB.getValue<Date>(columnId)\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n"],"names":["reSplitAlphaNumeric","alphanumeric","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","a","b","basic","isNaN","Infinity","String","aStr","bStr","split","filter","Boolean","length","aa","shift","bb","an","parseInt","bn","combo","sort","sortingFns"],"mappings":";;;;;;;;;;;;;;AAEO,MAAMA,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { SortingFn } from './features/Sorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n const a = rowA.getValue<Date>(columnId)\n const b = rowB.getValue<Date>(columnId)\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n"],"names":["reSplitAlphaNumeric","alphanumeric","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","a","b","basic","isNaN","Infinity","String","aStr","bStr","split","filter","Boolean","length","aa","shift","bb","an","parseInt","bn","combo","sort","sortingFns"],"mappings":";;;;;;;;;;;;;;AAEO,MAAMA,mBAAmB,GAAG,aAAY;AAE/C,MAAMC,YAA4B,GAAG,CAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAK;EAC7D,OAAOC,mBAAmB,CACxBC,QAAQ,CAACJ,IAAI,CAACK,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAACI,WAAW,EAAE,EAC/CF,QAAQ,CAACH,IAAI,CAACI,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAACI,WAAW,EAAE,CAChD,CAAA;AACH,CAAC,CAAA;AAED,MAAMC,yBAAyC,GAAG,CAACP,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAK;EAC1E,OAAOC,mBAAmB,CACxBC,QAAQ,CAACJ,IAAI,CAACK,QAAQ,CAACH,QAAQ,CAAC,CAAC,EACjCE,QAAQ,CAACH,IAAI,CAACI,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAClC,CAAA;AACH,CAAC,CAAA;;AAED;AACA;AACA,MAAMM,IAAoB,GAAG,CAACR,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAK;EACrD,OAAOO,YAAY,CACjBL,QAAQ,CAACJ,IAAI,CAACK,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAACI,WAAW,EAAE,EAC/CF,QAAQ,CAACH,IAAI,CAACI,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAACI,WAAW,EAAE,CAChD,CAAA;AACH,CAAC,CAAA;;AAED;AACA;AACA,MAAMI,iBAAiC,GAAG,CAACV,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAK;EAClE,OAAOO,YAAY,CACjBL,QAAQ,CAACJ,IAAI,CAACK,QAAQ,CAACH,QAAQ,CAAC,CAAC,EACjCE,QAAQ,CAACH,IAAI,CAACI,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAClC,CAAA;AACH,CAAC,CAAA;AAED,MAAMS,QAAwB,GAAG,CAACX,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAK;AACzD,EAAA,MAAMU,CAAC,GAAGZ,IAAI,CAACK,QAAQ,CAAOH,QAAQ,CAAC,CAAA;AACvC,EAAA,MAAMW,CAAC,GAAGZ,IAAI,CAACI,QAAQ,CAAOH,QAAQ,CAAC,CAAA;;AAEvC;AACA;AACA;AACA,EAAA,OAAOU,CAAC,GAAGC,CAAC,GAAG,CAAC,GAAGD,CAAC,GAAGC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAMC,KAAqB,GAAG,CAACd,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAK;AACtD,EAAA,OAAOO,YAAY,CAACT,IAAI,CAACK,QAAQ,CAACH,QAAQ,CAAC,EAAED,IAAI,CAACI,QAAQ,CAACH,QAAQ,CAAC,CAAC,CAAA;AACvE,CAAC,CAAA;;AAED;;AAEA,SAASO,YAAY,CAACG,CAAM,EAAEC,CAAM,EAAE;AACpC,EAAA,OAAOD,CAAC,KAAKC,CAAC,GAAG,CAAC,GAAGD,CAAC,GAAGC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AACrC,CAAA;AAEA,SAAST,QAAQ,CAACQ,CAAM,EAAE;AACxB,EAAA,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;AACzB,IAAA,IAAIG,KAAK,CAACH,CAAC,CAAC,IAAIA,CAAC,KAAKI,QAAQ,IAAIJ,CAAC,KAAK,CAACI,QAAQ,EAAE;AACjD,MAAA,OAAO,EAAE,CAAA;AACX,KAAA;IACA,OAAOC,MAAM,CAACL,CAAC,CAAC,CAAA;AAClB,GAAA;AACA,EAAA,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;AACzB,IAAA,OAAOA,CAAC,CAAA;AACV,GAAA;AACA,EAAA,OAAO,EAAE,CAAA;AACX,CAAA;;AAEA;AACA;AACA;AACA,SAAST,mBAAmB,CAACe,IAAY,EAAEC,IAAY,EAAE;AACvD;AACA;AACA,EAAA,MAAMP,CAAC,GAAGM,IAAI,CAACE,KAAK,CAACtB,mBAAmB,CAAC,CAACuB,MAAM,CAACC,OAAO,CAAC,CAAA;AACzD,EAAA,MAAMT,CAAC,GAAGM,IAAI,CAACC,KAAK,CAACtB,mBAAmB,CAAC,CAACuB,MAAM,CAACC,OAAO,CAAC,CAAA;;AAEzD;AACA,EAAA,OAAOV,CAAC,CAACW,MAAM,IAAIV,CAAC,CAACU,MAAM,EAAE;AAC3B,IAAA,MAAMC,EAAE,GAAGZ,CAAC,CAACa,KAAK,EAAG,CAAA;AACrB,IAAA,MAAMC,EAAE,GAAGb,CAAC,CAACY,KAAK,EAAG,CAAA;AAErB,IAAA,MAAME,EAAE,GAAGC,QAAQ,CAACJ,EAAE,EAAE,EAAE,CAAC,CAAA;AAC3B,IAAA,MAAMK,EAAE,GAAGD,QAAQ,CAACF,EAAE,EAAE,EAAE,CAAC,CAAA;IAE3B,MAAMI,KAAK,GAAG,CAACH,EAAE,EAAEE,EAAE,CAAC,CAACE,IAAI,EAAE,CAAA;;AAE7B;AACA,IAAA,IAAIhB,KAAK,CAACe,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE;MACpB,IAAIN,EAAE,GAAGE,EAAE,EAAE;AACX,QAAA,OAAO,CAAC,CAAA;AACV,OAAA;MACA,IAAIA,EAAE,GAAGF,EAAE,EAAE;AACX,QAAA,OAAO,CAAC,CAAC,CAAA;AACX,OAAA;AACA,MAAA,SAAA;AACF,KAAA;;AAEA;AACA,IAAA,IAAIT,KAAK,CAACe,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE;MACpB,OAAOf,KAAK,CAACY,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AAC3B,KAAA;;AAEA;IACA,IAAIA,EAAE,GAAGE,EAAE,EAAE;AACX,MAAA,OAAO,CAAC,CAAA;AACV,KAAA;IACA,IAAIA,EAAE,GAAGF,EAAE,EAAE;AACX,MAAA,OAAO,CAAC,CAAC,CAAA;AACX,KAAA;AACF,GAAA;AAEA,EAAA,OAAOf,CAAC,CAACW,MAAM,GAAGV,CAAC,CAACU,MAAM,CAAA;AAC5B,CAAA;;AAEA;;AAEO,MAAMS,UAAU,GAAG;EACxBjC,YAAY;EACZQ,yBAAyB;EACzBC,IAAI;EACJE,iBAAiB;EACjBC,QAAQ;AACRG,EAAAA,KAAAA;AACF;;;;;"}
|