@tanstack/react-table 8.0.0-alpha.9 → 8.0.0-beta.0

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 (115) hide show
  1. package/build/cjs/react-table/src/index.js +139 -0
  2. package/build/cjs/react-table/src/index.js.map +1 -0
  3. package/build/cjs/table-core/build/esm/index.js +3867 -0
  4. package/build/cjs/table-core/build/esm/index.js.map +1 -0
  5. package/build/esm/index.js +3196 -4117
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +24 -813
  9. package/build/types/index.d.ts +16 -9
  10. package/build/umd/index.development.js +3234 -4125
  11. package/build/umd/index.development.js.map +1 -1
  12. package/build/umd/index.production.js +11 -1
  13. package/build/umd/index.production.js.map +1 -1
  14. package/package.json +10 -6
  15. package/src/index.tsx +111 -9
  16. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  17. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  18. package/build/cjs/aggregationTypes.js +0 -130
  19. package/build/cjs/aggregationTypes.js.map +0 -1
  20. package/build/cjs/core.js +0 -545
  21. package/build/cjs/core.js.map +0 -1
  22. package/build/cjs/createTable.js +0 -122
  23. package/build/cjs/createTable.js.map +0 -1
  24. package/build/cjs/features/ColumnSizing.js +0 -318
  25. package/build/cjs/features/ColumnSizing.js.map +0 -1
  26. package/build/cjs/features/Expanding.js +0 -239
  27. package/build/cjs/features/Expanding.js.map +0 -1
  28. package/build/cjs/features/Filters.js +0 -414
  29. package/build/cjs/features/Filters.js.map +0 -1
  30. package/build/cjs/features/Grouping.js +0 -232
  31. package/build/cjs/features/Grouping.js.map +0 -1
  32. package/build/cjs/features/Headers.js +0 -629
  33. package/build/cjs/features/Headers.js.map +0 -1
  34. package/build/cjs/features/Ordering.js +0 -86
  35. package/build/cjs/features/Ordering.js.map +0 -1
  36. package/build/cjs/features/Pagination.js +0 -193
  37. package/build/cjs/features/Pagination.js.map +0 -1
  38. package/build/cjs/features/Pinning.js +0 -149
  39. package/build/cjs/features/Pinning.js.map +0 -1
  40. package/build/cjs/features/RowSelection.js +0 -526
  41. package/build/cjs/features/RowSelection.js.map +0 -1
  42. package/build/cjs/features/Sorting.js +0 -315
  43. package/build/cjs/features/Sorting.js.map +0 -1
  44. package/build/cjs/features/Visibility.js +0 -174
  45. package/build/cjs/features/Visibility.js.map +0 -1
  46. package/build/cjs/filterTypes.js +0 -172
  47. package/build/cjs/filterTypes.js.map +0 -1
  48. package/build/cjs/index.js +0 -44
  49. package/build/cjs/index.js.map +0 -1
  50. package/build/cjs/sortTypes.js +0 -122
  51. package/build/cjs/sortTypes.js.map +0 -1
  52. package/build/cjs/types.js +0 -22
  53. package/build/cjs/types.js.map +0 -1
  54. package/build/cjs/utils/columnFilterRowsFn.js +0 -131
  55. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  56. package/build/cjs/utils/expandRowsFn.js +0 -38
  57. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  58. package/build/cjs/utils/globalFilterRowsFn.js +0 -101
  59. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  60. package/build/cjs/utils/groupRowsFn.js +0 -155
  61. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  62. package/build/cjs/utils/paginateRowsFn.js +0 -44
  63. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  64. package/build/cjs/utils/sortRowsFn.js +0 -94
  65. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  66. package/build/cjs/utils.js +0 -167
  67. package/build/cjs/utils.js.map +0 -1
  68. package/build/types/aggregationTypes.d.ts +0 -22
  69. package/build/types/core.d.ts +0 -105
  70. package/build/types/createTable.d.ts +0 -42
  71. package/build/types/features/ColumnSizing.d.ts +0 -73
  72. package/build/types/features/Expanding.d.ts +0 -48
  73. package/build/types/features/Filters.d.ts +0 -90
  74. package/build/types/features/Grouping.d.ts +0 -83
  75. package/build/types/features/Headers.d.ts +0 -41
  76. package/build/types/features/Ordering.d.ts +0 -19
  77. package/build/types/features/Pagination.d.ts +0 -39
  78. package/build/types/features/Pinning.d.ts +0 -39
  79. package/build/types/features/RowSelection.d.ts +0 -58
  80. package/build/types/features/Sorting.d.ts +0 -79
  81. package/build/types/features/Visibility.d.ts +0 -47
  82. package/build/types/filterTypes.d.ts +0 -50
  83. package/build/types/sortTypes.d.ts +0 -18
  84. package/build/types/types.d.ts +0 -138
  85. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  86. package/build/types/utils/expandRowsFn.d.ts +0 -2
  87. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  88. package/build/types/utils/groupRowsFn.d.ts +0 -2
  89. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  90. package/build/types/utils/sortRowsFn.d.ts +0 -2
  91. package/build/types/utils.d.ts +0 -23
  92. package/src/aggregationTypes.ts +0 -115
  93. package/src/core.tsx +0 -763
  94. package/src/createTable.tsx +0 -186
  95. package/src/features/ColumnSizing.ts +0 -424
  96. package/src/features/Expanding.ts +0 -318
  97. package/src/features/Filters.ts +0 -560
  98. package/src/features/Grouping.ts +0 -361
  99. package/src/features/Headers.ts +0 -729
  100. package/src/features/Ordering.ts +0 -110
  101. package/src/features/Pagination.ts +0 -250
  102. package/src/features/Pinning.ts +0 -174
  103. package/src/features/RowSelection.ts +0 -651
  104. package/src/features/Sorting.ts +0 -453
  105. package/src/features/Visibility.ts +0 -238
  106. package/src/filterTypes.ts +0 -188
  107. package/src/sortTypes.ts +0 -147
  108. package/src/types.ts +0 -311
  109. package/src/utils/columnFilterRowsFn.ts +0 -113
  110. package/src/utils/expandRowsFn.ts +0 -30
  111. package/src/utils/globalFilterRowsFn.ts +0 -89
  112. package/src/utils/groupRowsFn.ts +0 -170
  113. package/src/utils/paginateRowsFn.ts +0 -28
  114. package/src/utils/sortRowsFn.ts +0 -95
  115. package/src/utils.tsx +0 -221
@@ -1,122 +0,0 @@
1
- /**
2
- * react-table
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
- var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
16
- var React = require('react');
17
- var core = require('./core.js');
18
-
19
- function _interopNamespace(e) {
20
- if (e && e.__esModule) return e;
21
- var n = Object.create(null);
22
- if (e) {
23
- Object.keys(e).forEach(function (k) {
24
- if (k !== 'default') {
25
- var d = Object.getOwnPropertyDescriptor(e, k);
26
- Object.defineProperty(n, k, d.get ? d : {
27
- enumerable: true,
28
- get: function () { return e[k]; }
29
- });
30
- }
31
- });
32
- }
33
- n["default"] = e;
34
- return Object.freeze(n);
35
- }
36
-
37
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
38
-
39
- function createTableFactory(opts) {
40
- return function () {
41
- return _createTable(undefined, undefined, opts);
42
- };
43
- }
44
- function createTable() {
45
- return _createTable();
46
- }
47
-
48
- function _createTable(_, __, opts) {
49
- return {
50
- createColumns: function createColumns(columns) {
51
- return columns;
52
- },
53
- createDisplayColumn: function createDisplayColumn(column) {
54
- return column;
55
- },
56
- createGroup: function createGroup(column) {
57
- return column;
58
- },
59
- createDataColumn: function createDataColumn(accessor, column) {
60
- column = _rollupPluginBabelHelpers["extends"]({}, column, {
61
- id: column.id
62
- });
63
-
64
- if (typeof accessor === 'string') {
65
- var _column$id;
66
-
67
- return _rollupPluginBabelHelpers["extends"]({}, column, {
68
- id: (_column$id = column.id) != null ? _column$id : accessor,
69
- accessorKey: accessor
70
- });
71
- }
72
-
73
- if (typeof accessor === 'function') {
74
- return _rollupPluginBabelHelpers["extends"]({}, column, {
75
- accessorFn: accessor
76
- });
77
- }
78
-
79
- throw new Error('Invalid accessor');
80
- },
81
- useTable: function useTable(options) {
82
- // Compose in the generic options to the user options
83
- var resolvedOptions = _rollupPluginBabelHelpers["extends"]({}, opts != null ? opts : {}, {
84
- state: {},
85
- // Dummy state
86
- onStateChange: function onStateChange() {}
87
- }, options); // Create a new table instance and store it in state
88
-
89
-
90
- var _React$useState = React__namespace.useState(function () {
91
- return core.createTableInstance(resolvedOptions);
92
- }),
93
- instance = _React$useState[0]; // By default, manage table state here using the instance's initial state
94
-
95
-
96
- var _React$useState2 = React__namespace.useState(function () {
97
- return instance.initialState;
98
- }),
99
- state = _React$useState2[0],
100
- setState = _React$useState2[1]; // Compose the default state above with any user state. This will allow the user
101
- // to only control a subset of the state if desired.
102
-
103
-
104
- instance.setOptions(function (prev) {
105
- return _rollupPluginBabelHelpers["extends"]({}, prev, options, {
106
- state: _rollupPluginBabelHelpers["extends"]({}, state, options.state),
107
- // Similarly, we'll maintain both our internal state and any user-provided
108
- // state.
109
- onStateChange: function onStateChange(updater) {
110
- setState(updater);
111
- options.onStateChange == null ? void 0 : options.onStateChange(updater);
112
- }
113
- });
114
- });
115
- return instance;
116
- }
117
- };
118
- }
119
-
120
- exports.createTable = createTable;
121
- exports.createTableFactory = createTableFactory;
122
- //# sourceMappingURL=createTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTable.js","sources":["../../src/createTable.tsx"],"sourcesContent":["import * as React from 'react'\nimport { createTableInstance } from './core'\nimport { CustomFilterTypes } from './features/Filters'\nimport { CustomAggregationTypes } from './features/Grouping'\nimport { CustomSortingTypes } from './features/Sorting'\nimport {\n TableInstance,\n ColumnDef,\n AccessorFn,\n Options,\n DefaultGenerics,\n PartialGenerics,\n _NonGenerated,\n} from './types'\nimport { Overwrite, PartialKeys } from './utils'\n\nexport type CreatTableFactory<TGenerics extends Partial<DefaultGenerics>> = <\n TRow\n>() => CreateTable<Overwrite<TGenerics, { Row: TRow }>>\n\nexport type CreateTableOptions<\n TFilterFns extends CustomFilterTypes<any>,\n TSortingFns extends CustomSortingTypes<any>,\n TAggregationFns extends CustomAggregationTypes<any>\n> = {\n filterFns?: TFilterFns\n sortingFns?: TSortingFns\n aggregationFns?: TAggregationFns\n}\n\nexport function createTableFactory<\n TFilterFns extends CustomFilterTypes<any>,\n TSortingFns extends CustomSortingTypes<any>,\n TAggregationFns extends CustomAggregationTypes<any>\n>(\n opts: CreateTableOptions<TFilterFns, TSortingFns, TAggregationFns>\n): CreatTableFactory<\n Overwrite<\n PartialGenerics,\n {\n FilterFns: TFilterFns\n SortingFns: TSortingFns\n AggregationFns: TAggregationFns\n }\n >\n> {\n return () => _createTable(undefined, undefined, opts)\n}\n\nexport type CreateTable<TGenerics extends Partial<DefaultGenerics>> = {\n createColumns: (columns: ColumnDef<TGenerics>[]) => ColumnDef<TGenerics>[]\n createGroup: (\n column: Overwrite<\n | Overwrite<\n _NonGenerated<ColumnDef<TGenerics>>,\n {\n header: string\n id?: string\n }\n >\n | Overwrite<\n _NonGenerated<ColumnDef<TGenerics>>,\n {\n id: string\n header?: string | ColumnDef<TGenerics>['header']\n }\n >,\n { accessorFn?: never; accessorKey?: never }\n >\n ) => ColumnDef<TGenerics>\n createDisplayColumn: (\n column: PartialKeys<\n _NonGenerated<ColumnDef<TGenerics>>,\n 'accessorFn' | 'accessorKey'\n >\n ) => ColumnDef<TGenerics>\n createDataColumn: <\n TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']\n >(\n accessor: TAccessor,\n column: Overwrite<\n TAccessor extends (...args: any[]) => any\n ? // Accessor Fn\n _NonGenerated<ColumnDef<TGenerics>>\n : TAccessor extends keyof TGenerics['Row']\n ? // Accessor Key\n Overwrite<\n _NonGenerated<ColumnDef<TGenerics>>,\n {\n id?: string\n }\n >\n : never,\n {\n accessorFn?: never\n accessorKey?: never\n }\n >\n ) => ColumnDef<TGenerics>\n useTable: (\n options: PartialKeys<\n Omit<Options<TGenerics>, keyof CreateTableOptions<any, any, any>>,\n 'state' | 'onStateChange'\n >\n ) => TableInstance<TGenerics>\n}\n\nexport function createTable<TRow>() {\n return _createTable<Overwrite<PartialGenerics, { Row: TRow }>>()\n}\n\nfunction _createTable<TGenerics extends PartialGenerics>(\n _?: undefined,\n __?: undefined,\n opts?: CreateTableOptions<any, any, any>\n): CreateTable<TGenerics> {\n return {\n createColumns: columns => columns,\n createDisplayColumn: column => column as any,\n createGroup: column => column as any,\n createDataColumn: (accessor, column): any => {\n column = {\n ...column,\n id: column.id,\n }\n\n if (typeof accessor === 'string') {\n return {\n ...column,\n id: column.id ?? accessor,\n accessorKey: accessor,\n }\n }\n\n if (typeof accessor === 'function') {\n return {\n ...column,\n accessorFn: accessor,\n }\n }\n\n throw new Error('Invalid accessor')\n },\n useTable: (\n options: PartialKeys<\n Omit<Options<TGenerics>, keyof CreateTableOptions<any, any, any>>,\n 'state' | 'onStateChange'\n >\n ): TableInstance<TGenerics> => {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n ...(opts ?? {}),\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n ...options,\n }\n\n // Create a new table instance and store it in state\n const [instance] = React.useState(() =>\n createTableInstance<TGenerics>(resolvedOptions)\n )\n\n // By default, manage table state here using the instance's initial state\n const [state, setState] = React.useState(() => instance.initialState)\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n instance.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state,\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater)\n options.onStateChange?.(updater)\n },\n }))\n\n return instance\n },\n }\n}\n"],"names":["createTableFactory","opts","_createTable","undefined","createTable","_","__","createColumns","columns","createDisplayColumn","column","createGroup","createDataColumn","accessor","id","accessorKey","accessorFn","Error","useTable","options","resolvedOptions","state","onStateChange","React","useState","createTableInstance","instance","initialState","setState","setOptions","prev","updater"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BO,SAASA,kBAAT,CAKLC,IALK,EAeL;AACA,SAAO;AAAA,WAAMC,YAAY,CAACC,SAAD,EAAYA,SAAZ,EAAuBF,IAAvB,CAAlB;AAAA,GAAP;AACD;AA4DM,SAASG,WAAT,GAA6B;AAClC,SAAOF,YAAY,EAAnB;AACD;;AAED,SAASA,YAAT,CACEG,CADF,EAEEC,EAFF,EAGEL,IAHF,EAI0B;AACxB,SAAO;AACLM,IAAAA,aAAa,EAAE,uBAAAC,OAAO;AAAA,aAAIA,OAAJ;AAAA,KADjB;AAELC,IAAAA,mBAAmB,EAAE,6BAAAC,MAAM;AAAA,aAAIA,MAAJ;AAAA,KAFtB;AAGLC,IAAAA,WAAW,EAAE,qBAAAD,MAAM;AAAA,aAAIA,MAAJ;AAAA,KAHd;AAILE,IAAAA,gBAAgB,EAAE,0BAACC,QAAD,EAAWH,MAAX,EAA2B;AAC3CA,MAAAA,MAAM,4CACDA,MADC;AAEJI,QAAAA,EAAE,EAAEJ,MAAM,CAACI;AAFP,QAAN;;AAKA,UAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC;AAAA;;AAChC,wDACKH,MADL;AAEEI,UAAAA,EAAE,gBAAEJ,MAAM,CAACI,EAAT,yBAAeD,QAFnB;AAGEE,UAAAA,WAAW,EAAEF;AAHf;AAKD;;AAED,UAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClC,wDACKH,MADL;AAEEM,UAAAA,UAAU,EAAEH;AAFd;AAID;;AAED,YAAM,IAAII,KAAJ,CAAU,kBAAV,CAAN;AACD,KA1BI;AA2BLC,IAAAA,QAAQ,EAAE,kBACRC,OADQ,EAKqB;AAC7B;AACA,UAAMC,eAAe,4CACfnB,IADe,WACfA,IADe,GACP,EADO;AAEnBoB,QAAAA,KAAK,EAAE,EAFY;AAER;AACXC,QAAAA,aAAa,EAAE,yBAAM;AAHF,SAIhBH,OAJgB,CAArB,CAF6B;;;AAU7B,4BAAmBI,gBAAK,CAACC,QAAN,CAAe;AAAA,eAChCC,wBAAmB,CAAYL,eAAZ,CADa;AAAA,OAAf,CAAnB;AAAA,UAAOM,QAAP,sBAV6B;;;AAe7B,6BAA0BH,gBAAK,CAACC,QAAN,CAAe;AAAA,eAAME,QAAQ,CAACC,YAAf;AAAA,OAAf,CAA1B;AAAA,UAAON,KAAP;AAAA,UAAcO,QAAd,uBAf6B;AAkB7B;;;AACAF,MAAAA,QAAQ,CAACG,UAAT,CAAoB,UAAAC,IAAI;AAAA,wDACnBA,IADmB,EAEnBX,OAFmB;AAGtBE,UAAAA,KAAK,2CACAA,KADA,EAEAF,OAAO,CAACE,KAFR,CAHiB;AAOtB;AACA;AACAC,UAAAA,aAAa,EAAE,uBAAAS,OAAO,EAAI;AACxBH,YAAAA,QAAQ,CAACG,OAAD,CAAR;AACAZ,YAAAA,OAAO,CAACG,aAAR,oBAAAH,OAAO,CAACG,aAAR,CAAwBS,OAAxB;AACD;AAZqB;AAAA,OAAxB;AAeA,aAAOL,QAAP;AACD;AAnEI,GAAP;AAqED;;;;;"}
@@ -1,318 +0,0 @@
1
- /**
2
- * react-table
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
- var utils = require('../utils.js');
17
-
18
- //
19
- var defaultColumnSizing = {
20
- width: 150,
21
- minWidth: 20,
22
- maxWidth: Number.MAX_SAFE_INTEGER
23
- };
24
- function getInitialState() {
25
- return {
26
- columnSizing: {},
27
- columnSizingInfo: {
28
- startOffset: null,
29
- startSize: null,
30
- deltaOffset: null,
31
- deltaPercentage: null,
32
- isResizingColumn: false,
33
- columnSizingStart: []
34
- }
35
- };
36
- }
37
- function getDefaultOptions(instance) {
38
- return {
39
- columnResizeMode: 'onEnd',
40
- onColumnSizingChange: utils.makeStateUpdater('columnSizing', instance),
41
- onColumnSizingInfoChange: utils.makeStateUpdater('columnSizingInfo', instance)
42
- };
43
- }
44
- function getInstance(instance) {
45
- return {
46
- setColumnSizing: function setColumnSizing(updater) {
47
- return instance.options.onColumnSizingChange == null ? void 0 : instance.options.onColumnSizingChange(updater, utils.functionalUpdate(updater, instance.getState().columnSizing));
48
- },
49
- setColumnSizingInfo: function setColumnSizingInfo(updater) {
50
- return instance.options.onColumnSizingInfoChange == null ? void 0 : instance.options.onColumnSizingInfoChange(updater, utils.functionalUpdate(updater, instance.getState().columnSizingInfo));
51
- },
52
- resetColumnSizing: function resetColumnSizing() {
53
- var _instance$initialStat;
54
-
55
- instance.setColumnSizing((_instance$initialStat = instance.initialState.columnSizing) != null ? _instance$initialStat : {});
56
- },
57
- resetHeaderSizeInfo: function resetHeaderSizeInfo() {
58
- var _instance$initialStat2;
59
-
60
- instance.setColumnSizingInfo((_instance$initialStat2 = instance.initialState.columnSizingInfo) != null ? _instance$initialStat2 : {});
61
- },
62
- resetColumnSize: function resetColumnSize(columnId) {
63
- instance.setColumnSizing(function (_ref) {
64
- _ref[columnId];
65
- var rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_ref, [columnId].map(_rollupPluginBabelHelpers.toPropertyKey));
66
-
67
- return rest;
68
- });
69
- },
70
- resetHeaderSize: function resetHeaderSize(headerId) {
71
- var header = instance.getHeader(headerId);
72
- return instance.resetColumnSize(header.column.id);
73
- },
74
- getHeaderCanResize: function getHeaderCanResize(headerId) {
75
- var header = instance.getHeader(headerId);
76
-
77
- if (!header) {
78
- throw new Error();
79
- }
80
-
81
- return instance.getColumnCanResize(header.column.id);
82
- },
83
- getColumnCanResize: function getColumnCanResize(columnId) {
84
- var _ref2, _ref3, _column$enableResizin;
85
-
86
- var column = instance.getColumn(columnId);
87
-
88
- if (!column) {
89
- throw new Error();
90
- }
91
-
92
- return (_ref2 = (_ref3 = (_column$enableResizin = column.enableResizing) != null ? _column$enableResizin : instance.options.enableColumnResizing) != null ? _ref3 : column.defaultCanResize) != null ? _ref2 : true;
93
- },
94
- getColumnIsResizing: function getColumnIsResizing(columnId) {
95
- var column = instance.getColumn(columnId);
96
-
97
- if (!column) {
98
- throw new Error();
99
- }
100
-
101
- return instance.getState().columnSizingInfo.isResizingColumn === columnId;
102
- },
103
- getHeaderIsResizing: function getHeaderIsResizing(headerId) {
104
- var header = instance.getHeader(headerId);
105
-
106
- if (!header) {
107
- throw new Error();
108
- }
109
-
110
- return instance.getColumnIsResizing(header.column.id);
111
- },
112
- getHeaderResizerProps: function getHeaderResizerProps(headerId, userProps) {
113
- var header = instance.getHeader(headerId);
114
- var column = instance.getColumn(header.column.id);
115
- var canResize = column.getCanResize();
116
-
117
- var onResizeStart = function onResizeStart(e) {
118
- if (isTouchStartEvent(e)) {
119
- // lets not respond to multiple touches (e.g. 2 or 3 fingers)
120
- if (e.touches && e.touches.length > 1) {
121
- return;
122
- }
123
- }
124
-
125
- var header = headerId ? instance.getHeader(headerId) : undefined;
126
- var startSize = header ? header.getWidth() : column.getWidth();
127
- var columnSizingStart = header ? header.getLeafHeaders().map(function (d) {
128
- return [d.column.id, d.getWidth()];
129
- }) : [[column.id, column.getWidth()]];
130
- var clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;
131
-
132
- var updateOffset = function updateOffset(eventType, clientXPos) {
133
- if (typeof clientXPos !== 'number') {
134
- return;
135
- }
136
-
137
- var newColumnSizing = {};
138
- instance.setColumnSizingInfo(function (old) {
139
- var _old$startOffset, _old$startSize;
140
-
141
- var deltaOffset = clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0);
142
- var deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);
143
- old.columnSizingStart.forEach(function (_ref4) {
144
- var columnId = _ref4[0],
145
- headerWidth = _ref4[1];
146
- newColumnSizing[columnId] = Math.round(Math.max(headerWidth + headerWidth * deltaPercentage, 0) * 100) / 100;
147
- });
148
- return _rollupPluginBabelHelpers["extends"]({}, old, {
149
- deltaOffset: deltaOffset,
150
- deltaPercentage: deltaPercentage
151
- });
152
- });
153
-
154
- if (instance.options.columnResizeMode === 'onChange' || eventType === 'end') {
155
- instance.setColumnSizing(function (old) {
156
- return _rollupPluginBabelHelpers["extends"]({}, old, newColumnSizing);
157
- });
158
- }
159
- };
160
-
161
- var onMove = function onMove(clientXPos) {
162
- return updateOffset('move', clientXPos);
163
- };
164
-
165
- var onEnd = function onEnd(clientXPos) {
166
- updateOffset('end', clientXPos);
167
- instance.setColumnSizingInfo(function (old) {
168
- return _rollupPluginBabelHelpers["extends"]({}, old, {
169
- isResizingColumn: false,
170
- startOffset: null,
171
- startSize: null,
172
- deltaOffset: null,
173
- deltaPercentage: null,
174
- columnSizingStart: []
175
- });
176
- });
177
- };
178
-
179
- var mouseEvents = {
180
- moveHandler: function moveHandler(e) {
181
- return onMove(e.clientX);
182
- },
183
- upHandler: function upHandler(e) {
184
- document.removeEventListener('mousemove', mouseEvents.moveHandler);
185
- document.removeEventListener('mouseup', mouseEvents.upHandler);
186
- onEnd(e.clientX);
187
- }
188
- };
189
- var touchEvents = {
190
- moveHandler: function moveHandler(e) {
191
- if (e.cancelable) {
192
- e.preventDefault();
193
- e.stopPropagation();
194
- }
195
-
196
- onMove(e.touches[0].clientX);
197
- return false;
198
- },
199
- upHandler: function upHandler(e) {
200
- document.removeEventListener('touchmove', touchEvents.moveHandler);
201
- document.removeEventListener('touchend', touchEvents.upHandler);
202
-
203
- if (e.cancelable) {
204
- e.preventDefault();
205
- e.stopPropagation();
206
- }
207
-
208
- onEnd(e.touches[0].clientX);
209
- }
210
- };
211
- var passiveIfSupported = passiveEventSupported() ? {
212
- passive: false
213
- } : false;
214
-
215
- if (isTouchStartEvent(e)) {
216
- document.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);
217
- document.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);
218
- } else {
219
- document.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);
220
- document.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);
221
- }
222
-
223
- instance.setColumnSizingInfo(function (old) {
224
- return _rollupPluginBabelHelpers["extends"]({}, old, {
225
- startOffset: clientX,
226
- startSize: startSize,
227
- deltaOffset: 0,
228
- deltaPercentage: 0,
229
- columnSizingStart: columnSizingStart,
230
- isResizingColumn: column.id
231
- });
232
- });
233
- };
234
-
235
- var initialProps = canResize ? {
236
- title: 'Toggle Grouping',
237
- draggable: false,
238
- role: 'separator',
239
- onMouseDown: function onMouseDown(e) {
240
- e.persist();
241
- onResizeStart(e);
242
- },
243
- onTouchStart: function onTouchStart(e) {
244
- e.persist();
245
- onResizeStart(e);
246
- }
247
- } : {};
248
- return utils.propGetter(initialProps, userProps);
249
- }
250
- };
251
- }
252
- function createColumn(column, instance) {
253
- return {
254
- getIsResizing: function getIsResizing() {
255
- return instance.getColumnIsResizing(column.id);
256
- },
257
- getCanResize: function getCanResize() {
258
- return instance.getColumnCanResize(column.id);
259
- },
260
- resetSize: function resetSize() {
261
- return instance.resetColumnSize(column.id);
262
- }
263
- };
264
- }
265
- function createHeader(header, instance) {
266
- return {
267
- getIsResizing: function getIsResizing() {
268
- return instance.getColumnIsResizing(header.column.id);
269
- },
270
- getCanResize: function getCanResize() {
271
- return instance.getColumnCanResize(header.column.id);
272
- },
273
- resetSize: function resetSize() {
274
- return instance.resetColumnSize(header.column.id);
275
- },
276
- getResizerProps: function getResizerProps(userProps) {
277
- return instance.getHeaderResizerProps(header.id, userProps);
278
- }
279
- };
280
- }
281
- var passiveSupported = null;
282
- function passiveEventSupported() {
283
- if (typeof passiveSupported === 'boolean') return passiveSupported;
284
- var supported = false;
285
-
286
- try {
287
- var options = {
288
- get passive() {
289
- supported = true;
290
- return false;
291
- }
292
-
293
- };
294
-
295
- var noop = function noop() {};
296
-
297
- window.addEventListener('test', noop, options);
298
- window.removeEventListener('test', noop);
299
- } catch (err) {
300
- supported = false;
301
- }
302
-
303
- passiveSupported = supported;
304
- return passiveSupported;
305
- }
306
-
307
- function isTouchStartEvent(e) {
308
- return e.type === 'touchstart';
309
- }
310
-
311
- exports.createColumn = createColumn;
312
- exports.createHeader = createHeader;
313
- exports.defaultColumnSizing = defaultColumnSizing;
314
- exports.getDefaultOptions = getDefaultOptions;
315
- exports.getInitialState = getInitialState;
316
- exports.getInstance = getInstance;
317
- exports.passiveEventSupported = passiveEventSupported;
318
- //# sourceMappingURL=ColumnSizing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnSizing.js","sources":["../../../src/features/ColumnSizing.ts"],"sourcesContent":["import {\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react'\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\n//\n\nexport type ColumnSizing = Record<string, number>\n\nexport type ColumnSizingInfoState = {\n startOffset: null | number\n startSize: null | number\n deltaOffset: null | number\n deltaPercentage: null | number\n isResizingColumn: false | string\n columnSizingStart: [string, number][]\n}\n\nexport type ColumnSizingTableState = {\n columnSizing: ColumnSizing\n columnSizingInfo: ColumnSizingInfoState\n}\n\nexport type ColumnResizeMode = 'onChange' | 'onEnd'\n\nexport type ColumnSizingOptions = {\n enableColumnResizing?: boolean\n columnResizeMode?: ColumnResizeMode\n onColumnSizingChange?: OnChangeFn<ColumnSizing>\n onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnSizingDefaultOptions = {\n columnResizeMode: ColumnResizeMode\n onColumnSizingChange: OnChangeFn<ColumnSizing>\n onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnResizerProps = {\n title?: string\n onMouseDown?: (e: ReactMouseEvent) => void\n onTouchStart?: (e: ReactTouchEvent) => void\n draggable?: boolean\n role?: string\n}\n\nexport type ColumnSizingInstance<TGenerics extends PartialGenerics> = {\n setColumnSizing: (updater: Updater<ColumnSizing>) => void\n setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void\n resetColumnSizing: () => void\n resetColumnSize: (columnId: string) => void\n resetHeaderSize: (headerId: string) => void\n resetHeaderSizeInfo: () => void\n getColumnCanResize: (columnId: string) => boolean\n getHeaderCanResize: (headerId: string) => boolean\n getHeaderResizerProps: <TGetter extends Getter<ColumnResizerProps>>(\n headerId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ColumnResizerProps, TGetter>\n getColumnIsResizing: (columnId: string) => boolean\n getHeaderIsResizing: (headerId: string) => boolean\n}\n\nexport type ColumnSizingColumnDef = {\n enableResizing?: boolean\n defaultCanResize?: boolean\n}\n\nexport type ColumnSizingColumn<TGenerics extends PartialGenerics> = {\n getCanResize: () => boolean\n getIsResizing: () => boolean\n resetSize: () => void\n}\n\nexport type ColumnSizingHeader<TGenerics extends PartialGenerics> = {\n getCanResize: () => boolean\n getIsResizing: () => boolean\n getResizerProps: <TGetter extends Getter<ColumnResizerProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ColumnResizerProps, TGetter>\n resetSize: () => void\n}\n\n//\n\nexport const defaultColumnSizing = {\n width: 150,\n minWidth: 20,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nexport function getInitialState(): ColumnSizingTableState {\n return {\n columnSizing: {},\n columnSizingInfo: {\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n },\n }\n}\n\nexport function getDefaultOptions<TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n): ColumnSizingDefaultOptions {\n return {\n columnResizeMode: 'onEnd',\n onColumnSizingChange: makeStateUpdater('columnSizing', instance),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', instance),\n }\n}\n\nexport function getInstance<TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n): ColumnSizingInstance<TGenerics> {\n return {\n setColumnSizing: updater =>\n instance.options.onColumnSizingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnSizing)\n ),\n setColumnSizingInfo: updater =>\n instance.options.onColumnSizingInfoChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnSizingInfo)\n ),\n resetColumnSizing: () => {\n instance.setColumnSizing(instance.initialState.columnSizing ?? {})\n },\n resetHeaderSizeInfo: () => {\n instance.setColumnSizingInfo(instance.initialState.columnSizingInfo ?? {})\n },\n resetColumnSize: columnId => {\n instance.setColumnSizing(({ [columnId]: _, ...rest }) => {\n return rest\n })\n },\n resetHeaderSize: headerId => {\n const header = instance.getHeader(headerId)\n\n return instance.resetColumnSize(header.column.id)\n },\n getHeaderCanResize: headerId => {\n const header = instance.getHeader(headerId)\n\n if (!header) {\n throw new Error()\n }\n\n return instance.getColumnCanResize(header.column.id)\n },\n getColumnCanResize: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableResizing ??\n instance.options.enableColumnResizing ??\n column.defaultCanResize ??\n true\n )\n },\n getColumnIsResizing: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return instance.getState().columnSizingInfo.isResizingColumn === columnId\n },\n getHeaderIsResizing: headerId => {\n const header = instance.getHeader(headerId)\n\n if (!header) {\n throw new Error()\n }\n\n return instance.getColumnIsResizing(header.column.id)\n },\n\n getHeaderResizerProps: (headerId, userProps) => {\n const header = instance.getHeader(headerId)\n const column = instance.getColumn(header.column.id)\n\n const canResize = column.getCanResize()\n\n const onResizeStart = (e: ReactMouseEvent | ReactTouchEvent) => {\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n }\n\n const header = headerId ? instance.getHeader(headerId) : undefined\n\n const startSize = header ? header.getWidth() : column.getWidth()\n\n const columnSizingStart: [string, number][] = header\n ? header.getLeafHeaders().map(d => [d.column.id, d.getWidth()])\n : [[column.id, column.getWidth()]]\n\n const clientX = isTouchStartEvent(e)\n ? Math.round(e.touches[0].clientX)\n : e.clientX\n\n const updateOffset = (\n eventType: 'move' | 'end',\n clientXPos?: number\n ) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n let newColumnSizing: ColumnSizing = {}\n\n instance.setColumnSizingInfo(old => {\n const deltaOffset = clientXPos - (old?.startOffset ?? 0)\n const deltaPercentage = Math.max(\n deltaOffset / (old?.startSize ?? 0),\n -0.999999\n )\n\n old.columnSizingStart.forEach(([columnId, headerWidth]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(headerWidth + headerWidth * deltaPercentage, 0) * 100\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n instance.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n instance.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n instance.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n document.removeEventListener('mousemove', mouseEvents.moveHandler)\n document.removeEventListener('mouseup', mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (e: TouchEvent) => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onMove(e.touches[0].clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n document.removeEventListener('touchmove', touchEvents.moveHandler)\n document.removeEventListener('touchend', touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0].clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(e)) {\n document.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported\n )\n } else {\n document.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported\n )\n }\n\n instance.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n\n const initialProps: ColumnResizerProps = canResize\n ? {\n title: 'Toggle Grouping',\n draggable: false,\n role: 'separator',\n onMouseDown: (e: ReactMouseEvent) => {\n e.persist()\n onResizeStart(e)\n },\n onTouchStart: (e: ReactTouchEvent) => {\n e.persist()\n onResizeStart(e)\n },\n }\n : {}\n\n return propGetter(initialProps, userProps)\n },\n }\n}\n\nexport function createColumn<TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n): ColumnSizingColumn<TGenerics> {\n return {\n getIsResizing: () => instance.getColumnIsResizing(column.id),\n getCanResize: () => instance.getColumnCanResize(column.id),\n resetSize: () => instance.resetColumnSize(column.id),\n }\n}\n\nexport function createHeader<TGenerics extends PartialGenerics>(\n header: Header<TGenerics>,\n instance: TableInstance<TGenerics>\n): ColumnSizingHeader<TGenerics> {\n return {\n getIsResizing: () => instance.getColumnIsResizing(header.column.id),\n getCanResize: () => instance.getColumnCanResize(header.column.id),\n resetSize: () => instance.resetColumnSize(header.column.id),\n getResizerProps: userProps =>\n instance.getHeaderResizerProps(header.id, userProps),\n }\n}\n\nlet passiveSupported: boolean | null = null\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\nfunction isTouchStartEvent(\n e: ReactTouchEvent | ReactMouseEvent\n): e is ReactTouchEvent {\n return e.type === 'touchstart'\n}\n"],"names":["defaultColumnSizing","width","minWidth","maxWidth","Number","MAX_SAFE_INTEGER","getInitialState","columnSizing","columnSizingInfo","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","getDefaultOptions","instance","columnResizeMode","onColumnSizingChange","makeStateUpdater","onColumnSizingInfoChange","getInstance","setColumnSizing","updater","options","functionalUpdate","getState","setColumnSizingInfo","resetColumnSizing","initialState","resetHeaderSizeInfo","resetColumnSize","columnId","rest","resetHeaderSize","headerId","header","getHeader","column","id","getHeaderCanResize","Error","getColumnCanResize","getColumn","enableResizing","enableColumnResizing","defaultCanResize","getColumnIsResizing","getHeaderIsResizing","getHeaderResizerProps","userProps","canResize","getCanResize","onResizeStart","e","isTouchStartEvent","touches","length","undefined","getWidth","getLeafHeaders","map","d","clientX","Math","round","updateOffset","eventType","clientXPos","newColumnSizing","old","max","forEach","headerWidth","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","passiveIfSupported","passiveEventSupported","passive","addEventListener","initialProps","title","draggable","role","onMouseDown","persist","onTouchStart","propGetter","createColumn","getIsResizing","resetSize","createHeader","getResizerProps","passiveSupported","supported","noop","window","err","type"],"mappings":"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"}