@tanstack/react-table 8.0.0-alpha.2 → 8.0.0-alpha.22

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 (99) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -78
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  3. package/build/cjs/index.js +96 -12
  4. package/build/cjs/index.js.map +1 -1
  5. package/build/esm/index.js +40 -3663
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +28 -676
  9. package/build/types/index.d.ts +13 -7
  10. package/build/umd/index.development.js +50 -3665
  11. package/build/umd/index.development.js.map +1 -1
  12. package/build/umd/index.production.js +1 -1
  13. package/build/umd/index.production.js.map +1 -1
  14. package/package.json +4 -1
  15. package/src/index.tsx +104 -7
  16. package/build/cjs/aggregationTypes.js +0 -130
  17. package/build/cjs/aggregationTypes.js.map +0 -1
  18. package/build/cjs/core.js +0 -519
  19. package/build/cjs/core.js.map +0 -1
  20. package/build/cjs/createTable.js +0 -103
  21. package/build/cjs/createTable.js.map +0 -1
  22. package/build/cjs/features/ColumnSizing.js +0 -331
  23. package/build/cjs/features/ColumnSizing.js.map +0 -1
  24. package/build/cjs/features/Expanding.js +0 -234
  25. package/build/cjs/features/Expanding.js.map +0 -1
  26. package/build/cjs/features/Filters.js +0 -396
  27. package/build/cjs/features/Filters.js.map +0 -1
  28. package/build/cjs/features/Grouping.js +0 -228
  29. package/build/cjs/features/Grouping.js.map +0 -1
  30. package/build/cjs/features/Headers.js +0 -486
  31. package/build/cjs/features/Headers.js.map +0 -1
  32. package/build/cjs/features/Ordering.js +0 -83
  33. package/build/cjs/features/Ordering.js.map +0 -1
  34. package/build/cjs/features/Pinning.js +0 -163
  35. package/build/cjs/features/Pinning.js.map +0 -1
  36. package/build/cjs/features/Sorting.js +0 -269
  37. package/build/cjs/features/Sorting.js.map +0 -1
  38. package/build/cjs/features/Visibility.js +0 -160
  39. package/build/cjs/features/Visibility.js.map +0 -1
  40. package/build/cjs/filterTypes.js +0 -172
  41. package/build/cjs/filterTypes.js.map +0 -1
  42. package/build/cjs/sortTypes.js +0 -121
  43. package/build/cjs/sortTypes.js.map +0 -1
  44. package/build/cjs/utils/columnFilterRowsFn.js +0 -130
  45. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  46. package/build/cjs/utils/expandRowsFn.js +0 -38
  47. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  48. package/build/cjs/utils/globalFilterRowsFn.js +0 -100
  49. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  50. package/build/cjs/utils/groupRowsFn.js +0 -154
  51. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  52. package/build/cjs/utils/sortRowsFn.js +0 -93
  53. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  54. package/build/cjs/utils.js +0 -143
  55. package/build/cjs/utils.js.map +0 -1
  56. package/build/types/aggregationTypes.d.ts +0 -22
  57. package/build/types/core.d.ts +0 -126
  58. package/build/types/createTable.d.ts +0 -35
  59. package/build/types/features/ColumnSizing.d.ts +0 -73
  60. package/build/types/features/Expanding.d.ts +0 -52
  61. package/build/types/features/Filters.d.ts +0 -93
  62. package/build/types/features/Grouping.d.ts +0 -82
  63. package/build/types/features/Headers.d.ts +0 -41
  64. package/build/types/features/Ordering.d.ts +0 -19
  65. package/build/types/features/Pinning.d.ts +0 -39
  66. package/build/types/features/Sorting.d.ts +0 -75
  67. package/build/types/features/Visibility.d.ts +0 -47
  68. package/build/types/filterTypes.d.ts +0 -50
  69. package/build/types/sortTypes.d.ts +0 -17
  70. package/build/types/types.d.ts +0 -124
  71. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  72. package/build/types/utils/expandRowsFn.d.ts +0 -2
  73. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  74. package/build/types/utils/groupRowsFn.d.ts +0 -2
  75. package/build/types/utils/sortRowsFn.d.ts +0 -2
  76. package/build/types/utils.d.ts +0 -24
  77. package/src/aggregationTypes.ts +0 -115
  78. package/src/core.tsx +0 -1232
  79. package/src/createTable.tsx +0 -181
  80. package/src/features/ColumnSizing.ts +0 -482
  81. package/src/features/Expanding.ts +0 -388
  82. package/src/features/Filters.ts +0 -707
  83. package/src/features/Grouping.ts +0 -451
  84. package/src/features/Headers.ts +0 -944
  85. package/src/features/Ordering.ts +0 -134
  86. package/src/features/Pinning.ts +0 -213
  87. package/src/features/Sorting.ts +0 -487
  88. package/src/features/Visibility.ts +0 -281
  89. package/src/features/withPagination.oldts +0 -208
  90. package/src/features/withRowSelection.oldts +0 -467
  91. package/src/filterTypes.ts +0 -251
  92. package/src/sortTypes.ts +0 -159
  93. package/src/types.ts +0 -314
  94. package/src/utils/columnFilterRowsFn.ts +0 -162
  95. package/src/utils/expandRowsFn.ts +0 -53
  96. package/src/utils/globalFilterRowsFn.ts +0 -129
  97. package/src/utils/groupRowsFn.ts +0 -196
  98. package/src/utils/sortRowsFn.ts +0 -115
  99. package/src/utils.tsx +0 -249
@@ -1,103 +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 createTable() {
40
- return {
41
- RowType: function RowType() {
42
- return createTable();
43
- },
44
- FilterFns: function FilterFns() {
45
- return createTable();
46
- },
47
- SortingFns: function SortingFns() {
48
- return createTable();
49
- },
50
- AggregationFns: function AggregationFns() {
51
- return createTable();
52
- },
53
- createColumns: function createColumns(columns) {
54
- return columns;
55
- },
56
- createColumn: function createColumn(accessor, column) {
57
- column = _rollupPluginBabelHelpers["extends"]({}, column, {
58
- id: column.id
59
- });
60
-
61
- if (typeof accessor === 'string') {
62
- var _column$id;
63
-
64
- return _rollupPluginBabelHelpers["extends"]({}, column, {
65
- id: (_column$id = column.id) != null ? _column$id : accessor,
66
- accessorKey: accessor,
67
- __generated: true
68
- });
69
- }
70
-
71
- if (typeof accessor === 'function') {
72
- return _rollupPluginBabelHelpers["extends"]({}, column, {
73
- accessorFn: accessor,
74
- __generated: true
75
- });
76
- }
77
-
78
- throw new Error('Invalid accessor');
79
- },
80
- createGroup: function createGroup(column) {
81
- return _rollupPluginBabelHelpers["extends"]({}, column, {
82
- __generated: true
83
- });
84
- },
85
- useTable: function useTable(options) {
86
- var instanceRef = React__namespace.useRef(undefined);
87
- var rerender = React__namespace.useReducer(function () {
88
- return {};
89
- }, {})[1];
90
-
91
- if (!instanceRef.current) {
92
- instanceRef.current = core.createTableInstance(options, rerender);
93
- }
94
-
95
- instanceRef.current.updateOptions(options);
96
- return instanceRef.current;
97
- },
98
- types: undefined
99
- };
100
- }
101
-
102
- exports.createTable = createTable;
103
- //# sourceMappingURL=createTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTable.js","sources":["../../src/createTable.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Cell, Column, Row } from '.'\nimport { createTableInstance } from './core'\nimport { ReactTable, ColumnDef, AccessorFn, Options } from './types'\nimport { Overwrite } from './utils'\n\ntype TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {\n RowType<TTData>(): TableHelper<\n TTData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n\n FilterFns: <TTFilterFns>(\n filterFns: TTFilterFns\n ) => TableHelper<TData, TValue, TTFilterFns, TSortingFns, TAggregationFns>\n\n SortingFns: <TTSortingFns>(\n sortingFns: TTSortingFns\n ) => TableHelper<TData, TValue, TFilterFns, TTSortingFns, TAggregationFns>\n\n AggregationFns: <TTAggregationFns>(\n aggregationFns: TTAggregationFns\n ) => TableHelper<TData, TValue, TFilterFns, TSortingFns, TTAggregationFns>\n\n createColumns: (\n columns: ColumnDef<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n ) => ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]\n\n createGroup: (\n column: Overwrite<\n ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>,\n { __generated?: never; accessorFn?: never; accessorKey?: never }\n >\n ) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>\n\n createColumn: <TAccessor extends AccessorFn<TData> | keyof TData>(\n accessor: TAccessor,\n column: TAccessor extends (...args: any[]) => any\n ? // Accessor Fn\n Overwrite<\n ColumnDef<\n TData,\n ReturnType<TAccessor>,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >,\n {\n __generated?: never\n accessorFn?: never\n accessorKey?: never\n id: string\n }\n >\n : TAccessor extends keyof TData\n ? // Accessor Key\n Overwrite<\n ColumnDef<\n TData,\n TData[TAccessor],\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >,\n { __generated?: never; accessorFn?: never; accessorKey?: never }\n >\n : never\n ) => ColumnDef<\n TData,\n TAccessor extends (...args: any[]) => any\n ? ReturnType<TAccessor>\n : TAccessor extends keyof TData\n ? TData[TAccessor]\n : never,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n\n useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(\n options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ) => ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n\n types: {\n instance: ReactTable<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n columnDef: ColumnDef<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n cell: Cell<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n }\n}\n\nexport function createTable<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(): TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n RowType: () => createTable(),\n FilterFns: () => createTable(),\n SortingFns: () => createTable(),\n AggregationFns: () => createTable(),\n createColumns: columns => columns,\n createColumn: (accessor, column) => {\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 __generated: true,\n }\n }\n\n if (typeof accessor === 'function') {\n return {\n ...column,\n accessorFn: accessor,\n __generated: true,\n }\n }\n\n throw new Error('Invalid accessor')\n },\n createGroup: column => ({\n ...column,\n __generated: true,\n }),\n useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(\n options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ): ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> => {\n const instanceRef = React.useRef<\n ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >(undefined!)\n\n const rerender = React.useReducer(() => ({}), {})[1]\n\n if (!instanceRef.current) {\n instanceRef.current = createTableInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >(options, rerender)\n }\n\n instanceRef.current.updateOptions(options)\n\n return instanceRef.current\n },\n types: undefined as any,\n } as TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n}\n"],"names":["createTable","RowType","FilterFns","SortingFns","AggregationFns","createColumns","columns","createColumn","accessor","column","id","accessorKey","__generated","accessorFn","Error","createGroup","useTable","options","instanceRef","React","useRef","undefined","rerender","useReducer","current","createTableInstance","updateOptions","types"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHO,SAASA,WAAT,GAMmE;AACxE,SAAO;AACLC,IAAAA,OAAO,EAAE;AAAA,aAAMD,WAAW,EAAjB;AAAA,KADJ;AAELE,IAAAA,SAAS,EAAE;AAAA,aAAMF,WAAW,EAAjB;AAAA,KAFN;AAGLG,IAAAA,UAAU,EAAE;AAAA,aAAMH,WAAW,EAAjB;AAAA,KAHP;AAILI,IAAAA,cAAc,EAAE;AAAA,aAAMJ,WAAW,EAAjB;AAAA,KAJX;AAKLK,IAAAA,aAAa,EAAE,uBAAAC,OAAO;AAAA,aAAIA,OAAJ;AAAA,KALjB;AAMLC,IAAAA,YAAY,EAAE,sBAACC,QAAD,EAAWC,MAAX,EAAsB;AAClCA,MAAAA,MAAM,4CACDA,MADC;AAEJC,QAAAA,EAAE,EAAED,MAAM,CAACC;AAFP,QAAN;;AAKA,UAAI,OAAOF,QAAP,KAAoB,QAAxB,EAAkC;AAAA;;AAChC,wDACKC,MADL;AAEEC,UAAAA,EAAE,gBAAED,MAAM,CAACC,EAAT,yBAAeF,QAFnB;AAGEG,UAAAA,WAAW,EAAEH,QAHf;AAIEI,UAAAA,WAAW,EAAE;AAJf;AAMD;;AAED,UAAI,OAAOJ,QAAP,KAAoB,UAAxB,EAAoC;AAClC,wDACKC,MADL;AAEEI,UAAAA,UAAU,EAAEL,QAFd;AAGEI,UAAAA,WAAW,EAAE;AAHf;AAKD;;AAED,YAAM,IAAIE,KAAJ,CAAU,kBAAV,CAAN;AACD,KA9BI;AA+BLC,IAAAA,WAAW,EAAE,qBAAAN,MAAM;AAAA,sDACdA,MADc;AAEjBG,QAAAA,WAAW,EAAE;AAFI;AAAA,KA/Bd;AAmCLI,IAAAA,QAAQ,EAAE,kBACRC,OADQ,EAEgE;AACxE,UAAMC,WAAW,GAAGC,gBAAK,CAACC,MAAN,CAElBC,SAFkB,CAApB;AAIA,UAAMC,QAAQ,GAAGH,gBAAK,CAACI,UAAN,CAAiB;AAAA,eAAO,EAAP;AAAA,OAAjB,EAA6B,EAA7B,EAAiC,CAAjC,CAAjB;;AAEA,UAAI,CAACL,WAAW,CAACM,OAAjB,EAA0B;AACxBN,QAAAA,WAAW,CAACM,OAAZ,GAAsBC,wBAAmB,CAMvCR,OANuC,EAM9BK,QAN8B,CAAzC;AAOD;;AAEDJ,MAAAA,WAAW,CAACM,OAAZ,CAAoBE,aAApB,CAAkCT,OAAlC;AAEA,aAAOC,WAAW,CAACM,OAAnB;AACD,KAzDI;AA0DLG,IAAAA,KAAK,EAAEN;AA1DF,GAAP;AA4DD;;;;"}
@@ -1,331 +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
-
73
- if (!header) {
74
- return;
75
- }
76
-
77
- return instance.resetColumnSize(header.column.id);
78
- },
79
- getHeaderCanResize: function getHeaderCanResize(headerId) {
80
- var header = instance.getHeader(headerId);
81
-
82
- if (!header) {
83
- throw new Error();
84
- }
85
-
86
- return instance.getColumnCanResize(header.column.id);
87
- },
88
- getColumnCanResize: function getColumnCanResize(columnId) {
89
- var _ref2, _ref3, _column$enableResizin;
90
-
91
- var column = instance.getColumn(columnId);
92
-
93
- if (!column) {
94
- throw new Error();
95
- }
96
-
97
- return (_ref2 = (_ref3 = (_column$enableResizin = column.enableResizing) != null ? _column$enableResizin : instance.options.enableColumnResizing) != null ? _ref3 : column.defaultCanResize) != null ? _ref2 : true;
98
- },
99
- getColumnIsResizing: function getColumnIsResizing(columnId) {
100
- var column = instance.getColumn(columnId);
101
-
102
- if (!column) {
103
- throw new Error();
104
- }
105
-
106
- return instance.getState().columnSizingInfo.isResizingColumn === columnId;
107
- },
108
- getHeaderIsResizing: function getHeaderIsResizing(headerId) {
109
- var header = instance.getHeader(headerId);
110
-
111
- if (!header) {
112
- throw new Error();
113
- }
114
-
115
- return instance.getColumnIsResizing(header.column.id);
116
- },
117
- getHeaderResizerProps: function getHeaderResizerProps(headerId, userProps) {
118
- var header = instance.getHeader(headerId);
119
-
120
- if (!header) {
121
- return;
122
- }
123
-
124
- var column = instance.getColumn(header.column.id);
125
-
126
- if (!column) {
127
- return;
128
- }
129
-
130
- var canResize = column.getCanResize();
131
-
132
- var onResizeStart = function onResizeStart(e) {
133
- if (isTouchStartEvent(e)) {
134
- // lets not respond to multiple touches (e.g. 2 or 3 fingers)
135
- if (e.touches && e.touches.length > 1) {
136
- return;
137
- }
138
- }
139
-
140
- var columnSizingStart = header.getLeafHeaders().map(function (d) {
141
- return [d.column.id, d.getWidth()];
142
- });
143
- var clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;
144
-
145
- var updateOffset = function updateOffset(eventType, clientXPos) {
146
- if (typeof clientXPos !== 'number') {
147
- return;
148
- }
149
-
150
- var newColumnSizing = {};
151
- instance.setColumnSizingInfo(function (old) {
152
- var _old$startOffset, _old$startSize;
153
-
154
- var deltaOffset = clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0);
155
- var deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);
156
- old.columnSizingStart.forEach(function (_ref4) {
157
- var columnId = _ref4[0],
158
- headerWidth = _ref4[1];
159
- newColumnSizing[columnId] = Math.max(headerWidth + headerWidth * deltaPercentage, 0);
160
- });
161
- return _rollupPluginBabelHelpers["extends"]({}, old, {
162
- deltaOffset: deltaOffset,
163
- deltaPercentage: deltaPercentage
164
- });
165
- });
166
-
167
- if (instance.options.columnResizeMode === 'onChange' || eventType === 'end') {
168
- instance.setColumnSizing(function (old) {
169
- return _rollupPluginBabelHelpers["extends"]({}, old, newColumnSizing);
170
- });
171
- }
172
- };
173
-
174
- var onMove = function onMove(clientXPos) {
175
- return updateOffset('move', clientXPos);
176
- };
177
-
178
- var onEnd = function onEnd(clientXPos) {
179
- updateOffset('end', clientXPos);
180
- instance.setColumnSizingInfo(function (old) {
181
- return _rollupPluginBabelHelpers["extends"]({}, old, {
182
- isResizingColumn: false,
183
- startOffset: null,
184
- startSize: null,
185
- deltaOffset: null,
186
- deltaPercentage: null,
187
- columnSizingStart: []
188
- });
189
- });
190
- };
191
-
192
- var mouseEvents = {
193
- moveHandler: function moveHandler(e) {
194
- return onMove(e.clientX);
195
- },
196
- upHandler: function upHandler(e) {
197
- document.removeEventListener('mousemove', mouseEvents.moveHandler);
198
- document.removeEventListener('mouseup', mouseEvents.upHandler);
199
- onEnd(e.clientX);
200
- }
201
- };
202
- var touchEvents = {
203
- moveHandler: function moveHandler(e) {
204
- if (e.cancelable) {
205
- e.preventDefault();
206
- e.stopPropagation();
207
- }
208
-
209
- onMove(e.touches[0].clientX);
210
- return false;
211
- },
212
- upHandler: function upHandler(e) {
213
- document.removeEventListener('touchmove', touchEvents.moveHandler);
214
- document.removeEventListener('touchend', touchEvents.upHandler);
215
-
216
- if (e.cancelable) {
217
- e.preventDefault();
218
- e.stopPropagation();
219
- }
220
-
221
- onEnd(e.touches[0].clientX);
222
- }
223
- };
224
- var passiveIfSupported = passiveEventSupported() ? {
225
- passive: false
226
- } : false;
227
-
228
- if (isTouchStartEvent(e)) {
229
- document.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);
230
- document.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);
231
- } else {
232
- document.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);
233
- document.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);
234
- }
235
-
236
- instance.setColumnSizingInfo(function (old) {
237
- return _rollupPluginBabelHelpers["extends"]({}, old, {
238
- startOffset: clientX,
239
- startSize: header.getWidth(),
240
- deltaOffset: 0,
241
- deltaPercentage: 0,
242
- columnSizingStart: columnSizingStart,
243
- isResizingColumn: header.column.id
244
- });
245
- });
246
- };
247
-
248
- var initialProps = canResize ? {
249
- title: 'Toggle Grouping',
250
- draggable: false,
251
- role: 'separator',
252
- onMouseDown: function onMouseDown(e) {
253
- e.persist();
254
- onResizeStart(e);
255
- },
256
- onTouchStart: function onTouchStart(e) {
257
- e.persist();
258
- onResizeStart(e);
259
- }
260
- } : {};
261
- return utils.propGetter(initialProps, userProps);
262
- }
263
- };
264
- }
265
- function createColumn(column, instance) {
266
- return {
267
- getIsResizing: function getIsResizing() {
268
- return instance.getColumnIsResizing(column.id);
269
- },
270
- getCanResize: function getCanResize() {
271
- return instance.getColumnCanResize(column.id);
272
- },
273
- resetSize: function resetSize() {
274
- return instance.resetColumnSize(column.id);
275
- }
276
- };
277
- }
278
- function createHeader(header, instance) {
279
- return {
280
- getIsResizing: function getIsResizing() {
281
- return instance.getHeaderIsResizing(header.id);
282
- },
283
- getCanResize: function getCanResize() {
284
- return instance.getHeaderCanResize(header.id);
285
- },
286
- getResizerProps: function getResizerProps(userProps) {
287
- return instance.getHeaderResizerProps(header.id, userProps);
288
- },
289
- resetSize: function resetSize() {
290
- return instance.resetHeaderSize(header.id);
291
- }
292
- };
293
- }
294
- var passiveSupported = null;
295
- function passiveEventSupported() {
296
- if (typeof passiveSupported === 'boolean') return passiveSupported;
297
- var supported = false;
298
-
299
- try {
300
- var options = {
301
- get passive() {
302
- supported = true;
303
- return false;
304
- }
305
-
306
- };
307
-
308
- var noop = function noop() {};
309
-
310
- window.addEventListener('test', noop, options);
311
- window.removeEventListener('test', noop);
312
- } catch (err) {
313
- supported = false;
314
- }
315
-
316
- passiveSupported = supported;
317
- return passiveSupported;
318
- }
319
-
320
- function isTouchStartEvent(e) {
321
- return e.type === 'touchstart';
322
- }
323
-
324
- exports.createColumn = createColumn;
325
- exports.createHeader = createHeader;
326
- exports.defaultColumnSizing = defaultColumnSizing;
327
- exports.getDefaultOptions = getDefaultOptions;
328
- exports.getInitialState = getInitialState;
329
- exports.getInstance = getInstance;
330
- exports.passiveEventSupported = passiveEventSupported;
331
- //# sourceMappingURL=ColumnSizing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnSizing.js","sources":["../../../src/features/ColumnSizing.ts"],"sourcesContent":["import React, {\n ComponentProps,\n MouseEvent as ReactMouseEvent,\n PropsWithoutRef,\n PropsWithRef,\n TouchEvent as ReactTouchEvent,\n} from 'react'\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n PropGetterValue,\n ReactTable,\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 HeaderResizerProps = {\n title?: string\n onMouseDown?: (e: ReactMouseEvent) => void\n onTouchStart?: (e: ReactTouchEvent) => void\n draggable?: boolean\n role?: string\n}\n\nexport type ColumnSizingInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\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<HeaderResizerProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<HeaderResizerProps, 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<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n getCanResize: () => boolean\n getIsResizing: () => boolean\n resetSize: () => void\n}\n\nexport type ColumnSizingHeader<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n getCanResize: () => boolean\n getIsResizing: () => boolean\n getResizerProps: <TGetter extends Getter<HeaderResizerProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<HeaderResizerProps, 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<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): ColumnSizingDefaultOptions {\n return {\n columnResizeMode: 'onEnd',\n onColumnSizingChange: makeStateUpdater('columnSizing', instance),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', instance),\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): ColumnSizingInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> {\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 if (!header) {\n return\n }\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 getHeaderResizerProps: (headerId, userProps) => {\n const header = instance.getHeader(headerId)\n\n if (!header) {\n return\n }\n\n const column = instance.getColumn(header.column.id)\n\n if (!column) {\n return\n }\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 columnSizingStart: [string, number][] = header\n .getLeafHeaders()\n .map(d => [d.column.id, d.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] = Math.max(\n headerWidth + headerWidth * deltaPercentage,\n 0\n )\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: header.getWidth(),\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: header.column.id,\n }))\n }\n\n const initialProps: HeaderResizerProps = 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<\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): ColumnSizingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\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<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n header: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): ColumnSizingHeader<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n getIsResizing: () => instance.getHeaderIsResizing(header.id),\n getCanResize: () => instance.getHeaderCanResize(header.id),\n getResizerProps: userProps =>\n instance.getHeaderResizerProps(header.id, userProps),\n resetSize: () => instance.resetHeaderSize(header.id),\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","getLeafHeaders","map","d","getWidth","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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"}