@1money/component-ui 0.0.45 → 0.0.47
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.
- package/es/components/Table/Table.d.ts +2 -2
- package/es/components/Table/Table.js +25 -148
- package/es/components/Table/VirtualTable.d.ts +2 -2
- package/es/components/Table/VirtualTable.js +30 -143
- package/es/components/Table/core/useTableColumns.d.ts +21 -7
- package/es/components/Table/core/useTableColumns.js +65 -13
- package/es/components/Table/core/useTableDataPipeline.d.ts +13 -6
- package/es/components/Table/core/useTableDataPipeline.js +193 -27
- package/es/components/Table/core/useTableExpand.d.ts +2 -2
- package/es/components/Table/core/useTableSelection.d.ts +3 -5
- package/es/components/Table/core/useTableSelection.js +1 -1
- package/es/components/Table/core/useTableSetup.d.ts +42 -0
- package/es/components/Table/core/useTableSetup.js +175 -0
- package/es/components/Table/features/ExpandTrigger.js +2 -1
- package/es/components/Table/features/FilterTrigger.d.ts +9 -0
- package/es/components/Table/features/FilterTrigger.js +157 -0
- package/es/components/Table/features/SelectionColumn.d.ts +3 -2
- package/es/components/Table/features/SelectionColumn.js +19 -6
- package/es/components/Table/interface.d.ts +102 -21
- package/es/components/Table/renderers/BodyCell.d.ts +4 -4
- package/es/components/Table/renderers/BodyCell.js +1 -1
- package/es/components/Table/renderers/HeaderCell.d.ts +8 -4
- package/es/components/Table/renderers/HeaderCell.js +13 -3
- package/es/components/Table/style/Table.css +1 -1
- package/es/components/Tooltip/Tooltip.js +24 -19
- package/es/components/Tooltip/interface.d.ts +2 -0
- package/es/index.css +1 -1
- package/lib/components/Table/Table.d.ts +2 -2
- package/lib/components/Table/Table.js +24 -150
- package/lib/components/Table/VirtualTable.d.ts +2 -2
- package/lib/components/Table/VirtualTable.js +28 -144
- package/lib/components/Table/core/useTableColumns.d.ts +21 -7
- package/lib/components/Table/core/useTableColumns.js +65 -13
- package/lib/components/Table/core/useTableDataPipeline.d.ts +13 -6
- package/lib/components/Table/core/useTableDataPipeline.js +192 -26
- package/lib/components/Table/core/useTableExpand.d.ts +2 -2
- package/lib/components/Table/core/useTableSelection.d.ts +3 -5
- package/lib/components/Table/core/useTableSelection.js +1 -1
- package/lib/components/Table/core/useTableSetup.d.ts +42 -0
- package/lib/components/Table/core/useTableSetup.js +184 -0
- package/lib/components/Table/features/ExpandTrigger.js +2 -1
- package/lib/components/Table/features/FilterTrigger.d.ts +9 -0
- package/lib/components/Table/features/FilterTrigger.js +164 -0
- package/lib/components/Table/features/SelectionColumn.d.ts +3 -2
- package/lib/components/Table/features/SelectionColumn.js +19 -6
- package/lib/components/Table/interface.d.ts +102 -21
- package/lib/components/Table/renderers/BodyCell.d.ts +4 -4
- package/lib/components/Table/renderers/BodyCell.js +1 -1
- package/lib/components/Table/renderers/HeaderCell.d.ts +8 -4
- package/lib/components/Table/renderers/HeaderCell.js +13 -3
- package/lib/components/Table/style/Table.css +1 -1
- package/lib/components/Tooltip/Tooltip.js +24 -19
- package/lib/components/Tooltip/interface.d.ts +2 -0
- package/lib/index.css +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +126 -0
- package/scripts/mcp-server/index.generated.json +348 -14
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.useTableColumns = useTableColumns;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
11
|
var _react = require("react");
|
|
@@ -80,11 +81,11 @@ function makeSelectionTransform(config) {
|
|
|
80
81
|
} : {}), {
|
|
81
82
|
render: function render(_, record, index) {
|
|
82
83
|
var recordKey = getRowKey(record, index);
|
|
83
|
-
var
|
|
84
|
+
var rowProps = checkboxPropsMap.get(recordKey);
|
|
84
85
|
return (0, _jsxRuntime.jsx)(_SelectionColumn.SelectionControl, {
|
|
85
86
|
type: selectionType,
|
|
86
87
|
checked: mergedSelectedRowKeys.includes(recordKey),
|
|
87
|
-
|
|
88
|
+
rowProps: rowProps,
|
|
88
89
|
onChange: function onChange() {
|
|
89
90
|
return triggerSelection(recordKey);
|
|
90
91
|
}
|
|
@@ -93,21 +94,53 @@ function makeSelectionTransform(config) {
|
|
|
93
94
|
})].concat((0, _toConsumableArray2["default"])(columns));
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
|
-
function
|
|
97
|
+
function ariaSortFor(order) {
|
|
98
|
+
if (order === 'ascend') return 'ascending';
|
|
99
|
+
if (order === 'descend') return 'descending';
|
|
100
|
+
return 'none';
|
|
101
|
+
}
|
|
102
|
+
// Stable empty-filter reference. Without this, `filters[key] ?? []` creates a
|
|
103
|
+
// fresh `[]` on every render, which thrashes `FilterTrigger`'s
|
|
104
|
+
// `useEffect([selectedKeys])` and causes an infinite setState loop after
|
|
105
|
+
// confirm / reset.
|
|
106
|
+
var EMPTY_FILTER_VALUE = [];
|
|
107
|
+
function makeHeaderTransform(config) {
|
|
97
108
|
var size = config.size,
|
|
98
109
|
sorter = config.sorter,
|
|
99
|
-
setSorter = config.setSorter
|
|
110
|
+
setSorter = config.setSorter,
|
|
111
|
+
filters = config.filters,
|
|
112
|
+
setFilters = config.setFilters;
|
|
100
113
|
return function (columns) {
|
|
101
114
|
return columns.map(function (column) {
|
|
102
|
-
var _a;
|
|
115
|
+
var _a, _b;
|
|
103
116
|
if (isColumnGroup(column)) return column;
|
|
117
|
+
var isSortable = Boolean(column.sorter);
|
|
118
|
+
var activeOrder = sorter.columnKey === column.key ? (_a = sorter.order) !== null && _a !== void 0 ? _a : null : null;
|
|
119
|
+
var columnKey = column.key != null ? String(column.key) : undefined;
|
|
120
|
+
var filterSelected = columnKey != null ? (_b = filters[columnKey]) !== null && _b !== void 0 ? _b : EMPTY_FILTER_VALUE : EMPTY_FILTER_VALUE;
|
|
121
|
+
// Compose onHeaderCell so we don't clobber user-provided attributes.
|
|
122
|
+
var userOnHeaderCell = column.onHeaderCell;
|
|
123
|
+
var onHeaderCell = function onHeaderCell(col, index) {
|
|
124
|
+
var _a;
|
|
125
|
+
var userAttrs = (_a = userOnHeaderCell === null || userOnHeaderCell === void 0 ? void 0 : userOnHeaderCell(col, index)) !== null && _a !== void 0 ? _a : {};
|
|
126
|
+
return Object.assign(Object.assign({}, userAttrs), isSortable ? {
|
|
127
|
+
'aria-sort': ariaSortFor(activeOrder)
|
|
128
|
+
} : null);
|
|
129
|
+
};
|
|
130
|
+
var onFilterChange = function onFilterChange(next) {
|
|
131
|
+
if (columnKey == null) return;
|
|
132
|
+
setFilters(function (current) {
|
|
133
|
+
return Object.assign(Object.assign({}, current), (0, _defineProperty2["default"])({}, columnKey, next.length ? next : null));
|
|
134
|
+
});
|
|
135
|
+
};
|
|
104
136
|
return Object.assign(Object.assign({}, column), {
|
|
137
|
+
onHeaderCell: onHeaderCell,
|
|
105
138
|
title: column.renderHeader ? column.renderHeader({
|
|
106
139
|
column: column
|
|
107
140
|
}) : (0, _jsxRuntime.jsx)(_HeaderCell.HeaderCell, {
|
|
108
141
|
column: column,
|
|
109
142
|
size: size,
|
|
110
|
-
sortOrder:
|
|
143
|
+
sortOrder: activeOrder,
|
|
111
144
|
onSortClick: function onSortClick() {
|
|
112
145
|
return setSorter(function (currentSorter) {
|
|
113
146
|
return {
|
|
@@ -115,7 +148,9 @@ function makeSortTransform(config) {
|
|
|
115
148
|
order: currentSorter.columnKey !== column.key || currentSorter.order === null ? 'ascend' : currentSorter.order === 'ascend' ? 'descend' : null
|
|
116
149
|
};
|
|
117
150
|
});
|
|
118
|
-
}
|
|
151
|
+
},
|
|
152
|
+
filterSelected: filterSelected,
|
|
153
|
+
onFilterChange: onFilterChange
|
|
119
154
|
})
|
|
120
155
|
});
|
|
121
156
|
});
|
|
@@ -160,6 +195,19 @@ function makeRenderTransform() {
|
|
|
160
195
|
});
|
|
161
196
|
};
|
|
162
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Returns columns ready to be passed to the rc-table kernel.
|
|
200
|
+
*
|
|
201
|
+
* The returned shape IS structurally the kernel's `ColumnsType<T>`:
|
|
202
|
+
* - Every leaf column's `render` is replaced by `makeRenderTransform`, which
|
|
203
|
+
* always returns a `ReactNode` (BodyCell handles `TableCellContentValue` /
|
|
204
|
+
* `TableRenderedCell` extras and emits ReactNode/RenderedCell).
|
|
205
|
+
* - Every leaf column's `title` is either a ReactNode or replaced by
|
|
206
|
+
* `<HeaderCell />`.
|
|
207
|
+
* Because TS can't track that those replacements have happened across the
|
|
208
|
+
* `transforms.reduce` chain, a single internal cast is required — call sites no
|
|
209
|
+
* longer need their own `as unknown as InternalColumnsType<T>` cast.
|
|
210
|
+
*/
|
|
163
211
|
function useTableColumns(config) {
|
|
164
212
|
var columns = config.columns,
|
|
165
213
|
variant = config.variant,
|
|
@@ -175,6 +223,8 @@ function useTableColumns(config) {
|
|
|
175
223
|
triggerSelectAll = config.triggerSelectAll,
|
|
176
224
|
sorter = config.sorter,
|
|
177
225
|
setSorter = config.setSorter,
|
|
226
|
+
filters = config.filters,
|
|
227
|
+
setFilters = config.setFilters,
|
|
178
228
|
size = config.size,
|
|
179
229
|
getRowKey = config.getRowKey;
|
|
180
230
|
return (0, _react.useMemo)(function () {
|
|
@@ -182,17 +232,19 @@ function useTableColumns(config) {
|
|
|
182
232
|
if (expandable && expandable.showExpandColumn !== false) {
|
|
183
233
|
transforms.push(makeExpandTransform(config));
|
|
184
234
|
}
|
|
185
|
-
|
|
186
|
-
|
|
235
|
+
var selectionTransform = rowSelection ? makeSelectionTransform(config) : null;
|
|
236
|
+
if (selectionTransform) {
|
|
237
|
+
transforms.push(selectionTransform);
|
|
187
238
|
}
|
|
188
|
-
transforms.push(
|
|
239
|
+
transforms.push(makeHeaderTransform(config));
|
|
189
240
|
transforms.push(makeRenderTransform());
|
|
190
241
|
if (variant === 'stroke') {
|
|
191
242
|
transforms.push(makeSpacerTransform());
|
|
192
243
|
}
|
|
193
|
-
|
|
244
|
+
var transformed = transforms.reduce(function (cols, fn) {
|
|
194
245
|
return fn(cols);
|
|
195
246
|
}, columns);
|
|
196
|
-
|
|
247
|
+
return transformed;
|
|
248
|
+
}, [columns, variant, expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, size, getRowKey]);
|
|
197
249
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfU2VsZWN0aW9uQ29sdW1uIiwiX0V4cGFuZFRyaWdnZXIiLCJfSGVhZGVyQ2VsbCIsIl9Cb2R5Q2VsbCIsIl9jb25zdGFudHMiLCJpc0NvbHVtbkdyb3VwIiwiY29sIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW4iLCJtYWtlRXhwYW5kVHJhbnNmb3JtIiwiY29uZmlnIiwiZXhwYW5kYWJsZSIsIm1lcmdlZEV4cGFuZGVkUm93S2V5cyIsInRyaWdnZXJFeHBhbmQiLCJnZXRSb3dLZXkiLCJjdXN0b21FeHBhbmRJY29uIiwiZXhwYW5kSWNvbiIsImNvbHVtbnMiLCJrZXkiLCJ3aWR0aCIsInJlbmRlciIsIl8iLCJyZWNvcmQiLCJpbmRleCIsInJlY29yZEtleSIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJwcmVmaXhDbHMiLCJUQUJMRV9ERUZBVUxUX1BSRUZJWCIsIm9uRXhwYW5kIiwicmVjIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIl9qc3giLCJFeHBhbmRUcmlnZ2VyIiwib25Ub2dnbGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwibWFrZVNlbGVjdGlvblRyYW5zZm9ybSIsIl9hIiwicm93U2VsZWN0aW9uIiwibWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwiY2hlY2tib3hQcm9wc01hcCIsImlzQWxsU2VsZWN0ZWQiLCJpc0luZGV0ZXJtaW5hdGUiLCJ0cmlnZ2VyU2VsZWN0aW9uIiwidHJpZ2dlclNlbGVjdEFsbCIsInNlbGVjdGlvblR5cGUiLCJ0eXBlIiwiT2JqZWN0IiwiYXNzaWduIiwiY29sdW1uV2lkdGgiLCJmaXhlZCIsInVuZGVmaW5lZCIsInJlbmRlckhlYWRlciIsIlNlbGVjdGlvbkhlYWRlckNvbnRyb2wiLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsIm9uQ2hhbmdlIiwiY2hlY2tib3hQcm9wcyIsImdldCIsIlNlbGVjdGlvbkNvbnRyb2wiLCJkaXNhYmxlZCIsIm1ha2VTb3J0VHJhbnNmb3JtIiwic2l6ZSIsInNvcnRlciIsInNldFNvcnRlciIsIm1hcCIsImNvbHVtbiIsInRpdGxlIiwiSGVhZGVyQ2VsbCIsInNvcnRPcmRlciIsImNvbHVtbktleSIsIm9yZGVyIiwib25Tb3J0Q2xpY2siLCJjdXJyZW50U29ydGVyIiwiU1BBQ0VSX0NPTFVNTl9DTFMiLCJtYWtlU3BhY2VyVHJhbnNmb3JtIiwiY2xhc3NOYW1lIiwibWFrZVJlbmRlclRyYW5zZm9ybSIsInZhbHVlIiwiQm9keUNlbGwiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ2YXJpYW50IiwidXNlTWVtbyIsInRyYW5zZm9ybXMiLCJzaG93RXhwYW5kQ29sdW1uIiwicHVzaCIsInJlZHVjZSIsImNvbHMiLCJmbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBZUEsU0FBU08sYUFBYUEsQ0FBSUMsR0FBdUIsRUFBQTtFQUMvQyxPQUFPLFVBQVUsSUFBSUEsR0FBRyxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBRUYsR0FBMkIsQ0FBQ0csUUFBUSxDQUFDO0FBQ2xGO0FBeUJBLFNBQVNDLG1CQUFtQkEsQ0FBSUMsTUFBZ0MsRUFBQTtFQUM5RCxJQUFRQyxVQUFVLEdBQXNERCxNQUFNLENBQXRFQyxVQUFVO0lBQUVDLHFCQUFxQixHQUErQkYsTUFBTSxDQUExREUscUJB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QUk4QixZQUFZLEVBQUU7TUFDaEI2QyxVQUFVLENBQUNFLElBQUksQ0FBQ2pELHNCQUFzQixDQUFDNUIsTUFBTSxDQUFDLENBQUM7SUFDakQ7SUFDQTJFLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDeEIsaUJBQWlCLENBQUNyRCxNQUFNLENBQUMsQ0FBQztJQUMxQzJFLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDUixtQkFBbUIsQ0FBQSxDQUFLLENBQUM7SUFDekMsSUFBSUksT0FBTyxLQUFLLFFBQVEsRUFBRTtNQUN4QkUsVUFBVSxDQUFDRSxJQUFJLENBQUNWLG1CQUFtQixDQUFBLENBQUssQ0FBQztJQUMzQztJQUVBLE9BQU9RLFVBQVUsQ0FBQ0csTUFBTSxDQUFDLFVBQUNDLElBQUksRUFBRUMsRUFBRTtNQUFBLE9BQUtBLEVBQUUsQ0FBQ0QsSUFBSSxDQUFDO0lBQUEsR0FBRXhFLE9BQU8sQ0FBQztFQUMzRCxDQUFDLEVBQUUsQ0FDREEsT0FBTyxFQUNQa0UsT0FBTyxFQUNQeEUsVUFBVSxFQUNWNkIsWUFBWSxFQUNaNUIscUJBQXFCLEVBQ3JCNkIscUJBQXFCLEVBQ3JCQyxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsZUFBZSxFQUNmL0IsYUFBYSxFQUNiZ0MsZ0JBQWdCLEVBQ2hCQyxnQkFBZ0IsRUFDaEJtQixNQUFNLEVBQ05DLFNBQVMsRUFDVEYsSUFBSSxFQUNKbEQsU0FBUyxDQUNWLENBQUM7QUFDSiIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sLCBTZWxlY3Rpb25IZWFkZXJDb250cm9sIH0gZnJvbSAnLi4vZmVhdHVyZXMvU2VsZWN0aW9uQ29sdW1uJztcbmltcG9ydCB7IEV4cGFuZFRyaWdnZXIgfSBmcm9tICcuLi9mZWF0dXJlcy9FeHBhbmRUcmlnZ2VyJztcbmltcG9ydCB7IEhlYWRlckNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvSGVhZGVyQ2VsbCc7XG5pbXBvcnQgeyBCb2R5Q2VsbCB9IGZyb20gJy4uL3JlbmRlcmVycy9Cb2R5Q2VsbCc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5mdW5jdGlvbiBpc0NvbHVtbkdyb3VwKGNvbCkge1xuICAgIHJldHVybiAnY2hpbGRyZW4nIGluIGNvbCAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbik7XG59XG5mdW5jdGlvbiBtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgZXhwYW5kYWJsZSwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCB0cmlnZ2VyRXhwYW5kLCBnZXRSb3dLZXkgfSA9IGNvbmZpZztcbiAgICBjb25zdCBjdXN0b21FeHBhbmRJY29uID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZEljb247XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ19fZXhwYW5kX18nLFxuICAgICAgICAgICAgd2lkdGg6IDQ4LFxuICAgICAgICAgICAgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBhbmRlZCA9IG1lcmdlZEV4cGFuZGVkUm93S2V5cy5pbmNsdWRlcyhyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b21FeHBhbmRJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21FeHBhbmRJY29uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeENsczogVEFCTEVfREVGQVVMVF9QUkVGSVgsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZDogKHJlYywgZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV4cGFuZChnZXRSb3dLZXkocmVjLCBpbmRleCksIHJlYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KEV4cGFuZFRyaWdnZXIsIHsgZXhwYW5kZWQ6IGV4cGFuZGVkLCBvblRvZ2dsZTogKCkgPT4gdHJpZ2dlckV4cGFuZChyZWNvcmRLZXksIHJlY29yZCkgfSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uY29sdW1ucyxcbiAgICBdO1xufVxuZnVuY3Rpb24gbWFrZVNlbGVjdGlvblRyYW5zZm9ybShjb25maWcpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyByb3dTZWxlY3Rpb24sIG1lcmdlZFNlbGVjdGVkUm93S2V5cywgY2hlY2tib3hQcm9wc01hcCwgaXNBbGxTZWxlY3RlZCwgaXNJbmRldGVybWluYXRlLCB0cmlnZ2VyU2VsZWN0aW9uLCB0cmlnZ2VyU2VsZWN0QWxsLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgaWYgKCFyb3dTZWxlY3Rpb24pXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHNlbGVjdGlvblR5cGUgPSAoX2EgPSByb3dTZWxlY3Rpb24udHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2NoZWNrYm94JztcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsga2V5OiAnX19zZWxlY3Rpb25fXycsIHdpZHRoOiAoX2EgPSByb3dTZWxlY3Rpb24uY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDQ4LCBmaXhlZDogcm93U2VsZWN0aW9uLmZpeGVkID8gJ2xlZnQnIDogdW5kZWZpbmVkIH0sIChzZWxlY3Rpb25UeXBlID09PSAnY2hlY2tib3gnXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckhlYWRlcjogKCkgPT4gKF9qc3goU2VsZWN0aW9uSGVhZGVyQ29udHJvbCwgeyBjaGVja2VkOiBpc0FsbFNlbGVjdGVkLCBpbmRldGVybWluYXRlOiBpc0luZGV0ZXJtaW5hdGUsIG9uQ2hhbmdlOiB0cmlnZ2VyU2VsZWN0QWxsIH0pKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSkpLCB7IHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGVja2JveFByb3BzID0gY2hlY2tib3hQcm9wc01hcC5nZXQocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFNlbGVjdGlvbkNvbnRyb2wsIHsgdHlwZTogc2VsZWN0aW9uVHlwZSwgY2hlY2tlZDogbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSksIGRpc2FibGVkOiBjaGVja2JveFByb3BzID09PSBudWxsIHx8IGNoZWNrYm94UHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNoZWNrYm94UHJvcHMuZGlzYWJsZWQsIG9uQ2hhbmdlOiAoKSA9PiB0cmlnZ2VyU2VsZWN0aW9uKHJlY29yZEtleSkgfSkpO1xuICAgICAgICAgICAgICAgIH0gfSksXG4gICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBdO1xuICAgIH07XG59XG5mdW5jdGlvbiBtYWtlU29ydFRyYW5zZm9ybShjb25maWcpIHtcbiAgICBjb25zdCB7IHNpemUsIHNvcnRlciwgc2V0U29ydGVyIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgdGl0bGU6IGNvbHVtbi5yZW5kZXJIZWFkZXJcbiAgICAgICAgICAgICAgICA/IGNvbHVtbi5yZW5kZXJIZWFkZXIoeyBjb2x1bW4gfSlcbiAgICAgICAgICAgICAgICA6IChfanN4KEhlYWRlckNlbGwsIHsgY29sdW1uOiBjb2x1bW4sIHNpemU6IHNpemUsIHNvcnRPcmRlcjogc29ydGVyLmNvbHVtbktleSA9PT0gY29sdW1uLmtleSA/IChfYSA9IHNvcnRlci5vcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbCA6IG51bGwsIG9uU29ydENsaWNrOiAoKSA9PiBzZXRTb3J0ZXIoKGN1cnJlbnRTb3J0ZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogY3VycmVudFNvcnRlci5jb2x1bW5LZXkgIT09IGNvbHVtbi5rZXkgfHwgY3VycmVudFNvcnRlci5vcmRlciA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRTb3J0ZXIub3JkZXIgPT09ICdhc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2Rlc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkpIH0pKSB9KTtcbiAgICB9KTtcbn1cbmNvbnN0IFNQQUNFUl9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1zcGFjZXInO1xuZnVuY3Rpb24gbWFrZVNwYWNlclRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IFtcbiAgICAgICAgeyBrZXk6ICdfX3NwYWNlcl9zdGFydF9fJywgd2lkdGg6IDE2LCB0aXRsZTogJycsIGNsYXNzTmFtZTogU1BBQ0VSX0NPTFVNTl9DTFMsIHJlbmRlcjogKCkgPT4gbnVsbCB9LFxuICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICB7IGtleTogJ19fc3BhY2VyX2VuZF9fJywgd2lkdGg6IDE2LCB0aXRsZTogJycsIGNsYXNzTmFtZTogU1BBQ0VSX0NPTFVNTl9DTFMsIHJlbmRlcjogKCkgPT4gbnVsbCB9LFxuICAgIF07XG59XG5mdW5jdGlvbiBtYWtlUmVuZGVyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2x1bW4pKVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29sdW1uKSwgeyByZW5kZXI6ICh2YWx1ZSwgcmVjb3JkLCBpbmRleCkgPT4gQm9keUNlbGwoe1xuICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgfSkgfSk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlVGFibGVDb2x1bW5zKGNvbmZpZykge1xuICAgIGNvbnN0IHsgY29sdW1ucywgdmFyaWFudCwgZXhwYW5kYWJsZSwgcm93U2VsZWN0aW9uLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIG1lcmdlZFNlbGVjdGVkUm93S2V5cywgY2hlY2tib3hQcm9wc01hcCwgaXNBbGxTZWxlY3RlZCwgaXNJbmRldGVybWluYXRlLCB0cmlnZ2VyRXhwYW5kLCB0cmlnZ2VyU2VsZWN0aW9uLCB0cmlnZ2VyU2VsZWN0QWxsLCBzb3J0ZXIsIHNldFNvcnRlciwgc2l6ZSwgZ2V0Um93S2V5LCB9ID0gY29uZmlnO1xuICAgIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtcyA9IFtdO1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSAmJiBleHBhbmRhYmxlLnNob3dFeHBhbmRDb2x1bW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm93U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZVNlbGVjdGlvblRyYW5zZm9ybShjb25maWcpKTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZVNvcnRUcmFuc2Zvcm0oY29uZmlnKSk7XG4gICAgICAgIHRyYW5zZm9ybXMucHVzaChtYWtlUmVuZGVyVHJhbnNmb3JtKCkpO1xuICAgICAgICBpZiAodmFyaWFudCA9PT0gJ3N0cm9rZScpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXMucHVzaChtYWtlU3BhY2VyVHJhbnNmb3JtKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1zLnJlZHVjZSgoY29scywgZm4pID0+IGZuKGNvbHMpLCBjb2x1bW5zKTtcbiAgICB9LCBbXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIHZhcmlhbnQsXG4gICAgICAgIGV4cGFuZGFibGUsXG4gICAgICAgIHJvd1NlbGVjdGlvbixcbiAgICAgICAgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLFxuICAgICAgICBtZXJnZWRTZWxlY3RlZFJvd0tleXMsXG4gICAgICAgIGNoZWNrYm94UHJvcHNNYXAsXG4gICAgICAgIGlzQWxsU2VsZWN0ZWQsXG4gICAgICAgIGlzSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgdHJpZ2dlckV4cGFuZCxcbiAgICAgICAgdHJpZ2dlclNlbGVjdGlvbixcbiAgICAgICAgdHJpZ2dlclNlbGVjdEFsbCxcbiAgICAgICAgc29ydGVyLFxuICAgICAgICBzZXRTb3J0ZXIsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGdldFJvd0tleSxcbiAgICBdKTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
250
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfU2VsZWN0aW9uQ29sdW1uIiwiX0V4cGFuZFRyaWdnZXIiLCJfSGVhZGVyQ2VsbCIsIl9Cb2R5Q2VsbCIsIl9jb25zdGFudHMiLCJpc0NvbHVtbkdyb3VwIiwiY29sIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW4iLCJtYWtlRXhwYW5kVHJhbnNmb3JtIiwiY29uZmlnIiwiZXhwYW5kYWJsZSIsIm1lcmdlZEV4cGFuZGVkUm93S2V5cyIsInRyaWdnZXJFeHBhbmQiLCJnZXRSb3dLZXkiLCJjdXN0b21FeHBhbmRJY29uIiwiZXhwYW5kSWNvbiIsImNvbHVtbnMiLCJrZXkiLCJ3aWR0aCIsInJlbmRlciIsIl8iLCJyZWNvcmQiLCJpbmRleCIsInJlY29yZEtleSIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJwcmVmaXhDbHMiLCJUQUJMRV9ERUZBVUxUX1BSRUZJWCIsIm9uRXhwYW5kIiwicmVjIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIl9qc3giLCJFeHBhbmRUcmlnZ2VyIiwib25Ub2dnbGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwibWFrZVNlbGVjdGlvblRyYW5zZm9ybSIsIl9hIiwicm93U2VsZWN0aW9uIiwibWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwiY2hlY2tib3hQcm9wc01hcCIsImlzQWxsU2VsZWN0ZWQiLCJpc0luZGV0ZXJtaW5hdGUiLCJ0cmlnZ2VyU2VsZWN0aW9uIiwidHJpZ2dlclNlbGVjdEFsbCIsInNlbGVjdGlvblR5cGUiLCJ0eXBlIiwiT2JqZWN0IiwiYXNzaWduIiwiY29sdW1uV2lkdGgiLCJmaXhlZCIsInVuZGVmaW5lZCIsInJlbmRlckhlYWRlciIsIlNlbGVjdGlvbkhlYWRlckNvbnRyb2wiLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsIm9uQ2hhbmdlIiwicm93UHJvcHMiLCJnZXQiLCJTZWxlY3Rpb25Db250cm9sIiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzaXplIiwic29ydGVyIiwic2V0U29ydGVyIiwiZmlsdGVycyIsInNldEZpbHRlcnMiLCJtYXAiLCJjb2x1bW4iLCJfYiIsImlzU29ydGFibGUiLCJCb29sZWFuIiwiYWN0aXZlT3JkZXIiLCJjb2x1bW5LZXkiLCJTdHJpbmciLCJmaWx0ZXJTZWxlY3RlZCIsInVzZXJPbkhlYWRlckNlbGwiLCJvbkhlYWRlckNlbGwiLCJ1c2VyQXR0cnMiLCJvbkZpbHRlckNoYW5nZSIsIm5leHQiLCJjdXJyZW50IiwiX2RlZmluZVByb3BlcnR5MiIsImxlbmd0aCIsInRpdGxlIiwiSGVhZGVyQ2VsbCIsInNvcnRPcmRlciIsIm9uU29ydENsaWNrIiwiY3VycmVudFNvcnRlciIsIlNQQUNFUl9DT0xVTU5fQ0xTIiwibWFrZVNwYWNlclRyYW5zZm9ybSIsImNsYXNzTmFtZSIsIm1ha2VSZW5kZXJUcmFuc2Zvcm0iLCJ2YWx1ZSIsIkJvZHlDZWxsIiwidXNlVGFibGVDb2x1bW5zIiwidmFyaWFudCIsInVzZU1lbW8iLCJ0cmFuc2Zvcm1zIiwic2hvd0V4cGFuZENvbHVtbiIsInB1c2giLCJzZWxlY3Rpb25UcmFuc2Zvcm0iLCJ0cmFuc2Zvcm1lZCIsInJlZHVjZSIsImNvbHMiLCJmbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtB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QUMsQ0FBQztJQUM5QztJQUNBLElBQU0rRixrQkFBa0IsR0FBR2pFLFlBQVksR0FBR0Ysc0JBQXNCLENBQUM1QixNQUFNLENBQUMsR0FBRyxJQUFJO0lBQy9FLElBQUkrRixrQkFBa0IsRUFBRTtNQUN0QkgsVUFBVSxDQUFDRSxJQUFJLENBQUNDLGtCQUFrQixDQUFDO0lBQ3JDO0lBQ0FILFVBQVUsQ0FBQ0UsSUFBSSxDQUFDdkMsbUJBQW1CLENBQUN2RCxNQUFNLENBQUMsQ0FBQztJQUM1QzRGLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDUixtQkFBbUIsQ0FBQSxDQUFLLENBQUM7SUFDekMsSUFBSUksT0FBTyxLQUFLLFFBQVEsRUFBRTtNQUN4QkUsVUFBVSxDQUFDRSxJQUFJLENBQUNWLG1CQUFtQixDQUFBLENBQUssQ0FBQztJQUMzQztJQUVBLElBQU1ZLFdBQVcsR0FBR0osVUFBVSxDQUFDSyxNQUFNLENBQUMsVUFBQ0MsSUFBSSxFQUFFQyxFQUFFO01BQUEsT0FBS0EsRUFBRSxDQUFDRCxJQUFJLENBQUM7SUFBQSxHQUFFM0YsT0FBTyxDQUFDO0lBQ3RFLE9BQU95RixXQUFnRDtFQUN6RCxDQUFDLEVBQUUsQ0FDRHpGLE9BQU8sRUFDUG1GLE9BQU8sRUFDUHpGLFVBQVUsRUFDVjZCLFlBQVksRUFDWjVCLHFCQUFxQixFQUNyQjZCLHFCQUFxQixFQUNyQkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZi9CLGFBQWEsRUFDYmdDLGdCQUFnQixFQUNoQkMsZ0JBQWdCLEVBQ2hCcUIsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsVUFBVSxFQUNWSixJQUFJLEVBQ0pwRCxTQUFTLENBQ1YsQ0FBQztBQUNKIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2wsIFNlbGVjdGlvbkhlYWRlckNvbnRyb2wgfSBmcm9tICcuLi9mZWF0dXJlcy9TZWxlY3Rpb25Db2x1bW4nO1xuaW1wb3J0IHsgRXhwYW5kVHJpZ2dlciB9IGZyb20gJy4uL2ZlYXR1cmVzL0V4cGFuZFRyaWdnZXInO1xuaW1wb3J0IHsgSGVhZGVyQ2VsbCB9IGZyb20gJy4uL3JlbmRlcmVycy9IZWFkZXJDZWxsJztcbmltcG9ydCB7IEJvZHlDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0JvZHlDZWxsJztcbmltcG9ydCB7IFRBQkxFX0RFRkFVTFRfUFJFRklYIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmZ1bmN0aW9uIGlzQ29sdW1uR3JvdXAoY29sKSB7XG4gICAgcmV0dXJuICdjaGlsZHJlbicgaW4gY29sICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIG1ha2VFeHBhbmRUcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgY29uc3QgeyBleHBhbmRhYmxlLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIHRyaWdnZXJFeHBhbmQsIGdldFJvd0tleSB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGN1c3RvbUV4cGFuZEljb24gPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZXhwYW5kSWNvbjtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnX19leHBhbmRfXycsXG4gICAgICAgICAgICB3aWR0aDogNDgsXG4gICAgICAgICAgICByZW5kZXI6IChfLCByZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1c3RvbUV4cGFuZEljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUV4cGFuZEljb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4Q2xzOiBUQUJMRV9ERUZBVUxUX1BSRUZJWCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kOiAocmVjLCBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXhwYW5kKGdldFJvd0tleShyZWMsIGluZGV4KSwgcmVjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goRXhwYW5kVHJpZ2dlciwgeyBleHBhbmRlZDogZXhwYW5kZWQsIG9uVG9nZ2xlOiAoKSA9PiB0cmlnZ2VyRXhwYW5kKHJlY29yZEtleSwgcmVjb3JkKSB9KSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5jb2x1bW5zLFxuICAgIF07XG59XG5mdW5jdGlvbiBtYWtlU2VsZWN0aW9uVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IHJvd1NlbGVjdGlvbiwgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICBpZiAoIXJvd1NlbGVjdGlvbilcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IChfYSA9IHJvd1NlbGVjdGlvbi50eXBlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnY2hlY2tib3gnO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBrZXk6ICdfX3NlbGVjdGlvbl9fJywgd2lkdGg6IChfYSA9IHJvd1NlbGVjdGlvbi5jb2x1bW5XaWR0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogNDgsIGZpeGVkOiByb3dTZWxlY3Rpb24uZml4ZWQgPyAnbGVmdCcgOiB1bmRlZmluZWQgfSwgKHNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCdcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVySGVhZGVyOiAoKSA9PiAoX2pzeChTZWxlY3Rpb25IZWFkZXJDb250cm9sLCB7IGNoZWNrZWQ6IGlzQWxsU2VsZWN0ZWQsIGluZGV0ZXJtaW5hdGU6IGlzSW5kZXRlcm1pbmF0ZSwgb25DaGFuZ2U6IHRyaWdnZXJTZWxlY3RBbGwgfSkpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHt9KSksIHsgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd1Byb3BzID0gY2hlY2tib3hQcm9wc01hcC5nZXQocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFNlbGVjdGlvbkNvbnRyb2wsIHsgdHlwZTogc2VsZWN0aW9uVHlwZSwgY2hlY2tlZDogbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSksIHJvd1Byb3BzOiByb3dQcm9wcywgb25DaGFuZ2U6ICgpID0+IHRyaWdnZXJTZWxlY3Rpb24ocmVjb3JkS2V5KSB9KSk7XG4gICAgICAgICAgICAgICAgfSB9KSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFyaWFTb3J0Rm9yKG9yZGVyKSB7XG4gICAgaWYgKG9yZGVyID09PSAnYXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIGlmIChvcmRlciA9PT0gJ2Rlc2NlbmQnKVxuICAgICAgICByZXR1cm4gJ2Rlc2NlbmRpbmcnO1xuICAgIHJldHVybiAnbm9uZSc7XG59XG4vLyBTdGFibGUgZW1wdHktZmlsdGVyIHJlZmVyZW5jZS4gV2l0aG91dCB0aGlzLCBgZmlsdGVyc1trZXldID8/IFtdYCBjcmVhdGVzIGFcbi8vIGZyZXNoIGBbXWAgb24gZXZlcnkgcmVuZGVyLCB3aGljaCB0aHJhc2hlcyBgRmlsdGVyVHJpZ2dlcmAnc1xuLy8gYHVzZUVmZmVjdChbc2VsZWN0ZWRLZXlzXSlgIGFuZCBjYXVzZXMgYW4gaW5maW5pdGUgc2V0U3RhdGUgbG9vcCBhZnRlclxuLy8gY29uZmlybSAvIHJlc2V0LlxuY29uc3QgRU1QVFlfRklMVEVSX1ZBTFVFID0gW107XG5mdW5jdGlvbiBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgc2l6ZSwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMgfSA9IGNvbmZpZztcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIGNvbnN0IGlzU29ydGFibGUgPSBCb29sZWFuKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBjb25zdCBhY3RpdmVPcmRlciA9IHNvcnRlci5jb2x1bW5LZXkgPT09IGNvbHVtbi5rZXkgPyAoX2EgPSBzb3J0ZXIub3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwgOiBudWxsO1xuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSBjb2x1bW4ua2V5ICE9IG51bGwgPyBTdHJpbmcoY29sdW1uLmtleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gY29sdW1uS2V5ICE9IG51bGwgPyAoKF9iID0gZmlsdGVyc1tjb2x1bW5LZXldKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBFTVBUWV9GSUxURVJfVkFMVUUpIDogRU1QVFlfRklMVEVSX1ZBTFVFO1xuICAgICAgICAvLyBDb21wb3NlIG9uSGVhZGVyQ2VsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHVzZXItcHJvdmlkZWQgYXR0cmlidXRlcy5cbiAgICAgICAgY29uc3QgdXNlck9uSGVhZGVyQ2VsbCA9IGNvbHVtbi5vbkhlYWRlckNlbGw7XG4gICAgICAgIGNvbnN0IG9uSGVhZGVyQ2VsbCA9IChjb2wsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB1c2VyQXR0cnMgPSAoX2EgPSB1c2VyT25IZWFkZXJDZWxsID09PSBudWxsIHx8IHVzZXJPbkhlYWRlckNlbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVzZXJPbkhlYWRlckNlbGwoY29sLCBpbmRleCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdXNlckF0dHJzKSwgKGlzU29ydGFibGUgPyB7ICdhcmlhLXNvcnQnOiBhcmlhU29ydEZvcihhY3RpdmVPcmRlcikgfSA6IG51bGwpKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25GaWx0ZXJDaGFuZ2UgPSAobmV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbktleSA9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNldEZpbHRlcnMoKGN1cnJlbnQpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQpLCB7IFtjb2x1bW5LZXldOiBuZXh0Lmxlbmd0aCA/IG5leHQgOiBudWxsIH0pKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgb25IZWFkZXJDZWxsLCB0aXRsZTogY29sdW1uLnJlbmRlckhlYWRlclxuICAgICAgICAgICAgICAgID8gY29sdW1uLnJlbmRlckhlYWRlcih7IGNvbHVtbiB9KVxuICAgICAgICAgICAgICAgIDogKF9qc3goSGVhZGVyQ2VsbCwgeyBjb2x1bW46IGNvbHVtbiwgc2l6ZTogc2l6ZSwgc29ydE9yZGVyOiBhY3RpdmVPcmRlciwgb25Tb3J0Q2xpY2s6ICgpID0+IHNldFNvcnRlcigoY3VycmVudFNvcnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjdXJyZW50U29ydGVyLmNvbHVtbktleSAhPT0gY29sdW1uLmtleSB8fCBjdXJyZW50U29ydGVyLm9yZGVyID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFNvcnRlci5vcmRlciA9PT0gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGVzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSksIGZpbHRlclNlbGVjdGVkOiBmaWx0ZXJTZWxlY3RlZCwgb25GaWx0ZXJDaGFuZ2U6IG9uRmlsdGVyQ2hhbmdlIH0pKSB9KTtcbiAgICB9KTtcbn1cbmNvbnN0IFNQQUNFUl9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1zcGFjZXInO1xuZnVuY3Rpb24gbWFrZVNwYWNlclRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IFtcbiAgICAgICAgeyBrZXk6ICdfX3NwYWNlcl9zdGFydF9fJywgd2lkdGg6IDE2LCB0aXRsZTogJycsIGNsYXNzTmFtZTogU1BBQ0VSX0NPTFVNTl9DTFMsIHJlbmRlcjogKCkgPT4gbnVsbCB9LFxuICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICB7IGtleTogJ19fc3BhY2VyX2VuZF9fJywgd2lkdGg6IDE2LCB0aXRsZTogJycsIGNsYXNzTmFtZTogU1BBQ0VSX0NPTFVNTl9DTFMsIHJlbmRlcjogKCkgPT4gbnVsbCB9LFxuICAgIF07XG59XG5mdW5jdGlvbiBtYWtlUmVuZGVyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2x1bW4pKVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29sdW1uKSwgeyByZW5kZXI6ICh2YWx1ZSwgcmVjb3JkLCBpbmRleCkgPT4gQm9keUNlbGwoe1xuICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB9KSB9KTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyBjb2x1bW5zIHJlYWR5IHRvIGJlIHBhc3NlZCB0byB0aGUgcmMtdGFibGUga2VybmVsLlxuICpcbiAqIFRoZSByZXR1cm5lZCBzaGFwZSBJUyBzdHJ1Y3R1cmFsbHkgdGhlIGtlcm5lbCdzIGBDb2x1bW5zVHlwZTxUPmA6XG4gKiAgIC0gRXZlcnkgbGVhZiBjb2x1bW4ncyBgcmVuZGVyYCBpcyByZXBsYWNlZCBieSBgbWFrZVJlbmRlclRyYW5zZm9ybWAsIHdoaWNoXG4gKiAgICAgYWx3YXlzIHJldHVybnMgYSBgUmVhY3ROb2RlYCAoQm9keUNlbGwgaGFuZGxlcyBgVGFibGVDZWxsQ29udGVudFZhbHVlYCAvXG4gKiAgICAgYFRhYmxlUmVuZGVyZWRDZWxsYCBleHRyYXMgYW5kIGVtaXRzIFJlYWN0Tm9kZS9SZW5kZXJlZENlbGwpLlxuICogICAtIEV2ZXJ5IGxlYWYgY29sdW1uJ3MgYHRpdGxlYCBpcyBlaXRoZXIgYSBSZWFjdE5vZGUgb3IgcmVwbGFjZWQgYnlcbiAqICAgICBgPEhlYWRlckNlbGwgLz5gLlxuICogQmVjYXVzZSBUUyBjYW4ndCB0cmFjayB0aGF0IHRob3NlIHJlcGxhY2VtZW50cyBoYXZlIGhhcHBlbmVkIGFjcm9zcyB0aGVcbiAqIGB0cmFuc2Zvcm1zLnJlZHVjZWAgY2hhaW4sIGEgc2luZ2xlIGludGVybmFsIGNhc3QgaXMgcmVxdWlyZWQg4oCUIGNhbGwgc2l0ZXMgbm9cbiAqIGxvbmdlciBuZWVkIHRoZWlyIG93biBgYXMgdW5rbm93biBhcyBJbnRlcm5hbENvbHVtbnNUeXBlPFQ+YCBjYXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVGFibGVDb2x1bW5zKGNvbmZpZykge1xuICAgIGNvbnN0IHsgY29sdW1ucywgdmFyaWFudCwgZXhwYW5kYWJsZSwgcm93U2VsZWN0aW9uLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIG1lcmdlZFNlbGVjdGVkUm93S2V5cywgY2hlY2tib3hQcm9wc01hcCwgaXNBbGxTZWxlY3RlZCwgaXNJbmRldGVybWluYXRlLCB0cmlnZ2VyRXhwYW5kLCB0cmlnZ2VyU2VsZWN0aW9uLCB0cmlnZ2VyU2VsZWN0QWxsLCBzb3J0ZXIsIHNldFNvcnRlciwgZmlsdGVycywgc2V0RmlsdGVycywgc2l6ZSwgZ2V0Um93S2V5LCB9ID0gY29uZmlnO1xuICAgIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtcyA9IFtdO1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSAmJiBleHBhbmRhYmxlLnNob3dFeHBhbmRDb2x1bW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3Rpb25UcmFuc2Zvcm0gPSByb3dTZWxlY3Rpb24gPyBtYWtlU2VsZWN0aW9uVHJhbnNmb3JtKGNvbmZpZykgOiBudWxsO1xuICAgICAgICBpZiAoc2VsZWN0aW9uVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2goc2VsZWN0aW9uVHJhbnNmb3JtKTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpKTtcbiAgICAgICAgdHJhbnNmb3Jtcy5wdXNoKG1ha2VSZW5kZXJUcmFuc2Zvcm0oKSk7XG4gICAgICAgIGlmICh2YXJpYW50ID09PSAnc3Ryb2tlJykge1xuICAgICAgICAgICAgdHJhbnNmb3Jtcy5wdXNoKG1ha2VTcGFjZXJUcmFuc2Zvcm0oKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1zLnJlZHVjZSgoY29scywgZm4pID0+IGZuKGNvbHMpLCBjb2x1bW5zKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICAgIH0sIFtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgdmFyaWFudCxcbiAgICAgICAgZXhwYW5kYWJsZSxcbiAgICAgICAgcm93U2VsZWN0aW9uLFxuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIG1lcmdlZFNlbGVjdGVkUm93S2V5cyxcbiAgICAgICAgY2hlY2tib3hQcm9wc01hcCxcbiAgICAgICAgaXNBbGxTZWxlY3RlZCxcbiAgICAgICAgaXNJbmRldGVybWluYXRlLFxuICAgICAgICB0cmlnZ2VyRXhwYW5kLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0aW9uLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0QWxsLFxuICAgICAgICBzb3J0ZXIsXG4gICAgICAgIHNldFNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgc2V0RmlsdGVycyxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIF0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Key } from 'react';
|
|
2
|
-
import type { TableChangeMeta, TableColumnType, TablePaginationConfig, TableSortOrder } from '../interface';
|
|
2
|
+
import type { TableChangeMeta, TableColumnType, TableFilterValue, TablePaginationConfig, TableRecord, TableSortOrder } from '../interface';
|
|
3
3
|
export interface TableSorterFieldState {
|
|
4
4
|
columnKey: Key;
|
|
5
5
|
order: Exclude<TableSortOrder, null>;
|
|
@@ -8,30 +8,37 @@ export interface TableSorterState {
|
|
|
8
8
|
columnKey?: Key;
|
|
9
9
|
order?: TableSortOrder;
|
|
10
10
|
}
|
|
11
|
+
/** Map of column key → currently selected filter values (or null if cleared). */
|
|
12
|
+
export type TableFilterState = Record<string, TableFilterValue | null>;
|
|
11
13
|
export interface TablePipelineState {
|
|
12
14
|
sorter: TableSorterState;
|
|
15
|
+
filters: TableFilterState;
|
|
13
16
|
pagination: false | Required<Pick<TablePaginationConfig, 'current' | 'pageSize'>>;
|
|
14
17
|
}
|
|
15
|
-
export interface ApplyTablePipelineInput<T> extends TablePipelineState {
|
|
18
|
+
export interface ApplyTablePipelineInput<T extends TableRecord> extends Omit<TablePipelineState, 'filters'> {
|
|
16
19
|
columns: TableColumnType<T>[];
|
|
17
20
|
dataSource: T[];
|
|
21
|
+
/** Filter state keyed by column key. Defaults to an empty filter map. */
|
|
22
|
+
filters?: TableFilterState;
|
|
18
23
|
}
|
|
19
|
-
export interface UseTableDataPipelineInput<T> {
|
|
24
|
+
export interface UseTableDataPipelineInput<T extends TableRecord> {
|
|
20
25
|
columns: TableColumnType<T>[];
|
|
21
26
|
dataSource: T[];
|
|
22
27
|
pagination?: false | TablePaginationConfig;
|
|
23
28
|
onChange?: (meta: TableChangeMeta<T>) => void;
|
|
24
29
|
}
|
|
25
|
-
export interface UseTableDataPipelineResult<T> {
|
|
30
|
+
export interface UseTableDataPipelineResult<T extends TableRecord> {
|
|
26
31
|
currentDataSource: T[];
|
|
27
32
|
total: number;
|
|
28
33
|
sorter: TableSorterState;
|
|
29
34
|
sorterStates: TableSorterFieldState[];
|
|
35
|
+
filters: TableFilterState;
|
|
30
36
|
pagination: false | {
|
|
31
37
|
current: number;
|
|
32
38
|
pageSize: number;
|
|
33
39
|
};
|
|
34
40
|
setSorter: (updater: TableSorterState | ((current: TableSorterState) => TableSorterState)) => void;
|
|
41
|
+
setFilters: (updater: TableFilterState | ((current: TableFilterState) => TableFilterState)) => void;
|
|
35
42
|
setPagination: (updater: {
|
|
36
43
|
current: number;
|
|
37
44
|
pageSize: number;
|
|
@@ -43,8 +50,8 @@ export interface UseTableDataPipelineResult<T> {
|
|
|
43
50
|
pageSize: number;
|
|
44
51
|
})) => void;
|
|
45
52
|
}
|
|
46
|
-
export declare const applyTablePipeline: <T>({ columns, dataSource, sorter, pagination, }: ApplyTablePipelineInput<T>) => {
|
|
53
|
+
export declare const applyTablePipeline: <T extends TableRecord>({ columns, dataSource, sorter, filters, pagination, }: ApplyTablePipelineInput<T>) => {
|
|
47
54
|
currentDataSource: T[];
|
|
48
55
|
total: number;
|
|
49
56
|
};
|
|
50
|
-
export declare const useTableDataPipeline: <T>({ columns, dataSource, pagination, onChange, }: UseTableDataPipelineInput<T>) => UseTableDataPipelineResult<T>;
|
|
57
|
+
export declare const useTableDataPipeline: <T extends TableRecord>({ columns, dataSource, pagination, onChange, }: UseTableDataPipelineInput<T>) => UseTableDataPipelineResult<T>;
|