@tanstack/table-core 8.0.0-alpha.54 → 8.0.0-alpha.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/build/cjs/core.js +9 -384
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/features/Cells.js +122 -0
  4. package/build/cjs/features/Cells.js.map +1 -0
  5. package/build/cjs/features/ColumnSizing.js +90 -37
  6. package/build/cjs/features/ColumnSizing.js.map +1 -1
  7. package/build/cjs/features/Columns.js +216 -0
  8. package/build/cjs/features/Columns.js.map +1 -0
  9. package/build/cjs/features/Expanding.js +2 -2
  10. package/build/cjs/features/Expanding.js.map +1 -1
  11. package/build/cjs/features/Filters.js +3 -3
  12. package/build/cjs/features/Filters.js.map +1 -1
  13. package/build/cjs/features/Grouping.js +2 -2
  14. package/build/cjs/features/Grouping.js.map +1 -1
  15. package/build/cjs/features/Headers.js +78 -153
  16. package/build/cjs/features/Headers.js.map +1 -1
  17. package/build/cjs/features/Ordering.js +1 -1
  18. package/build/cjs/features/Ordering.js.map +1 -1
  19. package/build/cjs/features/Pagination.js +2 -2
  20. package/build/cjs/features/Pagination.js.map +1 -1
  21. package/build/cjs/features/Pinning.js +172 -2
  22. package/build/cjs/features/Pinning.js.map +1 -1
  23. package/build/cjs/features/RowSelection.js +1 -1
  24. package/build/cjs/features/RowSelection.js.map +1 -1
  25. package/build/cjs/features/Rows.js +99 -0
  26. package/build/cjs/features/Rows.js.map +1 -0
  27. package/build/cjs/features/Sorting.js +2 -2
  28. package/build/cjs/features/Sorting.js.map +1 -1
  29. package/build/cjs/features/Visibility.js +51 -17
  30. package/build/cjs/features/Visibility.js.map +1 -1
  31. package/build/cjs/utils.js.map +1 -1
  32. package/build/esm/index.js +881 -695
  33. package/build/esm/index.js.map +1 -1
  34. package/build/stats-html.html +1 -1
  35. package/build/stats-react.json +418 -316
  36. package/build/types/core.d.ts +2 -79
  37. package/build/types/features/Cells.d.ts +14 -0
  38. package/build/types/features/ColumnSizing.d.ts +26 -18
  39. package/build/types/features/Columns.d.ts +54 -0
  40. package/build/types/features/Expanding.d.ts +2 -1
  41. package/build/types/features/Filters.d.ts +3 -1
  42. package/build/types/features/Grouping.d.ts +2 -1
  43. package/build/types/features/Headers.d.ts +3 -11
  44. package/build/types/features/Ordering.d.ts +1 -1
  45. package/build/types/features/Pagination.d.ts +2 -1
  46. package/build/types/features/Pinning.d.ts +18 -4
  47. package/build/types/features/RowSelection.d.ts +1 -1
  48. package/build/types/features/Rows.d.ts +29 -0
  49. package/build/types/features/Sorting.d.ts +2 -1
  50. package/build/types/features/Visibility.d.ts +7 -2
  51. package/build/types/types.d.ts +18 -10
  52. package/build/types/utils.d.ts +0 -1
  53. package/build/umd/index.development.js +882 -696
  54. package/build/umd/index.development.js.map +1 -1
  55. package/build/umd/index.production.js +1 -1
  56. package/build/umd/index.production.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/core.ts +28 -550
  59. package/src/features/Cells.ts +156 -0
  60. package/src/features/ColumnSizing.ts +103 -51
  61. package/src/features/Columns.ts +290 -0
  62. package/src/features/Expanding.ts +7 -3
  63. package/src/features/Filters.ts +11 -3
  64. package/src/features/Grouping.ts +3 -2
  65. package/src/features/Headers.ts +48 -138
  66. package/src/features/Ordering.ts +1 -1
  67. package/src/features/Pagination.ts +6 -2
  68. package/src/features/Pinning.ts +194 -3
  69. package/src/features/RowSelection.ts +1 -1
  70. package/src/features/Rows.ts +151 -0
  71. package/src/features/Sorting.ts +3 -2
  72. package/src/features/Visibility.ts +67 -20
  73. package/src/types.ts +25 -37
  74. package/src/utils.ts +1 -3
@@ -56,43 +56,77 @@ var Visibility = {
56
56
  }
57
57
  };
58
58
  },
59
- getInstance: function getInstance(instance) {
59
+ createRow: function createRow(row, instance) {
60
60
  return {
61
- getVisibleFlatColumns: utils.memo(function () {
62
- return [instance.getAllFlatColumns(), instance.getAllFlatColumns().filter(function (d) {
63
- return d.getIsVisible == null ? void 0 : d.getIsVisible();
61
+ _getAllVisibleCells: utils.memo(function () {
62
+ return [row.getAllCells().filter(function (cell) {
63
+ return cell.column.getIsVisible();
64
64
  }).map(function (d) {
65
65
  return d.id;
66
66
  }).join('_')];
67
- }, function (allFlatColumns) {
68
- return allFlatColumns.filter(function (d) {
69
- return d.getIsVisible == null ? void 0 : d.getIsVisible();
67
+ }, function (_) {
68
+ return row.getAllCells().filter(function (cell) {
69
+ return cell.column.getIsVisible();
70
70
  });
71
71
  }, {
72
- key: 'getVisibleFlatColumns',
72
+ key: 'row._getAllVisibleCells',
73
73
  debug: function debug() {
74
74
  var _instance$options$deb;
75
75
 
76
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugColumns;
76
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugRows;
77
77
  }
78
78
  }),
79
- getVisibleLeafColumns: utils.memo(function () {
80
- return [instance.getAllLeafColumns(), instance.getAllLeafColumns().filter(function (d) {
81
- return d.getIsVisible == null ? void 0 : d.getIsVisible();
79
+ getVisibleCells: utils.memo(function () {
80
+ return [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()];
81
+ }, function (left, center, right) {
82
+ return [].concat(left, center, right);
83
+ }, {
84
+ key: 'row.getVisibleCells',
85
+ debug: function debug() {
86
+ var _instance$options$deb2;
87
+
88
+ return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugRows;
89
+ }
90
+ })
91
+ };
92
+ },
93
+ createInstance: function createInstance(instance) {
94
+ var makeVisibleColumnsMethod = function makeVisibleColumnsMethod(key, getColumns) {
95
+ return utils.memo(function () {
96
+ return [getColumns(), getColumns().filter(function (d) {
97
+ return d.getIsVisible();
82
98
  }).map(function (d) {
83
99
  return d.id;
84
100
  }).join('_')];
85
- }, function (allFlatColumns) {
86
- return allFlatColumns.filter(function (d) {
101
+ }, function (columns) {
102
+ return columns.filter(function (d) {
87
103
  return d.getIsVisible == null ? void 0 : d.getIsVisible();
88
104
  });
89
105
  }, {
90
- key: 'getVisibleLeafColumns',
106
+ key: key,
91
107
  debug: function debug() {
92
- var _instance$options$deb2;
108
+ var _instance$options$deb3;
93
109
 
94
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugColumns;
110
+ return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugColumns;
95
111
  }
112
+ });
113
+ };
114
+
115
+ return {
116
+ getVisibleFlatColumns: makeVisibleColumnsMethod('getVisibleFlatColumns', function () {
117
+ return instance.getAllFlatColumns();
118
+ }),
119
+ getVisibleLeafColumns: makeVisibleColumnsMethod('getVisibleLeafColumns', function () {
120
+ return instance.getAllLeafColumns();
121
+ }),
122
+ getLeftVisibleLeafColumns: makeVisibleColumnsMethod('getLeftVisibleLeafColumns', function () {
123
+ return instance.getLeftLeafColumns();
124
+ }),
125
+ getRightVisibleLeafColumns: makeVisibleColumnsMethod('getRightVisibleLeafColumns', function () {
126
+ return instance.getRightLeafColumns();
127
+ }),
128
+ getCenterVisibleLeafColumns: makeVisibleColumnsMethod('getCenterVisibleLeafColumns', function () {
129
+ return instance.getCenterLeafColumns();
96
130
  }),
97
131
  setColumnVisibility: function setColumnVisibility(updater) {
98
132
  return instance.options.onColumnVisibilityChange == null ? void 0 : instance.options.onColumnVisibilityChange(updater);
@@ -1 +1 @@
1
- {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n TableGenerics,\n PropGetterValue,\n TableInstance,\n Updater,\n} from '../types'\nimport { makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityInstance<TGenerics extends TableGenerics> = {\n getVisibleFlatColumns: () => Column<TGenerics>[]\n getVisibleLeafColumns: () => Column<TGenerics>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n toggleColumnVisibility: (columnId: string, value?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getColumnIsVisible: (columId: string) => boolean\n getColumnCanHide: (columnId: string) => boolean\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityProps: <\n TGetter extends Getter<ToggleAllColumnsVisibilityProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleAllColumnsVisibilityProps, TGetter>\n}\n\ntype ToggleVisibilityProps = {}\ntype ToggleAllColumnsVisibilityProps = {}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n defaultCanHide?: boolean\n defaultIsVisible?: boolean\n}\n\nexport type VisibilityRow<TGenerics extends TableGenerics> = {\n getVisibleCells: () => Cell<TGenerics>[]\n}\n\nexport type VisibilityColumn = {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityProps: <TGetter extends Getter<ToggleVisibilityProps>>(\n userProps?: TGetter\n ) => PropGetterValue<ToggleVisibilityProps, TGetter>\n}\n\n//\n\nexport const Visibility = {\n getInitialState: (): VisibilityTableState => {\n return {\n columnVisibility: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance),\n }\n },\n\n getDefaultColumn: () => {\n return {\n defaultIsVisible: true,\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityColumn => {\n return {\n getCanHide: () => instance.getColumnCanHide(column.id),\n getIsVisible: () => instance.getColumnIsVisible(column.id),\n toggleVisibility: value =>\n instance.toggleColumnVisibility(column.id, value),\n getToggleVisibilityProps: userProps => {\n const props: ToggleVisibilityProps = {\n type: 'checkbox',\n checked: column.getIsVisible?.(),\n title: 'Toggle Column Visibility',\n onChange: (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n },\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n\n getInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityInstance<TGenerics> => {\n return {\n getVisibleFlatColumns: memo(\n () => [\n instance.getAllFlatColumns(),\n instance\n .getAllFlatColumns()\n .filter(d => d.getIsVisible?.())\n .map(d => d.id)\n .join('_'),\n ],\n allFlatColumns => {\n return allFlatColumns.filter(d => d.getIsVisible?.())\n },\n {\n key: 'getVisibleFlatColumns',\n debug: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n getVisibleLeafColumns: memo(\n () => [\n instance.getAllLeafColumns(),\n instance\n .getAllLeafColumns()\n .filter(d => d.getIsVisible?.())\n .map(d => d.id)\n .join('_'),\n ],\n allFlatColumns => {\n return allFlatColumns.filter(d => d.getIsVisible?.())\n },\n {\n key: 'getVisibleLeafColumns',\n debug: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n setColumnVisibility: updater =>\n instance.options.onColumnVisibilityChange?.(updater),\n\n toggleColumnVisibility: (columnId, value) => {\n if (!columnId) return\n\n if (instance.getColumnCanHide(columnId)) {\n instance.setColumnVisibility(old => ({\n ...old,\n [columnId]: value ?? !instance.getColumnIsVisible(columnId),\n }))\n }\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !instance.getIsAllColumnsVisible()\n\n instance.setColumnVisibility(\n instance.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getColumnIsVisible: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.getState().columnVisibility?.[columnId] ??\n column.defaultIsVisible ??\n true\n )\n },\n\n getColumnCanHide: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.options.enableHiding ??\n column.enableHiding ??\n column.defaultCanHide ??\n true\n )\n },\n\n getIsAllColumnsVisible: () =>\n !instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n instance.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityProps: userProps => {\n const props: ToggleAllColumnsVisibilityProps = {\n onChange: (e: MouseEvent) => {\n instance.toggleAllColumnsVisible(\n (e.target as HTMLInputElement)?.checked\n )\n },\n type: 'checkbox',\n title: 'Toggle visibility for all columns',\n checked: instance.getIsAllColumnsVisible(),\n indeterminate:\n !instance.getIsAllColumnsVisible() &&\n instance.getIsSomeColumnsVisible()\n ? 'indeterminate'\n : undefined,\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","columnVisibility","getDefaultOptions","instance","onColumnVisibilityChange","makeStateUpdater","getDefaultColumn","defaultIsVisible","createColumn","column","getCanHide","getColumnCanHide","id","getIsVisible","getColumnIsVisible","toggleVisibility","value","toggleColumnVisibility","getToggleVisibilityProps","userProps","props","type","checked","title","onChange","e","target","propGetter","getInstance","getVisibleFlatColumns","memo","getAllFlatColumns","filter","d","map","join","allFlatColumns","key","debug","options","debugAll","debugColumns","getVisibleLeafColumns","getAllLeafColumns","setColumnVisibility","updater","columnId","old","_extends","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","getColumn","Error","getState","enableHiding","defaultCanHide","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityProps","indeterminate","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n TableGenerics,\n PropGetterValue,\n TableInstance,\n Updater,\n Row,\n} from '../types'\nimport { makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityInstance<TGenerics extends TableGenerics> = {\n getVisibleFlatColumns: () => Column<TGenerics>[]\n getVisibleLeafColumns: () => Column<TGenerics>[]\n getLeftVisibleLeafColumns: () => Column<TGenerics>[]\n getRightVisibleLeafColumns: () => Column<TGenerics>[]\n getCenterVisibleLeafColumns: () => Column<TGenerics>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n toggleColumnVisibility: (columnId: string, value?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getColumnIsVisible: (columId: string) => boolean\n getColumnCanHide: (columnId: string) => boolean\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityProps: <\n TGetter extends Getter<ToggleAllColumnsVisibilityProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleAllColumnsVisibilityProps, TGetter>\n}\n\ntype ToggleVisibilityProps = {}\ntype ToggleAllColumnsVisibilityProps = {}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n defaultCanHide?: boolean\n defaultIsVisible?: boolean\n}\n\nexport type VisibilityRow<TGenerics extends TableGenerics> = {\n _getAllVisibleCells: () => Cell<TGenerics>[]\n getVisibleCells: () => Cell<TGenerics>[]\n}\n\nexport type VisibilityColumn = {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityProps: <TGetter extends Getter<ToggleVisibilityProps>>(\n userProps?: TGetter\n ) => PropGetterValue<ToggleVisibilityProps, TGetter>\n}\n\n//\n\nexport const Visibility = {\n getInitialState: (): VisibilityTableState => {\n return {\n columnVisibility: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance),\n }\n },\n\n getDefaultColumn: () => {\n return {\n defaultIsVisible: true,\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityColumn => {\n return {\n getCanHide: () => instance.getColumnCanHide(column.id),\n getIsVisible: () => instance.getColumnIsVisible(column.id),\n toggleVisibility: value =>\n instance.toggleColumnVisibility(column.id, value),\n getToggleVisibilityProps: userProps => {\n const props: ToggleVisibilityProps = {\n type: 'checkbox',\n checked: column.getIsVisible?.(),\n title: 'Toggle Column Visibility',\n onChange: (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n },\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityRow<TGenerics> => {\n return {\n _getAllVisibleCells: memo(\n () => [\n row\n .getAllCells()\n .filter(cell => cell.column.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n _ => {\n return row.getAllCells().filter(cell => cell.column.getIsVisible())\n },\n {\n key: 'row._getAllVisibleCells',\n debug: () => instance.options.debugAll ?? instance.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: 'row.getVisibleCells',\n debug: () => instance.options.debugAll ?? instance.options.debugRows,\n }\n ),\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityInstance<TGenerics> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TGenerics>[]\n ): (() => Column<TGenerics>[]) => {\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: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => instance.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => instance.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => instance.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => instance.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => instance.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n instance.options.onColumnVisibilityChange?.(updater),\n\n toggleColumnVisibility: (columnId, value) => {\n if (!columnId) return\n\n if (instance.getColumnCanHide(columnId)) {\n instance.setColumnVisibility(old => ({\n ...old,\n [columnId]: value ?? !instance.getColumnIsVisible(columnId),\n }))\n }\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !instance.getIsAllColumnsVisible()\n\n instance.setColumnVisibility(\n instance.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getColumnIsVisible: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.getState().columnVisibility?.[columnId] ??\n column.defaultIsVisible ??\n true\n )\n },\n\n getColumnCanHide: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.options.enableHiding ??\n column.enableHiding ??\n column.defaultCanHide ??\n true\n )\n },\n\n getIsAllColumnsVisible: () =>\n !instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n instance.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityProps: userProps => {\n const props: ToggleAllColumnsVisibilityProps = {\n onChange: (e: MouseEvent) => {\n instance.toggleAllColumnsVisible(\n (e.target as HTMLInputElement)?.checked\n )\n },\n type: 'checkbox',\n title: 'Toggle visibility for all columns',\n checked: instance.getIsAllColumnsVisible(),\n indeterminate:\n !instance.getIsAllColumnsVisible() &&\n instance.getIsSomeColumnsVisible()\n ? 'indeterminate'\n : undefined,\n }\n\n return propGetter(props, userProps)\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","columnVisibility","getDefaultOptions","instance","onColumnVisibilityChange","makeStateUpdater","getDefaultColumn","defaultIsVisible","createColumn","column","getCanHide","getColumnCanHide","id","getIsVisible","getColumnIsVisible","toggleVisibility","value","toggleColumnVisibility","getToggleVisibilityProps","userProps","props","type","checked","title","onChange","e","target","propGetter","createRow","row","_getAllVisibleCells","memo","getAllCells","filter","cell","map","d","join","_","key","debug","options","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createInstance","makeVisibleColumnsMethod","getColumns","columns","debugColumns","getVisibleFlatColumns","getAllFlatColumns","getVisibleLeafColumns","getAllLeafColumns","getLeftVisibleLeafColumns","getLeftLeafColumns","getRightVisibleLeafColumns","getRightLeafColumns","getCenterVisibleLeafColumns","getCenterLeafColumns","setColumnVisibility","updater","columnId","old","_extends","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","getColumn","Error","getState","enableHiding","defaultCanHide","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityProps","indeterminate","undefined"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { Getter, NoInfer, PropGetterValue, TableState, Updater } 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 extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N\n\n// export type DefinedGenericKeys<T extends TableGenerics> = {\n// [K in keyof T]: 0 extends 1 & T[K] ? never : T[K] extends {} ? K : never\n// }[keyof T]\n\n// export type DefinedGenerics<T extends TableGenerics> = Pick<\n// T,\n// DefinedGenericKeys<T>\n// >\n\nexport type DataUpdateFunction<T> = (input: T) => T\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<T>)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function getBatchGroups<T>(arr: T[], count: number) {\n const groups: { start: number; end: number; items: T[] }[] = [\n {\n start: 0,\n end: count - 1,\n items: [],\n },\n ]\n\n let groupIndex = 0\n let group = groups[groupIndex]\n\n for (let i = 0; i < arr.length; i++) {\n if (i > group.end) {\n groupIndex++\n groups[groupIndex] = {\n start: i,\n end: i + count - 1,\n items: [],\n }\n }\n group = groups[groupIndex]\n const item = arr[i]\n group.items.push(item)\n }\n\n return groups\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<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?: () => any\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n let oldResult = result\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime =\n Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n 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, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\ntype WorkFn = () => void\n\nexport function incrementalMemo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,\n schedule: (\n ...args: NoInfer<[...TDeps]>\n ) => (resultRef: {\n current: TResult\n }) => (scheduler: (workFn: WorkFn) => void) => void,\n opts: {\n key: string\n onProgress: (\n progress: number,\n nextResult: TResult,\n result?: TResult\n ) => void\n onChange: (result: TResult, previousResult?: TResult) => void\n initialSync?: boolean\n timeout?: number\n debug?: () => any\n }\n): () => TResult {\n let oldDeps: any[]\n let deps: any[]\n let result: TResult | undefined\n let nextResultRef: { current: TResult }\n let tasks: WorkFn[] = []\n let totalTaskCount = 0\n let resultStartTime: number\n let batchIndex = 0\n let progress = 0\n let working = false\n let callback: ReturnType<typeof requestIdleCallback>\n\n const timeout = opts.timeout ?? 100\n\n const onProgress = (latestResult: TResult, previousResult?: TResult) => {\n progress = 1 - tasks.length / totalTaskCount\n opts.onProgress(progress, latestResult, previousResult)\n }\n\n return () => {\n const scheduleFn = (workFn: WorkFn) => {\n totalTaskCount++\n tasks.push(workFn)\n }\n\n const newDeps = getDeps()\n\n let first = false\n\n if (!deps) {\n first = true\n deps = []\n result = getInitialValue(...newDeps)\n }\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n cancelIdleCallback(callback)\n oldDeps = deps\n deps = newDeps\n totalTaskCount = 0\n tasks = []\n nextResultRef = { current: getInitialValue(...newDeps) }\n resultStartTime = Date.now()\n schedule(...newDeps)(nextResultRef)(scheduleFn)\n }\n\n const commitResult = () => {\n cancelIdleCallback(callback)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const resultEndTime =\n Math.round((Date.now() - resultStartTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / batchIndex / 16\n\n console.info(\n `%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(\n resultEndTime / batchIndex\n )} ms/task`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${oldDeps.length} -> ${deps.length}`,\n ...deps\n .map((_, index) => {\n if (oldDeps[index] !== deps[index]) {\n return [index, oldDeps[index], deps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n working = false\n let previousResult = result\n result = nextResultRef.current\n onProgress(result, previousResult)\n opts.onChange(result, previousResult)\n }\n\n if (opts.initialSync && first) {\n batchIndex = 1\n first = false\n for (let i = 0; i < tasks.length; i++) {\n tasks[i]()\n }\n tasks = []\n commitResult()\n } else if (!working && tasks.length) {\n cancelIdleCallback(callback)\n working = true\n batchIndex = 0\n\n const workLoop = (deadline: any) => {\n while (tasks.length && deadline.timeRemaining() > 0) {\n tasks.shift()!()\n }\n\n if (!tasks.length) {\n commitResult()\n } else {\n ++batchIndex\n onProgress(nextResultRef.current, result)\n callback = requestIdleCallback(workLoop, { timeout })\n }\n }\n\n callback = requestIdleCallback(workLoop, { timeout })\n }\n\n return result!\n }\n}\n\n// opts?.onChange?.(result, oldResult)\n"],"names":["functionalUpdate","updater","input","noop","getBatchGroups","arr","count","groups","start","end","items","groupIndex","group","i","length","item","push","makeStateUpdater","key","instance","setState","old","_extends","isFunction","d","Function","flattenBy","getChildren","flat","recurse","subArr","forEach","children","propGetter","initial","getter","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","oldResult","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","map","_","filter","Boolean","reduce","accu","a","b","parent","undefined","incrementalMemo","getInitialValue","schedule","oldDeps","nextResultRef","tasks","totalTaskCount","resultStartTime","batchIndex","progress","working","callback","timeout","onProgress","latestResult","previousResult","scheduleFn","workFn","first","cancelIdleCallback","current","commitResult","initialSync","workLoop","deadline","timeRemaining","shift","requestIdleCallback"],"mappings":";;;;;;;;;;;;;;;;AAcA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIO,SAASA,gBAAT,CAA6BC,OAA7B,EAAkDC,KAAlD,EAA+D;AACpE,EAAO,OAAA,OAAOD,OAAP,KAAmB,UAAnB,GACFA,OAAD,CAAmCC,KAAnC,CADG,GAEHD,OAFJ,CAAA;AAGD,CAAA;AAEM,SAASE,IAAT,GAAgB;AAEtB,CAAA;AAEM,SAASC,cAAT,CAA2BC,GAA3B,EAAqCC,KAArC,EAAoD;AACzD,EAAMC,IAAAA,MAAoD,GAAG,CAC3D;AACEC,IAAAA,KAAK,EAAE,CADT;AAEEC,IAAAA,GAAG,EAAEH,KAAK,GAAG,CAFf;AAGEI,IAAAA,KAAK,EAAE,EAAA;AAHT,GAD2D,CAA7D,CAAA;AAQA,EAAIC,IAAAA,UAAU,GAAG,CAAjB,CAAA;AACA,EAAA,IAAIC,KAAK,GAAGL,MAAM,CAACI,UAAD,CAAlB,CAAA;;AAEA,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,GAAG,CAACS,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,IAAA,IAAIA,CAAC,GAAGD,KAAK,CAACH,GAAd,EAAmB;AACjBE,MAAAA,UAAU,EAAA,CAAA;AACVJ,MAAAA,MAAM,CAACI,UAAD,CAAN,GAAqB;AACnBH,QAAAA,KAAK,EAAEK,CADY;AAEnBJ,QAAAA,GAAG,EAAEI,CAAC,GAAGP,KAAJ,GAAY,CAFE;AAGnBI,QAAAA,KAAK,EAAE,EAAA;AAHY,OAArB,CAAA;AAKD,KAAA;;AACDE,IAAAA,KAAK,GAAGL,MAAM,CAACI,UAAD,CAAd,CAAA;AACA,IAAA,IAAMI,KAAI,GAAGV,GAAG,CAACQ,CAAD,CAAhB,CAAA;AACAD,IAAAA,KAAK,CAACF,KAAN,CAAYM,IAAZ,CAAiBD,KAAjB,CAAA,CAAA;AACD,GAAA;;AAED,EAAA,OAAOR,MAAP,CAAA;AACD,CAAA;AAEM,SAASU,gBAAT,CAA0BC,GAA1B,EAAiDC,QAAjD,EAAoE;AACzE,EAAO,OAAA,UAAClB,OAAD,EAA2B;AAC9BkB,IAAAA,QAAD,CAAkBC,QAAlB,CAA2B,UAAcC,GAAd,EAAmC;AAAA,MAAA,IAAA,SAAA,CAAA;;AAC7D,MAAA,OAAAC,oCAAA,CAAA,EAAA,EACKD,GADL,GAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CAEGH,GAFH,CAAA,GAESlB,gBAAgB,CAACC,OAAD,EAAWoB,GAAD,CAAaH,GAAb,CAAV,CAFzB,EAAA,SAAA,EAAA,CAAA;AAID,KALA,CAAA,CAAA;AAMF,GAPD,CAAA;AAQD,CAAA;AAIM,SAASK,UAAT,CAA2CC,CAA3C,EAA2D;AAChE,EAAOA,OAAAA,CAAC,YAAYC,QAApB,CAAA;AACD,CAAA;AAEM,SAASC,SAAT,CACLrB,GADK,EAELsB,WAFK,EAGL;AACA,EAAMC,IAAAA,IAAa,GAAG,EAAtB,CAAA;;AAEA,EAAA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,MAAD,EAAqB;AACnCA,IAAAA,MAAM,CAACC,OAAP,CAAe,UAAAhB,IAAI,EAAI;AACrBa,MAAAA,IAAI,CAACZ,IAAL,CAAUD,IAAV,CAAA,CAAA;AACA,MAAA,IAAMiB,QAAQ,GAAGL,WAAW,CAACZ,IAAD,CAA5B,CAAA;;AACA,MAAA,IAAIiB,QAAJ,IAAA,IAAA,IAAIA,QAAQ,CAAElB,MAAd,EAAsB;AACpBe,QAAAA,OAAO,CAACG,QAAD,CAAP,CAAA;AACD,OAAA;AACF,KAND,CAAA,CAAA;AAOD,GARD,CAAA;;AAUAH,EAAAA,OAAO,CAACxB,GAAD,CAAP,CAAA;AAEA,EAAA,OAAOuB,IAAP,CAAA;AACD,CAAA;AAOD;AACO,IAAMK,UAA0B,GAAG,SAA7BA,UAA6B,CAACC,OAAD,EAAUC,MAAV,EAAqB;AAC7D,EAAA,IAAIZ,UAAU,CAACY,MAAD,CAAd,EAAwB;AACtB,IAAOA,OAAAA,MAAM,CAACD,OAAD,CAAb,CAAA;AACD,GAAA;;AAED,EAAA,OAAAZ,oCAAA,CAAA,EAAA,EACKY,OADL,EAEMC,MAFN,IAEMA,IAAAA,GAAAA,MAFN,GAEgB,EAFhB,CAAA,CAAA;AAID,EATM;AAWA,SAASC,IAAT,CACLC,OADK,EAELC,EAFK,EAGLC,IAHK,EAQU;AACf,EAAIC,IAAAA,IAAW,GAAG,EAAlB,CAAA;AACA,EAAA,IAAIC,MAAJ,CAAA;AAEA,EAAA,OAAO,YAAM;AACX,IAAA,IAAIC,OAAJ,CAAA;AACA,IAAA,IAAIH,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4BD,OAAO,GAAGE,IAAI,CAACC,GAAL,EAAV,CAAA;AAE5B,IAAMC,IAAAA,OAAO,GAAGT,OAAO,EAAvB,CAAA;AAEA,IAAA,IAAMU,WAAW,GACfD,OAAO,CAAChC,MAAR,KAAmB0B,IAAI,CAAC1B,MAAxB,IACAgC,OAAO,CAACE,IAAR,CAAa,UAACC,GAAD,EAAWC,KAAX,EAAA;AAAA,MAAA,OAA6BV,IAAI,CAACU,KAAD,CAAJ,KAAgBD,GAA7C,CAAA;AAAA,KAAb,CAFF,CAAA;;AAIA,IAAA,IAAIF,WAAJ,EAAiB;AACf,MAAII,IAAAA,SAAS,GAAGV,MAAhB,CAAA;AACA,MAAA,IAAIW,UAAJ,CAAA;AACA,MAAA,IAAIb,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4BS,UAAU,GAAGR,IAAI,CAACC,GAAL,EAAb,CAAA;AAC5BJ,MAAAA,MAAM,GAAGH,EAAE,CAAF,KAAA,CAAA,KAAA,CAAA,EAAMQ,OAAN,CAAT,CAAA;AACAN,MAAAA,IAAI,GAAGM,OAAP,CAAA;AACAP,MAAAA,IAAI,IAAA,IAAJ,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEc,QAAN,IAAAd,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEc,QAAN,CAAiBZ,MAAjB,EAAyBU,SAAzB,CAAA,CAAA;;AAEA,MAAA,IAAIZ,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4B;AAC1B,QAAA,IAAIJ,IAAJ,IAAIA,IAAAA,IAAAA,IAAI,CAAEI,KAAN,EAAJ,EAAmB;AACjB,UAAA,IAAMW,UAAU,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,EAAaH,GAAAA,OAAd,IAA0B,GAArC,IAA4C,GAA/D,CAAA;AACA,UAAA,IAAMe,aAAa,GACjBF,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,EAAaO,GAAAA,UAAd,IAA6B,GAAxC,IAA+C,GADjD,CAAA;AAEA,UAAA,IAAMM,mBAAmB,GAAGD,aAAa,GAAG,EAA5C,CAAA;;AAEA,UAAME,IAAAA,GAAG,GAAG,SAANA,GAAM,CAACC,GAAD,EAAuBC,GAAvB,EAAuC;AACjDD,YAAAA,GAAG,GAAGE,MAAM,CAACF,GAAD,CAAZ,CAAA;;AACA,YAAA,OAAOA,GAAG,CAAC9C,MAAJ,GAAa+C,GAApB,EAAyB;AACvBD,cAAAA,GAAG,GAAG,GAAA,GAAMA,GAAZ,CAAA;AACD,aAAA;;AACD,YAAA,OAAOA,GAAP,CAAA;AACD,WAND,CAAA;;AAQAG,UAAAA,OAAO,CAACC,IAAR,eACSL,GAAG,CAACF,aAAD,EAAgB,CAAhB,CADZ,GAAA,IAAA,GACmCE,GAAG,CAACL,UAAD,EAAa,CAAb,CADtC,uGAKeC,IAAI,CAACU,GAAL,CACX,CADW,EAEXV,IAAI,CAACW,GAAL,CAAS,MAAM,GAAMR,GAAAA,mBAArB,EAA0C,GAA1C,CAFW,CALf,GAAA,gBAAA,EASEnB,IATF,IASEA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAErB,GATR,EAAAI,oCAAA,CAAA;AAWIR,YAAAA,MAAM,EAAK0B,IAAI,CAAC1B,MAAV,GAAA,MAAA,GAAuBgC,OAAO,CAAChC,MAAAA;AAXzC,WAYOgC,EAAAA,OAAO,CACPqB,GADA,CACI,UAACC,CAAD,EAAIlB,KAAJ,EAAc;AACjB,YAAIV,IAAAA,IAAI,CAACU,KAAD,CAAJ,KAAgBJ,OAAO,CAACI,KAAD,CAA3B,EAAoC;AAClC,cAAA,OAAO,CAACA,KAAD,EAAQV,IAAI,CAACU,KAAD,CAAZ,EAAqBJ,OAAO,CAACI,KAAD,CAA5B,CAAP,CAAA;AACD,aAAA;;AAED,YAAA,OAAO,KAAP,CAAA;AACD,WAPA,CAAA,CAQAmB,MARA,CAQOC,OARP,EASAC,MATA,CAUC,UAACC,IAAD,EAAA,IAAA,EAAA;AAAA,YAAA,IAAA,SAAA,CAAA;;AAAA,YAAA,IAAQC,CAAR,GAAA,IAAA,CAAA,CAAA,CAAA;AAAA,gBAAWC,CAAX,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,OAAApD,oCAAA,CAAA,EAAA,EACKkD,IADL,GAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CAEGC,CAFH,CAAA,GAEOC,CAFP,EAAA,SAAA,EAAA,CAAA;AAAA,WAVD,EAcC,EAdD,CAZP,EAAA;AA4BIC,YAAAA,MAAM,EAANA,MAAAA;AA5BJ,WAAA,CAAA,CAAA,CAAA;AA+BD,SAAA;AACF,OAAA;;AAEDxB,MAAAA,SAAS,GAAGyB,SAAZ,CAAA;AACD,KAAA;;AAED,IAAA,OAAOnC,MAAP,CAAA;AACD,GAvED,CAAA;AAwED,CAAA;AAIM,SAASoC,eAAT,CACLxC,OADK,EAELyC,eAFK,EAGLC,QAHK,EAQLxC,IARK,EAoBU;AAAA,EAAA,IAAA,aAAA,CAAA;;AACf,EAAA,IAAIyC,OAAJ,CAAA;AACA,EAAA,IAAIxC,IAAJ,CAAA;AACA,EAAA,IAAIC,MAAJ,CAAA;AACA,EAAA,IAAIwC,aAAJ,CAAA;AACA,EAAIC,IAAAA,KAAe,GAAG,EAAtB,CAAA;AACA,EAAIC,IAAAA,cAAc,GAAG,CAArB,CAAA;AACA,EAAA,IAAIC,eAAJ,CAAA;AACA,EAAIC,IAAAA,UAAU,GAAG,CAAjB,CAAA;AACA,EAAIC,IAAAA,QAAQ,GAAG,CAAf,CAAA;AACA,EAAIC,IAAAA,OAAO,GAAG,KAAd,CAAA;AACA,EAAA,IAAIC,QAAJ,CAAA;AAEA,EAAA,IAAMC,OAAO,GAAGlD,CAAAA,aAAAA,GAAAA,IAAI,CAACkD,OAAR,4BAAmB,GAAhC,CAAA;;AAEA,EAAMC,IAAAA,UAAU,GAAG,SAAbA,UAAa,CAACC,YAAD,EAAwBC,cAAxB,EAAqD;AACtEN,IAAAA,QAAQ,GAAG,CAAA,GAAIJ,KAAK,CAACpE,MAAN,GAAeqE,cAA9B,CAAA;AACA5C,IAAAA,IAAI,CAACmD,UAAL,CAAgBJ,QAAhB,EAA0BK,YAA1B,EAAwCC,cAAxC,CAAA,CAAA;AACD,GAHD,CAAA;;AAKA,EAAA,OAAO,YAAM;AACX,IAAA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,MAAD,EAAoB;AACrCX,MAAAA,cAAc,EAAA,CAAA;AACdD,MAAAA,KAAK,CAAClE,IAAN,CAAW8E,MAAX,CAAA,CAAA;AACD,KAHD,CAAA;;AAKA,IAAMhD,IAAAA,OAAO,GAAGT,OAAO,EAAvB,CAAA;AAEA,IAAI0D,IAAAA,KAAK,GAAG,KAAZ,CAAA;;AAEA,IAAI,IAAA,CAACvD,IAAL,EAAW;AACTuD,MAAAA,KAAK,GAAG,IAAR,CAAA;AACAvD,MAAAA,IAAI,GAAG,EAAP,CAAA;AACAC,MAAAA,MAAM,GAAGqC,eAAe,CAAf,KAAA,CAAA,KAAA,CAAA,EAAmBhC,OAAnB,CAAT,CAAA;AACD,KAAA;;AAED,IAAA,IAAMC,WAAW,GACfD,OAAO,CAAChC,MAAR,KAAmB0B,IAAI,CAAC1B,MAAxB,IACAgC,OAAO,CAACE,IAAR,CAAa,UAACC,GAAD,EAAWC,KAAX,EAAA;AAAA,MAAA,OAA6BV,IAAI,CAACU,KAAD,CAAJ,KAAgBD,GAA7C,CAAA;AAAA,KAAb,CAFF,CAAA;;AAIA,IAAA,IAAIF,WAAJ,EAAiB;AACfiD,MAAAA,kBAAkB,CAACR,QAAD,CAAlB,CAAA;AACAR,MAAAA,OAAO,GAAGxC,IAAV,CAAA;AACAA,MAAAA,IAAI,GAAGM,OAAP,CAAA;AACAqC,MAAAA,cAAc,GAAG,CAAjB,CAAA;AACAD,MAAAA,KAAK,GAAG,EAAR,CAAA;AACAD,MAAAA,aAAa,GAAG;AAAEgB,QAAAA,OAAO,EAAEnB,eAAe,CAAA,KAAf,SAAmBhC,OAAnB,CAAA;AAAX,OAAhB,CAAA;AACAsC,MAAAA,eAAe,GAAGxC,IAAI,CAACC,GAAL,EAAlB,CAAA;AACAkC,MAAAA,QAAQ,CAAR,KAAA,CAAA,KAAA,CAAA,EAAYjC,OAAZ,CAAqBmC,CAAAA,aAArB,EAAoCY,UAApC,CAAA,CAAA;AACD,KAAA;;AAED,IAAA,IAAMK,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBF,MAAAA,kBAAkB,CAACR,QAAD,CAAlB,CAAA;;AAEA,MAAA,IAAIjD,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4B;AAC1B,QAAA,IAAIJ,IAAJ,IAAIA,IAAAA,IAAAA,IAAI,CAAEI,KAAN,EAAJ,EAAmB;AACjB,UAAA,IAAMc,aAAa,GACjBF,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,EAAauC,GAAAA,eAAd,IAAkC,GAA7C,IAAoD,GADtD,CAAA;AAEA,UAAA,IAAM1B,mBAAmB,GAAGD,aAAa,GAAG4B,UAAhB,GAA6B,EAAzD,CAAA;AAEAtB,UAAAA,OAAO,CAACC,IAAR,CACSP,WAAAA,GAAAA,aADT,cAC+B4B,UAD/B,GAAA,WAAA,GACqD9B,IAAI,CAACC,KAAL,CACjDC,aAAa,GAAG4B,UADiC,CADrD,0FAOS9B,IAAI,CAACU,GAAL,CACX,CADW,EAEXV,IAAI,CAACW,GAAL,CAAS,MAAM,GAAMR,GAAAA,mBAArB,EAA0C,GAA1C,CAFW,CAPT,GAAA,gBAAA,EAWEnB,IAXF,IAWEA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAErB,GAXR,EAAAI,oCAAA,CAAA;AAaIR,YAAAA,MAAM,EAAKkE,OAAO,CAAClE,MAAb,GAAA,MAAA,GAA0B0B,IAAI,CAAC1B,MAAAA;AAbzC,WAcO0B,EAAAA,IAAI,CACJ2B,GADA,CACI,UAACC,CAAD,EAAIlB,KAAJ,EAAc;AACjB,YAAI8B,IAAAA,OAAO,CAAC9B,KAAD,CAAP,KAAmBV,IAAI,CAACU,KAAD,CAA3B,EAAoC;AAClC,cAAA,OAAO,CAACA,KAAD,EAAQ8B,OAAO,CAAC9B,KAAD,CAAf,EAAwBV,IAAI,CAACU,KAAD,CAA5B,CAAP,CAAA;AACD,aAAA;;AAED,YAAA,OAAO,KAAP,CAAA;AACD,WAPA,CAAA,CAQAmB,MARA,CAQOC,OARP,EASAC,MATA,CAUC,UAACC,IAAD,EAAA,KAAA,EAAA;AAAA,YAAA,IAAA,SAAA,CAAA;;AAAA,YAAA,IAAQC,CAAR,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,gBAAWC,CAAX,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,OAAApD,oCAAA,CAAA,EAAA,EACKkD,IADL,GAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CAEGC,CAFH,CAAA,GAEOC,CAFP,EAAA,SAAA,EAAA,CAAA;AAAA,WAVD,EAcC,EAdD,CAdP,EAAA;AA8BIC,YAAAA,MAAM,EAANA,MAAAA;AA9BJ,WAAA,CAAA,CAAA,CAAA;AAiCD,SAAA;AACF,OAAA;;AAEDY,MAAAA,OAAO,GAAG,KAAV,CAAA;AACA,MAAIK,IAAAA,cAAc,GAAGnD,MAArB,CAAA;AACAA,MAAAA,MAAM,GAAGwC,aAAa,CAACgB,OAAvB,CAAA;AACAP,MAAAA,UAAU,CAACjD,MAAD,EAASmD,cAAT,CAAV,CAAA;AACArD,MAAAA,IAAI,CAACc,QAAL,CAAcZ,MAAd,EAAsBmD,cAAtB,CAAA,CAAA;AACD,KAlDD,CAAA;;AAoDA,IAAA,IAAIrD,IAAI,CAAC4D,WAAL,IAAoBJ,KAAxB,EAA+B;AAC7BV,MAAAA,UAAU,GAAG,CAAb,CAAA;AACAU,MAAAA,KAAK,GAAG,KAAR,CAAA;;AACA,MAAA,KAAK,IAAIlF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqE,KAAK,CAACpE,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrCqE,QAAAA,KAAK,CAACrE,CAAD,CAAL,EAAA,CAAA;AACD,OAAA;;AACDqE,MAAAA,KAAK,GAAG,EAAR,CAAA;AACAgB,MAAAA,YAAY,EAAA,CAAA;AACb,KARD,MAQO,IAAI,CAACX,OAAD,IAAYL,KAAK,CAACpE,MAAtB,EAA8B;AACnCkF,MAAAA,kBAAkB,CAACR,QAAD,CAAlB,CAAA;AACAD,MAAAA,OAAO,GAAG,IAAV,CAAA;AACAF,MAAAA,UAAU,GAAG,CAAb,CAAA;;AAEA,MAAA,IAAMe,QAAQ,GAAG,SAAXA,QAAW,CAACC,QAAD,EAAmB;AAClC,QAAOnB,OAAAA,KAAK,CAACpE,MAAN,IAAgBuF,QAAQ,CAACC,aAAT,EAA2B,GAAA,CAAlD,EAAqD;AACnDpB,UAAAA,KAAK,CAACqB,KAAN,EAAA,EAAA,CAAA;AACD,SAAA;;AAED,QAAA,IAAI,CAACrB,KAAK,CAACpE,MAAX,EAAmB;AACjBoF,UAAAA,YAAY,EAAA,CAAA;AACb,SAFD,MAEO;AACL,UAAA,EAAEb,UAAF,CAAA;AACAK,UAAAA,UAAU,CAACT,aAAa,CAACgB,OAAf,EAAwBxD,MAAxB,CAAV,CAAA;AACA+C,UAAAA,QAAQ,GAAGgB,mBAAmB,CAACJ,QAAD,EAAW;AAAEX,YAAAA,OAAO,EAAPA,OAAAA;AAAF,WAAX,CAA9B,CAAA;AACD,SAAA;AACF,OAZD,CAAA;;AAcAD,MAAAA,QAAQ,GAAGgB,mBAAmB,CAACJ,QAAD,EAAW;AAAEX,QAAAA,OAAO,EAAPA,OAAAA;AAAF,OAAX,CAA9B,CAAA;AACD,KAAA;;AAED,IAAA,OAAOhD,MAAP,CAAA;AACD,GAlHD,CAAA;AAmHD;;;;;;;;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { Getter, NoInfer, PropGetterValue, TableState, Updater } 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 extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N\n\n// export type DefinedGenericKeys<T extends TableGenerics> = {\n// [K in keyof T]: 0 extends 1 & T[K] ? never : T[K] extends {} ? K : never\n// }[keyof T]\n\n// export type DefinedGenerics<T extends TableGenerics> = Pick<\n// T,\n// DefinedGenericKeys<T>\n// >\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function getBatchGroups<T>(arr: T[], count: number) {\n const groups: { start: number; end: number; items: T[] }[] = [\n {\n start: 0,\n end: count - 1,\n items: [],\n },\n ]\n\n let groupIndex = 0\n let group = groups[groupIndex]\n\n for (let i = 0; i < arr.length; i++) {\n if (i > group.end) {\n groupIndex++\n groups[groupIndex] = {\n start: i,\n end: i + count - 1,\n items: [],\n }\n }\n group = groups[groupIndex]\n const item = arr[i]\n group.items.push(item)\n }\n\n return groups\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<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?: () => any\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n let oldResult = result\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime =\n Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n 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, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\ntype WorkFn = () => void\n\nexport function incrementalMemo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,\n schedule: (\n ...args: NoInfer<[...TDeps]>\n ) => (resultRef: {\n current: TResult\n }) => (scheduler: (workFn: WorkFn) => void) => void,\n opts: {\n key: string\n onProgress: (\n progress: number,\n nextResult: TResult,\n result?: TResult\n ) => void\n onChange: (result: TResult, previousResult?: TResult) => void\n initialSync?: boolean\n timeout?: number\n debug?: () => any\n }\n): () => TResult {\n let oldDeps: any[]\n let deps: any[]\n let result: TResult | undefined\n let nextResultRef: { current: TResult }\n let tasks: WorkFn[] = []\n let totalTaskCount = 0\n let resultStartTime: number\n let batchIndex = 0\n let progress = 0\n let working = false\n let callback: ReturnType<typeof requestIdleCallback>\n\n const timeout = opts.timeout ?? 100\n\n const onProgress = (latestResult: TResult, previousResult?: TResult) => {\n progress = 1 - tasks.length / totalTaskCount\n opts.onProgress(progress, latestResult, previousResult)\n }\n\n return () => {\n const scheduleFn = (workFn: WorkFn) => {\n totalTaskCount++\n tasks.push(workFn)\n }\n\n const newDeps = getDeps()\n\n let first = false\n\n if (!deps) {\n first = true\n deps = []\n result = getInitialValue(...newDeps)\n }\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n cancelIdleCallback(callback)\n oldDeps = deps\n deps = newDeps\n totalTaskCount = 0\n tasks = []\n nextResultRef = { current: getInitialValue(...newDeps) }\n resultStartTime = Date.now()\n schedule(...newDeps)(nextResultRef)(scheduleFn)\n }\n\n const commitResult = () => {\n cancelIdleCallback(callback)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const resultEndTime =\n Math.round((Date.now() - resultStartTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / batchIndex / 16\n\n console.info(\n `%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(\n resultEndTime / batchIndex\n )} ms/task`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${oldDeps.length} -> ${deps.length}`,\n ...deps\n .map((_, index) => {\n if (oldDeps[index] !== deps[index]) {\n return [index, oldDeps[index], deps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n working = false\n let previousResult = result\n result = nextResultRef.current\n onProgress(result, previousResult)\n opts.onChange(result, previousResult)\n }\n\n if (opts.initialSync && first) {\n batchIndex = 1\n first = false\n for (let i = 0; i < tasks.length; i++) {\n tasks[i]()\n }\n tasks = []\n commitResult()\n } else if (!working && tasks.length) {\n cancelIdleCallback(callback)\n working = true\n batchIndex = 0\n\n const workLoop = (deadline: any) => {\n while (tasks.length && deadline.timeRemaining() > 0) {\n tasks.shift()!()\n }\n\n if (!tasks.length) {\n commitResult()\n } else {\n ++batchIndex\n onProgress(nextResultRef.current, result)\n callback = requestIdleCallback(workLoop, { timeout })\n }\n }\n\n callback = requestIdleCallback(workLoop, { timeout })\n }\n\n return result!\n }\n}\n\n// opts?.onChange?.(result, oldResult)\n"],"names":["functionalUpdate","updater","input","noop","getBatchGroups","arr","count","groups","start","end","items","groupIndex","group","i","length","item","push","makeStateUpdater","key","instance","setState","old","_extends","isFunction","d","Function","flattenBy","getChildren","flat","recurse","subArr","forEach","children","propGetter","initial","getter","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","oldResult","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","map","_","filter","Boolean","reduce","accu","a","b","parent","undefined","incrementalMemo","getInitialValue","schedule","oldDeps","nextResultRef","tasks","totalTaskCount","resultStartTime","batchIndex","progress","working","callback","timeout","onProgress","latestResult","previousResult","scheduleFn","workFn","first","cancelIdleCallback","current","commitResult","initialSync","workLoop","deadline","timeRemaining","shift","requestIdleCallback"],"mappings":"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"}