@1money/component-ui 0.0.68 → 0.0.70

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 (69) hide show
  1. package/es/components/Icons/Wrapper.js +6 -4
  2. package/es/components/Icons/constants.d.ts +11 -0
  3. package/es/components/Icons/constants.js +32 -0
  4. package/es/components/Icons/index.d.ts +2 -0
  5. package/es/components/Icons/index.js +2 -1
  6. package/es/components/Icons/interface.d.ts +8 -1
  7. package/es/components/ProForm/interface.d.ts +3 -1
  8. package/es/components/ProForm/layouts/QueryFilter.js +5 -1
  9. package/es/components/ProTable/ProTable.d.ts +5 -0
  10. package/es/components/ProTable/ProTable.js +309 -0
  11. package/es/components/ProTable/constants.d.ts +12 -0
  12. package/es/components/ProTable/constants.js +12 -0
  13. package/es/components/ProTable/core/genColumns.d.ts +10 -0
  14. package/es/components/ProTable/core/genColumns.js +81 -0
  15. package/es/components/ProTable/core/genSearchFields.d.ts +19 -0
  16. package/es/components/ProTable/core/genSearchFields.js +103 -0
  17. package/es/components/ProTable/core/useAwaitableReload.d.ts +17 -0
  18. package/es/components/ProTable/core/useAwaitableReload.js +39 -0
  19. package/es/components/ProTable/core/utils.d.ts +12 -0
  20. package/es/components/ProTable/core/utils.js +21 -0
  21. package/es/components/ProTable/index.d.ts +4 -0
  22. package/es/components/ProTable/index.js +5 -0
  23. package/es/components/ProTable/interface.d.ts +132 -0
  24. package/es/components/ProTable/interface.js +2 -0
  25. package/es/components/ProTable/style/ProTable.css +47 -0
  26. package/es/components/ProTable/style/css.js +6 -0
  27. package/es/components/ProTable/style/index.d.ts +5 -0
  28. package/es/components/ProTable/style/index.js +6 -0
  29. package/es/components/ProTable/useFetchData.d.ts +48 -0
  30. package/es/components/ProTable/useFetchData.js +270 -0
  31. package/es/index.css +1 -1
  32. package/es/index.d.ts +3 -1
  33. package/es/index.js +2 -1
  34. package/lib/components/Icons/Wrapper.js +6 -4
  35. package/lib/components/Icons/constants.d.ts +11 -0
  36. package/lib/components/Icons/constants.js +38 -0
  37. package/lib/components/Icons/index.d.ts +2 -0
  38. package/lib/components/Icons/index.js +10 -2
  39. package/lib/components/Icons/interface.d.ts +8 -1
  40. package/lib/components/ProForm/interface.d.ts +3 -1
  41. package/lib/components/ProForm/layouts/QueryFilter.js +5 -1
  42. package/lib/components/ProTable/ProTable.d.ts +5 -0
  43. package/lib/components/ProTable/ProTable.js +316 -0
  44. package/lib/components/ProTable/constants.d.ts +12 -0
  45. package/lib/components/ProTable/constants.js +18 -0
  46. package/lib/components/ProTable/core/genColumns.d.ts +10 -0
  47. package/lib/components/ProTable/core/genColumns.js +87 -0
  48. package/lib/components/ProTable/core/genSearchFields.d.ts +19 -0
  49. package/lib/components/ProTable/core/genSearchFields.js +111 -0
  50. package/lib/components/ProTable/core/useAwaitableReload.d.ts +17 -0
  51. package/lib/components/ProTable/core/useAwaitableReload.js +46 -0
  52. package/lib/components/ProTable/core/utils.d.ts +12 -0
  53. package/lib/components/ProTable/core/utils.js +28 -0
  54. package/lib/components/ProTable/index.d.ts +4 -0
  55. package/lib/components/ProTable/index.js +33 -0
  56. package/lib/components/ProTable/interface.d.ts +132 -0
  57. package/lib/components/ProTable/interface.js +6 -0
  58. package/lib/components/ProTable/style/ProTable.css +47 -0
  59. package/lib/components/ProTable/style/css.js +8 -0
  60. package/lib/components/ProTable/style/index.d.ts +5 -0
  61. package/lib/components/ProTable/style/index.js +8 -0
  62. package/lib/components/ProTable/useFetchData.d.ts +48 -0
  63. package/lib/components/ProTable/useFetchData.js +277 -0
  64. package/lib/index.css +1 -1
  65. package/lib/index.d.ts +3 -1
  66. package/lib/index.js +8 -1
  67. package/package.json +6 -1
  68. package/scripts/mcp-server/examples.generated.json +168 -6
  69. package/scripts/mcp-server/index.generated.json +778 -4
@@ -0,0 +1,309 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) {
6
+ return value instanceof P ? value : new P(function (resolve) {
7
+ resolve(value);
8
+ });
9
+ }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) {
12
+ try {
13
+ step(generator.next(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ }
18
+ function rejected(value) {
19
+ try {
20
+ step(generator["throw"](value));
21
+ } catch (e) {
22
+ reject(e);
23
+ }
24
+ }
25
+ function step(result) {
26
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
27
+ }
28
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
29
+ });
30
+ };
31
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
+ import { memo, useImperativeHandle, useMemo, useRef } from 'react';
33
+ import { useMemoizedFn, useSafeState } from '@1money/hooks';
34
+ import { Pagination } from '../Pagination';
35
+ import { Table } from '../Table';
36
+ import { QueryFilter } from '../ProForm';
37
+ import { default as classnames } from '../../utils/classnames';
38
+ import { CSS_PREFIX, DEFAULT_CURRENT, DEFAULT_PAGE_SIZE, DEFAULT_TEXT } from './constants';
39
+ import { useFetchData } from './useFetchData';
40
+ import { genColumns } from './core/genColumns';
41
+ import { applySearchTransforms, genSearchFields } from './core/genSearchFields';
42
+ /** Read the current URL query string into search values, applying the `'get'` transform. */
43
+ function readUrlValues(syncToUrl) {
44
+ if (typeof window === 'undefined') return {};
45
+ var params = {};
46
+ new URLSearchParams(window.location.search).forEach(function (value, key) {
47
+ params[key] = value;
48
+ });
49
+ return typeof syncToUrl === 'function' ? syncToUrl(params, 'get') : params;
50
+ }
51
+ function ProTableInner(props) {
52
+ var _this = this;
53
+ var _a, _b;
54
+ var _props$prefixCls = props.prefixCls,
55
+ prefixCls = _props$prefixCls === void 0 ? CSS_PREFIX : _props$prefixCls,
56
+ className = props.className,
57
+ columns = props.columns,
58
+ request = props.request,
59
+ params = props.params,
60
+ controlledData = props.dataSource,
61
+ controlledLoading = props.loading,
62
+ defaultData = props.defaultData,
63
+ manualRequest = props.manualRequest,
64
+ debounceTime = props.debounceTime,
65
+ postData = props.postData,
66
+ polling = props.polling,
67
+ beforeSearchSubmit = props.beforeSearchSubmit,
68
+ columnEmptyText = props.columnEmptyText,
69
+ searchFormRender = props.searchFormRender,
70
+ _props$pagination = props.pagination,
71
+ pagination = _props$pagination === void 0 ? {} : _props$pagination,
72
+ _props$search = props.search,
73
+ search = _props$search === void 0 ? {} : _props$search,
74
+ rowSelection = props.rowSelection,
75
+ _props$size = props.size,
76
+ size = _props$size === void 0 ? 'small' : _props$size,
77
+ actionRef = props.actionRef,
78
+ onLoad = props.onLoad,
79
+ onLoadingChange = props.onLoadingChange,
80
+ onRequestError = props.onRequestError,
81
+ onChange = props.onChange,
82
+ rowKey = props.rowKey,
83
+ _props$variant = props.variant,
84
+ variant = _props$variant === void 0 ? 'stroke' : _props$variant,
85
+ bordered = props.bordered,
86
+ scroll = props.scroll,
87
+ sticky = props.sticky,
88
+ expandable = props.expandable,
89
+ empty = props.empty,
90
+ tableLayout = props.tableLayout,
91
+ rowClassName = props.rowClassName,
92
+ onRow = props.onRow,
93
+ summary = props.summary,
94
+ footer = props.footer;
95
+ var classes = classnames(prefixCls);
96
+ var tableColumns = useMemo(function () {
97
+ return genColumns(columns, columnEmptyText);
98
+ }, [columns, columnEmptyText]);
99
+ // ── search form (auto-generated from columns) ──
100
+ var searchCfg = search === false ? undefined : search;
101
+ var _useMemo = useMemo(function () {
102
+ return genSearchFields(columns);
103
+ }, [columns]),
104
+ searchFields = _useMemo.fields,
105
+ searchInitialValues = _useMemo.initialValues,
106
+ searchFieldNames = _useMemo.names;
107
+ var hasSearch = search !== false && searchFields.length > 0;
108
+ var syncToUrl = searchCfg === null || searchCfg === void 0 ? void 0 : searchCfg.syncToUrl;
109
+ // Seed initial values (and the first request) from the URL when syncToUrl is on.
110
+ var mergedInitialValues = useMemo(function () {
111
+ return syncToUrl ? Object.assign(Object.assign({}, searchInitialValues), readUrlValues(syncToUrl)) : searchInitialValues;
112
+ },
113
+ // mount-only snapshot of the URL
114
+ [searchInitialValues]);
115
+ var _useSafeState = useSafeState(function () {
116
+ return mergedInitialValues;
117
+ }),
118
+ _useSafeState2 = _slicedToArray(_useSafeState, 2),
119
+ searchParams = _useSafeState2[0],
120
+ setSearchParams = _useSafeState2[1];
121
+ var formRef = useRef(undefined);
122
+ // ── server sort / filter ──
123
+ var _useSafeState3 = useSafeState({}),
124
+ _useSafeState4 = _slicedToArray(_useSafeState3, 2),
125
+ sort = _useSafeState4[0],
126
+ setSort = _useSafeState4[1];
127
+ var _useSafeState5 = useSafeState({}),
128
+ _useSafeState6 = _slicedToArray(_useSafeState5, 2),
129
+ filter = _useSafeState6[0],
130
+ setFilter = _useSafeState6[1];
131
+ // ── pagination config ──
132
+ var paginated = pagination !== false;
133
+ var defaultPageSize = pagination && pagination.defaultPageSize || pagination && pagination.pageSize || DEFAULT_PAGE_SIZE;
134
+ var defaultCurrent = pagination && pagination.defaultCurrent || pagination && pagination.current || DEFAULT_CURRENT;
135
+ var manual = controlledData !== undefined || !request;
136
+ var _useFetchData = useFetchData({
137
+ request: request,
138
+ manual: manual,
139
+ manualRequest: manualRequest,
140
+ debounceTime: debounceTime,
141
+ postData: postData,
142
+ polling: polling,
143
+ params: params,
144
+ defaultData: defaultData,
145
+ paginated: paginated,
146
+ defaultCurrent: defaultCurrent,
147
+ defaultPageSize: defaultPageSize,
148
+ searchParams: searchParams,
149
+ sort: sort,
150
+ filter: filter,
151
+ onLoad: onLoad,
152
+ onLoadingChange: onLoadingChange,
153
+ onRequestError: onRequestError
154
+ }),
155
+ fetchedData = _useFetchData.dataSource,
156
+ fetchLoading = _useFetchData.loading,
157
+ pageInfo = _useFetchData.pageInfo,
158
+ setPageInfo = _useFetchData.setPageInfo,
159
+ _reload = _useFetchData.reload,
160
+ _reset = _useFetchData.reset;
161
+ var dataSource = controlledData !== null && controlledData !== void 0 ? controlledData : fetchedData;
162
+ var loading = controlledLoading !== null && controlledLoading !== void 0 ? controlledLoading : manual ? false : fetchLoading;
163
+ // ── handlers ──
164
+ var handleSearchFinish = useMemoizedFn(function (values) {
165
+ var perColumn = applySearchTransforms(values, columns);
166
+ var finalParams = beforeSearchSubmit ? beforeSearchSubmit(perColumn) : perColumn;
167
+ setSearchParams(finalParams);
168
+ setPageInfo({
169
+ current: defaultCurrent
170
+ });
171
+ void _reload();
172
+ });
173
+ var handleSearchReset = useMemoizedFn(function () {
174
+ var _a;
175
+ // Use the array form (`resetFields(names)`) — the no-arg form re-invokes the
176
+ // form's own `onReset`, which loops back here and recurses infinitely.
177
+ (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.resetFields(searchFieldNames);
178
+ setSearchParams({});
179
+ setPageInfo({
180
+ current: defaultCurrent
181
+ });
182
+ void _reload();
183
+ });
184
+ var handleTableChange = useMemoizedFn(function (meta) {
185
+ if (meta.sorter) {
186
+ var _meta$sorter = meta.sorter,
187
+ columnKey = _meta$sorter.columnKey,
188
+ order = _meta$sorter.order;
189
+ setSort(columnKey && order ? _defineProperty({}, String(columnKey), order) : {});
190
+ }
191
+ if (meta.filters) setFilter(meta.filters);
192
+ if (meta.sorter || meta.filters) setPageInfo({
193
+ current: defaultCurrent
194
+ });
195
+ onChange === null || onChange === void 0 ? void 0 : onChange(meta);
196
+ });
197
+ var handlePageChange = useMemoizedFn(function (page, pageSize) {
198
+ setPageInfo({
199
+ current: page,
200
+ pageSize: pageSize
201
+ });
202
+ onChange === null || onChange === void 0 ? void 0 : onChange({
203
+ currentDataSource: dataSource,
204
+ action: 'paginate',
205
+ pagination: {
206
+ current: page,
207
+ pageSize: pageSize
208
+ }
209
+ });
210
+ });
211
+ // ── imperative handle ──
212
+ useImperativeHandle(actionRef, function () {
213
+ return {
214
+ reload: function reload() {
215
+ return _reload();
216
+ },
217
+ reloadAndRest: function reloadAndRest() {
218
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
219
+ return _regeneratorRuntime.wrap(function (_context) {
220
+ while (1) switch (_context.prev = _context.next) {
221
+ case 0:
222
+ setPageInfo({
223
+ current: defaultCurrent
224
+ });
225
+ _context.next = 1;
226
+ return _reload();
227
+ case 1:
228
+ case "end":
229
+ return _context.stop();
230
+ }
231
+ }, _callee);
232
+ }));
233
+ },
234
+ reset: function reset() {
235
+ var _a;
236
+ (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.resetFields(searchFieldNames);
237
+ setSearchParams(searchInitialValues);
238
+ setSort({});
239
+ setFilter({});
240
+ _reset();
241
+ void _reload();
242
+ },
243
+ setPageInfo: setPageInfo
244
+ };
245
+ });
246
+ // ── search form node (only built when there are searchable columns) ──
247
+ var searchNode = null;
248
+ if (hasSearch) {
249
+ var searchForm = _jsx(QueryFilter, {
250
+ formRef: formRef,
251
+ size: "small",
252
+ initialValues: mergedInitialValues,
253
+ defaultCollapsed: searchCfg === null || searchCfg === void 0 ? void 0 : searchCfg.defaultCollapsed,
254
+ defaultColsNumber: searchCfg === null || searchCfg === void 0 ? void 0 : searchCfg.defaultColsNumber,
255
+ labelWidth: searchCfg === null || searchCfg === void 0 ? void 0 : searchCfg.labelWidth,
256
+ syncToUrl: syncToUrl,
257
+ searchConfig: {
258
+ searchText: (_a = searchCfg === null || searchCfg === void 0 ? void 0 : searchCfg.searchText) !== null && _a !== void 0 ? _a : DEFAULT_TEXT.search,
259
+ resetText: (_b = searchCfg === null || searchCfg === void 0 ? void 0 : searchCfg.resetText) !== null && _b !== void 0 ? _b : DEFAULT_TEXT.reset,
260
+ size: 'medium'
261
+ },
262
+ onFinish: handleSearchFinish,
263
+ onReset: handleSearchReset,
264
+ children: searchFields
265
+ });
266
+ searchNode = _jsx("div", {
267
+ className: classes('search'),
268
+ children: searchFormRender ? searchFormRender(searchForm) : searchForm
269
+ });
270
+ }
271
+ return _jsxs("div", {
272
+ className: classes(undefined, className),
273
+ children: [searchNode, _jsxs("div", {
274
+ className: classes('container'),
275
+ children: [_jsx(Table, {
276
+ rowKey: rowKey,
277
+ columns: tableColumns,
278
+ dataSource: dataSource,
279
+ loading: loading,
280
+ size: size,
281
+ pagination: false,
282
+ rowSelection: rowSelection,
283
+ onChange: handleTableChange,
284
+ variant: variant,
285
+ bordered: bordered,
286
+ scroll: scroll,
287
+ sticky: sticky,
288
+ expandable: expandable,
289
+ empty: empty,
290
+ tableLayout: tableLayout,
291
+ rowClassName: rowClassName,
292
+ onRow: onRow,
293
+ summary: summary,
294
+ footer: footer
295
+ }), paginated && _jsx("div", {
296
+ className: classes('pagination'),
297
+ children: _jsx(Pagination, {
298
+ total: pageInfo.total,
299
+ current: pageInfo.current,
300
+ pageSize: pageInfo.pageSize,
301
+ onChange: handlePageChange
302
+ })
303
+ })]
304
+ })]
305
+ });
306
+ }
307
+ export var ProTable = /*#__PURE__*/memo(ProTableInner);
308
+ export default ProTable;
309
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsIlBhZ2luYXRpb24iLCJUYWJsZSIsIlF1ZXJ5RmlsdGVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJDU1NfUFJFRklYIiwiREVGQVVMVF9DVVJSRU5UIiwiREVGQVVMVF9QQUdFX1NJWkUiLCJERUZBVUxUX1RFWFQiLCJ1c2VGZXRjaERhdGEiLCJnZW5Db2x1bW5zIiwiYXBwbHlTZWFyY2hUcmFuc2Zvcm1zIiwiZ2VuU2VhcmNoRmllbGRzIiwicmVhZFVybFZhbHVlcyIsInN5bmNUb1VybCIsIndpbmRvdyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZm9yRWFjaCIsImtleSIsIlByb1RhYmxlSW5uZXIiLCJwcm9wcyIsIl90aGlzIiwiX2EiLCJfYiIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJjb2x1bW5zIiwicmVxdWVzdCIsImNvbnRyb2xsZWREYXRhIiwiZGF0YVNvdXJjZSIsImNvbnRyb2xsZWRMb2FkaW5nIiwibG9hZGluZyIsImRlZmF1bHREYXRhIiwibWFudWFsUmVxdWVzdCIsImRlYm91bmNlVGltZSIsInBvc3REYXRhIiwicG9sbGluZyIsImJlZm9yZVNlYXJjaFN1Ym1pdCIsImNvbHVtbkVtcHR5VGV4dCIsInNlYXJjaEZvcm1SZW5kZXIiLCJfcHJvcHMkcGFnaW5hdGlvbiIsInBhZ2luYXRpb24iLCJfcHJvcHMkc2VhcmNoIiwicm93U2VsZWN0aW9uIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiYWN0aW9uUmVmIiwib25Mb2FkIiwib25Mb2FkaW5nQ2hhbmdlIiwib25SZXF1ZXN0RXJyb3IiLCJvbkNoYW5nZSIsInJvd0tleSIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsImJvcmRlcmVkIiwic2Nyb2xsIiwic3RpY2t5IiwiZXhwYW5kYWJsZSIsImVtcHR5IiwidGFibGVMYXlvdXQiLCJyb3dDbGFzc05hbWUiLCJvblJvdyIsInN1bW1hcnkiLCJmb290ZXIiLCJjbGFzc2VzIiwidGFibGVDb2x1bW5zIiwic2VhcmNoQ2ZnIiwidW5kZWZpbmVkIiwiX3VzZU1lbW8iLCJzZWFyY2hGaWVsZHMiLCJmaWVsZHMiLCJzZWFyY2hJbml0aWFsVmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsInNlYXJjaEZpZWxkTmFtZXMiLCJuYW1lcyIsImhhc1NlYXJjaCIsImxlbmd0aCIsIm1lcmdlZEluaXRpYWxWYWx1ZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJfdXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlYXJjaFBhcmFtcyIsInNldFNlYXJjaFBhcmFtcyIsImZvcm1SZWYiLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic29ydCIsInNldFNvcnQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VTYWZlU3RhdGU2IiwiZmlsdGVyIiwic2V0RmlsdGVyIiwicGFnaW5hdGVkIiwiZGVmYXVsdFBhZ2VTaXplIiwicGFnZVNpemUiLCJkZWZhdWx0Q3VycmVudCIsImN1cnJlbnQiLCJtYW51YWwiLCJfdXNlRmV0Y2hEYXRhIiwiZmV0Y2hlZERhdGEiLCJmZXRjaExvYWRpbmciLCJwYWdlSW5mbyIsInNldFBhZ2VJbmZvIiwicmVsb2FkIiwicmVzZXQiLCJoYW5kbGVTZWFyY2hGaW5pc2giLCJ2YWx1ZXMiLCJwZXJDb2x1bW4iLCJmaW5hbFBhcmFtcyIsImhhbmRsZVNlYXJjaFJlc2V0IiwicmVzZXRGaWVsZHMiLCJoYW5kbGVUYWJsZUNoYW5nZSIsIm1ldGEiLCJzb3J0ZXIiLCJfbWV0YSRzb3J0ZXIiLCJjb2x1bW5LZXkiLCJvcmRlciIsIl9kZWZpbmVQcm9wZXJ0eSIsIlN0cmluZyIsImZpbHRlcnMiLCJoYW5kbGVQYWdlQ2hhbmdlIiwicGFnZSIsImN1cnJlbnREYXRhU291cmNlIiwiYWN0aW9uIiwicmVsb2FkQW5kUmVzdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdG9wIiwic2VhcmNoTm9kZSIsInNlYXJjaEZvcm0iLCJkZWZhdWx0Q29sbGFwc2VkIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwic2VhcmNoQ29uZmlnIiwic2VhcmNoVGV4dCIsInJlc2V0VGV4dCIsIm9uRmluaXNoIiwib25SZXNldCIsImNoaWxkcmVuIiwidG90YWwiLCJQcm9UYWJsZSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFN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LElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBS3NDLFNBQVMsRUFBRXVDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFBQWdGLFFBQUEsRUFDbkM3SixJQUFBLENBQUNTLFVBQVUsRUFBQTtVQUNUcUosS0FBSyxFQUFFMUMsUUFBUSxDQUFDMEMsS0FBSztVQUNyQi9DLE9BQU8sRUFBRUssUUFBUSxDQUFDTCxPQUFPO1VBQ3pCRixRQUFRLEVBQUVPLFFBQVEsQ0FBQ1AsUUFBUTtVQUMzQjlDLFFBQVEsRUFBRXdFO1FBQWdCLENBQUE7TUFDMUIsQ0FBQSxDQUVMO0lBQUEsQ0FBQSxDQUNHO0VBQUEsQ0FBQSxDQUNGO0FBRVY7QUFFQSxPQUFPLElBQU13QixRQUFRLGdCQUFHNUosSUFBSSxDQUFDNEIsYUFBYSxDQUF5QjtBQUVuRSxlQUFlZ0ksUUFBUSIsImZpbGUiOiJjb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtb2l6ZWRGbiwgdXNlU2FmZVN0YXRlIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vUGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL1RhYmxlJztcbmltcG9ydCB7IFF1ZXJ5RmlsdGVyIH0gZnJvbSAnLi4vUHJvRm9ybSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfQ1VSUkVOVCwgREVGQVVMVF9QQUdFX1NJWkUsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZUZldGNoRGF0YSB9IGZyb20gJy4vdXNlRmV0Y2hEYXRhJztcbmltcG9ydCB7IGdlbkNvbHVtbnMgfSBmcm9tICcuL2NvcmUvZ2VuQ29sdW1ucyc7XG5pbXBvcnQgeyBhcHBseVNlYXJjaFRyYW5zZm9ybXMsIGdlblNlYXJjaEZpZWxkcyB9IGZyb20gJy4vY29yZS9nZW5TZWFyY2hGaWVsZHMnO1xuLyoqIFJlYWQgdGhlIGN1cnJlbnQgVVJMIHF1ZXJ5IHN0cmluZyBpbnRvIHNlYXJjaCB2YWx1ZXMsIGFwcGx5aW5nIHRoZSBgJ2dldCdgIHRyYW5zZm9ybS4gKi9cbmZ1bmN0aW9uIHJlYWRVcmxWYWx1ZXMoc3luY1RvVXJsKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIHBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHR5cGVvZiBzeW5jVG9VcmwgPT09ICdmdW5jdGlvbicgPyBzeW5jVG9VcmwocGFyYW1zLCAnZ2V0JykgOiBwYXJhbXM7XG59XG5mdW5jdGlvbiBQcm9UYWJsZUlubmVyKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IHByZWZpeENscyA9IENTU19QUkVGSVgsIGNsYXNzTmFtZSwgY29sdW1ucywgcmVxdWVzdCwgcGFyYW1zLCBkYXRhU291cmNlOiBjb250cm9sbGVkRGF0YSwgbG9hZGluZzogY29udHJvbGxlZExvYWRpbmcsIGRlZmF1bHREYXRhLCBtYW51YWxSZXF1ZXN0LCBkZWJvdW5jZVRpbWUsIHBvc3REYXRhLCBwb2xsaW5nLCBiZWZvcmVTZWFyY2hTdWJtaXQsIGNvbHVtbkVtcHR5VGV4dCwgc2VhcmNoRm9ybVJlbmRlciwgcGFnaW5hdGlvbiA9IHt9LCBzZWFyY2ggPSB7fSwgcm93U2VsZWN0aW9uLCBzaXplID0gJ3NtYWxsJywgYWN0aW9uUmVmLCBvbkxvYWQsIG9uTG9hZGluZ0NoYW5nZSwgb25SZXF1ZXN0RXJyb3IsIG9uQ2hhbmdlLCByb3dLZXksIHZhcmlhbnQgPSAnc3Ryb2tlJywgYm9yZGVyZWQsIHNjcm9sbCwgc3RpY2t5LCBleHBhbmRhYmxlLCBlbXB0eSwgdGFibGVMYXlvdXQsIHJvd0NsYXNzTmFtZSwgb25Sb3csIHN1bW1hcnksIGZvb3RlciwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgdGFibGVDb2x1bW5zID0gdXNlTWVtbygoKSA9PiBnZW5Db2x1bW5zKGNvbHVtbnMsIGNvbHVtbkVtcHR5VGV4dCksIFtjb2x1bW5zLCBjb2x1bW5FbXB0eVRleHRdKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gKGF1dG8tZ2VuZXJhdGVkIGZyb20gY29sdW1ucykg4pSA4pSAXG4gICAgY29uc3Qgc2VhcmNoQ2ZnID0gc2VhcmNoID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHNlYXJjaDtcbiAgICBjb25zdCB7IGZpZWxkczogc2VhcmNoRmllbGRzLCBpbml0aWFsVmFsdWVzOiBzZWFyY2hJbml0aWFsVmFsdWVzLCBuYW1lczogc2VhcmNoRmllbGROYW1lcyB9ID0gdXNlTWVtbygoKSA9PiBnZW5TZWFyY2hGaWVsZHMoY29sdW1ucyksIFtjb2x1bW5zXSk7XG4gICAgY29uc3QgaGFzU2VhcmNoID0gc2VhcmNoICE9PSBmYWxzZSAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBzeW5jVG9VcmwgPSBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcuc3luY1RvVXJsO1xuICAgIC8vIFNlZWQgaW5pdGlhbCB2YWx1ZXMgKGFuZCB0aGUgZmlyc3QgcmVxdWVzdCkgZnJvbSB0aGUgVVJMIHdoZW4gc3luY1RvVXJsIGlzIG9uLlxuICAgIGNvbnN0IG1lcmdlZEluaXRpYWxWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IChzeW5jVG9VcmwgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNlYXJjaEluaXRpYWxWYWx1ZXMpLCByZWFkVXJsVmFsdWVzKHN5bmNUb1VybCkpIDogc2VhcmNoSW5pdGlhbFZhbHVlcyksIFxuICAgIC8vIG1vdW50LW9ubHkgc25hcHNob3Qgb2YgdGhlIFVSTFxuICAgIFtzZWFyY2hJbml0aWFsVmFsdWVzXSk7XG4gICAgY29uc3QgW3NlYXJjaFBhcmFtcywgc2V0U2VhcmNoUGFyYW1zXSA9IHVzZVNhZmVTdGF0ZSgoKSA9PiBtZXJnZWRJbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBmb3JtUmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgLy8g4pSA4pSAIHNlcnZlciBzb3J0IC8gZmlsdGVyIOKUgOKUgFxuICAgIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgLy8g4pSA4pSAIHBhZ2luYXRpb24gY29uZmlnIOKUgOKUgFxuICAgIGNvbnN0IHBhZ2luYXRlZCA9IHBhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZSA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSB8fCAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnBhZ2VTaXplKSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICBjb25zdCBkZWZhdWx0Q3VycmVudCA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpIHx8IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uY3VycmVudCkgfHwgREVGQVVMVF9DVVJSRU5UO1xuICAgIGNvbnN0IG1hbnVhbCA9IGNvbnRyb2xsZWREYXRhICE9PSB1bmRlZmluZWQgfHwgIXJlcXVlc3Q7XG4gICAgY29uc3QgeyBkYXRhU291cmNlOiBmZXRjaGVkRGF0YSwgbG9hZGluZzogZmV0Y2hMb2FkaW5nLCBwYWdlSW5mbywgc2V0UGFnZUluZm8sIHJlbG9hZCwgcmVzZXQgfSA9IHVzZUZldGNoRGF0YSh7XG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1hbnVhbCxcbiAgICAgICAgbWFudWFsUmVxdWVzdCxcbiAgICAgICAgZGVib3VuY2VUaW1lLFxuICAgICAgICBwb3N0RGF0YSxcbiAgICAgICAgcG9sbGluZyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBkZWZhdWx0RGF0YSxcbiAgICAgICAgcGFnaW5hdGVkLFxuICAgICAgICBkZWZhdWx0Q3VycmVudCxcbiAgICAgICAgZGVmYXVsdFBhZ2VTaXplLFxuICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgIHNvcnQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgb25Mb2FkLFxuICAgICAgICBvbkxvYWRpbmdDaGFuZ2UsXG4gICAgICAgIG9uUmVxdWVzdEVycm9yLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBjb250cm9sbGVkRGF0YSAhPT0gbnVsbCAmJiBjb250cm9sbGVkRGF0YSAhPT0gdm9pZCAwID8gY29udHJvbGxlZERhdGEgOiBmZXRjaGVkRGF0YTtcbiAgICBjb25zdCBsb2FkaW5nID0gY29udHJvbGxlZExvYWRpbmcgIT09IG51bGwgJiYgY29udHJvbGxlZExvYWRpbmcgIT09IHZvaWQgMCA/IGNvbnRyb2xsZWRMb2FkaW5nIDogKG1hbnVhbCA/IGZhbHNlIDogZmV0Y2hMb2FkaW5nKTtcbiAgICAvLyDilIDilIAgaGFuZGxlcnMg4pSA4pSAXG4gICAgY29uc3QgaGFuZGxlU2VhcmNoRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHBlckNvbHVtbiA9IGFwcGx5U2VhcmNoVHJhbnNmb3Jtcyh2YWx1ZXMsIGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBmaW5hbFBhcmFtcyA9IGJlZm9yZVNlYXJjaFN1Ym1pdCA/IGJlZm9yZVNlYXJjaFN1Ym1pdChwZXJDb2x1bW4pIDogcGVyQ29sdW1uO1xuICAgICAgICBzZXRTZWFyY2hQYXJhbXMoZmluYWxQYXJhbXMpO1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICB2b2lkIHJlbG9hZCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaFJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gVXNlIHRoZSBhcnJheSBmb3JtIChgcmVzZXRGaWVsZHMobmFtZXMpYCkg4oCUIHRoZSBuby1hcmcgZm9ybSByZS1pbnZva2VzIHRoZVxuICAgICAgICAvLyBmb3JtJ3Mgb3duIGBvblJlc2V0YCwgd2hpY2ggbG9vcHMgYmFjayBoZXJlIGFuZCByZWN1cnNlcyBpbmZpbml0ZWx5LlxuICAgICAgICAoX2EgPSBmb3JtUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXNldEZpZWxkcyhzZWFyY2hGaWVsZE5hbWVzKTtcbiAgICAgICAgc2V0U2VhcmNoUGFyYW1zKHt9KTtcbiAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgdm9pZCByZWxvYWQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZU1lbW9pemVkRm4oKG1ldGEpID0+IHtcbiAgICAgICAgaWYgKG1ldGEuc29ydGVyKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNvbHVtbktleSwgb3JkZXIgfSA9IG1ldGEuc29ydGVyO1xuICAgICAgICAgICAgc2V0U29ydChjb2x1bW5LZXkgJiYgb3JkZXIgPyB7IFtTdHJpbmcoY29sdW1uS2V5KV06IG9yZGVyIH0gOiB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGEuZmlsdGVycylcbiAgICAgICAgICAgIHNldEZpbHRlcihtZXRhLmZpbHRlcnMpO1xuICAgICAgICBpZiAobWV0YS5zb3J0ZXIgfHwgbWV0YS5maWx0ZXJzKVxuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG1ldGEpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVBhZ2VDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChwYWdlLCBwYWdlU2l6ZSkgPT4ge1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0pO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2Uoe1xuICAgICAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICBhY3Rpb246ICdwYWdpbmF0ZScsXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBpbXBlcmF0aXZlIGhhbmRsZSDilIDilIBcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGFjdGlvblJlZiwgKCkgPT4gKHtcbiAgICAgICAgcmVsb2FkOiAoKSA9PiByZWxvYWQoKSxcbiAgICAgICAgcmVsb2FkQW5kUmVzdDogKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgICAgIHlpZWxkIHJlbG9hZCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGZvcm1SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc2V0RmllbGRzKHNlYXJjaEZpZWxkTmFtZXMpO1xuICAgICAgICAgICAgc2V0U2VhcmNoUGFyYW1zKHNlYXJjaEluaXRpYWxWYWx1ZXMpO1xuICAgICAgICAgICAgc2V0U29ydCh7fSk7XG4gICAgICAgICAgICBzZXRGaWx0ZXIoe30pO1xuICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgIHZvaWQgcmVsb2FkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldFBhZ2VJbmZvLFxuICAgIH0pKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gbm9kZSAob25seSBidWlsdCB3aGVuIHRoZXJlIGFyZSBzZWFyY2hhYmxlIGNvbHVtbnMpIOKUgOKUgFxuICAgIGxldCBzZWFyY2hOb2RlID0gbnVsbDtcbiAgICBpZiAoaGFzU2VhcmNoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEZvcm0gPSAoX2pzeChRdWVyeUZpbHRlciwgeyBmb3JtUmVmOiBmb3JtUmVmLCBzaXplOiBcInNtYWxsXCIsIGluaXRpYWxWYWx1ZXM6IG1lcmdlZEluaXRpYWxWYWx1ZXMsIGRlZmF1bHRDb2xsYXBzZWQ6IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5kZWZhdWx0Q29sbGFwc2VkLCBkZWZhdWx0Q29sc051bWJlcjogc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLmRlZmF1bHRDb2xzTnVtYmVyLCBsYWJlbFdpZHRoOiBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcubGFiZWxXaWR0aCwgc3luY1RvVXJsOiBzeW5jVG9VcmwsIHNlYXJjaENvbmZpZzoge1xuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ6IChfYSA9IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5zZWFyY2hUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBERUZBVUxUX1RFWFQuc2VhcmNoLFxuICAgICAgICAgICAgICAgIHJlc2V0VGV4dDogKF9iID0gc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLnJlc2V0VGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULnJlc2V0LFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgfSwgb25GaW5pc2g6IGhhbmRsZVNlYXJjaEZpbmlzaCwgb25SZXNldDogaGFuZGxlU2VhcmNoUmVzZXQsIGNoaWxkcmVuOiBzZWFyY2hGaWVsZHMgfSkpO1xuICAgICAgICBzZWFyY2hOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NlYXJjaCcpLCBjaGlsZHJlbjogc2VhcmNoRm9ybVJlbmRlciA/IHNlYXJjaEZvcm1SZW5kZXIoc2VhcmNoRm9ybSkgOiBzZWFyY2hGb3JtIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh1bmRlZmluZWQsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbc2VhcmNoTm9kZSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRhaW5lcicpLCBjaGlsZHJlbjogW19qc3goVGFibGUsIHsgcm93S2V5OiByb3dLZXksIGNvbHVtbnM6IHRhYmxlQ29sdW1ucywgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSwgbG9hZGluZzogbG9hZGluZywgc2l6ZTogc2l6ZSwgcGFnaW5hdGlvbjogZmFsc2UsIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uLCBvbkNoYW5nZTogaGFuZGxlVGFibGVDaGFuZ2UsIHZhcmlhbnQ6IHZhcmlhbnQsIGJvcmRlcmVkOiBib3JkZXJlZCwgc2Nyb2xsOiBzY3JvbGwsIHN0aWNreTogc3RpY2t5LCBleHBhbmRhYmxlOiBleHBhbmRhYmxlLCBlbXB0eTogZW1wdHksIHRhYmxlTGF5b3V0OiB0YWJsZUxheW91dCwgcm93Q2xhc3NOYW1lOiByb3dDbGFzc05hbWUsIG9uUm93OiBvblJvdywgc3VtbWFyeTogc3VtbWFyeSwgZm9vdGVyOiBmb290ZXIgfSksIHBhZ2luYXRlZCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFnaW5hdGlvbicpLCBjaGlsZHJlbjogX2pzeChQYWdpbmF0aW9uLCB7IHRvdGFsOiBwYWdlSW5mby50b3RhbCwgY3VycmVudDogcGFnZUluZm8uY3VycmVudCwgcGFnZVNpemU6IHBhZ2VJbmZvLnBhZ2VTaXplLCBvbkNoYW5nZTogaGFuZGxlUGFnZUNoYW5nZSB9KSB9KSldIH0pXSB9KSk7XG59XG5leHBvcnQgY29uc3QgUHJvVGFibGUgPSBtZW1vKFByb1RhYmxlSW5uZXIpO1xuZXhwb3J0IGRlZmF1bHQgUHJvVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,12 @@
1
+ /** BEM class prefix (root class becomes `om-component-ui-pro-table`). */
2
+ export declare const CSS_PREFIX = "pro-table";
3
+ /** Lightweight valueType set supported in v1 — drives cell render + search field. */
4
+ export declare const VALUE_TYPES: readonly ["text", "select", "date", "dateRange", "digit"];
5
+ export type ProTableValueType = (typeof VALUE_TYPES)[number];
6
+ export declare const DEFAULT_PAGE_SIZE = 10;
7
+ export declare const DEFAULT_CURRENT = 1;
8
+ /** User-facing strings — no magic strings in the component code. */
9
+ export declare const DEFAULT_TEXT: {
10
+ readonly search: "Search";
11
+ readonly reset: "Reset";
12
+ };
@@ -0,0 +1,12 @@
1
+ /** BEM class prefix (root class becomes `om-component-ui-pro-table`). */
2
+ export var CSS_PREFIX = 'pro-table';
3
+ /** Lightweight valueType set supported in v1 — drives cell render + search field. */
4
+ export var VALUE_TYPES = ['text', 'select', 'date', 'dateRange', 'digit'];
5
+ export var DEFAULT_PAGE_SIZE = 10;
6
+ export var DEFAULT_CURRENT = 1;
7
+ /** User-facing strings — no magic strings in the component code. */
8
+ export var DEFAULT_TEXT = {
9
+ search: 'Search',
10
+ reset: 'Reset'
11
+ };
12
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvVGFibGUvY29uc3RhbnRzLnRzIiwiY29tcG9uZW50cy9Qcm9UYWJsZS9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiQ1NTX1BSRUZJWCIsIlZBTFVFX1RZUEVTIiwiREVGQVVMVF9QQUdFX1NJWkUiLCJERUZBVUxUX0NVUlJFTlQiLCJERUZBVUxUX1RFWFQiLCJzZWFyY2giLCJyZXNldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxPQUFPLElBQU1BLFVBQVUsR0FBRyxXQUFXO0FBRXJDO0FBQ0EsT0FBTyxJQUFNQyxXQUFXLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFVO0FBR3BGLE9BQU8sSUFBTUMsaUJBQWlCLEdBQUcsRUFBRTtBQUNuQyxPQUFPLElBQU1DLGVBQWUsR0FBRyxDQUFDO0FBRWhDO0FBQ0EsT0FBTyxJQUFNQyxZQUFZLEdBQUc7RUFDMUJDLE1BQU0sRUFBRSxRQUFRO0VBQ2hCQyxLQUFLLEVBQUU7QUNIVCxDRElVIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvVGFibGUvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvKiogQkVNIGNsYXNzIHByZWZpeCAocm9vdCBjbGFzcyBiZWNvbWVzIGBvbS1jb21wb25lbnQtdWktcHJvLXRhYmxlYCkuICovXG5leHBvcnQgY29uc3QgQ1NTX1BSRUZJWCA9ICdwcm8tdGFibGUnO1xuLyoqIExpZ2h0d2VpZ2h0IHZhbHVlVHlwZSBzZXQgc3VwcG9ydGVkIGluIHYxIOKAlCBkcml2ZXMgY2VsbCByZW5kZXIgKyBzZWFyY2ggZmllbGQuICovXG5leHBvcnQgY29uc3QgVkFMVUVfVFlQRVMgPSBbJ3RleHQnLCAnc2VsZWN0JywgJ2RhdGUnLCAnZGF0ZVJhbmdlJywgJ2RpZ2l0J107XG5leHBvcnQgY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAxMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NVUlJFTlQgPSAxO1xuLyoqIFVzZXItZmFjaW5nIHN0cmluZ3Mg4oCUIG5vIG1hZ2ljIHN0cmluZ3MgaW4gdGhlIGNvbXBvbmVudCBjb2RlLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEVYVCA9IHtcbiAgICBzZWFyY2g6ICdTZWFyY2gnLFxuICAgIHJlc2V0OiAnUmVzZXQnLFxufTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TableColumn, TableRecord } from "../../Table";
3
+ import type { ProColumns } from '../interface';
4
+ /**
5
+ * Convert Pro columns into base Table columns: drop `hideInTable` columns, strip
6
+ * Pro-only fields, and — for any column without an explicit `render` — attach a
7
+ * value-type-driven cell renderer that falls back to `emptyText` for empty
8
+ * values. An explicit `render` always wins and is left untouched.
9
+ */
10
+ export declare function genColumns<T extends TableRecord>(columns: ProColumns<T>[], emptyText?: ReactNode): TableColumn<T>[];
@@ -0,0 +1,81 @@
1
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
3
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4
+ var DEFAULT_EMPTY_TEXT = '-';
5
+ /** Pro-only column fields that must NOT leak onto the base Table column object. */
6
+ var PRO_COLUMN_KEYS = ['valueType', 'valueEnum', 'search', 'hideInTable', 'hideInSearch', 'renderFormItem', 'fieldProps', 'initialValue', 'order'];
7
+ function toBaseColumn(column) {
8
+ var clone = Object.assign({}, column);
9
+ var _iterator = _createForOfIteratorHelper(PRO_COLUMN_KEYS),
10
+ _step;
11
+ try {
12
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
13
+ var key = _step.value;
14
+ delete clone[key];
15
+ }
16
+ } catch (err) {
17
+ _iterator.e(err);
18
+ } finally {
19
+ _iterator.f();
20
+ }
21
+ return clone;
22
+ }
23
+ function isEmptyValue(value) {
24
+ return value === null || value === undefined || value === '' || Array.isArray(value) && value.length === 0;
25
+ }
26
+ function enumText(valueEnum, value) {
27
+ if (!valueEnum) return value;
28
+ var item = valueEnum[value];
29
+ if (item === undefined) return value;
30
+ return typeof item === 'string' ? item : item.text;
31
+ }
32
+ function formatDate(value) {
33
+ if (value instanceof Date) return value.toLocaleDateString();
34
+ var date = new Date(value);
35
+ return Number.isNaN(date.getTime()) ? String(value) : date.toLocaleDateString();
36
+ }
37
+ function formatDateRange(value) {
38
+ if (!Array.isArray(value)) return String(value);
39
+ return value.map(function (item) {
40
+ return formatDate(item);
41
+ }).join(' ~ ');
42
+ }
43
+ function formatDigit(value) {
44
+ var num = Number(value);
45
+ return Number.isNaN(num) ? String(value) : num.toLocaleString();
46
+ }
47
+ /**
48
+ * Convert Pro columns into base Table columns: drop `hideInTable` columns, strip
49
+ * Pro-only fields, and — for any column without an explicit `render` — attach a
50
+ * value-type-driven cell renderer that falls back to `emptyText` for empty
51
+ * values. An explicit `render` always wins and is left untouched.
52
+ */
53
+ export function genColumns(columns) {
54
+ var emptyText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_EMPTY_TEXT;
55
+ return columns.filter(function (column) {
56
+ return column.hideInTable !== true;
57
+ }).map(function (column) {
58
+ var base = toBaseColumn(column);
59
+ if (base.render) return base;
60
+ var valueType = column.valueType,
61
+ valueEnum = column.valueEnum;
62
+ base.render = function (value) {
63
+ if (isEmptyValue(value)) return emptyText;
64
+ switch (valueType) {
65
+ case 'select':
66
+ return enumText(valueEnum, value);
67
+ case 'date':
68
+ return formatDate(value);
69
+ case 'dateRange':
70
+ return formatDateRange(value);
71
+ case 'digit':
72
+ return formatDigit(value);
73
+ case 'text':
74
+ default:
75
+ return value;
76
+ }
77
+ };
78
+ return base;
79
+ });
80
+ }
81
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvc3JjL2NvbXBvbmVudHMvUHJvVGFibGUvY29yZS9nZW5Db2x1bW5zLnRzeCIsImNvbXBvbmVudHMvUHJvVGFibGUvY29yZS9nZW5Db2x1bW5zLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfRU1QVFlfVEVYVCIsIlBST19DT0xVTU5fS0VZUyIsInRvQmFzZUNvbHVtbiIsImNvbHVtbiIsImNsb25lIiwiT2JqZWN0IiwiYXNzaWduIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImtleSIsInZhbHVlIiwiZXJyIiwiZSIsImYiLCJpc0VtcHR5VmFsdWUiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJlbnVtVGV4dCIsInZhbHVlRW51bSIsIml0ZW0iLCJ0ZXh0IiwiZm9ybWF0RGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJkYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiU3RyaW5nIiwiZm9ybWF0RGF0ZVJhbmdlIiwibWFwIiwiam9pbiIsImZvcm1hdERpZ2l0IiwibnVtIiwidG9Mb2NhbGVTdHJpbmciLCJnZW5Db2x1bW5zIiwiY29sdW1ucyIsImVtcHR5VGV4dCIsImFyZ3VtZW50cyIsImZpbHRlciIsImhpZGVJblRhYmxlIiwiYmFzZSIsInJlbmRlciIsInZhbHVlVHlwZSJdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsSUFBTUEsa0JBQWtCLEdBQUcsR0FBRztBQUU5QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxDQUN0QixXQUFXLEVBQ1gsV0FBVyxFQUNYLFFBQVEsRUFDUixhQUFhLEVBQ2IsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNkLE9BQU8sQ0FDQztBQUVWLFNBQVNDLFlBQVlBLENBQXdCQyxNQUFxQixFQUFBO0VBQ2hFLElBQU1DLEtBQUssR0FBQUMsTUFBQSxDQUFB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R0FBRzdDLFlBQVksQ0FBQ0MsTUFBTSxDQUFDO0lBQ2pDLElBQUk0QyxJQUFJLENBQUNDLE1BQU0sRUFBRSxPQUFPRCxJQUFJO0lBRTVCLElBQVFFLFNBQVMsR0FBZ0I5QyxNQUFNLENBQS9COEMsU0FBUztNQUFFekIsU0FBUyxHQUFLckIsTUFBTSxDQUFwQnFCLFNBQVM7SUFDNUJ1QixJQUFJLENBQUNDLE1BQU0sR0FBRyxVQUFDbEMsS0FBSyxFQUFJO01BQ3RCLElBQUlJLFlBQVksQ0FBQ0osS0FBSyxDQUFDLEVBQUUsT0FBTzZCLFNBQVM7TUFDekMsUUFBUU0sU0FBUztRQUNmLEtBQUssUUFBUTtVQUNYLE9BQU8xQixRQUFRLENBQUNDLFNBQVMsRUFBRVYsS0FBSyxDQUFDO1FBQ25DLEtBQUssTUFBTTtVQUNULE9BQU9hLFVBQVUsQ0FBQ2IsS0FBSyxDQUFDO1FBQzFCLEtBQUssV0FBVztVQUNkLE9BQU9xQixlQUFlLENBQUNyQixLQUFLLENBQUM7UUFDL0IsS0FBSyxPQUFPO1VBQ1YsT0FBT3dCLFdBQVcsQ0FBQ3hCLEtBQUssQ0FBQztRQUMzQixLQUFLLE1BQU07UUFDWDtVQUNFLE9BQU9BLEtBQWtCO01BQzdCO0lBQ0YsQ0FBQztJQUNELE9BQU9pQyxJQUFJO0VBQ2IsQ0FBQyxDQUFDO0FBQ04iLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9UYWJsZS9jb3JlL2dlbkNvbHVtbnMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImNvbnN0IERFRkFVTFRfRU1QVFlfVEVYVCA9ICctJztcbi8qKiBQcm8tb25seSBjb2x1bW4gZmllbGRzIHRoYXQgbXVzdCBOT1QgbGVhayBvbnRvIHRoZSBiYXNlIFRhYmxlIGNvbHVtbiBvYmplY3QuICovXG5jb25zdCBQUk9fQ09MVU1OX0tFWVMgPSBbXG4gICAgJ3ZhbHVlVHlwZScsXG4gICAgJ3ZhbHVlRW51bScsXG4gICAgJ3NlYXJjaCcsXG4gICAgJ2hpZGVJblRhYmxlJyxcbiAgICAnaGlkZUluU2VhcmNoJyxcbiAgICAncmVuZGVyRm9ybUl0ZW0nLFxuICAgICdmaWVsZFByb3BzJyxcbiAgICAnaW5pdGlhbFZhbHVlJyxcbiAgICAnb3JkZXInLFxuXTtcbmZ1bmN0aW9uIHRvQmFzZUNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCBjbG9uZSA9IE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbik7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgUFJPX0NPTFVNTl9LRVlTKVxuICAgICAgICBkZWxldGUgY2xvbmVba2V5XTtcbiAgICByZXR1cm4gY2xvbmU7XG59XG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKTtcbn1cbmZ1bmN0aW9uIGVudW1UZXh0KHZhbHVlRW51bSwgdmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlRW51bSlcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZUVudW1bdmFsdWVdO1xuICAgIGlmIChpdGVtID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW0udGV4dDtcbn1cbmZ1bmN0aW9uIGZvcm1hdERhdGUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IFN0cmluZyh2YWx1ZSkgOiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xufVxuZnVuY3Rpb24gZm9ybWF0RGF0ZVJhbmdlKHZhbHVlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSkgPT4gZm9ybWF0RGF0ZShpdGVtKSkuam9pbignIH4gJyk7XG59XG5mdW5jdGlvbiBmb3JtYXREaWdpdCh2YWx1ZSkge1xuICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTihudW0pID8gU3RyaW5nKHZhbHVlKSA6IG51bS50b0xvY2FsZVN0cmluZygpO1xufVxuLyoqXG4gKiBDb252ZXJ0IFBybyBjb2x1bW5zIGludG8gYmFzZSBUYWJsZSBjb2x1bW5zOiBkcm9wIGBoaWRlSW5UYWJsZWAgY29sdW1ucywgc3RyaXBcbiAqIFByby1vbmx5IGZpZWxkcywgYW5kIOKAlCBmb3IgYW55IGNvbHVtbiB3aXRob3V0IGFuIGV4cGxpY2l0IGByZW5kZXJgIOKAlCBhdHRhY2ggYVxuICogdmFsdWUtdHlwZS1kcml2ZW4gY2VsbCByZW5kZXJlciB0aGF0IGZhbGxzIGJhY2sgdG8gYGVtcHR5VGV4dGAgZm9yIGVtcHR5XG4gKiB2YWx1ZXMuIEFuIGV4cGxpY2l0IGByZW5kZXJgIGFsd2F5cyB3aW5zIGFuZCBpcyBsZWZ0IHVudG91Y2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbkNvbHVtbnMoY29sdW1ucywgZW1wdHlUZXh0ID0gREVGQVVMVF9FTVBUWV9URVhUKSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgICAgLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4uaGlkZUluVGFibGUgIT09IHRydWUpXG4gICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBiYXNlID0gdG9CYXNlQ29sdW1uKGNvbHVtbik7XG4gICAgICAgIGlmIChiYXNlLnJlbmRlcilcbiAgICAgICAgICAgIHJldHVybiBiYXNlO1xuICAgICAgICBjb25zdCB7IHZhbHVlVHlwZSwgdmFsdWVFbnVtIH0gPSBjb2x1bW47XG4gICAgICAgIGJhc2UucmVuZGVyID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlUZXh0O1xuICAgICAgICAgICAgc3dpdGNoICh2YWx1ZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW51bVRleHQodmFsdWVFbnVtLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXREYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlUmFuZ2UnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZVJhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjYXNlICdkaWdpdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXREaWdpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gYmFzZTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TableRecord } from "../../Table";
3
+ import type { ProColumns } from '../interface';
4
+ export interface SearchFieldsResult {
5
+ fields: ReactNode[];
6
+ initialValues: Record<string, unknown>;
7
+ /** Names of every generated search field — used to reset the form safely. */
8
+ names: string[];
9
+ }
10
+ /**
11
+ * Build the QueryFilter children (ProForm fields) from searchable columns, plus
12
+ * the aggregated initial values. `renderFormItem` overrides the valueType mapping.
13
+ */
14
+ export declare function genSearchFields<T extends TableRecord>(columns: ProColumns<T>[]): SearchFieldsResult;
15
+ /**
16
+ * Apply per-column `search.transform` to submitted values, replacing the original
17
+ * field name with the mapped params.
18
+ */
19
+ export declare function applySearchTransforms<T extends TableRecord>(values: Record<string, unknown>, columns: ProColumns<T>[]): Record<string, unknown>;
@@ -0,0 +1,103 @@
1
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { ProForm } from '../../ProForm';
4
+ import { getColumnSearchName } from './utils';
5
+ function isSearchable(column) {
6
+ if (column.hideInSearch === true || column.search === false) return false;
7
+ return Boolean(column.renderFormItem || column.valueType);
8
+ }
9
+ /**
10
+ * Build the QueryFilter children (ProForm fields) from searchable columns, plus
11
+ * the aggregated initial values. `renderFormItem` overrides the valueType mapping.
12
+ */
13
+ export function genSearchFields(columns) {
14
+ var initialValues = {};
15
+ var names = [];
16
+ var fields = columns.filter(isSearchable).map(function (column, index) {
17
+ return {
18
+ column: column,
19
+ name: getColumnSearchName(column),
20
+ index: index
21
+ };
22
+ }).filter(function (entry) {
23
+ return entry.name !== null;
24
+ }).sort(function (a, b) {
25
+ var _a, _b;
26
+ return ((_a = a.column.order) !== null && _a !== void 0 ? _a : a.index) - ((_b = b.column.order) !== null && _b !== void 0 ? _b : b.index);
27
+ }).map(function (_ref) {
28
+ var column = _ref.column,
29
+ name = _ref.name;
30
+ names.push(name);
31
+ if (column.initialValue !== undefined) initialValues[name] = column.initialValue;
32
+ if (column.renderFormItem) {
33
+ return _jsx("span", {
34
+ children: column.renderFormItem()
35
+ }, name);
36
+ }
37
+ var fieldProps = column.fieldProps;
38
+ // No labels — use the column title as the placeholder so the field stays self-describing.
39
+ var placeholder = typeof column.title === 'string' ? column.title : undefined;
40
+ switch (column.valueType) {
41
+ case 'select':
42
+ return _jsx(ProForm.Select, {
43
+ name: name,
44
+ placeholder: placeholder,
45
+ valueEnum: column.valueEnum,
46
+ fieldProps: fieldProps
47
+ }, name);
48
+ case 'date':
49
+ return _jsx(ProForm.DatePicker, {
50
+ name: name,
51
+ placeholder: placeholder,
52
+ fieldProps: fieldProps
53
+ }, name);
54
+ case 'dateRange':
55
+ return _jsx(ProForm.DatePicker, {
56
+ name: name,
57
+ placeholder: placeholder,
58
+ fieldProps: Object.assign({
59
+ selectionMode: 'range'
60
+ }, fieldProps)
61
+ }, name);
62
+ case 'digit':
63
+ return _jsx(ProForm.Text, {
64
+ name: name,
65
+ placeholder: placeholder,
66
+ fieldProps: Object.assign({
67
+ type: 'number'
68
+ }, fieldProps)
69
+ }, name);
70
+ case 'text':
71
+ default:
72
+ return _jsx(ProForm.Text, {
73
+ name: name,
74
+ placeholder: placeholder,
75
+ fieldProps: fieldProps
76
+ }, name);
77
+ }
78
+ });
79
+ return {
80
+ fields: fields,
81
+ initialValues: initialValues,
82
+ names: names
83
+ };
84
+ }
85
+ /**
86
+ * Apply per-column `search.transform` to submitted values, replacing the original
87
+ * field name with the mapped params.
88
+ */
89
+ export function applySearchTransforms(values, columns) {
90
+ var result = Object.assign({}, values);
91
+ columns.forEach(function (column) {
92
+ if (_typeof(column.search) === 'object' && column.search.transform) {
93
+ var name = getColumnSearchName(column);
94
+ if (name && name in result) {
95
+ var mapped = column.search.transform(result[name]);
96
+ delete result[name];
97
+ Object.assign(result, mapped);
98
+ }
99
+ }
100
+ });
101
+ return result;
102
+ }
103
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvY29yZS9nZW5TZWFyY2hGaWVsZHMuanMiLCJjb21wb25lbnRzL1Byb1RhYmxlL3NyYy9jb21wb25lbnRzL1Byb1RhYmxlL2NvcmUvZ2VuU2VhcmNoRmllbGRzLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwiUHJvRm9ybSIsImdldENvbHVtblNlYXJjaE5hbWUiLCJpc1NlYXJjaGFibGUiLCJjb2x1bW4iLCJoaWRlSW5TZWFyY2giLCJzZWFyY2giLCJCb29sZWFuIiwicmVuZGVyRm9ybUl0ZW0iLCJ2YWx1ZVR5cGUiLCJnZW5TZWFyY2hGaWVsZHMiLCJjb2x1bW5zIiwiaW5pdGlhbFZhbHVlcyIsIm5hbWVzIiwiZmllbGRzIiwiZmlsdGVyIiwibWFwIiwiaW5kZXgiLCJuYW1lIiwiZW50cnkiLCJzb3J0IiwiYSIsImIiLCJfYSIsIl9iIiwib3JkZXIiLCJfcmVmIiwicHVzaCIsImluaXRpYWxWYWx1ZSIsInVuZGVmaW5lZCIsImNoaWxkcmVuIiwiZmllbGRQcm9wcyIsInBsYWNlaG9sZGVyIiwidGl0bGUiLCJTZWxlY3QiLCJ2YWx1ZUVudW0iLCJEYXRlUGlja2VyIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uTW9kZSIsIlRleHQiLCJ0eXBlIiwiYXBwbHlTZWFyY2hUcmFuc2Zvcm1zIiwidmFsdWVzIiwicmVzdWx0IiwiZm9yRWFjaCIsIl90eXBlb2YiLCJ0cmFuc2Zvcm0iLCJtYXBwZWQiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNDL0MsU0FBU0MsT0FBTyxRQUFRLGVBQWU7QUFHdkMsU0FBU0MsbUJBQW1CLFFBQVEsU0FBUztBQVM3QyxTQUFTQyxZQUFZQSxDQUF3QkMsTUFBcUIsRUFBQTtFQUNoRSxJQUFJQSxNQUFNLENBQUNDLFlBQVksS0FBSyxJQUFJLElBQUlELE1BQU0sQ0FBQ0UsTUFBTSxLQUFLLEtBQUssRUFBRSxPQUFPLEtBQUs7RUFD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QUNFLE1BQU0sQ0FBQztNQUN4QyxJQUFJYyxJQUFJLElBQUlBLElBQUksSUFBSTBCLE1BQU0sRUFBRTtRQUMxQixJQUFNSSxNQUFNLEdBQUc1QyxNQUFNLENBQUNFLE1BQU0sQ0FBQ3lDLFNBQVMsQ0FBQ0gsTUFBTSxDQUFDMUIsSUFBSSxDQUFDLENBQUM7UUFDcEQsT0FBTzBCLE1BQU0sQ0FBQzFCLElBQUksQ0FBQztRQUNuQm1CLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTSxNQUFNLEVBQUVJLE1BQU0sQ0FBQztNQUMvQjtJQUNGO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsT0FBT0osTUFBTTtBQUNmIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvVGFibGUvY29yZS9nZW5TZWFyY2hGaWVsZHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgUHJvRm9ybSB9IGZyb20gJy4uLy4uL1Byb0Zvcm0nO1xuaW1wb3J0IHsgZ2V0Q29sdW1uU2VhcmNoTmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuZnVuY3Rpb24gaXNTZWFyY2hhYmxlKGNvbHVtbikge1xuICAgIGlmIChjb2x1bW4uaGlkZUluU2VhcmNoID09PSB0cnVlIHx8IGNvbHVtbi5zZWFyY2ggPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIEJvb2xlYW4oY29sdW1uLnJlbmRlckZvcm1JdGVtIHx8IGNvbHVtbi52YWx1ZVR5cGUpO1xufVxuLyoqXG4gKiBCdWlsZCB0aGUgUXVlcnlGaWx0ZXIgY2hpbGRyZW4gKFByb0Zvcm0gZmllbGRzKSBmcm9tIHNlYXJjaGFibGUgY29sdW1ucywgcGx1c1xuICogdGhlIGFnZ3JlZ2F0ZWQgaW5pdGlhbCB2YWx1ZXMuIGByZW5kZXJGb3JtSXRlbWAgb3ZlcnJpZGVzIHRoZSB2YWx1ZVR5cGUgbWFwcGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlblNlYXJjaEZpZWxkcyhjb2x1bW5zKSB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuICAgIGNvbnN0IG5hbWVzID0gW107XG4gICAgY29uc3QgZmllbGRzID0gY29sdW1uc1xuICAgICAgICAuZmlsdGVyKGlzU2VhcmNoYWJsZSlcbiAgICAgICAgLm1hcCgoY29sdW1uLCBpbmRleCkgPT4gKHsgY29sdW1uLCBuYW1lOiBnZXRDb2x1bW5TZWFyY2hOYW1lKGNvbHVtbiksIGluZGV4IH0pKVxuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubmFtZSAhPT0gbnVsbClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuICgoX2EgPSBhLmNvbHVtbi5vcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYS5pbmRleCkgLSAoKF9iID0gYi5jb2x1bW4ub3JkZXIpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGIuaW5kZXgpOyB9KVxuICAgICAgICAubWFwKCh7IGNvbHVtbiwgbmFtZSB9KSA9PiB7XG4gICAgICAgIG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgIGlmIChjb2x1bW4uaW5pdGlhbFZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBpbml0aWFsVmFsdWVzW25hbWVdID0gY29sdW1uLmluaXRpYWxWYWx1ZTtcbiAgICAgICAgaWYgKGNvbHVtbi5yZW5kZXJGb3JtSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IGNvbHVtbi5yZW5kZXJGb3JtSXRlbSgpIH0sIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpZWxkUHJvcHMgPSBjb2x1bW4uZmllbGRQcm9wcztcbiAgICAgICAgLy8gTm8gbGFiZWxzIOKAlCB1c2UgdGhlIGNvbHVtbiB0aXRsZSBhcyB0aGUgcGxhY2Vob2xkZXIgc28gdGhlIGZpZWxkIHN0YXlzIHNlbGYtZGVzY3JpYmluZy5cbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0eXBlb2YgY29sdW1uLnRpdGxlID09PSAnc3RyaW5nJyA/IGNvbHVtbi50aXRsZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgc3dpdGNoIChjb2x1bW4udmFsdWVUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChQcm9Gb3JtLlNlbGVjdCwgeyBuYW1lOiBuYW1lLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHZhbHVlRW51bTogY29sdW1uLnZhbHVlRW51bSwgZmllbGRQcm9wczogZmllbGRQcm9wcyB9LCBuYW1lKSk7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2pzeChQcm9Gb3JtLkRhdGVQaWNrZXIsIHsgbmFtZTogbmFtZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBmaWVsZFByb3BzOiBmaWVsZFByb3BzIH0sIG5hbWUpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZVJhbmdlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goUHJvRm9ybS5EYXRlUGlja2VyLCB7IG5hbWU6IG5hbWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgZmllbGRQcm9wczogT2JqZWN0LmFzc2lnbih7IHNlbGVjdGlvbk1vZGU6ICdyYW5nZScgfSwgZmllbGRQcm9wcykgfSwgbmFtZSkpO1xuICAgICAgICAgICAgY2FzZSAnZGlnaXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChQcm9Gb3JtLlRleHQsIHsgbmFtZTogbmFtZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBmaWVsZFByb3BzOiBPYmplY3QuYXNzaWduKHsgdHlwZTogJ251bWJlcicgfSwgZmllbGRQcm9wcykgfSwgbmFtZSkpO1xuICAgICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBfanN4KFByb0Zvcm0uVGV4dCwgeyBuYW1lOiBuYW1lLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIGZpZWxkUHJvcHM6IGZpZWxkUHJvcHMgfSwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyBmaWVsZHMsIGluaXRpYWxWYWx1ZXMsIG5hbWVzIH07XG59XG4vKipcbiAqIEFwcGx5IHBlci1jb2x1bW4gYHNlYXJjaC50cmFuc2Zvcm1gIHRvIHN1Ym1pdHRlZCB2YWx1ZXMsIHJlcGxhY2luZyB0aGUgb3JpZ2luYWxcbiAqIGZpZWxkIG5hbWUgd2l0aCB0aGUgbWFwcGVkIHBhcmFtcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2VhcmNoVHJhbnNmb3Jtcyh2YWx1ZXMsIGNvbHVtbnMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCB2YWx1ZXMpO1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uLnNlYXJjaCA9PT0gJ29iamVjdCcgJiYgY29sdW1uLnNlYXJjaC50cmFuc2Zvcm0pIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb2x1bW5TZWFyY2hOYW1lKGNvbHVtbik7XG4gICAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbHVtbi5zZWFyY2gudHJhbnNmb3JtKHJlc3VsdFtuYW1lXSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtuYW1lXTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgbWFwcGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9