@tanstack/react-table 0.0.1-alpha.6 → 8.0.0-alpha.1

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 (96) 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 +493 -0
  6. package/build/cjs/core.js.map +1 -0
  7. package/build/cjs/createTable.js +103 -0
  8. package/build/cjs/createTable.js.map +1 -0
  9. package/build/cjs/features/Expanding.js +234 -0
  10. package/build/cjs/features/Expanding.js.map +1 -0
  11. package/build/cjs/features/Filters.js +396 -0
  12. package/build/cjs/features/Filters.js.map +1 -0
  13. package/build/cjs/features/Grouping.js +228 -0
  14. package/build/cjs/features/Grouping.js.map +1 -0
  15. package/build/cjs/features/Headers.js +483 -0
  16. package/build/cjs/features/Headers.js.map +1 -0
  17. package/build/cjs/features/Ordering.js +83 -0
  18. package/build/cjs/features/Ordering.js.map +1 -0
  19. package/build/cjs/features/Pinning.js +163 -0
  20. package/build/cjs/features/Pinning.js.map +1 -0
  21. package/build/cjs/features/Sorting.js +269 -0
  22. package/build/cjs/features/Sorting.js.map +1 -0
  23. package/build/cjs/features/Visibility.js +160 -0
  24. package/build/cjs/features/Visibility.js.map +1 -0
  25. package/build/cjs/filterTypes.js +172 -0
  26. package/build/cjs/filterTypes.js.map +1 -0
  27. package/build/cjs/index.js +30 -0
  28. package/build/cjs/index.js.map +1 -0
  29. package/build/cjs/sortTypes.js +121 -0
  30. package/build/cjs/sortTypes.js.map +1 -0
  31. package/build/cjs/utils/columnFilterRowsFn.js +130 -0
  32. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -0
  33. package/build/cjs/utils/expandRowsFn.js +38 -0
  34. package/build/cjs/utils/expandRowsFn.js.map +1 -0
  35. package/build/cjs/utils/globalFilterRowsFn.js +100 -0
  36. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -0
  37. package/build/cjs/utils/groupRowsFn.js +154 -0
  38. package/build/cjs/utils/groupRowsFn.js.map +1 -0
  39. package/build/cjs/utils/sortRowsFn.js +93 -0
  40. package/build/cjs/utils/sortRowsFn.js.map +1 -0
  41. package/build/cjs/utils.js +143 -0
  42. package/build/cjs/utils.js.map +1 -0
  43. package/build/esm/index.js +3389 -0
  44. package/build/esm/index.js.map +1 -0
  45. package/build/stats-html.html +2689 -0
  46. package/build/stats-react.json +703 -0
  47. package/build/types/aggregationTypes.d.ts +22 -0
  48. package/build/types/core.d.ts +122 -0
  49. package/build/types/createTable.d.ts +35 -0
  50. package/build/types/features/Expanding.d.ts +52 -0
  51. package/build/types/features/Filters.d.ts +93 -0
  52. package/build/types/features/Grouping.d.ts +82 -0
  53. package/build/types/features/Headers.d.ts +41 -0
  54. package/build/types/features/Ordering.d.ts +19 -0
  55. package/build/types/features/Pinning.d.ts +39 -0
  56. package/build/types/features/Sorting.d.ts +75 -0
  57. package/build/types/features/Visibility.d.ts +47 -0
  58. package/build/types/filterTypes.d.ts +50 -0
  59. package/build/types/index.d.ts +7 -0
  60. package/build/types/sortTypes.d.ts +17 -0
  61. package/build/types/types.d.ts +122 -0
  62. package/build/types/utils/columnFilterRowsFn.d.ts +2 -0
  63. package/build/types/utils/expandRowsFn.d.ts +2 -0
  64. package/build/types/utils/globalFilterRowsFn.d.ts +2 -0
  65. package/build/types/utils/groupRowsFn.d.ts +2 -0
  66. package/build/types/utils/sortRowsFn.d.ts +2 -0
  67. package/build/types/utils.d.ts +24 -0
  68. package/{dist/react-table.development.js → build/umd/index.development.js} +11 -1
  69. package/build/umd/index.development.js.map +1 -0
  70. package/{dist/react-table.production.min.js → build/umd/index.production.js} +11 -1
  71. package/build/umd/index.production.js.map +1 -0
  72. package/package.json +9 -94
  73. package/src/features/{withColumnResizing.ts → withColumnResizing.oldts} +0 -0
  74. package/src/features/{withPagination.ts → withPagination.oldts} +0 -0
  75. package/src/features/{withRowSelection.ts → withRowSelection.oldts} +0 -0
  76. package/dist/react-table.development.js.map +0 -1
  77. package/dist/react-table.production.min.js.map +0 -1
  78. package/lib/index.js +0 -65
  79. package/src/features/notest/useAbsoluteLayout.test.js +0 -152
  80. package/src/features/notest/useBlockLayout.test.js +0 -158
  81. package/src/features/notest/useColumnOrder.test.js +0 -186
  82. package/src/features/notest/useExpanded.test.js +0 -125
  83. package/src/features/notest/useFilters.test.js +0 -393
  84. package/src/features/notest/useFiltersAndRowSelect.test.js +0 -256
  85. package/src/features/notest/useFlexLayout.test.js +0 -152
  86. package/src/features/notest/useGroupBy.test.js +0 -259
  87. package/src/features/notest/usePagination.test.js +0 -231
  88. package/src/features/notest/useResizeColumns.test.js +0 -229
  89. package/src/features/notest/useRowSelect.test.js +0 -250
  90. package/src/features/notest/useRowState.test.js +0 -178
  91. package/src/features/tests/Visibility.test.tsx +0 -225
  92. package/src/features/tests/__snapshots__/Visibility.test.tsx.snap +0 -390
  93. package/src/features/tests/withSorting.notest.tsx +0 -341
  94. package/src/test-utils/makeTestData.ts +0 -41
  95. package/src/tests/__snapshots__/core.test.tsx.snap +0 -148
  96. package/src/tests/core.test.tsx +0 -241
@@ -0,0 +1,103 @@
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
@@ -0,0 +1 @@
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;;;;"}
@@ -0,0 +1,234 @@
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
+ expanded: {}
22
+ };
23
+ }
24
+ function getDefaultOptions(instance) {
25
+ return {
26
+ onExpandedChange: utils.makeStateUpdater('expanded', instance),
27
+ autoResetExpanded: true,
28
+ getIsRowExpanded: function getIsRowExpanded(row) {
29
+ return !!(row == null ? void 0 : row.original).expanded;
30
+ },
31
+ expandSubRows: true,
32
+ paginateExpandedRows: true
33
+ };
34
+ }
35
+ function getInstance(instance) {
36
+ return {
37
+ setExpanded: function setExpanded(updater) {
38
+ return instance.options.onExpandedChange == null ? void 0 : instance.options.onExpandedChange(updater, utils.functionalUpdate(updater, instance.getState().expanded));
39
+ },
40
+ toggleRowExpanded: function toggleRowExpanded(rowId, expanded) {
41
+ if (!rowId) return;
42
+ instance.setExpanded(function (old) {
43
+ var _old, _expanded;
44
+
45
+ if (old === void 0) {
46
+ old = {};
47
+ }
48
+
49
+ var exists = old === true ? true : !!((_old = old) != null && _old[rowId]);
50
+ var oldExpanded = {};
51
+
52
+ if (old === true) {
53
+ Object.keys(instance.getRowsById()).forEach(function (rowId) {
54
+ oldExpanded[rowId] = true;
55
+ });
56
+ } else {
57
+ oldExpanded = old;
58
+ }
59
+
60
+ expanded = (_expanded = expanded) != null ? _expanded : !exists;
61
+
62
+ if (!exists && expanded) {
63
+ var _extends2;
64
+
65
+ return _rollupPluginBabelHelpers["extends"]({}, oldExpanded, (_extends2 = {}, _extends2[rowId] = true, _extends2));
66
+ }
67
+
68
+ if (exists && !expanded) {
69
+ var _oldExpanded = oldExpanded;
70
+ _oldExpanded[rowId];
71
+ var rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_oldExpanded, [rowId].map(_rollupPluginBabelHelpers.toPropertyKey));
72
+
73
+ return rest;
74
+ }
75
+
76
+ return old;
77
+ });
78
+ },
79
+ toggleAllRowsExpanded: function toggleAllRowsExpanded(expanded) {
80
+ if (expanded != null ? expanded : !instance.getIsAllRowsExpanded()) {
81
+ instance.setExpanded(true);
82
+ } else {
83
+ instance.setExpanded({});
84
+ }
85
+ },
86
+ resetExpanded: function resetExpanded() {
87
+ var _instance$options$ini, _instance$options, _instance$options$ini2;
88
+
89
+ instance.setExpanded((_instance$options$ini = (_instance$options = instance.options) == null ? void 0 : (_instance$options$ini2 = _instance$options.initialState) == null ? void 0 : _instance$options$ini2.expanded) != null ? _instance$options$ini : {});
90
+ },
91
+ getIsRowExpanded: function getIsRowExpanded(rowId) {
92
+ var _instance$options$get;
93
+
94
+ var row = instance.getRow(rowId);
95
+
96
+ if (!row) {
97
+ if (process.env.NODE_ENV !== 'production') {
98
+ console.warn("[ReactTable] getIsRowExpanded: no row found with id " + rowId);
99
+ }
100
+
101
+ throw new Error();
102
+ }
103
+
104
+ var expanded = instance.getState().expanded;
105
+ return !!((_instance$options$get = instance.options.getIsRowExpanded == null ? void 0 : instance.options.getIsRowExpanded(row)) != null ? _instance$options$get : expanded || (expanded == null ? void 0 : expanded[rowId]));
106
+ },
107
+ getRowCanExpand: function getRowCanExpand(rowId) {
108
+ var _ref, _ref2, _instance$options$get2, _row$subRows;
109
+
110
+ var row = instance.getRow(rowId);
111
+
112
+ if (!row) {
113
+ if (process.env.NODE_ENV !== 'production') {
114
+ console.warn("[ReactTable] getRowCanExpand: no row found with id " + rowId);
115
+ }
116
+
117
+ throw new Error();
118
+ }
119
+
120
+ return (_ref = (_ref2 = (_instance$options$get2 = instance.options.getRowCanExpand == null ? void 0 : instance.options.getRowCanExpand(row)) != null ? _instance$options$get2 : instance.options.enableExpanded) != null ? _ref2 : instance.options.defaultCanExpand) != null ? _ref : !!((_row$subRows = row.subRows) != null && _row$subRows.length);
121
+ },
122
+ getToggleExpandedProps: function getToggleExpandedProps(rowId, userProps) {
123
+ var row = instance.getRow(rowId);
124
+
125
+ if (!row) {
126
+ return;
127
+ }
128
+
129
+ var canExpand = instance.getRowCanExpand(rowId);
130
+ var initialProps = {
131
+ title: canExpand ? 'Toggle Expanded' : undefined,
132
+ onClick: canExpand ? function (e) {
133
+ e.persist();
134
+ instance.toggleRowExpanded(rowId);
135
+ } : undefined
136
+ };
137
+ return utils.propGetter(initialProps, userProps);
138
+ },
139
+ getToggleAllRowsExpandedProps: function getToggleAllRowsExpandedProps(userProps) {
140
+ var initialProps = {
141
+ title: 'Toggle All Expanded',
142
+ onClick: function onClick(e) {
143
+ e.persist();
144
+ instance.toggleAllRowsExpanded();
145
+ }
146
+ };
147
+ return utils.propGetter(initialProps, userProps);
148
+ },
149
+ getIsAllRowsExpanded: function getIsAllRowsExpanded() {
150
+ var expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
151
+
152
+ if (expanded === true) {
153
+ return true;
154
+ } // If any row is not expanded, return false
155
+
156
+
157
+ if (Object.keys(instance.getRowsById()).some(function (id) {
158
+ return !instance.getIsRowExpanded(id);
159
+ })) {
160
+ return false;
161
+ } // They must all be expanded :shrug:
162
+
163
+
164
+ return true;
165
+ },
166
+ getExpandedDepth: function getExpandedDepth() {
167
+ var maxDepth = 0;
168
+ var rowIds = instance.getState().expanded === true ? Object.keys(instance.getRowsById()) : Object.keys(instance.getState().expanded);
169
+ rowIds.forEach(function (id) {
170
+ var splitId = id.split('.');
171
+ maxDepth = Math.max(maxDepth, splitId.length);
172
+ });
173
+ return maxDepth;
174
+ },
175
+ getExpandedRowModel: utils.memo(function () {
176
+ return [instance.getState().expanded, instance.getGroupedRowModel(), instance.options.expandRowsFn, instance.options.paginateExpandedRows];
177
+ }, function (expanded, rowModel, expandRowsFn, paginateExpandedRows) {
178
+ if (!expandRowsFn || // Do not expand if rows are not included in pagination
179
+ !paginateExpandedRows || !Object.keys(expanded != null ? expanded : {}).length) {
180
+ return rowModel;
181
+ }
182
+
183
+ if (process.env.NODE_ENV !== 'production' && instance.options.debug) console.info('Expanding...');
184
+ return expandRowsFn(instance, expanded, rowModel);
185
+ }, 'getExpandedRowModel', instance.options.debug),
186
+ getPreExpandedRows: function getPreExpandedRows() {
187
+ return instance.getGroupedRowModel().rows;
188
+ },
189
+ getPreExpandedFlatRows: function getPreExpandedFlatRows() {
190
+ return instance.getGroupedRowModel().flatRows;
191
+ },
192
+ getPreExpandedRowsById: function getPreExpandedRowsById() {
193
+ return instance.getGroupedRowModel().rowsById;
194
+ },
195
+ getExpandedRows: function getExpandedRows() {
196
+ return instance.getExpandedRowModel().rows;
197
+ },
198
+ getExpandedFlatRows: function getExpandedFlatRows() {
199
+ return instance.getExpandedRowModel().flatRows;
200
+ },
201
+ getExpandedRowsById: function getExpandedRowsById() {
202
+ return instance.getExpandedRowModel().rowsById;
203
+ }
204
+ };
205
+ }
206
+ function createRow(row, instance) {
207
+ return {
208
+ toggleExpanded: function toggleExpanded(expanded) {
209
+ return void instance.toggleRowExpanded(row.id, expanded);
210
+ },
211
+ getIsExpanded: function getIsExpanded() {
212
+ return instance.getIsRowExpanded(row.id);
213
+ },
214
+ getCanExpand: function getCanExpand() {
215
+ return row.subRows && !!row.subRows.length;
216
+ },
217
+ getToggleExpandedProps: function getToggleExpandedProps(userProps) {
218
+ var initialProps = {
219
+ title: 'Toggle Row Expanded',
220
+ onClick: function onClick(e) {
221
+ e.stopPropagation();
222
+ instance.toggleRowExpanded(row.id);
223
+ }
224
+ };
225
+ return utils.propGetter(initialProps, userProps);
226
+ }
227
+ };
228
+ }
229
+
230
+ exports.createRow = createRow;
231
+ exports.getDefaultOptions = getDefaultOptions;
232
+ exports.getInitialState = getInitialState;
233
+ exports.getInstance = getInstance;
234
+ //# sourceMappingURL=Expanding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expanding.js","sources":["../../../src/features/Expanding.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport {\n Getter,\n OnChangeFn,\n PropGetterValue,\n ReactTable,\n Row,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport type ExpandedTableState = {\n expanded: ExpandedState\n}\n\nexport type ExpandedRow = {\n toggleExpanded: (expanded?: boolean) => void\n getIsExpanded: () => boolean\n getCanExpand: () => boolean\n getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n}\n\nexport type ExpandedOptions<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n onExpandedChange?: OnChangeFn<ExpandedState>\n autoResetExpanded?: boolean\n enableExpanded?: boolean\n expandRowsFn?: (\n instance: ReactTable<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >,\n expandedState: ExpandedState,\n groupedRowModel: RowModel<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n ) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n expandSubRows?: boolean\n defaultCanExpand?: boolean\n getIsRowExpanded?: (\n row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ) => boolean\n getRowCanExpand?: (\n row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n ) => boolean\n paginateExpandedRows?: boolean\n}\n\nexport type ToggleExpandedProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type ExpandedInstance<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n> = {\n setExpanded: (updater: Updater<ExpandedState>) => void\n toggleRowExpanded: (rowId: string, expanded?: boolean) => void\n toggleAllRowsExpanded: (expanded?: boolean) => void\n resetExpanded: () => void\n getRowCanExpand: (rowId: string) => boolean\n getIsRowExpanded: (rowId: string) => boolean\n getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n rowId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n getToggleAllRowsExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n getIsAllRowsExpanded: () => boolean\n getExpandedDepth: () => number\n getExpandedRowModel: () => RowModel<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >\n getPreExpandedRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPreExpandedFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getPreExpandedRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n getExpandedRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getExpandedFlatRows: () => Row<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n >[]\n getExpandedRowsById: () => Record<\n string,\n Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n >\n}\n\n//\n\nexport function getInitialState(): ExpandedTableState {\n return {\n expanded: {},\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): ExpandedOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n onExpandedChange: makeStateUpdater('expanded', instance),\n autoResetExpanded: true,\n getIsRowExpanded: row => !!(row?.original as { expanded?: any }).expanded,\n expandSubRows: true,\n paginateExpandedRows: 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): ExpandedInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {\n return {\n setExpanded: updater =>\n instance.options.onExpandedChange?.(\n updater,\n functionalUpdate(updater, instance.getState().expanded)\n ),\n toggleRowExpanded: (rowId, expanded) => {\n if (!rowId) return\n\n instance.setExpanded((old = {}) => {\n const exists = old === true ? true : !!old?.[rowId]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(instance.getRowsById()).forEach(rowId => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [rowId]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [rowId]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n },\n toggleAllRowsExpanded: expanded => {\n if (expanded ?? !instance.getIsAllRowsExpanded()) {\n instance.setExpanded(true)\n } else {\n instance.setExpanded({})\n }\n },\n resetExpanded: () => {\n instance.setExpanded(instance.options?.initialState?.expanded ?? {})\n },\n getIsRowExpanded: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ReactTable] getIsRowExpanded: no row found with id ${rowId}`\n )\n }\n throw new Error()\n }\n\n const expanded = instance.getState().expanded\n\n return !!(\n instance.options.getIsRowExpanded?.(row) ??\n (expanded || expanded?.[rowId])\n )\n },\n getRowCanExpand: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ReactTable] getRowCanExpand: no row found with id ${rowId}`\n )\n }\n throw new Error()\n }\n\n return (\n instance.options.getRowCanExpand?.(row) ??\n instance.options.enableExpanded ??\n instance.options.defaultCanExpand ??\n !!row.subRows?.length\n )\n },\n getToggleExpandedProps: (rowId, userProps) => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n return\n }\n\n const canExpand = instance.getRowCanExpand(rowId)\n\n const initialProps: ToggleExpandedProps = {\n title: canExpand ? 'Toggle Expanded' : undefined,\n onClick: canExpand\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n instance.toggleRowExpanded(rowId)\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n getToggleAllRowsExpandedProps: userProps => {\n const initialProps: ToggleExpandedProps = {\n title: 'Toggle All Expanded',\n onClick: (e: MouseEvent | TouchEvent) => {\n e.persist()\n instance.toggleAllRowsExpanded()\n },\n }\n\n return propGetter(initialProps, userProps)\n },\n getIsAllRowsExpanded: () => {\n const expanded = instance.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (expanded === true) {\n return true\n }\n\n // If any row is not expanded, return false\n if (\n Object.keys(instance.getRowsById()).some(\n id => !instance.getIsRowExpanded(id)\n )\n ) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n },\n getExpandedDepth: () => {\n let maxDepth = 0\n\n const rowIds =\n instance.getState().expanded === true\n ? Object.keys(instance.getRowsById())\n : Object.keys(instance.getState().expanded)\n\n rowIds.forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n },\n getExpandedRowModel: memo(\n () => [\n instance.getState().expanded,\n instance.getGroupedRowModel(),\n instance.options.expandRowsFn,\n instance.options.paginateExpandedRows,\n ],\n (expanded, rowModel, expandRowsFn, paginateExpandedRows) => {\n if (\n !expandRowsFn ||\n // Do not expand if rows are not included in pagination\n !paginateExpandedRows ||\n !Object.keys(expanded ?? {}).length\n ) {\n return rowModel\n }\n\n if (process.env.NODE_ENV !== 'production' && instance.options.debug)\n console.info('Expanding...')\n\n return expandRowsFn(instance, expanded, rowModel)\n },\n 'getExpandedRowModel',\n instance.options.debug\n ),\n\n getPreExpandedRows: () => instance.getGroupedRowModel().rows,\n getPreExpandedFlatRows: () => instance.getGroupedRowModel().flatRows,\n getPreExpandedRowsById: () => instance.getGroupedRowModel().rowsById,\n getExpandedRows: () => instance.getExpandedRowModel().rows,\n getExpandedFlatRows: () => instance.getExpandedRowModel().flatRows,\n getExpandedRowsById: () => instance.getExpandedRowModel().rowsById,\n }\n}\n\nexport function createRow<\n TData,\n TValue,\n TFilterFns,\n TSortingFns,\n TAggregationFns\n>(\n row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,\n instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>\n): ExpandedRow {\n return {\n toggleExpanded: expanded =>\n void instance.toggleRowExpanded(row.id, expanded),\n getIsExpanded: () => instance.getIsRowExpanded(row.id),\n getCanExpand: () => row.subRows && !!row.subRows.length,\n getToggleExpandedProps: userProps => {\n const initialProps: ToggleExpandedProps = {\n title: 'Toggle Row Expanded',\n onClick: (e: MouseEvent | TouchEvent) => {\n e.stopPropagation()\n instance.toggleRowExpanded(row.id)\n },\n }\n return propGetter(initialProps, userProps)\n },\n }\n}\n"],"names":["getInitialState","expanded","getDefaultOptions","instance","onExpandedChange","makeStateUpdater","autoResetExpanded","getIsRowExpanded","row","original","expandSubRows","paginateExpandedRows","getInstance","setExpanded","updater","options","functionalUpdate","getState","toggleRowExpanded","rowId","old","exists","oldExpanded","Object","keys","getRowsById","forEach","rest","toggleAllRowsExpanded","getIsAllRowsExpanded","resetExpanded","initialState","getRow","process","env","NODE_ENV","console","warn","Error","getRowCanExpand","enableExpanded","defaultCanExpand","subRows","length","getToggleExpandedProps","userProps","canExpand","initialProps","title","undefined","onClick","e","persist","propGetter","getToggleAllRowsExpandedProps","some","id","getExpandedDepth","maxDepth","rowIds","splitId","split","Math","max","getExpandedRowModel","memo","getGroupedRowModel","expandRowsFn","rowModel","debug","info","getPreExpandedRows","rows","getPreExpandedFlatRows","flatRows","getPreExpandedRowsById","rowsById","getExpandedRows","getExpandedFlatRows","getExpandedRowsById","createRow","toggleExpanded","getIsExpanded","getCanExpand","stopPropagation"],"mappings":";;;;;;;;;;;;;;;;;AAyIA;AAEO,SAASA,eAAT,GAA+C;AACpD,SAAO;AACLC,IAAAA,QAAQ,EAAE;AADL,GAAP;AAGD;AAEM,SAASC,iBAAT,CAOLC,QAPK,EAQqE;AAC1E,SAAO;AACLC,IAAAA,gBAAgB,EAAEC,sBAAgB,CAAC,UAAD,EAAaF,QAAb,CAD7B;AAELG,IAAAA,iBAAiB,EAAE,IAFd;AAGLC,IAAAA,gBAAgB,EAAE,0BAAAC,GAAG;AAAA,aAAI,CAAC,CAAC,CAACA,GAAD,oBAACA,GAAG,CAAEC,QAAN,EAAsCR,QAA5C;AAAA,KAHhB;AAILS,IAAAA,aAAa,EAAE,IAJV;AAKLC,IAAAA,oBAAoB,EAAE;AALjB,GAAP;AAOD;AAEM,SAASC,WAAT,CAOLT,QAPK,EAQsE;AAC3E,SAAO;AACLU,IAAAA,WAAW,EAAE,qBAAAC,OAAO;AAAA,aAClBX,QAAQ,CAACY,OAAT,CAAiBX,gBADC,oBAClBD,QAAQ,CAACY,OAAT,CAAiBX,gBAAjB,CACEU,OADF,EAEEE,sBAAgB,CAACF,OAAD,EAAUX,QAAQ,CAACc,QAAT,GAAoBhB,QAA9B,CAFlB,CADkB;AAAA,KADf;AAMLiB,IAAAA,iBAAiB,EAAE,2BAACC,KAAD,EAAQlB,QAAR,EAAqB;AACtC,UAAI,CAACkB,KAAL,EAAY;AAEZhB,MAAAA,QAAQ,CAACU,WAAT,CAAqB,UAACO,GAAD,EAAc;AAAA;;AAAA,YAAbA,GAAa;AAAbA,UAAAA,GAAa,GAAP,EAAO;AAAA;;AACjC,YAAMC,MAAM,GAAGD,GAAG,KAAK,IAAR,GAAe,IAAf,GAAsB,CAAC,UAACA,GAAD,aAAC,KAAMD,KAAN,CAAD,CAAtC;AAEA,YAAIG,WAA8B,GAAG,EAArC;;AAEA,YAAIF,GAAG,KAAK,IAAZ,EAAkB;AAChBG,UAAAA,MAAM,CAACC,IAAP,CAAYrB,QAAQ,CAACsB,WAAT,EAAZ,EAAoCC,OAApC,CAA4C,UAAAP,KAAK,EAAI;AACnDG,YAAAA,WAAW,CAACH,KAAD,CAAX,GAAqB,IAArB;AACD,WAFD;AAGD,SAJD,MAIO;AACLG,UAAAA,WAAW,GAAGF,GAAd;AACD;;AAEDnB,QAAAA,QAAQ,gBAAGA,QAAH,wBAAe,CAACoB,MAAxB;;AAEA,YAAI,CAACA,MAAD,IAAWpB,QAAf,EAAyB;AAAA;;AACvB,0DACKqB,WADL,6BAEGH,KAFH,IAEW,IAFX;AAID;;AAED,YAAIE,MAAM,IAAI,CAACpB,QAAf,EAAyB;AACvB,6BAAgCqB,WAAhC;AAAA,2BAASH,KAAT;AAAA,kBAAuBQ,IAAvB,yEAASR,KAAT;;AACA,iBAAOQ,IAAP;AACD;;AAED,eAAOP,GAAP;AACD,OA5BD;AA6BD,KAtCI;AAuCLQ,IAAAA,qBAAqB,EAAE,+BAAA3B,QAAQ,EAAI;AACjC,UAAIA,QAAJ,WAAIA,QAAJ,GAAgB,CAACE,QAAQ,CAAC0B,oBAAT,EAAjB,EAAkD;AAChD1B,QAAAA,QAAQ,CAACU,WAAT,CAAqB,IAArB;AACD,OAFD,MAEO;AACLV,QAAAA,QAAQ,CAACU,WAAT,CAAqB,EAArB;AACD;AACF,KA7CI;AA8CLiB,IAAAA,aAAa,EAAE,yBAAM;AAAA;;AACnB3B,MAAAA,QAAQ,CAACU,WAAT,+CAAqBV,QAAQ,CAACY,OAA9B,+CAAqB,kBAAkBgB,YAAvC,qBAAqB,uBAAgC9B,QAArD,oCAAiE,EAAjE;AACD,KAhDI;AAiDLM,IAAAA,gBAAgB,EAAE,0BAAAY,KAAK,EAAI;AAAA;;AACzB,UAAMX,GAAG,GAAGL,QAAQ,CAAC6B,MAAT,CAAgBb,KAAhB,CAAZ;;AAEA,UAAI,CAACX,GAAL,EAAU;AACR,YAAIyB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCC,UAAAA,OAAO,CAACC,IAAR,0DACyDlB,KADzD;AAGD;;AACD,cAAM,IAAImB,KAAJ,EAAN;AACD;;AAED,UAAMrC,QAAQ,GAAGE,QAAQ,CAACc,QAAT,GAAoBhB,QAArC;AAEA,aAAO,CAAC,2BACNE,QAAQ,CAACY,OAAT,CAAiBR,gBADX,oBACNJ,QAAQ,CAACY,OAAT,CAAiBR,gBAAjB,CAAoCC,GAApC,CADM,oCAELP,QAAQ,KAAIA,QAAJ,oBAAIA,QAAQ,CAAGkB,KAAH,CAAZ,CAFH,CAAR;AAID,KAnEI;AAoELoB,IAAAA,eAAe,EAAE,yBAAApB,KAAK,EAAI;AAAA;;AACxB,UAAMX,GAAG,GAAGL,QAAQ,CAAC6B,MAAT,CAAgBb,KAAhB,CAAZ;;AAEA,UAAI,CAACX,GAAL,EAAU;AACR,YAAIyB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCC,UAAAA,OAAO,CAACC,IAAR,yDACwDlB,KADxD;AAGD;;AACD,cAAM,IAAImB,KAAJ,EAAN;AACD;;AAED,wDACEnC,QAAQ,CAACY,OAAT,CAAiBwB,eADnB,oBACEpC,QAAQ,CAACY,OAAT,CAAiBwB,eAAjB,CAAmC/B,GAAnC,CADF,qCAEEL,QAAQ,CAACY,OAAT,CAAiByB,cAFnB,oBAGErC,QAAQ,CAACY,OAAT,CAAiB0B,gBAHnB,mBAIE,CAAC,kBAACjC,GAAG,CAACkC,OAAL,aAAC,aAAaC,MAAd,CAJH;AAMD,KAtFI;AAuFLC,IAAAA,sBAAsB,EAAE,gCAACzB,KAAD,EAAQ0B,SAAR,EAAsB;AAC5C,UAAMrC,GAAG,GAAGL,QAAQ,CAAC6B,MAAT,CAAgBb,KAAhB,CAAZ;;AAEA,UAAI,CAACX,GAAL,EAAU;AACR;AACD;;AAED,UAAMsC,SAAS,GAAG3C,QAAQ,CAACoC,eAAT,CAAyBpB,KAAzB,CAAlB;AAEA,UAAM4B,YAAiC,GAAG;AACxCC,QAAAA,KAAK,EAAEF,SAAS,GAAG,iBAAH,GAAuBG,SADC;AAExCC,QAAAA,OAAO,EAAEJ,SAAS,GACd,UAACK,CAAD,EAAgC;AAC9BA,UAAAA,CAAC,CAACC,OAAF;AACAjD,UAAAA,QAAQ,CAACe,iBAAT,CAA2BC,KAA3B;AACD,SAJa,GAKd8B;AAPoC,OAA1C;AAUA,aAAOI,gBAAU,CAACN,YAAD,EAAeF,SAAf,CAAjB;AACD,KA3GI;AA4GLS,IAAAA,6BAA6B,EAAE,uCAAAT,SAAS,EAAI;AAC1C,UAAME,YAAiC,GAAG;AACxCC,QAAAA,KAAK,EAAE,qBADiC;AAExCE,QAAAA,OAAO,EAAE,iBAACC,CAAD,EAAgC;AACvCA,UAAAA,CAAC,CAACC,OAAF;AACAjD,UAAAA,QAAQ,CAACyB,qBAAT;AACD;AALuC,OAA1C;AAQA,aAAOyB,gBAAU,CAACN,YAAD,EAAeF,SAAf,CAAjB;AACD,KAtHI;AAuHLhB,IAAAA,oBAAoB,EAAE,gCAAM;AAC1B,UAAM5B,QAAQ,GAAGE,QAAQ,CAACc,QAAT,GAAoBhB,QAArC,CAD0B;;AAI1B,UAAIA,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAP;AACD,OANyB;;;AAS1B,UACEsB,MAAM,CAACC,IAAP,CAAYrB,QAAQ,CAACsB,WAAT,EAAZ,EAAoC8B,IAApC,CACE,UAAAC,EAAE;AAAA,eAAI,CAACrD,QAAQ,CAACI,gBAAT,CAA0BiD,EAA1B,CAAL;AAAA,OADJ,CADF,EAIE;AACA,eAAO,KAAP;AACD,OAfyB;;;AAkB1B,aAAO,IAAP;AACD,KA1II;AA2ILC,IAAAA,gBAAgB,EAAE,4BAAM;AACtB,UAAIC,QAAQ,GAAG,CAAf;AAEA,UAAMC,MAAM,GACVxD,QAAQ,CAACc,QAAT,GAAoBhB,QAApB,KAAiC,IAAjC,GACIsB,MAAM,CAACC,IAAP,CAAYrB,QAAQ,CAACsB,WAAT,EAAZ,CADJ,GAEIF,MAAM,CAACC,IAAP,CAAYrB,QAAQ,CAACc,QAAT,GAAoBhB,QAAhC,CAHN;AAKA0D,MAAAA,MAAM,CAACjC,OAAP,CAAe,UAAA8B,EAAE,EAAI;AACnB,YAAMI,OAAO,GAAGJ,EAAE,CAACK,KAAH,CAAS,GAAT,CAAhB;AACAH,QAAAA,QAAQ,GAAGI,IAAI,CAACC,GAAL,CAASL,QAAT,EAAmBE,OAAO,CAACjB,MAA3B,CAAX;AACD,OAHD;AAKA,aAAOe,QAAP;AACD,KAzJI;AA0JLM,IAAAA,mBAAmB,EAAEC,UAAI,CACvB;AAAA,aAAM,CACJ9D,QAAQ,CAACc,QAAT,GAAoBhB,QADhB,EAEJE,QAAQ,CAAC+D,kBAAT,EAFI,EAGJ/D,QAAQ,CAACY,OAAT,CAAiBoD,YAHb,EAIJhE,QAAQ,CAACY,OAAT,CAAiBJ,oBAJb,CAAN;AAAA,KADuB,EAOvB,UAACV,QAAD,EAAWmE,QAAX,EAAqBD,YAArB,EAAmCxD,oBAAnC,EAA4D;AAC1D,UACE,CAACwD,YAAD;AAEA,OAACxD,oBAFD,IAGA,CAACY,MAAM,CAACC,IAAP,CAAYvB,QAAZ,WAAYA,QAAZ,GAAwB,EAAxB,EAA4B0C,MAJ/B,EAKE;AACA,eAAOyB,QAAP;AACD;;AAED,UAAInC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,IAAyChC,QAAQ,CAACY,OAAT,CAAiBsD,KAA9D,EACEjC,OAAO,CAACkC,IAAR,CAAa,cAAb;AAEF,aAAOH,YAAY,CAAChE,QAAD,EAAWF,QAAX,EAAqBmE,QAArB,CAAnB;AACD,KArBsB,EAsBvB,qBAtBuB,EAuBvBjE,QAAQ,CAACY,OAAT,CAAiBsD,KAvBM,CA1JpB;AAoLLE,IAAAA,kBAAkB,EAAE;AAAA,aAAMpE,QAAQ,CAAC+D,kBAAT,GAA8BM,IAApC;AAAA,KApLf;AAqLLC,IAAAA,sBAAsB,EAAE;AAAA,aAAMtE,QAAQ,CAAC+D,kBAAT,GAA8BQ,QAApC;AAAA,KArLnB;AAsLLC,IAAAA,sBAAsB,EAAE;AAAA,aAAMxE,QAAQ,CAAC+D,kBAAT,GAA8BU,QAApC;AAAA,KAtLnB;AAuLLC,IAAAA,eAAe,EAAE;AAAA,aAAM1E,QAAQ,CAAC6D,mBAAT,GAA+BQ,IAArC;AAAA,KAvLZ;AAwLLM,IAAAA,mBAAmB,EAAE;AAAA,aAAM3E,QAAQ,CAAC6D,mBAAT,GAA+BU,QAArC;AAAA,KAxLhB;AAyLLK,IAAAA,mBAAmB,EAAE;AAAA,aAAM5E,QAAQ,CAAC6D,mBAAT,GAA+BY,QAArC;AAAA;AAzLhB,GAAP;AA2LD;AAEM,SAASI,SAAT,CAOLxE,GAPK,EAQLL,QARK,EASQ;AACb,SAAO;AACL8E,IAAAA,cAAc,EAAE,wBAAAhF,QAAQ;AAAA,aACtB,KAAKE,QAAQ,CAACe,iBAAT,CAA2BV,GAAG,CAACgD,EAA/B,EAAmCvD,QAAnC,CADiB;AAAA,KADnB;AAGLiF,IAAAA,aAAa,EAAE;AAAA,aAAM/E,QAAQ,CAACI,gBAAT,CAA0BC,GAAG,CAACgD,EAA9B,CAAN;AAAA,KAHV;AAIL2B,IAAAA,YAAY,EAAE;AAAA,aAAM3E,GAAG,CAACkC,OAAJ,IAAe,CAAC,CAAClC,GAAG,CAACkC,OAAJ,CAAYC,MAAnC;AAAA,KAJT;AAKLC,IAAAA,sBAAsB,EAAE,gCAAAC,SAAS,EAAI;AACnC,UAAME,YAAiC,GAAG;AACxCC,QAAAA,KAAK,EAAE,qBADiC;AAExCE,QAAAA,OAAO,EAAE,iBAACC,CAAD,EAAgC;AACvCA,UAAAA,CAAC,CAACiC,eAAF;AACAjF,UAAAA,QAAQ,CAACe,iBAAT,CAA2BV,GAAG,CAACgD,EAA/B;AACD;AALuC,OAA1C;AAOA,aAAOH,gBAAU,CAACN,YAAD,EAAeF,SAAf,CAAjB;AACD;AAdI,GAAP;AAgBD;;;;;;;"}