@tanstack/react-table 8.0.0-alpha.4 → 8.0.0-alpha.7
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/core.js.map +1 -1
- package/build/cjs/createTable.js +15 -1
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Expanding.js +5 -9
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +3 -3
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +2 -2
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Pagination.js +2 -2
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +2 -2
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/Sorting.js +2 -2
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/utils.js +9 -14
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +40 -35
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +243 -243
- package/build/types/core.d.ts +0 -2
- package/build/types/createTable.d.ts +1 -2
- package/build/types/index.d.ts +1 -1
- package/build/types/utils.d.ts +0 -4
- package/build/umd/index.development.js +40 -35
- 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.tsx +0 -90
- package/src/createTable.tsx +25 -2
- package/src/features/Expanding.ts +5 -3
- package/src/features/Filters.ts +4 -4
- package/src/features/Grouping.ts +1 -1
- package/src/features/Pagination.ts +1 -3
- package/src/features/Pinning.ts +1 -3
- package/src/features/Sorting.ts +1 -1
- package/src/index.tsx +1 -1
- package/src/utils.tsx +7 -69
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport { BuiltInSortType, reSplitAlphaNumeric, sortTypes } from '../sortTypes'\n\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n PropGetterValue,\n ReactTable,\n Row,\n Updater,\n} from '../types'\n\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n propGetter,\n} from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingFn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =\n {\n (\n rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n columnId: string\n ): number\n }\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortType<TSortingFns> =\n | 'auto'\n | BuiltInSortType\n | keyof TSortingFns\n | SortingFn<any, any, any, TSortingFns, any>\n\nexport type SortingColumnDef<TFilterFns> = {\n sortType?: SortType<TFilterFns>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n defaultCanSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<\n _TData,\n _TValue,\n TFilterFns,\n _TSortingFns,\n _TAggregationFns\n> = {\n sortType: SortType<TFilterFns>\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n}\n\nexport type SortingOptions<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n sortTypes?: TSortingFns\n onSortingChange?: OnChangeFn<SortingState>\n autoResetSorting?: boolean\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n sortRowsFn?: (\n instance: ReactTable<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >,\n rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: MouseEvent | TouchEvent) => boolean\n}\n\nexport type ToggleSortingProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type SortingInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n _notifySortingReset: () => void\n getColumnAutoSortingFn: (\n columnId: string\n ) => SortingFn<any, any, any, any, any> | undefined\n getColumnAutoSortDir: (columnId: string) => SortDirection\n\n getColumnSortingFn: (\n columnId: string\n ) => SortingFn<any, any, any, any, any> | undefined\n\n setSorting: (updater: Updater<SortingState>) => void\n toggleColumnSorting: (\n columnId: string,\n desc?: boolean,\n multi?: boolean\n ) => void\n resetSorting: () => void\n getColumnCanSort: (columnId: string) => boolean\n getColumnCanMultiSort: (columnId: string) => boolean\n getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'\n getColumnSortIndex: (columnId: string) => number\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n getSortedRowModel: () => RowModel<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n getPreSortedRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPreSortedFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPreSortedRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n getSortedRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getSortedFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getSortedRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n}\n\n//\n\nexport function getDefaultColumn<TFilterFns>(): SortingColumnDef<TFilterFns> {\n return {\n sortType: 'auto',\n }\n}\n\nexport function getInitialState(): SortingTableState {\n return {\n sorting: [],\n }\n}\n\nexport function getDefaultOptions<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): SortingOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n autoResetSorting: true,\n isMultiSortEvent: (e: MouseEvent | TouchEvent) => {\n return e.shiftKey\n },\n }\n}\n\nexport function createColumn<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): SortingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n sortType: column.sortType,\n getCanSort: () => instance.getColumnCanSort(column.id),\n getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),\n getSortIndex: () => instance.getColumnSortIndex(column.id),\n getIsSorted: () => instance.getColumnIsSorted(column.id),\n toggleSorting: (desc, isMulti) =>\n instance.toggleColumnSorting(column.id, desc, isMulti),\n getToggleSortingProps: userProps =>\n instance.getToggleSortingProps(column.id, userProps),\n }\n}\n\nexport function getInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): SortingInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n let registered = false\n\n return {\n _notifySortingReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetSorting\n ) {\n instance.resetSorting()\n }\n },\n getColumnAutoSortingFn: columnId => {\n const firstRows = instance.getGlobalFilteredRowModel().flatRows.slice(100)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.values[columnId]\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortTypes.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortTypes.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortTypes.text\n }\n\n return sortTypes.basic\n },\n getColumnAutoSortDir: columnId => {\n const firstRow = instance.getGlobalFilteredRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getColumnSortingFn: columnId => {\n const column = instance.getColumn(columnId)\n const userSortTypes = instance.options.sortTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.sortType)\n ? column.sortType\n : column.sortType === 'auto'\n ? instance.getColumnAutoSortingFn(columnId)\n : (userSortTypes as Record<string, any>)?.[column.sortType as string] ??\n (sortTypes[column.sortType as BuiltInSortType] as SortingFn<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >)\n },\n\n setSorting: updater =>\n instance.options.onSortingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().sorting)\n ),\n\n toggleColumnSorting: (columnId, desc, multi) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === columnId)\n const existingIndex = old?.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n const sortDescFirst =\n column.sortDescFirst ??\n instance.options.sortDescFirst ??\n instance.getColumnAutoSortDir(columnId) === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== columnId)\n }\n\n return newSorting\n })\n },\n\n getColumnCanSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableSorting ??\n instance.options.enableSorting ??\n column.defaultCanSort ??\n !!column.accessorFn\n // (!!column.accessorFn ||\n // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??\n // false\n )\n },\n\n getColumnCanMultiSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getColumnIsSorted: columnId => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === columnId)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getColumnSortIndex: columnId =>\n instance.getState().sorting?.findIndex(d => d.id === columnId) ?? -1,\n\n resetSorting: () => {\n instance.setSorting(instance.options?.initialState?.sorting ?? [])\n },\n\n getToggleSortingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const canSort = column.getCanSort()\n\n const initialProps: ToggleSortingProps = {\n title: canSort ? 'Toggle Sorting' : undefined,\n onClick: canSort\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getSortedRowModel: memo(\n () => [\n instance.getState().sorting,\n instance.getGlobalFilteredRowModel(),\n instance.options.sortRowsFn,\n ],\n (sorting, rowModel, sortingFn) => {\n if (!sortingFn || !sorting?.length) {\n return rowModel\n }\n\n if (process.env.NODE_ENV !== 'production' && instance.options.debug)\n console.info('Sorting...')\n\n return sortingFn(instance, rowModel)\n },\n {\n key: 'getSortedRowModel',\n debug: instance.options.debug,\n onChange: () => instance._notifyGroupingReset(),\n }\n ),\n\n getPreSortedRows: () => instance.getGlobalFilteredRowModel().rows,\n getPreSortedFlatRows: () => instance.getGlobalFilteredRowModel().flatRows,\n getPreSortedRowsById: () => instance.getGlobalFilteredRowModel().rowsById,\n getSortedRows: () => instance.getSortedRowModel().rows,\n getSortedFlatRows: () => instance.getSortedRowModel().flatRows,\n getSortedRowsById: () => instance.getSortedRowModel().rowsById,\n }\n}\n"],"names":["getDefaultColumn","sortType","getInitialState","sorting","getDefaultOptions","instance","onSortingChange","makeStateUpdater","autoResetSorting","isMultiSortEvent","e","shiftKey","createColumn","column","getCanSort","getColumnCanSort","id","getCanMultiSort","getColumnCanMultiSort","getSortIndex","getColumnSortIndex","getIsSorted","getColumnIsSorted","toggleSorting","desc","isMulti","toggleColumnSorting","getToggleSortingProps","userProps","getInstance","registered","_notifySortingReset","options","autoResetAll","resetSorting","getColumnAutoSortingFn","columnId","firstRows","getGlobalFilteredRowModel","flatRows","slice","isString","row","value","values","Object","prototype","toString","call","sortTypes","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getColumnAutoSortDir","firstRow","getColumnSortingFn","getColumn","userSortTypes","Error","isFunction","setSorting","updater","functionalUpdate","getState","multi","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","enableSorting","defaultCanSort","accessorFn","enableMultiSort","columnSort","initialState","canSort","initialProps","title","undefined","onClick","persist","propGetter","getSortedRowModel","memo","sortRowsFn","rowModel","sortingFn","process","env","NODE_ENV","debug","console","info","key","onChange","_notifyGroupingReset","getPreSortedRows","rows","getPreSortedFlatRows","getPreSortedRowsById","rowsById","getSortedRows","getSortedFlatRows","getSortedRowsById"],"mappings":";;;;;;;;;;;;;;;;;;AA8LA;AAEO,SAASA,gBAAT,GAAsE;AAC3E,SAAO;AACLC,IAAAA,QAAQ,EAAE;AADL,GAAP;AAGD;AAEM,SAASC,eAAT,GAA8C;AACnD,SAAO;AACLC,IAAAA,OAAO,EAAE;AADJ,GAAP;AAGD;AAEM,SAASC,iBAAT,CAOLC,QAPK,EAQoE;AACzE,SAAO;AACLC,IAAAA,eAAe,EAAEC,sBAAgB,CAAC,SAAD,EAAYF,QAAZ,CAD5B;AAELG,IAAAA,gBAAgB,EAAE,IAFb;AAGLC,IAAAA,gBAAgB,EAAE,0BAACC,CAAD,EAAgC;AAChD,aAAOA,CAAC,CAACC,QAAT;AACD;AALI,GAAP;AAOD;AAEM,SAASC,YAAT,CAOLC,MAPK,EAQLR,QARK,EASmE;AACxE,SAAO;AACLJ,IAAAA,QAAQ,EAAEY,MAAM,CAACZ,QADZ;AAELa,IAAAA,UAAU,EAAE;AAAA,aAAMT,QAAQ,CAACU,gBAAT,CAA0BF,MAAM,CAACG,EAAjC,CAAN;AAAA,KAFP;AAGLC,IAAAA,eAAe,EAAE;AAAA,aAAMZ,QAAQ,CAACa,qBAAT,CAA+BL,MAAM,CAACG,EAAtC,CAAN;AAAA,KAHZ;AAILG,IAAAA,YAAY,EAAE;AAAA,aAAMd,QAAQ,CAACe,kBAAT,CAA4BP,MAAM,CAACG,EAAnC,CAAN;AAAA,KAJT;AAKLK,IAAAA,WAAW,EAAE;AAAA,aAAMhB,QAAQ,CAACiB,iBAAT,CAA2BT,MAAM,CAACG,EAAlC,CAAN;AAAA,KALR;AAMLO,IAAAA,aAAa,EAAE,uBAACC,IAAD,EAAOC,OAAP;AAAA,aACbpB,QAAQ,CAACqB,mBAAT,CAA6Bb,MAAM,CAACG,EAApC,EAAwCQ,IAAxC,EAA8CC,OAA9C,CADa;AAAA,KANV;AAQLE,IAAAA,qBAAqB,EAAE,+BAAAC,SAAS;AAAA,aAC9BvB,QAAQ,CAACsB,qBAAT,CAA+Bd,MAAM,CAACG,EAAtC,EAA0CY,SAA1C,CAD8B;AAAA;AAR3B,GAAP;AAWD;AAEM,SAASC,WAAT,CAOLxB,QAPK,EAQqE;AAC1E,MAAIyB,UAAU,GAAG,KAAjB;AAEA,SAAO;AACLC,IAAAA,mBAAmB,EAAE,+BAAM;AACzB,UAAI,CAACD,UAAL,EAAiB;AACfA,QAAAA,UAAU,GAAG,IAAb;AACA;AACD;;AAED,UAAIzB,QAAQ,CAAC2B,OAAT,CAAiBC,YAAjB,KAAkC,KAAtC,EAA6C;AAC3C;AACD;;AAED,UACE5B,QAAQ,CAAC2B,OAAT,CAAiBC,YAAjB,KAAkC,IAAlC,IACA5B,QAAQ,CAAC2B,OAAT,CAAiBxB,gBAFnB,EAGE;AACAH,QAAAA,QAAQ,CAAC6B,YAAT;AACD;AACF,KAjBI;AAkBLC,IAAAA,sBAAsB,EAAE,gCAAAC,QAAQ,EAAI;AAClC,UAAMC,SAAS,GAAGhC,QAAQ,CAACiC,yBAAT,GAAqCC,QAArC,CAA8CC,KAA9C,CAAoD,GAApD,CAAlB;AAEA,UAAIC,QAAQ,GAAG,KAAf;;AAEA,oFAAkBJ,SAAlB,wCAA6B;AAAA,YAAlBK,GAAkB;AAC3B,YAAMC,KAAK,GAAGD,GAAH,oBAAGA,GAAG,CAAEE,MAAL,CAAYR,QAAZ,CAAd;;AAEA,YAAIS,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BL,KAA/B,MAA0C,eAA9C,EAA+D;AAC7D,iBAAOM,mBAAS,CAACC,QAAjB;AACD;;AAED,YAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;AAC7BF,UAAAA,QAAQ,GAAG,IAAX;;AAEA,cAAIE,KAAK,CAACQ,KAAN,CAAYC,6BAAZ,EAAiCC,MAAjC,GAA0C,CAA9C,EAAiD;AAC/C,mBAAOJ,mBAAS,CAACK,YAAjB;AACD;AACF;AACF;;AAED,UAAIb,QAAJ,EAAc;AACZ,eAAOQ,mBAAS,CAACM,IAAjB;AACD;;AAED,aAAON,mBAAS,CAACO,KAAjB;AACD,KA5CI;AA6CLC,IAAAA,oBAAoB,EAAE,8BAAArB,QAAQ,EAAI;AAChC,UAAMsB,QAAQ,GAAGrD,QAAQ,CAACiC,yBAAT,GAAqCC,QAArC,CAA8C,CAA9C,CAAjB;AAEA,UAAMI,KAAK,GAAGe,QAAH,oBAAGA,QAAQ,CAAEd,MAAV,CAAiBR,QAAjB,CAAd;;AAEA,UAAI,OAAOO,KAAP,KAAiB,QAArB,EAA+B;AAC7B,eAAO,KAAP;AACD;;AAED,aAAO,MAAP;AACD,KAvDI;AAwDLgB,IAAAA,kBAAkB,EAAE,4BAAAvB,QAAQ,EAAI;AAAA;;AAC9B,UAAMvB,MAAM,GAAGR,QAAQ,CAACuD,SAAT,CAAmBxB,QAAnB,CAAf;AACA,UAAMyB,aAAa,GAAGxD,QAAQ,CAAC2B,OAAT,CAAiBiB,SAAvC;;AAEA,UAAI,CAACpC,MAAL,EAAa;AACX,cAAM,IAAIiD,KAAJ,EAAN;AACD;;AAED,aAAOC,gBAAU,CAAClD,MAAM,CAACZ,QAAR,CAAV,GACHY,MAAM,CAACZ,QADJ,GAEHY,MAAM,CAACZ,QAAP,KAAoB,MAApB,GACAI,QAAQ,CAAC8B,sBAAT,CAAgCC,QAAhC,CADA,WAECyB,aAFD,oBAECA,aAAD,CAAyChD,MAAM,CAACZ,QAAhD,CAFA,mBAGCgD,mBAAS,CAACpC,MAAM,CAACZ,QAAR,CALd;AAYD,KA5EI;AA8EL+D,IAAAA,UAAU,EAAE,oBAAAC,OAAO;AAAA,aACjB5D,QAAQ,CAAC2B,OAAT,CAAiB1B,eADA,oBACjBD,QAAQ,CAAC2B,OAAT,CAAiB1B,eAAjB,CACE2D,OADF,EAEEC,sBAAgB,CAACD,OAAD,EAAU5D,QAAQ,CAAC8D,QAAT,GAAoBhE,OAA9B,CAFlB,CADiB;AAAA,KA9Ed;AAoFLuB,IAAAA,mBAAmB,EAAE,6BAACU,QAAD,EAAWZ,IAAX,EAAiB4C,KAAjB,EAA2B;AAC9C,UAAMvD,MAAM,GAAGR,QAAQ,CAACuD,SAAT,CAAmBxB,QAAnB,CAAf;;AAEA,UAAI,CAACvB,MAAL,EAAa;AACX,cAAM,IAAIiD,KAAJ,EAAN;AACD,OAL6C;AAQ9C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEAzD,MAAAA,QAAQ,CAAC2D,UAAT,CAAoB,UAAAK,GAAG,EAAI;AAAA;;AACzB;AACA,YAAMC,eAAe,GAAGD,GAAH,oBAAGA,GAAG,CAAEE,IAAL,CAAU,UAAAC,CAAC;AAAA,iBAAIA,CAAC,CAACxD,EAAF,KAASoB,QAAb;AAAA,SAAX,CAAxB;AACA,YAAMqC,aAAa,GAAGJ,GAAH,oBAAGA,GAAG,CAAEK,SAAL,CAAe,UAAAF,CAAC;AAAA,iBAAIA,CAAC,CAACxD,EAAF,KAASoB,QAAb;AAAA,SAAhB,CAAtB;AACA,YAAMuC,cAAc,GAAG,OAAOnD,IAAP,KAAgB,WAAhB,IAA+BA,IAAI,KAAK,IAA/D;AAEA,YAAIoD,UAAwB,GAAG,EAA/B,CANyB;;AASzB,YAAIC,UAAJ;;AAEA,YAAIhE,MAAM,CAACI,eAAP,MAA4BmD,KAAhC,EAAuC;AACrC,cAAIE,eAAJ,EAAqB;AACnBO,YAAAA,UAAU,GAAG,QAAb;AACD,WAFD,MAEO;AACLA,YAAAA,UAAU,GAAG,KAAb;AACD;AACF,SAND,MAMO;AACL;AACA,cAAIR,GAAG,QAAH,IAAAA,GAAG,CAAEhB,MAAL,IAAeoB,aAAa,KAAKJ,GAAG,CAAChB,MAAJ,GAAa,CAAlD,EAAqD;AACnDwB,YAAAA,UAAU,GAAG,SAAb;AACD,WAFD,MAEO,IAAIP,eAAJ,EAAqB;AAC1BO,YAAAA,UAAU,GAAG,QAAb;AACD,WAFM,MAEA;AACLA,YAAAA,UAAU,GAAG,SAAb;AACD;AACF;;AAED,YAAMC,aAAa,qCACjBjE,MAAM,CAACiE,aADU,oCAEjBzE,QAAQ,CAAC2B,OAAT,CAAiB8C,aAFA,oBAGjBzE,QAAQ,CAACoD,oBAAT,CAA8BrB,QAA9B,MAA4C,MAH9C,CA5ByB;;AAkCzB,YACEyC,UAAU,KAAK,QAAf;AAAA,iCACCxE,QAAQ,CAAC2B,OAAT,CAAiB+C,oBADlB,oCAC0C,IAD1C;AAEA,SAACJ,cAFD;AAGCP,QAAAA,KAAK,6BAAG/D,QAAQ,CAAC2B,OAAT,CAAiBgD,iBAApB,qCAAyC,IAAzC,GAAgD,IAHtD;AAICV,QAAAA,eAAe,QAAf,IAAAA,eAAe,CAAE9C,IAAjB;AAAA,UACG,CAACsD,aADJ,GAEGA,aANJ,CADF,EAQE;AACAD,UAAAA,UAAU,GAAG,QAAb;AACD;;AAED,YAAIA,UAAU,KAAK,SAAnB,EAA8B;AAC5BD,UAAAA,UAAU,GAAG,CACX;AACE5D,YAAAA,EAAE,EAAEoB,QADN;AAEEZ,YAAAA,IAAI,EAAEmD,cAAc,GAAGnD,IAAH,GAAW,CAAC,CAACsD;AAFnC,WADW,CAAb;AAMD,SAPD,MAOO,IAAID,UAAU,KAAK,KAAf,IAAwBR,GAAxB,YAAwBA,GAAG,CAAEhB,MAAjC,EAAyC;AAAA;;AAC9CuB,UAAAA,UAAU,aACLP,GADK,GAER;AACErD,YAAAA,EAAE,EAAEoB,QADN;AAEEZ,YAAAA,IAAI,EAAEmD,cAAc,GAAGnD,IAAH,GAAW,CAAC,CAACsD;AAFnC,WAFQ,EAAV,CAD8C;;AAS9CF,UAAAA,UAAU,CAACK,MAAX,CACE,CADF,EAEEL,UAAU,CAACvB,MAAX,6BACGhD,QAAQ,CAAC2B,OAAT,CAAiBkD,oBADpB,oCAC4CC,MAAM,CAACC,gBADnD,CAFF;AAKD,SAdM,MAcA,IAAIP,UAAU,KAAK,QAAf,IAA2BR,GAA3B,YAA2BA,GAAG,CAAEhB,MAApC,EAA4C;AACjD;AACAuB,UAAAA,UAAU,GAAGP,GAAG,CAACgB,GAAJ,CAAQ,UAAAb,CAAC,EAAI;AACxB,gBAAIA,CAAC,CAACxD,EAAF,KAASoB,QAAb,EAAuB;AACrB,8DACKoC,CADL;AAEEhD,gBAAAA,IAAI,EAAEmD,cAAc,GAAGnD,IAAH,GAAW,EAAC8C,eAAD,YAACA,eAAe,CAAE9C,IAAlB;AAFjC;AAID;;AACD,mBAAOgD,CAAP;AACD,WARY,CAAb;AASD,SAXM,MAWA,IAAIK,UAAU,KAAK,QAAf,IAA2BR,GAA3B,YAA2BA,GAAG,CAAEhB,MAApC,EAA4C;AACjDuB,UAAAA,UAAU,GAAGP,GAAG,CAACiB,MAAJ,CAAW,UAAAd,CAAC;AAAA,mBAAIA,CAAC,CAACxD,EAAF,KAASoB,QAAb;AAAA,WAAZ,CAAb;AACD;;AAED,eAAOwC,UAAP;AACD,OAnFD;AAoFD,KAxLI;AA0LL7D,IAAAA,gBAAgB,EAAE,0BAAAqB,QAAQ,EAAI;AAAA;;AAC5B,UAAMvB,MAAM,GAAGR,QAAQ,CAACuD,SAAT,CAAmBxB,QAAnB,CAAf;;AAEA,UAAI,CAACvB,MAAL,EAAa;AACX,cAAM,IAAIiD,KAAJ,EAAN;AACD;;AAED,wDACEjD,MAAM,CAAC0E,aADT,oCAEElF,QAAQ,CAAC2B,OAAT,CAAiBuD,aAFnB,oBAGE1E,MAAM,CAAC2E,cAHT,oBAIE,CAAC,CAAC3E,MAAM,CAAC4E,UAJX;AAME;AACA;AAPF;AASD,KA1MI;AA4MLvE,IAAAA,qBAAqB,EAAE,+BAAAkB,QAAQ,EAAI;AAAA;;AACjC,UAAMvB,MAAM,GAAGR,QAAQ,CAACuD,SAAT,CAAmBxB,QAAnB,CAAf;;AAEA,UAAI,CAACvB,MAAL,EAAa;AACX,cAAM,IAAIiD,KAAJ,EAAN;AACD;;AAED,+CACEjD,MAAM,CAAC6E,eADT,oCAEErF,QAAQ,CAAC2B,OAAT,CAAiB0D,eAFnB,oBAGE,CAAC,CAAC7E,MAAM,CAAC4E,UAHX;AAKD,KAxNI;AA0NLnE,IAAAA,iBAAiB,EAAE,2BAAAc,QAAQ,EAAI;AAAA;;AAC7B,UAAMuD,UAAU,4BAAGtF,QAAQ,CACxB8D,QADgB,GAEhBhE,OAFa,qBAAG,sBAEPoE,IAFO,CAEF,UAAAC,CAAC;AAAA,eAAIA,CAAC,CAACxD,EAAF,KAASoB,QAAb;AAAA,OAFC,CAAnB;AAIA,aAAO,CAACuD,UAAD,GAAc,KAAd,GAAsBA,UAAU,CAACnE,IAAX,GAAkB,MAAlB,GAA2B,KAAxD;AACD,KAhOI;AAkOLJ,IAAAA,kBAAkB,EAAE,4BAAAgB,QAAQ;AAAA;;AAAA,iEAC1B/B,QAAQ,CAAC8D,QAAT,GAAoBhE,OADM,qBAC1B,uBAA6BuE,SAA7B,CAAuC,UAAAF,CAAC;AAAA,eAAIA,CAAC,CAACxD,EAAF,KAASoB,QAAb;AAAA,OAAxC,CAD0B,qCACwC,CAAC,CADzC;AAAA,KAlOvB;AAqOLF,IAAAA,YAAY,EAAE,wBAAM;AAAA;;AAClB7B,MAAAA,QAAQ,CAAC2D,UAAT,+CAAoB3D,QAAQ,CAAC2B,OAA7B,+CAAoB,kBAAkB4D,YAAtC,qBAAoB,uBAAgCzF,OAApD,oCAA+D,EAA/D;AACD,KAvOI;AAyOLwB,IAAAA,qBAAqB,EAAE,+BAACS,QAAD,EAAWR,SAAX,EAAyB;AAC9C,UAAMf,MAAM,GAAGR,QAAQ,CAACuD,SAAT,CAAmBxB,QAAnB,CAAf;;AAEA,UAAI,CAACvB,MAAL,EAAa;AACX,cAAM,IAAIiD,KAAJ,EAAN;AACD;;AAED,UAAM+B,OAAO,GAAGhF,MAAM,CAACC,UAAP,EAAhB;AAEA,UAAMgF,YAAgC,GAAG;AACvCC,QAAAA,KAAK,EAAEF,OAAO,GAAG,gBAAH,GAAsBG,SADG;AAEvCC,QAAAA,OAAO,EAAEJ,OAAO,GACZ,UAACnF,CAAD,EAAgC;AAC9BA,UAAAA,CAAC,CAACwF,OAAF;AACArF,UAAAA,MAAM,CAACU,aAAP,oBAAAV,MAAM,CAACU,aAAP,CACEyE,SADF,EAEEnF,MAAM,CAACI,eAAP,KACIZ,QAAQ,CAAC2B,OAAT,CAAiBvB,gBADrB,oBACIJ,QAAQ,CAAC2B,OAAT,CAAiBvB,gBAAjB,CAAoCC,CAApC,CADJ,GAEI,KAJN;AAMD,SATW,GAUZsF;AAZmC,OAAzC;AAeA,aAAOG,gBAAU,CAACL,YAAD,EAAelE,SAAf,CAAjB;AACD,KAlQI;AAoQLwE,IAAAA,iBAAiB,EAAEC,UAAI,CACrB;AAAA,aAAM,CACJhG,QAAQ,CAAC8D,QAAT,GAAoBhE,OADhB,EAEJE,QAAQ,CAACiC,yBAAT,EAFI,EAGJjC,QAAQ,CAAC2B,OAAT,CAAiBsE,UAHb,CAAN;AAAA,KADqB,EAMrB,UAACnG,OAAD,EAAUoG,QAAV,EAAoBC,SAApB,EAAkC;AAChC,UAAI,CAACA,SAAD,IAAc,EAACrG,OAAD,YAACA,OAAO,CAAEkD,MAAV,CAAlB,EAAoC;AAClC,eAAOkD,QAAP;AACD;;AAED,UAAIE,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,IAAyCtG,QAAQ,CAAC2B,OAAT,CAAiB4E,KAA9D,EACEC,OAAO,CAACC,IAAR,CAAa,YAAb;AAEF,aAAON,SAAS,CAACnG,QAAD,EAAWkG,QAAX,CAAhB;AACD,KAfoB,EAgBrB;AACEQ,MAAAA,GAAG,EAAE,mBADP;AAEEH,MAAAA,KAAK,EAAEvG,QAAQ,CAAC2B,OAAT,CAAiB4E,KAF1B;AAGEI,MAAAA,QAAQ,EAAE;AAAA,eAAM3G,QAAQ,CAAC4G,oBAAT,EAAN;AAAA;AAHZ,KAhBqB,CApQlB;AA2RLC,IAAAA,gBAAgB,EAAE;AAAA,aAAM7G,QAAQ,CAACiC,yBAAT,GAAqC6E,IAA3C;AAAA,KA3Rb;AA4RLC,IAAAA,oBAAoB,EAAE;AAAA,aAAM/G,QAAQ,CAACiC,yBAAT,GAAqCC,QAA3C;AAAA,KA5RjB;AA6RL8E,IAAAA,oBAAoB,EAAE;AAAA,aAAMhH,QAAQ,CAACiC,yBAAT,GAAqCgF,QAA3C;AAAA,KA7RjB;AA8RLC,IAAAA,aAAa,EAAE;AAAA,aAAMlH,QAAQ,CAAC+F,iBAAT,GAA6Be,IAAnC;AAAA,KA9RV;AA+RLK,IAAAA,iBAAiB,EAAE;AAAA,aAAMnH,QAAQ,CAAC+F,iBAAT,GAA6B7D,QAAnC;AAAA,KA/Rd;AAgSLkF,IAAAA,iBAAiB,EAAE;AAAA,aAAMpH,QAAQ,CAAC+F,iBAAT,GAA6BkB,QAAnC;AAAA;AAhSd,GAAP;AAkSD;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport { BuiltInSortType, reSplitAlphaNumeric, sortTypes } from '../sortTypes'\n\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n PropGetterValue,\n ReactTable,\n Row,\n Updater,\n} from '../types'\n\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n propGetter,\n} from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingFn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =\n {\n (\n rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n columnId: string\n ): number\n }\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortType<TSortingFns> =\n | 'auto'\n | BuiltInSortType\n | keyof TSortingFns\n | SortingFn<any, any, any, TSortingFns, any>\n\nexport type SortingColumnDef<TFilterFns> = {\n sortType?: SortType<TFilterFns>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n defaultCanSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<\n _TData,\n _TValue,\n TFilterFns,\n _TSortingFns,\n _TAggregationFns\n> = {\n sortType: SortType<TFilterFns>\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n}\n\nexport type SortingOptions<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n sortTypes?: TSortingFns\n onSortingChange?: OnChangeFn<SortingState>\n autoResetSorting?: boolean\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n sortRowsFn?: (\n instance: ReactTable<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >,\n rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: MouseEvent | TouchEvent) => boolean\n}\n\nexport type ToggleSortingProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type SortingInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n _notifySortingReset: () => void\n getColumnAutoSortingFn: (\n columnId: string\n ) => SortingFn<any, any, any, any, any> | undefined\n getColumnAutoSortDir: (columnId: string) => SortDirection\n\n getColumnSortingFn: (\n columnId: string\n ) => SortingFn<any, any, any, any, any> | undefined\n\n setSorting: (updater: Updater<SortingState>) => void\n toggleColumnSorting: (\n columnId: string,\n desc?: boolean,\n multi?: boolean\n ) => void\n resetSorting: () => void\n getColumnCanSort: (columnId: string) => boolean\n getColumnCanMultiSort: (columnId: string) => boolean\n getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'\n getColumnSortIndex: (columnId: string) => number\n getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>\n getSortedRowModel: () => RowModel<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n getPreSortedRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPreSortedFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPreSortedRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n getSortedRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getSortedFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getSortedRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n}\n\n//\n\nexport function getDefaultColumn<TFilterFns>(): SortingColumnDef<TFilterFns> {\n return {\n sortType: 'auto',\n }\n}\n\nexport function getInitialState(): SortingTableState {\n return {\n sorting: [],\n }\n}\n\nexport function getDefaultOptions<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): SortingOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n autoResetSorting: true,\n isMultiSortEvent: (e: MouseEvent | TouchEvent) => {\n return e.shiftKey\n },\n }\n}\n\nexport function createColumn<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): SortingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n sortType: column.sortType,\n getCanSort: () => instance.getColumnCanSort(column.id),\n getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),\n getSortIndex: () => instance.getColumnSortIndex(column.id),\n getIsSorted: () => instance.getColumnIsSorted(column.id),\n toggleSorting: (desc, isMulti) =>\n instance.toggleColumnSorting(column.id, desc, isMulti),\n getToggleSortingProps: userProps =>\n instance.getToggleSortingProps(column.id, userProps),\n }\n}\n\nexport function getInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): SortingInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n let registered = false\n\n return {\n _notifySortingReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetSorting\n ) {\n instance.resetSorting()\n }\n },\n getColumnAutoSortingFn: columnId => {\n const firstRows = instance.getGlobalFilteredRowModel().flatRows.slice(100)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.values[columnId]\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortTypes.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortTypes.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortTypes.text\n }\n\n return sortTypes.basic\n },\n getColumnAutoSortDir: columnId => {\n const firstRow = instance.getGlobalFilteredRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getColumnSortingFn: columnId => {\n const column = instance.getColumn(columnId)\n const userSortTypes = instance.options.sortTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.sortType)\n ? column.sortType\n : column.sortType === 'auto'\n ? instance.getColumnAutoSortingFn(columnId)\n : (userSortTypes as Record<string, any>)?.[column.sortType as string] ??\n (sortTypes[column.sortType as BuiltInSortType] as SortingFn<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >)\n },\n\n setSorting: updater =>\n instance.options.onSortingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().sorting)\n ),\n\n toggleColumnSorting: (columnId, desc, multi) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === columnId)\n const existingIndex = old?.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n const sortDescFirst =\n column.sortDescFirst ??\n instance.options.sortDescFirst ??\n instance.getColumnAutoSortDir(columnId) === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== columnId)\n }\n\n return newSorting\n })\n },\n\n getColumnCanSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableSorting ??\n instance.options.enableSorting ??\n column.defaultCanSort ??\n !!column.accessorFn\n // (!!column.accessorFn ||\n // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??\n // false\n )\n },\n\n getColumnCanMultiSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getColumnIsSorted: columnId => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === columnId)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getColumnSortIndex: columnId =>\n instance.getState().sorting?.findIndex(d => d.id === columnId) ?? -1,\n\n resetSorting: () => {\n instance.setSorting(instance.initialState?.sorting ?? [])\n },\n\n getToggleSortingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const canSort = column.getCanSort()\n\n const initialProps: ToggleSortingProps = {\n title: canSort ? 'Toggle Sorting' : undefined,\n onClick: canSort\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getSortedRowModel: memo(\n () => [\n instance.getState().sorting,\n instance.getGlobalFilteredRowModel(),\n instance.options.sortRowsFn,\n ],\n (sorting, rowModel, sortingFn) => {\n if (!sortingFn || !sorting?.length) {\n return rowModel\n }\n\n if (process.env.NODE_ENV !== 'production' && instance.options.debug)\n console.info('Sorting...')\n\n return sortingFn(instance, rowModel)\n },\n {\n key: 'getSortedRowModel',\n debug: instance.options.debug,\n onChange: () => instance._notifyGroupingReset(),\n }\n ),\n\n getPreSortedRows: () => instance.getGlobalFilteredRowModel().rows,\n getPreSortedFlatRows: () => instance.getGlobalFilteredRowModel().flatRows,\n getPreSortedRowsById: () => instance.getGlobalFilteredRowModel().rowsById,\n getSortedRows: () => instance.getSortedRowModel().rows,\n getSortedFlatRows: () => instance.getSortedRowModel().flatRows,\n getSortedRowsById: () => instance.getSortedRowModel().rowsById,\n }\n}\n"],"names":["getDefaultColumn","sortType","getInitialState","sorting","getDefaultOptions","instance","onSortingChange","makeStateUpdater","autoResetSorting","isMultiSortEvent","e","shiftKey","createColumn","column","getCanSort","getColumnCanSort","id","getCanMultiSort","getColumnCanMultiSort","getSortIndex","getColumnSortIndex","getIsSorted","getColumnIsSorted","toggleSorting","desc","isMulti","toggleColumnSorting","getToggleSortingProps","userProps","getInstance","registered","_notifySortingReset","options","autoResetAll","resetSorting","getColumnAutoSortingFn","columnId","firstRows","getGlobalFilteredRowModel","flatRows","slice","isString","row","value","values","Object","prototype","toString","call","sortTypes","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getColumnAutoSortDir","firstRow","getColumnSortingFn","getColumn","userSortTypes","Error","isFunction","setSorting","updater","functionalUpdate","getState","multi","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","enableSorting","defaultCanSort","accessorFn","enableMultiSort","columnSort","initialState","canSort","initialProps","title","undefined","onClick","persist","propGetter","getSortedRowModel","memo","sortRowsFn","rowModel","sortingFn","process","env","NODE_ENV","debug","console","info","key","onChange","_notifyGroupingReset","getPreSortedRows","rows","getPreSortedFlatRows","getPreSortedRowsById","rowsById","getSortedRows","getSortedFlatRows","getSortedRowsById"],"mappings":"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"}
|
package/build/cjs/utils.js
CHANGED
|
@@ -30,9 +30,7 @@ function makeStateUpdater(key, instance) {
|
|
|
30
30
|
return _rollupPluginBabelHelpers["extends"]({}, old, (_extends2 = {}, _extends2[key] = functionalUpdate(updater, old[key]), _extends2));
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
typeof document !== 'undefined' ? React__default["default"].useLayoutEffect : React__default["default"].useEffect;
|
|
33
|
+
}
|
|
36
34
|
function isFunction(d) {
|
|
37
35
|
return d instanceof Function;
|
|
38
36
|
}
|
|
@@ -66,19 +64,17 @@ function memo(getDeps, fn, opts) {
|
|
|
66
64
|
var result;
|
|
67
65
|
return function () {
|
|
68
66
|
var newDeps = getDeps();
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
var depsChanged = newSerializedDeps.length !== oldSerializedDeps.length || newSerializedDeps.some(function (dep, index) {
|
|
72
|
-
return oldSerializedDeps[index] !== dep;
|
|
67
|
+
var depsChanged = newDeps.length !== deps.length || newDeps.some(function (dep, index) {
|
|
68
|
+
return deps[index] !== dep;
|
|
73
69
|
});
|
|
74
70
|
|
|
75
71
|
if (depsChanged) {
|
|
76
72
|
if (opts != null && opts.debug) {
|
|
77
73
|
console.info(opts == null ? void 0 : opts.key, _rollupPluginBabelHelpers["extends"]({
|
|
78
|
-
length:
|
|
79
|
-
},
|
|
80
|
-
if (
|
|
81
|
-
return [index,
|
|
74
|
+
length: deps.length + " -> " + newDeps.length
|
|
75
|
+
}, newDeps.map(function (_, index) {
|
|
76
|
+
if (deps[index] !== newDeps[index]) {
|
|
77
|
+
return [index, deps[index], newDeps[index]];
|
|
82
78
|
}
|
|
83
79
|
|
|
84
80
|
return false;
|
|
@@ -93,15 +89,14 @@ function memo(getDeps, fn, opts) {
|
|
|
93
89
|
|
|
94
90
|
var oldResult = result;
|
|
95
91
|
result = fn.apply(void 0, newDeps);
|
|
96
|
-
deps =
|
|
92
|
+
deps = newDeps;
|
|
97
93
|
opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result, oldResult);
|
|
98
94
|
oldResult = undefined;
|
|
99
95
|
}
|
|
100
96
|
|
|
101
97
|
return result;
|
|
102
98
|
};
|
|
103
|
-
}
|
|
104
|
-
|
|
99
|
+
}
|
|
105
100
|
function flexRender(Comp, props) {
|
|
106
101
|
return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React__default["default"].createElement(Comp, props) : Comp;
|
|
107
102
|
}
|
package/build/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["import React from 'react'\nimport {\n Getter,\n NoInfer,\n PropGetterValue,\n Renderable,\n TableState,\n} from './types'\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false\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> = Omit<T, keyof U> & U\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport function functionalUpdate<TInput, TOutput = TInput>(\n updater: Updater<TInput, TOutput>,\n input: TInput\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<any, any>) => {\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\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useMountedLayoutEffect(fn: any, deps: any[]) {\n const mountedRef = React.useRef(false)\n\n safeUseLayoutEffect(() => {\n if (mountedRef.current) {\n fn()\n }\n mountedRef.current = true\n // eslint-disable-next-line\n }, deps)\n}\n\nexport function useGetLatest<T>(obj: T): () => T {\n const ref = React.useRef<T>()\n ref.current = obj\n\n return React.useCallback(() => ref.current!, [])\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\ntype PropGetterImpl = <TBaseProps, TGetter extends Getter<TBaseProps>>(\n initial: TBaseProps,\n userProps?: TGetter\n) => PropGetterValue<TBaseProps, TGetter>\n\n// @ts-ignore // Just rely on the type, not the implementation\nexport const propGetter: PropGetterImpl = (initial, getter) => {\n if (isFunction(getter)) {\n return getter(initial)\n }\n\n return {\n ...initial,\n ...(getter ?? {}),\n }\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: string\n debug?: boolean\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n const newDeps = getDeps()\n const newSerializedDeps = newDeps\n const oldSerializedDeps = deps\n\n const depsChanged =\n newSerializedDeps.length !== oldSerializedDeps.length ||\n newSerializedDeps.some(\n (dep: any, index: number) => oldSerializedDeps[index] !== dep\n )\n\n if (depsChanged) {\n if (opts?.debug) {\n console.info(opts?.key, {\n length: `${oldSerializedDeps.length} -> ${newSerializedDeps.length}`,\n ...newSerializedDeps\n .map((_, index) => {\n if (oldSerializedDeps[index] !== newSerializedDeps[index]) {\n return [\n index,\n oldSerializedDeps[index],\n newSerializedDeps[index],\n ]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, curr: any) => ({\n ...accu,\n [curr[0]]: curr.slice(1),\n }),\n {}\n ),\n parent,\n })\n }\n\n let oldResult = result\n result = fn(...newDeps)\n deps = newSerializedDeps\n opts?.onChange?.(result, oldResult)\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport type Render = typeof flexRender\n\nexport function flexRender<TProps extends {}>(\n Comp: Renderable<TProps>,\n props: TProps\n): React.ReactNode {\n return !Comp ? null : isReactComponent(Comp) ? <Comp {...props} /> : Comp\n}\n\nfunction isReactComponent(component: unknown): component is React.FC {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component: any) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component: any) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n\n// export function hashString(str: string, seed = 0): string {\n// let h1 = 0xdeadbeef ^ seed,\n// h2 = 0x41c6ce57 ^ seed\n// for (let i = 0, ch; i < str.length; i++) {\n// ch = str.charCodeAt(i)\n// h1 = Math.imul(h1 ^ ch, 2654435761)\n// h2 = Math.imul(h2 ^ ch, 1597334677)\n// }\n// h1 =\n// Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^\n// Math.imul(h2 ^ (h2 >>> 13), 3266489909)\n// h2 =\n// Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^\n// Math.imul(h1 ^ (h1 >>> 13), 3266489909)\n// return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString()\n// }\n"],"names":["functionalUpdate","updater","input","makeStateUpdater","key","instance","setState","old","document","React","useLayoutEffect","useEffect","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","propGetter","initial","getter","memo","getDeps","fn","opts","deps","result","newDeps","newSerializedDeps","oldSerializedDeps","depsChanged","some","dep","index","debug","console","info","map","_","filter","Boolean","reduce","accu","curr","slice","parent","oldResult","onChange","undefined","flexRender","Comp","props","isReactComponent","component","isClassComponent","isExoticComponent","proto","Object","getPrototypeOf","prototype","$$typeof","includes","description"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["import React from 'react'\nimport {\n Getter,\n NoInfer,\n PropGetterValue,\n Renderable,\n TableState,\n} from './types'\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false\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> = Omit<T, keyof U> & U\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport function functionalUpdate<TInput, TOutput = TInput>(\n updater: Updater<TInput, TOutput>,\n input: TInput\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<any, any>) => {\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\ntype PropGetterImpl = <TBaseProps, TGetter extends Getter<TBaseProps>>(\n initial: TBaseProps,\n userProps?: TGetter\n) => PropGetterValue<TBaseProps, TGetter>\n\n// @ts-ignore // Just rely on the type, not the implementation\nexport const propGetter: PropGetterImpl = (initial, getter) => {\n if (isFunction(getter)) {\n return getter(initial)\n }\n\n return {\n ...initial,\n ...(getter ?? {}),\n }\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: string\n debug?: boolean\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\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 if (opts?.debug) {\n console.info(opts?.key, {\n length: `${deps.length} -> ${newDeps.length}`,\n ...newDeps\n .map((_, index) => {\n if (deps[index] !== newDeps[index]) {\n return [index, deps[index], newDeps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, curr: any) => ({\n ...accu,\n [curr[0]]: curr.slice(1),\n }),\n {}\n ),\n parent,\n })\n }\n\n let oldResult = result\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\nexport type Render = typeof flexRender\n\nexport function flexRender<TProps extends {}>(\n Comp: Renderable<TProps>,\n props: TProps\n): React.ReactNode {\n return !Comp ? null : isReactComponent(Comp) ? <Comp {...props} /> : Comp\n}\n\nfunction isReactComponent(component: unknown): component is React.FC {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component: any) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component: any) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n\n// export function hashString(str: string, seed = 0): string {\n// let h1 = 0xdeadbeef ^ seed,\n// h2 = 0x41c6ce57 ^ seed\n// for (let i = 0, ch; i < str.length; i++) {\n// ch = str.charCodeAt(i)\n// h1 = Math.imul(h1 ^ ch, 2654435761)\n// h2 = Math.imul(h2 ^ ch, 1597334677)\n// }\n// h1 =\n// Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^\n// Math.imul(h2 ^ (h2 >>> 13), 3266489909)\n// h2 =\n// Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^\n// Math.imul(h1 ^ (h1 >>> 13), 3266489909)\n// return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString()\n// }\n"],"names":["functionalUpdate","updater","input","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","propGetter","initial","getter","memo","getDeps","fn","opts","deps","result","newDeps","depsChanged","some","dep","index","debug","console","info","map","_","filter","Boolean","reduce","accu","curr","slice","parent","oldResult","onChange","undefined","flexRender","Comp","props","isReactComponent","React","component","isClassComponent","isExoticComponent","proto","Object","getPrototypeOf","prototype","$$typeof","includes","description"],"mappings":"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"}
|
package/build/esm/index.js
CHANGED
|
@@ -390,9 +390,7 @@ function makeStateUpdater(key, instance) {
|
|
|
390
390
|
return _extends({}, old, (_extends2 = {}, _extends2[key] = functionalUpdate(updater, old[key]), _extends2));
|
|
391
391
|
});
|
|
392
392
|
};
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
typeof document !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
|
|
393
|
+
}
|
|
396
394
|
function isFunction(d) {
|
|
397
395
|
return d instanceof Function;
|
|
398
396
|
}
|
|
@@ -426,19 +424,17 @@ function memo(getDeps, fn, opts) {
|
|
|
426
424
|
var result;
|
|
427
425
|
return function () {
|
|
428
426
|
var newDeps = getDeps();
|
|
429
|
-
var
|
|
430
|
-
|
|
431
|
-
var depsChanged = newSerializedDeps.length !== oldSerializedDeps.length || newSerializedDeps.some(function (dep, index) {
|
|
432
|
-
return oldSerializedDeps[index] !== dep;
|
|
427
|
+
var depsChanged = newDeps.length !== deps.length || newDeps.some(function (dep, index) {
|
|
428
|
+
return deps[index] !== dep;
|
|
433
429
|
});
|
|
434
430
|
|
|
435
431
|
if (depsChanged) {
|
|
436
432
|
if (opts != null && opts.debug) {
|
|
437
433
|
console.info(opts == null ? void 0 : opts.key, _extends({
|
|
438
|
-
length:
|
|
439
|
-
},
|
|
440
|
-
if (
|
|
441
|
-
return [index,
|
|
434
|
+
length: deps.length + " -> " + newDeps.length
|
|
435
|
+
}, newDeps.map(function (_, index) {
|
|
436
|
+
if (deps[index] !== newDeps[index]) {
|
|
437
|
+
return [index, deps[index], newDeps[index]];
|
|
442
438
|
}
|
|
443
439
|
|
|
444
440
|
return false;
|
|
@@ -453,15 +449,14 @@ function memo(getDeps, fn, opts) {
|
|
|
453
449
|
|
|
454
450
|
var oldResult = result;
|
|
455
451
|
result = fn.apply(void 0, newDeps);
|
|
456
|
-
deps =
|
|
452
|
+
deps = newDeps;
|
|
457
453
|
opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result, oldResult);
|
|
458
454
|
oldResult = undefined;
|
|
459
455
|
}
|
|
460
456
|
|
|
461
457
|
return result;
|
|
462
458
|
};
|
|
463
|
-
}
|
|
464
|
-
|
|
459
|
+
}
|
|
465
460
|
function flexRender(Comp, props) {
|
|
466
461
|
return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React__default.createElement(Comp, props) : Comp;
|
|
467
462
|
}
|
|
@@ -1063,9 +1058,9 @@ function getInstance$9(instance) {
|
|
|
1063
1058
|
return (_instance$getState$gr2 = instance.getState().grouping) == null ? void 0 : _instance$getState$gr2.indexOf(columnId);
|
|
1064
1059
|
},
|
|
1065
1060
|
resetGrouping: function resetGrouping() {
|
|
1066
|
-
var _instance$
|
|
1061
|
+
var _instance$initialStat, _instance$initialStat2;
|
|
1067
1062
|
|
|
1068
|
-
instance.setGrouping((_instance$
|
|
1063
|
+
instance.setGrouping((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.grouping) != null ? _instance$initialStat : []);
|
|
1069
1064
|
},
|
|
1070
1065
|
getToggleGroupingProps: function getToggleGroupingProps(columnId, userProps) {
|
|
1071
1066
|
var column = instance.getColumn(columnId);
|
|
@@ -1288,9 +1283,9 @@ function getInstance$7(instance) {
|
|
|
1288
1283
|
return instance.options.onColumnPinningChange == null ? void 0 : instance.options.onColumnPinningChange(updater, functionalUpdate(updater, instance.getState().columnPinning));
|
|
1289
1284
|
},
|
|
1290
1285
|
resetColumnPinning: function resetColumnPinning() {
|
|
1291
|
-
var _instance$
|
|
1286
|
+
var _instance$initialStat, _instance$initialStat2;
|
|
1292
1287
|
|
|
1293
|
-
return instance.setColumnPinning((_instance$
|
|
1288
|
+
return instance.setColumnPinning((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.columnPinning) != null ? _instance$initialStat : {});
|
|
1294
1289
|
},
|
|
1295
1290
|
pinColumn: function pinColumn(columnId, position) {
|
|
1296
1291
|
var column = instance.getColumn(columnId);
|
|
@@ -2372,9 +2367,9 @@ function getInstance$5(instance) {
|
|
|
2372
2367
|
});
|
|
2373
2368
|
},
|
|
2374
2369
|
resetColumnFilters: function resetColumnFilters() {
|
|
2375
|
-
var _instance$
|
|
2370
|
+
var _instance$initialStat, _instance$initialStat2;
|
|
2376
2371
|
|
|
2377
|
-
instance.setColumnFilters((_instance$
|
|
2372
|
+
instance.setColumnFilters((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.columnFilters) != null ? _instance$initialStat : []);
|
|
2378
2373
|
},
|
|
2379
2374
|
getColumnFilteredRowModel: memo(function () {
|
|
2380
2375
|
return [instance.getState().columnFilters, instance.getCoreRowModel(), instance.options.columnFilterRowsFn];
|
|
@@ -2474,7 +2469,7 @@ function getInstance$5(instance) {
|
|
|
2474
2469
|
key: 'getGlobalFilteredRowModel',
|
|
2475
2470
|
debug: instance.options.debug,
|
|
2476
2471
|
onChange: function onChange() {
|
|
2477
|
-
|
|
2472
|
+
instance._notifySortingReset();
|
|
2478
2473
|
}
|
|
2479
2474
|
}),
|
|
2480
2475
|
getPreGlobalFilteredRows: function getPreGlobalFilteredRows() {
|
|
@@ -2861,9 +2856,9 @@ function getInstance$4(instance) {
|
|
|
2861
2856
|
})) != null ? _instance$getState$so2 : -1;
|
|
2862
2857
|
},
|
|
2863
2858
|
resetSorting: function resetSorting() {
|
|
2864
|
-
var _instance$
|
|
2859
|
+
var _instance$initialStat, _instance$initialStat2;
|
|
2865
2860
|
|
|
2866
|
-
instance.setSorting((_instance$
|
|
2861
|
+
instance.setSorting((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.sorting) != null ? _instance$initialStat : []);
|
|
2867
2862
|
},
|
|
2868
2863
|
getToggleSortingProps: function getToggleSortingProps(columnId, userProps) {
|
|
2869
2864
|
var column = instance.getColumn(columnId);
|
|
@@ -2968,13 +2963,9 @@ function getInstance$3(instance) {
|
|
|
2968
2963
|
toggleRowExpanded: function toggleRowExpanded(rowId, expanded) {
|
|
2969
2964
|
if (!rowId) return;
|
|
2970
2965
|
instance.setExpanded(function (old) {
|
|
2971
|
-
var
|
|
2972
|
-
|
|
2973
|
-
if (old === void 0) {
|
|
2974
|
-
old = {};
|
|
2975
|
-
}
|
|
2966
|
+
var _expanded;
|
|
2976
2967
|
|
|
2977
|
-
var exists = old === true ? true : !!(
|
|
2968
|
+
var exists = old === true ? true : !!(old != null && old[rowId]);
|
|
2978
2969
|
var oldExpanded = {};
|
|
2979
2970
|
|
|
2980
2971
|
if (old === true) {
|
|
@@ -3012,9 +3003,9 @@ function getInstance$3(instance) {
|
|
|
3012
3003
|
}
|
|
3013
3004
|
},
|
|
3014
3005
|
resetExpanded: function resetExpanded() {
|
|
3015
|
-
var _instance$
|
|
3006
|
+
var _instance$initialStat, _instance$initialStat2;
|
|
3016
3007
|
|
|
3017
|
-
instance.setExpanded((_instance$
|
|
3008
|
+
instance.setExpanded((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.expanded) != null ? _instance$initialStat : {});
|
|
3018
3009
|
},
|
|
3019
3010
|
getIsRowExpanded: function getIsRowExpanded(rowId) {
|
|
3020
3011
|
var _instance$options$get;
|
|
@@ -3114,7 +3105,7 @@ function getInstance$3(instance) {
|
|
|
3114
3105
|
key: 'getExpandedRowModel',
|
|
3115
3106
|
debug: instance.options.debug,
|
|
3116
3107
|
onChange: function onChange() {
|
|
3117
|
-
|
|
3108
|
+
instance._notifyPageIndexReset();
|
|
3118
3109
|
}
|
|
3119
3110
|
}),
|
|
3120
3111
|
getPreExpandedRows: function getPreExpandedRows() {
|
|
@@ -3542,9 +3533,9 @@ function getInstance$1(instance) {
|
|
|
3542
3533
|
instance.setPageIndex(0);
|
|
3543
3534
|
},
|
|
3544
3535
|
resetPageSize: function resetPageSize() {
|
|
3545
|
-
var _instance$
|
|
3536
|
+
var _instance$initialStat2, _instance$initialStat3, _instance$initialStat4;
|
|
3546
3537
|
|
|
3547
|
-
instance.setPageSize((_instance$
|
|
3538
|
+
instance.setPageSize((_instance$initialStat2 = (_instance$initialStat3 = instance.initialState) == null ? void 0 : (_instance$initialStat4 = _instance$initialStat3.pagination) == null ? void 0 : _instance$initialStat4.pageSize) != null ? _instance$initialStat2 : 10);
|
|
3548
3539
|
},
|
|
3549
3540
|
setPageSize: function setPageSize(updater) {
|
|
3550
3541
|
instance.setPagination(function (old) {
|
|
@@ -4758,9 +4749,23 @@ function createTable() {
|
|
|
4758
4749
|
},
|
|
4759
4750
|
useTable: function useTable(options) {
|
|
4760
4751
|
var instanceRef = React.useRef(undefined);
|
|
4761
|
-
var
|
|
4752
|
+
var unsafeRerender = React.useReducer(function () {
|
|
4762
4753
|
return {};
|
|
4763
4754
|
}, {})[1];
|
|
4755
|
+
var isMountedRef = React.useRef(false);
|
|
4756
|
+
var rerender = React.useCallback(function () {
|
|
4757
|
+
if (!isMountedRef.current) {
|
|
4758
|
+
return;
|
|
4759
|
+
}
|
|
4760
|
+
|
|
4761
|
+
unsafeRerender();
|
|
4762
|
+
}, []);
|
|
4763
|
+
React.useLayoutEffect(function () {
|
|
4764
|
+
isMountedRef.current = true;
|
|
4765
|
+
return function () {
|
|
4766
|
+
isMountedRef.current = false;
|
|
4767
|
+
};
|
|
4768
|
+
});
|
|
4764
4769
|
|
|
4765
4770
|
if (!instanceRef.current) {
|
|
4766
4771
|
instanceRef.current = createTableInstance(options, rerender);
|