@tanstack/react-table 0.0.1-alpha.9 → 8.0.0-alpha.3

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 (129) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +112 -0
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/build/cjs/aggregationTypes.js +130 -0
  4. package/build/cjs/aggregationTypes.js.map +1 -0
  5. package/build/cjs/core.js +552 -0
  6. package/build/cjs/core.js.map +1 -0
  7. package/build/cjs/createTable.js +108 -0
  8. package/build/cjs/createTable.js.map +1 -0
  9. package/build/cjs/features/ColumnSizing.js +317 -0
  10. package/build/cjs/features/ColumnSizing.js.map +1 -0
  11. package/build/cjs/features/Expanding.js +255 -0
  12. package/build/cjs/features/Expanding.js.map +1 -0
  13. package/build/cjs/features/Filters.js +445 -0
  14. package/build/cjs/features/Filters.js.map +1 -0
  15. package/build/cjs/features/Grouping.js +249 -0
  16. package/build/cjs/features/Grouping.js.map +1 -0
  17. package/build/cjs/features/Headers.js +549 -0
  18. package/build/cjs/features/Headers.js.map +1 -0
  19. package/build/cjs/features/Ordering.js +86 -0
  20. package/build/cjs/features/Ordering.js.map +1 -0
  21. package/build/cjs/features/Pagination.js +194 -0
  22. package/build/cjs/features/Pagination.js.map +1 -0
  23. package/build/cjs/features/Pinning.js +149 -0
  24. package/build/cjs/features/Pinning.js.map +1 -0
  25. package/build/cjs/features/RowSelection.js +541 -0
  26. package/build/cjs/features/RowSelection.js.map +1 -0
  27. package/build/cjs/features/Sorting.js +327 -0
  28. package/build/cjs/features/Sorting.js.map +1 -0
  29. package/build/cjs/features/Visibility.js +166 -0
  30. package/build/cjs/features/Visibility.js.map +1 -0
  31. package/build/cjs/filterTypes.js +172 -0
  32. package/build/cjs/filterTypes.js.map +1 -0
  33. package/build/cjs/index.js +30 -0
  34. package/build/cjs/index.js.map +1 -0
  35. package/build/cjs/sortTypes.js +122 -0
  36. package/build/cjs/sortTypes.js.map +1 -0
  37. package/build/cjs/utils/columnFilterRowsFn.js +131 -0
  38. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -0
  39. package/build/cjs/utils/expandRowsFn.js +38 -0
  40. package/build/cjs/utils/expandRowsFn.js.map +1 -0
  41. package/build/cjs/utils/globalFilterRowsFn.js +101 -0
  42. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -0
  43. package/build/cjs/utils/groupRowsFn.js +155 -0
  44. package/build/cjs/utils/groupRowsFn.js.map +1 -0
  45. package/build/cjs/utils/sortRowsFn.js +94 -0
  46. package/build/cjs/utils/sortRowsFn.js.map +1 -0
  47. package/build/cjs/utils.js +146 -0
  48. package/build/cjs/utils.js.map +1 -0
  49. package/build/esm/index.js +4747 -0
  50. package/build/esm/index.js.map +1 -0
  51. package/build/stats-html.html +2689 -0
  52. package/build/stats-react.json +817 -0
  53. package/build/types/aggregationTypes.d.ts +22 -0
  54. package/build/types/core.d.ts +111 -0
  55. package/build/types/createTable.d.ts +53 -0
  56. package/build/types/features/ColumnSizing.d.ts +67 -0
  57. package/build/types/features/Expanding.d.ts +53 -0
  58. package/build/types/features/Filters.d.ts +98 -0
  59. package/build/types/features/Grouping.d.ts +82 -0
  60. package/build/types/features/Headers.d.ts +41 -0
  61. package/build/types/features/Ordering.d.ts +19 -0
  62. package/build/types/features/Pagination.d.ts +43 -0
  63. package/build/types/features/Pinning.d.ts +39 -0
  64. package/build/types/features/RowSelection.d.ts +66 -0
  65. package/build/types/features/Sorting.d.ts +78 -0
  66. package/build/types/features/Visibility.d.ts +47 -0
  67. package/build/types/filterTypes.d.ts +50 -0
  68. package/build/types/index.d.ts +7 -0
  69. package/build/types/sortTypes.d.ts +18 -0
  70. package/build/types/types.d.ts +127 -0
  71. package/build/types/utils/columnFilterRowsFn.d.ts +2 -0
  72. package/build/types/utils/expandRowsFn.d.ts +2 -0
  73. package/build/types/utils/globalFilterRowsFn.d.ts +2 -0
  74. package/build/types/utils/groupRowsFn.d.ts +2 -0
  75. package/build/types/utils/paginateRowsFn.d.ts +2 -0
  76. package/build/types/utils/sortRowsFn.d.ts +2 -0
  77. package/build/types/utils.d.ts +28 -0
  78. package/{dist/react-table.development.js → build/umd/index.development.js} +1617 -249
  79. package/build/umd/index.development.js.map +1 -0
  80. package/build/umd/index.production.js +12 -0
  81. package/build/umd/index.production.js.map +1 -0
  82. package/package.json +9 -94
  83. package/src/core.tsx +252 -264
  84. package/src/createTable.tsx +69 -9
  85. package/src/features/ColumnSizing.ts +453 -0
  86. package/src/features/Expanding.ts +27 -11
  87. package/src/features/Filters.ts +75 -20
  88. package/src/features/Grouping.ts +27 -12
  89. package/src/features/Headers.ts +55 -50
  90. package/src/features/Ordering.ts +2 -3
  91. package/src/features/Pagination.ts +314 -0
  92. package/src/features/Pinning.ts +3 -16
  93. package/src/features/RowSelection.ts +831 -0
  94. package/src/features/Sorting.ts +82 -22
  95. package/src/features/Visibility.ts +2 -4
  96. package/src/sortTypes.ts +1 -1
  97. package/src/types.ts +55 -9
  98. package/src/utils/columnFilterRowsFn.ts +5 -12
  99. package/src/utils/expandRowsFn.ts +2 -5
  100. package/src/utils/globalFilterRowsFn.ts +3 -10
  101. package/src/utils/groupRowsFn.ts +3 -5
  102. package/src/utils/paginateRowsFn.ts +34 -0
  103. package/src/utils/sortRowsFn.ts +5 -5
  104. package/src/utils.tsx +20 -6
  105. package/dist/react-table.development.js.map +0 -1
  106. package/dist/react-table.production.min.js +0 -2
  107. package/dist/react-table.production.min.js.map +0 -1
  108. package/lib/index.js +0 -65
  109. package/src/features/notest/useAbsoluteLayout.test.js +0 -152
  110. package/src/features/notest/useBlockLayout.test.js +0 -158
  111. package/src/features/notest/useColumnOrder.test.js +0 -186
  112. package/src/features/notest/useExpanded.test.js +0 -125
  113. package/src/features/notest/useFilters.test.js +0 -393
  114. package/src/features/notest/useFiltersAndRowSelect.test.js +0 -256
  115. package/src/features/notest/useFlexLayout.test.js +0 -152
  116. package/src/features/notest/useGroupBy.test.js +0 -259
  117. package/src/features/notest/usePagination.test.js +0 -231
  118. package/src/features/notest/useResizeColumns.test.js +0 -229
  119. package/src/features/notest/useRowSelect.test.js +0 -250
  120. package/src/features/notest/useRowState.test.js +0 -178
  121. package/src/features/tests/Visibility.test.tsx +0 -225
  122. package/src/features/tests/__snapshots__/Visibility.test.tsx.snap +0 -390
  123. package/src/features/tests/withSorting.notest.tsx +0 -341
  124. package/src/features/withColumnResizing.ts +0 -281
  125. package/src/features/withPagination.ts +0 -208
  126. package/src/features/withRowSelection.ts +0 -467
  127. package/src/test-utils/makeTestData.ts +0 -41
  128. package/src/tests/__snapshots__/core.test.tsx.snap +0 -148
  129. package/src/tests/core.test.tsx +0 -241
@@ -0,0 +1,86 @@
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 utils = require('../utils.js');
16
+ var Grouping = require('./Grouping.js');
17
+
18
+ //
19
+ function getInitialState() {
20
+ return {
21
+ columnOrder: []
22
+ };
23
+ }
24
+ function getDefaultOptions(instance) {
25
+ return {
26
+ onColumnOrderChange: utils.makeStateUpdater('columnOrder', instance)
27
+ };
28
+ }
29
+ function getInstance(instance) {
30
+ return {
31
+ setColumnOrder: function setColumnOrder(updater) {
32
+ return instance.options.onColumnOrderChange == null ? void 0 : instance.options.onColumnOrderChange(updater, utils.functionalUpdate(updater, instance.getState().columnOrder));
33
+ },
34
+ resetColumnOrder: function resetColumnOrder() {
35
+ var _instance$initialStat;
36
+
37
+ instance.setColumnOrder((_instance$initialStat = instance.initialState.columnOrder) != null ? _instance$initialStat : []);
38
+ },
39
+ getOrderColumnsFn: utils.memo(function () {
40
+ return [instance.getState().columnOrder, instance.getState().grouping, instance.options.groupedColumnMode];
41
+ }, function (columnOrder, grouping, groupedColumnMode) {
42
+ return function (columns) {
43
+ // Sort grouped columns to the start of the column list
44
+ // before the headers are built
45
+ var orderedColumns = []; // If there is no order, return the normal columns
46
+
47
+ if (!(columnOrder != null && columnOrder.length)) {
48
+ orderedColumns = columns;
49
+ } else {
50
+ var columnOrderCopy = [].concat(columnOrder); // If there is an order, make a copy of the columns
51
+
52
+ var columnsCopy = [].concat(columns); // And make a new ordered array of the columns
53
+ // Loop over the columns and place them in order into the new array
54
+
55
+ var _loop = function _loop() {
56
+ var targetColumnId = columnOrderCopy.shift();
57
+ var foundIndex = columnsCopy.findIndex(function (d) {
58
+ return d.id === targetColumnId;
59
+ });
60
+
61
+ if (foundIndex > -1) {
62
+ orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);
63
+ }
64
+ };
65
+
66
+ while (columnsCopy.length && columnOrderCopy.length) {
67
+ _loop();
68
+ } // If there are any columns left, add them to the end
69
+
70
+
71
+ orderedColumns = [].concat(orderedColumns, columnsCopy);
72
+ }
73
+
74
+ return Grouping.orderColumns(orderedColumns, grouping, groupedColumnMode);
75
+ };
76
+ }, {
77
+ key: 'getOrderColumnsFn',
78
+ debug: instance.options.debug
79
+ })
80
+ };
81
+ }
82
+
83
+ exports.getDefaultOptions = getDefaultOptions;
84
+ exports.getInitialState = getInitialState;
85
+ exports.getInstance = getInstance;
86
+ //# sourceMappingURL=Ordering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ordering.js","sources":["../../../src/features/Ordering.ts"],"sourcesContent":["import { functionalUpdate, makeStateUpdater, memo } from '../utils'\n\nimport { ReactTable, OnChangeFn, Updater, Column } from '../types'\n\nimport * as Grouping from './Grouping'\n\nexport type ColumnOrderState = string[]\n\nexport type ColumnOrderTableState = {\n columnOrder: ColumnOrderState\n}\n\nexport type ColumnOrderOptions = {\n onColumnOrderChange?: OnChangeFn<ColumnOrderState>\n}\n\nexport type ColumnOrderDefaultOptions = {\n onColumnOrderChange: OnChangeFn<ColumnOrderState>\n}\n\nexport type ColumnOrderInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n setColumnOrder: (updater: Updater<ColumnOrderState>) => void\n resetColumnOrder: () => void\n getOrderColumnsFn: () => (\n columns: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]\n ) => Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]\n}\n\n//\n\nexport function getInitialState(): ColumnOrderTableState {\n return {\n columnOrder: [],\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): ColumnOrderDefaultOptions {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', 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): ColumnOrderInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> {\n return {\n setColumnOrder: updater =>\n instance.options.onColumnOrderChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnOrder)\n ),\n resetColumnOrder: () => {\n instance.setColumnOrder(instance.initialState.columnOrder ?? [])\n },\n getOrderColumnsFn: memo(\n () => [\n instance.getState().columnOrder,\n instance.getState().grouping,\n instance.options.groupedColumnMode,\n ],\n (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Column<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[] = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(\n d => d.id === targetColumnId\n )\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy]\n }\n\n return Grouping.orderColumns(\n orderedColumns,\n grouping,\n groupedColumnMode\n )\n },\n { key: 'getOrderColumnsFn', debug: instance.options.debug }\n ),\n }\n}\n"],"names":["getInitialState","columnOrder","getDefaultOptions","instance","onColumnOrderChange","makeStateUpdater","getInstance","setColumnOrder","updater","options","functionalUpdate","getState","resetColumnOrder","initialState","getOrderColumnsFn","memo","grouping","groupedColumnMode","columns","orderedColumns","length","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","findIndex","d","id","push","splice","Grouping","key","debug"],"mappings":";;;;;;;;;;;;;;;;;AAkCA;AAEO,SAASA,eAAT,GAAkD;AACvD,SAAO;AACLC,IAAAA,WAAW,EAAE;AADR,GAAP;AAGD;AAEM,SAASC,iBAAT,CAOLC,QAPK,EAQsB;AAC3B,SAAO;AACLC,IAAAA,mBAAmB,EAAEC,sBAAgB,CAAC,aAAD,EAAgBF,QAAhB;AADhC,GAAP;AAGD;AAEM,SAASG,WAAT,CAOLH,QAPK,EAcL;AACA,SAAO;AACLI,IAAAA,cAAc,EAAE,wBAAAC,OAAO;AAAA,aACrBL,QAAQ,CAACM,OAAT,CAAiBL,mBADI,oBACrBD,QAAQ,CAACM,OAAT,CAAiBL,mBAAjB,CACEI,OADF,EAEEE,sBAAgB,CAACF,OAAD,EAAUL,QAAQ,CAACQ,QAAT,GAAoBV,WAA9B,CAFlB,CADqB;AAAA,KADlB;AAMLW,IAAAA,gBAAgB,EAAE,4BAAM;AAAA;;AACtBT,MAAAA,QAAQ,CAACI,cAAT,0BAAwBJ,QAAQ,CAACU,YAAT,CAAsBZ,WAA9C,oCAA6D,EAA7D;AACD,KARI;AASLa,IAAAA,iBAAiB,EAAEC,UAAI,CACrB;AAAA,aAAM,CACJZ,QAAQ,CAACQ,QAAT,GAAoBV,WADhB,EAEJE,QAAQ,CAACQ,QAAT,GAAoBK,QAFhB,EAGJb,QAAQ,CAACM,OAAT,CAAiBQ,iBAHb,CAAN;AAAA,KADqB,EAMrB,UAAChB,WAAD,EAAce,QAAd,EAAwBC,iBAAxB;AAAA,aAA8C,UAAAC,OAAO,EAAI;AACvD;AACA;AACA,YAAIC,cAMD,GAAG,EANN,CAHuD;;AAYvD,YAAI,EAAClB,WAAD,YAACA,WAAW,CAAEmB,MAAd,CAAJ,EAA0B;AACxBD,UAAAA,cAAc,GAAGD,OAAjB;AACD,SAFD,MAEO;AACL,cAAMG,eAAe,aAAOpB,WAAP,CAArB,CADK;;AAIL,cAAMqB,WAAW,aAAOJ,OAAP,CAAjB,CAJK;AAQL;;AARK;AAUH,gBAAMK,cAAc,GAAGF,eAAe,CAACG,KAAhB,EAAvB;AACA,gBAAMC,UAAU,GAAGH,WAAW,CAACI,SAAZ,CACjB,UAAAC,CAAC;AAAA,qBAAIA,CAAC,CAACC,EAAF,KAASL,cAAb;AAAA,aADgB,CAAnB;;AAGA,gBAAIE,UAAU,GAAG,CAAC,CAAlB,EAAqB;AACnBN,cAAAA,cAAc,CAACU,IAAf,CAAoBP,WAAW,CAACQ,MAAZ,CAAmBL,UAAnB,EAA+B,CAA/B,EAAkC,CAAlC,CAApB;AACD;AAhBE;;AASL,iBAAOH,WAAW,CAACF,MAAZ,IAAsBC,eAAe,CAACD,MAA7C,EAAqD;AAAA;AAQpD,WAjBI;;;AAoBLD,UAAAA,cAAc,aAAOA,cAAP,EAA0BG,WAA1B,CAAd;AACD;;AAED,eAAOS,qBAAA,CACLZ,cADK,EAELH,QAFK,EAGLC,iBAHK,CAAP;AAKD,OA1CD;AAAA,KANqB,EAiDrB;AAAEe,MAAAA,GAAG,EAAE,mBAAP;AAA4BC,MAAAA,KAAK,EAAE9B,QAAQ,CAACM,OAAT,CAAiBwB;AAApD,KAjDqB;AATlB,GAAP;AA6DD;;;;;;"}
@@ -0,0 +1,194 @@
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
+ function getInitialState() {
20
+ return {
21
+ pagination: {
22
+ pageIndex: 0,
23
+ pageSize: 10,
24
+ pageCount: -1
25
+ }
26
+ };
27
+ }
28
+ function getDefaultOptions(instance) {
29
+ return {
30
+ onPaginationChange: utils.makeStateUpdater('pagination', instance),
31
+ autoResetPageIndex: true
32
+ };
33
+ }
34
+ function getInstance(instance) {
35
+ var registered = false;
36
+ return {
37
+ _notifyPageIndexReset: function _notifyPageIndexReset() {
38
+ if (!registered) {
39
+ registered = true;
40
+ return;
41
+ }
42
+
43
+ if (instance.options.autoResetAll === false) {
44
+ return;
45
+ }
46
+
47
+ if (instance.options.autoResetAll === true || instance.options.autoResetPageIndex) {
48
+ instance.resetPageSize();
49
+ }
50
+ },
51
+ setPagination: function setPagination(updater) {
52
+ var safeUpdater = function safeUpdater(old) {
53
+ utils.functionalUpdate(old, updater);
54
+
55
+ if (!instance.options.paginateRowsFn) {
56
+ var _instance$getPreExpan;
57
+
58
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
59
+ pageCount: (_instance$getPreExpan = instance.getPreExpandedRows()) != null && _instance$getPreExpan.length ? Math.ceil(instance.getPreExpandedRows().length / instance.getState().pagination.pageSize) : 0
60
+ });
61
+ }
62
+
63
+ return old;
64
+ };
65
+
66
+ return instance.options.onPaginationChange == null ? void 0 : instance.options.onPaginationChange(safeUpdater, utils.functionalUpdate(safeUpdater, instance.getState().pagination));
67
+ },
68
+ resetPagination: function resetPagination() {
69
+ var _instance$initialStat;
70
+
71
+ instance.setPagination((_instance$initialStat = instance.initialState.pagination) != null ? _instance$initialStat : {
72
+ pageIndex: 0,
73
+ pageSize: 10,
74
+ pageCount: -1
75
+ });
76
+ },
77
+ setPageIndex: function setPageIndex(updater) {
78
+ instance.setPagination(function (old) {
79
+ var newPageIndex = utils.functionalUpdate(updater, old.pageIndex);
80
+ var maxPageIndex = old.pageCount > 0 ? old.pageCount - 1 : Number.MAX_SAFE_INTEGER;
81
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
82
+ pageIndex: Math.min(Math.max(0, newPageIndex), maxPageIndex)
83
+ });
84
+ });
85
+ },
86
+ resetPageIndex: function resetPageIndex() {
87
+ instance.setPageIndex(0);
88
+ },
89
+ resetPageSize: function resetPageSize() {
90
+ var _instance$options$ini, _instance$options$ini2, _instance$options$ini3;
91
+
92
+ instance.setPageSize((_instance$options$ini = (_instance$options$ini2 = instance.options.initialState) == null ? void 0 : (_instance$options$ini3 = _instance$options$ini2.pagination) == null ? void 0 : _instance$options$ini3.pageSize) != null ? _instance$options$ini : 10);
93
+ },
94
+ setPageSize: function setPageSize(updater) {
95
+ instance.setPagination(function (old) {
96
+ var pageSize = Math.max(1, utils.functionalUpdate(updater, old.pageSize));
97
+ var topRowIndex = old.pageSize * old.pageIndex;
98
+ var pageIndex = Math.floor(topRowIndex / pageSize);
99
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
100
+ pageIndex: pageIndex,
101
+ pageSize: pageSize
102
+ });
103
+ });
104
+ },
105
+ setPageCount: function setPageCount(updater) {
106
+ return instance.setPagination(function (old) {
107
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
108
+ pageCount: Math.max(-1, utils.functionalUpdate(updater, old.pageCount))
109
+ });
110
+ });
111
+ },
112
+ getPageOptions: utils.memo(function () {
113
+ return [instance.getState().pagination.pageSize, instance.getState().pagination.pageCount];
114
+ }, function (pageSize, pageCount) {
115
+ var pageOptions = [];
116
+
117
+ if (pageCount > 0) {
118
+ pageOptions = [].concat(new Array(pageCount)).fill(null).map(function (_, i) {
119
+ return i;
120
+ });
121
+ }
122
+
123
+ return pageOptions;
124
+ }, {
125
+ key: 'getPageOptions',
126
+ debug: instance.options.debug
127
+ }),
128
+ getCanPreviousPage: function getCanPreviousPage() {
129
+ return instance.getState().pagination.pageIndex > 0;
130
+ },
131
+ getCanNextPage: function getCanNextPage() {
132
+ var _instance$getState$pa = instance.getState().pagination,
133
+ pageIndex = _instance$getState$pa.pageIndex,
134
+ pageCount = _instance$getState$pa.pageCount,
135
+ pageSize = _instance$getState$pa.pageSize;
136
+
137
+ if (pageCount === -1) {
138
+ return true;
139
+ }
140
+
141
+ if (pageCount === 0) {
142
+ return false;
143
+ }
144
+
145
+ return pageIndex < Math.ceil(instance.getPrePaginationRows().length / pageSize) - 1;
146
+ },
147
+ gotoPreviousPage: function gotoPreviousPage() {
148
+ return instance.setPageIndex == null ? void 0 : instance.setPageIndex(function (old) {
149
+ return old - 1;
150
+ });
151
+ },
152
+ gotoNextPage: function gotoNextPage() {
153
+ return instance.setPageIndex == null ? void 0 : instance.setPageIndex(function (old) {
154
+ return old + 1;
155
+ });
156
+ },
157
+ getPaginationRowModel: utils.memo(function () {
158
+ return [instance.getState().pagination, instance.getExpandedRowModel(), instance.options.paginateRowsFn];
159
+ }, function (_pagination, rowModel, paginateRowsFn) {
160
+ if (!paginateRowsFn || !rowModel.rows.length) {
161
+ return rowModel;
162
+ }
163
+
164
+ if (process.env.NODE_ENV !== 'production' && instance.options.debug) console.info('Paginating...');
165
+ return paginateRowsFn(instance, rowModel);
166
+ }, {
167
+ key: 'getPaginationRowModel',
168
+ debug: instance.options.debug
169
+ }),
170
+ getPrePaginationRows: function getPrePaginationRows() {
171
+ return instance.getExpandedRowModel().rows;
172
+ },
173
+ getPrePaginationFlatRows: function getPrePaginationFlatRows() {
174
+ return instance.getExpandedRowModel().flatRows;
175
+ },
176
+ getPrePaginationRowsById: function getPrePaginationRowsById() {
177
+ return instance.getExpandedRowModel().rowsById;
178
+ },
179
+ getPaginationRows: function getPaginationRows() {
180
+ return instance.getPaginationRowModel().rows;
181
+ },
182
+ getPaginationFlatRows: function getPaginationFlatRows() {
183
+ return instance.getPaginationRowModel().flatRows;
184
+ },
185
+ getPaginationRowsById: function getPaginationRowsById() {
186
+ return instance.getPaginationRowModel().rowsById;
187
+ }
188
+ };
189
+ }
190
+
191
+ exports.getDefaultOptions = getDefaultOptions;
192
+ exports.getInitialState = getInitialState;
193
+ exports.getInstance = getInstance;
194
+ //# sourceMappingURL=Pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.js","sources":["../../../src/features/Pagination.ts"],"sourcesContent":["import {\n Column,\n OnChangeFn,\n ReactTable,\n Row,\n RowModel,\n TableState,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo } from '../utils'\n\nexport type PaginationState = {\n pageIndex: number\n pageSize: number\n pageCount: number\n}\n\nexport type PaginationTableState = {\n pagination: PaginationState\n}\n\nexport type PaginationOptions<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n onPaginationChange?: OnChangeFn<PaginationState>\n autoResetPageIndex?: boolean\n paginateRowsFn?: (\n instance: ReactTable<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >,\n rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n}\n\nexport type PaginationDefaultOptions = {\n onPaginationChange: OnChangeFn<PaginationState>\n autoResetPageIndex: boolean\n}\n\nexport type PaginationInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n _notifyPageIndexReset: () => void\n setPagination: (updater: Updater<PaginationState>) => void\n resetPagination: () => void\n setPageIndex: (updater: Updater<number>) => void\n resetPageIndex: () => void\n setPageSize: (updater: Updater<number>) => void\n resetPageSize: () => void\n setPageCount: (updater: Updater<number>) => void\n getPageOptions: () => number[]\n getCanPreviousPage: () => boolean\n getCanNextPage: () => boolean\n gotoPreviousPage: () => void\n gotoNextPage: () => void\n getPaginationRowModel: () => RowModel<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n getPrePaginationRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPrePaginationFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPrePaginationRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n getPaginationRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPaginationFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPaginationRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n}\n\n//\n\nexport function getInitialState(): PaginationTableState {\n return {\n pagination: {\n pageIndex: 0,\n pageSize: 10,\n pageCount: -1,\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): PaginationDefaultOptions {\n return {\n onPaginationChange: makeStateUpdater('pagination', instance),\n autoResetPageIndex: true,\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): PaginationInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n let registered = false\n return {\n _notifyPageIndexReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetPageIndex\n ) {\n instance.resetPageSize()\n }\n },\n setPagination: updater => {\n const safeUpdater: Updater<PaginationState> = old => {\n const newState = functionalUpdate(old, updater)\n\n if (!instance.options.paginateRowsFn) {\n return {\n ...old,\n pageCount: instance.getPreExpandedRows()?.length\n ? Math.ceil(\n instance.getPreExpandedRows().length /\n instance.getState().pagination.pageSize\n )\n : 0,\n }\n }\n\n return old\n }\n\n return instance.options.onPaginationChange?.(\n safeUpdater,\n functionalUpdate(safeUpdater, instance.getState().pagination)\n )\n },\n resetPagination: () => {\n instance.setPagination(\n instance.initialState.pagination ?? {\n pageIndex: 0,\n pageSize: 10,\n pageCount: -1,\n }\n )\n },\n setPageIndex: updater => {\n instance.setPagination(old => {\n const newPageIndex = functionalUpdate(updater, old.pageIndex)\n const maxPageIndex =\n old.pageCount > 0 ? old.pageCount - 1 : Number.MAX_SAFE_INTEGER\n\n return {\n ...old,\n pageIndex: Math.min(Math.max(0, newPageIndex), maxPageIndex),\n }\n })\n },\n resetPageIndex: () => {\n instance.setPageIndex(0)\n },\n resetPageSize: () => {\n instance.setPageSize(\n instance.options.initialState?.pagination?.pageSize ?? 10\n )\n },\n setPageSize: updater => {\n instance.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\n const topRowIndex = old.pageSize * old.pageIndex!\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n })\n },\n setPageCount: updater =>\n instance.setPagination(old => ({\n ...old,\n pageCount: Math.max(-1, functionalUpdate(updater, old.pageCount)),\n })),\n\n getPageOptions: memo(\n () => [\n instance.getState().pagination.pageSize,\n instance.getState().pagination.pageCount,\n ],\n (pageSize, pageCount) => {\n let pageOptions: number[] = []\n if (pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\n }\n return pageOptions\n },\n {\n key: 'getPageOptions',\n debug: instance.options.debug,\n }\n ),\n\n getCanPreviousPage: () => instance.getState().pagination.pageIndex > 0,\n\n getCanNextPage: () => {\n const { pageIndex, pageCount, pageSize } = instance.getState().pagination\n\n if (pageCount === -1) {\n return true\n }\n\n if (pageCount === 0) {\n return false\n }\n\n return (\n pageIndex <\n Math.ceil(instance.getPrePaginationRows().length / pageSize) - 1\n )\n },\n\n gotoPreviousPage: () => {\n return instance.setPageIndex?.(old => old! - 1)\n },\n\n gotoNextPage: () => {\n return instance.setPageIndex?.(old => old! + 1)\n },\n\n getPaginationRowModel: memo(\n () => [\n instance.getState().pagination,\n instance.getExpandedRowModel(),\n instance.options.paginateRowsFn,\n ],\n (_pagination, rowModel, paginateRowsFn) => {\n if (!paginateRowsFn || !rowModel.rows.length) {\n return rowModel\n }\n\n if (process.env.NODE_ENV !== 'production' && instance.options.debug)\n console.info('Paginating...')\n\n return paginateRowsFn(instance, rowModel)\n },\n {\n key: 'getPaginationRowModel',\n debug: instance.options.debug,\n }\n ),\n\n getPrePaginationRows: () => instance.getExpandedRowModel().rows,\n getPrePaginationFlatRows: () => instance.getExpandedRowModel().flatRows,\n getPrePaginationRowsById: () => instance.getExpandedRowModel().rowsById,\n getPaginationRows: () => instance.getPaginationRowModel().rows,\n getPaginationFlatRows: () => instance.getPaginationRowModel().flatRows,\n getPaginationRowsById: () => instance.getPaginationRowModel().rowsById,\n }\n}\n"],"names":["getInitialState","pagination","pageIndex","pageSize","pageCount","getDefaultOptions","instance","onPaginationChange","makeStateUpdater","autoResetPageIndex","getInstance","registered","_notifyPageIndexReset","options","autoResetAll","resetPageSize","setPagination","updater","safeUpdater","old","functionalUpdate","paginateRowsFn","getPreExpandedRows","length","Math","ceil","getState","resetPagination","initialState","setPageIndex","newPageIndex","maxPageIndex","Number","MAX_SAFE_INTEGER","min","max","resetPageIndex","setPageSize","topRowIndex","floor","setPageCount","getPageOptions","memo","pageOptions","Array","fill","map","_","i","key","debug","getCanPreviousPage","getCanNextPage","getPrePaginationRows","gotoPreviousPage","gotoNextPage","getPaginationRowModel","getExpandedRowModel","_pagination","rowModel","rows","process","env","NODE_ENV","console","info","getPrePaginationFlatRows","flatRows","getPrePaginationRowsById","rowsById","getPaginationRows","getPaginationFlatRows","getPaginationRowsById"],"mappings":"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"}
@@ -0,0 +1,149 @@
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 utils = require('../utils.js');
16
+
17
+ //
18
+ function getInitialState() {
19
+ return {
20
+ columnPinning: {
21
+ left: [],
22
+ right: []
23
+ }
24
+ };
25
+ }
26
+ function getDefaultOptions(instance) {
27
+ return {
28
+ onColumnPinningChange: utils.makeStateUpdater('columnPinning', instance)
29
+ };
30
+ }
31
+ function createColumn(column, instance) {
32
+ return {
33
+ getCanPin: function getCanPin() {
34
+ return instance.getColumnCanPin(column.id);
35
+ },
36
+ getPinnedIndex: function getPinnedIndex() {
37
+ return instance.getColumnPinnedIndex(column.id);
38
+ },
39
+ getIsPinned: function getIsPinned() {
40
+ return instance.getColumnIsPinned(column.id);
41
+ },
42
+ pin: function pin(position) {
43
+ return instance.pinColumn(column.id, position);
44
+ }
45
+ };
46
+ }
47
+ function getInstance(instance) {
48
+ return {
49
+ setColumnPinning: function setColumnPinning(updater) {
50
+ return instance.options.onColumnPinningChange == null ? void 0 : instance.options.onColumnPinningChange(updater, utils.functionalUpdate(updater, instance.getState().columnPinning));
51
+ },
52
+ resetColumnPinning: function resetColumnPinning() {
53
+ var _instance$options$ini, _instance$options$ini2;
54
+
55
+ return instance.setColumnPinning((_instance$options$ini = (_instance$options$ini2 = instance.options.initialState) == null ? void 0 : _instance$options$ini2.columnPinning) != null ? _instance$options$ini : {});
56
+ },
57
+ pinColumn: function pinColumn(columnId, position) {
58
+ var column = instance.getColumn(columnId);
59
+ var columnIds = column == null ? void 0 : column.getLeafColumns().map(function (d) {
60
+ return d.id;
61
+ }).filter(Boolean);
62
+ instance.setColumnPinning(function (old) {
63
+ var _old$left3, _old$right3;
64
+
65
+ if (position === 'right') {
66
+ var _old$left, _old$right;
67
+
68
+ return {
69
+ left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(function (d) {
70
+ return !(columnIds != null && columnIds.includes(d));
71
+ }),
72
+ right: [].concat(((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(function (d) {
73
+ return !(columnIds != null && columnIds.includes(d));
74
+ }), columnIds)
75
+ };
76
+ }
77
+
78
+ if (position === 'left') {
79
+ var _old$left2, _old$right2;
80
+
81
+ return {
82
+ left: [].concat(((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(function (d) {
83
+ return !(columnIds != null && columnIds.includes(d));
84
+ }), columnIds),
85
+ right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(function (d) {
86
+ return !(columnIds != null && columnIds.includes(d));
87
+ })
88
+ };
89
+ }
90
+
91
+ return {
92
+ left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(function (d) {
93
+ return !(columnIds != null && columnIds.includes(d));
94
+ }),
95
+ right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(function (d) {
96
+ return !(columnIds != null && columnIds.includes(d));
97
+ })
98
+ };
99
+ });
100
+ },
101
+ getColumnCanPin: function getColumnCanPin(columnId) {
102
+ var column = instance.getColumn(columnId);
103
+
104
+ if (!column) {
105
+ throw new Error();
106
+ }
107
+
108
+ var leafColumns = column.getLeafColumns();
109
+ return leafColumns.some(function (d) {
110
+ var _ref, _ref2, _d$enablePinning;
111
+
112
+ return (_ref = (_ref2 = (_d$enablePinning = d.enablePinning) != null ? _d$enablePinning : instance.options.enablePinning) != null ? _ref2 : d.defaultCanPin) != null ? _ref : !!d.accessorFn;
113
+ });
114
+ },
115
+ getColumnIsPinned: function getColumnIsPinned(columnId) {
116
+ var column = instance.getColumn(columnId);
117
+
118
+ if (!column) {
119
+ throw new Error();
120
+ }
121
+
122
+ var leafColumnIds = column.getLeafColumns().map(function (d) {
123
+ return d.id;
124
+ });
125
+ var _instance$getState$co = instance.getState().columnPinning,
126
+ left = _instance$getState$co.left,
127
+ right = _instance$getState$co.right;
128
+ var isLeft = leafColumnIds.some(function (d) {
129
+ return left == null ? void 0 : left.includes(d);
130
+ });
131
+ var isRight = leafColumnIds.some(function (d) {
132
+ return right == null ? void 0 : right.includes(d);
133
+ });
134
+ return isLeft ? 'left' : isRight ? 'right' : false;
135
+ },
136
+ getColumnPinnedIndex: function getColumnPinnedIndex(columnId) {
137
+ var _instance$getState$co2, _instance$getState$co3, _instance$getState$co4;
138
+
139
+ var position = instance.getColumnIsPinned(columnId);
140
+ return position ? (_instance$getState$co2 = (_instance$getState$co3 = instance.getState().columnPinning) == null ? void 0 : (_instance$getState$co4 = _instance$getState$co3[position]) == null ? void 0 : _instance$getState$co4.indexOf(columnId)) != null ? _instance$getState$co2 : -1 : 0;
141
+ }
142
+ };
143
+ }
144
+
145
+ exports.createColumn = createColumn;
146
+ exports.getDefaultOptions = getDefaultOptions;
147
+ exports.getInitialState = getInitialState;
148
+ exports.getInstance = getInstance;
149
+ //# sourceMappingURL=Pinning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pinning.js","sources":["../../../src/features/Pinning.ts"],"sourcesContent":["import { OnChangeFn, Updater, ReactTable, Column } from '../types'\nimport { functionalUpdate, makeStateUpdater } from '../utils'\n\ntype ColumnPinningPosition = false | 'left' | 'right'\n\nexport type ColumnPinningState = {\n left?: string[]\n right?: string[]\n}\n\nexport type ColumnPinningTableState = {\n columnPinning: ColumnPinningState\n}\n\nexport type ColumnPinningOptions = {\n onColumnPinningChange?: OnChangeFn<ColumnPinningState>\n enablePinning?: boolean\n}\n\nexport type ColumnPinningDefaultOptions = {\n onColumnPinningChange: OnChangeFn<ColumnPinningState>\n}\n\nexport type ColumnPinningColumnDef = {\n enablePinning?: boolean\n defaultCanPin?: boolean\n}\n\nexport type ColumnPinningColumn = {\n getCanPin: () => boolean\n getPinnedIndex: () => number\n getIsPinned: () => ColumnPinningPosition\n pin: (position: ColumnPinningPosition) => void\n}\n\nexport type ColumnPinningInstance<\n _TData,\n _TValue,\n _TFilterFns,\n _TSortingFns,\n _TAggregationFns\n> = {\n setColumnPinning: (updater: Updater<ColumnPinningState>) => void\n resetColumnPinning: () => void\n pinColumn: (columnId: string, position: ColumnPinningPosition) => void\n getColumnCanPin: (columnId: string) => boolean\n getColumnIsPinned: (columnId: string) => ColumnPinningPosition\n getColumnPinnedIndex: (columnId: string) => number\n}\n\n//\n\nexport function getInitialState(): ColumnPinningTableState {\n return {\n columnPinning: {\n left: [],\n right: [],\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): ColumnPinningDefaultOptions {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', instance),\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): ColumnPinningColumn {\n return {\n getCanPin: () => instance.getColumnCanPin(column.id),\n getPinnedIndex: () => instance.getColumnPinnedIndex(column.id),\n getIsPinned: () => instance.getColumnIsPinned(column.id),\n pin: position => instance.pinColumn(column.id, position),\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): ColumnPinningInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> {\n return {\n setColumnPinning: updater =>\n instance.options.onColumnPinningChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnPinning)\n ),\n\n resetColumnPinning: () =>\n instance.setColumnPinning(\n instance.options.initialState?.columnPinning ?? {}\n ),\n\n pinColumn: (columnId, position) => {\n const column = instance.getColumn(columnId)\n\n const columnIds = column\n ?.getLeafColumns()\n .map(d => d.id)\n .filter(Boolean) as string[]\n\n instance.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: [\n ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n }\n }\n\n if (position === 'left') {\n return {\n left: [\n ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n }\n\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n })\n },\n\n getColumnCanPin: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const leafColumns = column.getLeafColumns()\n\n return leafColumns.some(\n d =>\n d.enablePinning ??\n instance.options.enablePinning ??\n d.defaultCanPin ??\n !!d.accessorFn\n )\n },\n\n getColumnIsPinned: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const leafColumnIds = column.getLeafColumns().map(d => d.id)\n\n const { left, right } = instance.getState().columnPinning\n\n const isLeft = leafColumnIds.some(d => left?.includes(d))\n const isRight = leafColumnIds.some(d => right?.includes(d))\n\n return isLeft ? 'left' : isRight ? 'right' : false\n },\n\n getColumnPinnedIndex: columnId => {\n const position = instance.getColumnIsPinned(columnId)\n\n return position\n ? instance.getState().columnPinning?.[position]?.indexOf(columnId) ?? -1\n : 0\n },\n }\n}\n"],"names":["getInitialState","columnPinning","left","right","getDefaultOptions","instance","onColumnPinningChange","makeStateUpdater","createColumn","column","getCanPin","getColumnCanPin","id","getPinnedIndex","getColumnPinnedIndex","getIsPinned","getColumnIsPinned","pin","position","pinColumn","getInstance","setColumnPinning","updater","options","functionalUpdate","getState","resetColumnPinning","initialState","columnId","getColumn","columnIds","getLeafColumns","map","d","filter","Boolean","old","includes","Error","leafColumns","some","enablePinning","defaultCanPin","accessorFn","leafColumnIds","isLeft","isRight","indexOf"],"mappings":"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"}