@lemon-fe/kits 0.0.9 → 0.0.11
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/index.d.ts +3 -0
- package/es/index.js +4 -1
- package/es/subject.d.ts +12 -0
- package/es/subject.js +31 -0
- package/es/useBatchOperator/index.d.ts +14 -0
- package/es/useBatchOperator/index.js +356 -0
- package/es/usePreload/index.d.ts +9 -0
- package/es/usePreload/index.js +83 -0
- package/package.json +5 -5
package/es/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from '@lemon-fe/components';
|
|
2
2
|
export * from '@lemon-fe/hooks';
|
|
3
3
|
export * from '@lemon-fe/layouts';
|
|
4
|
+
export { default as usePreload } from './usePreload';
|
|
5
|
+
export { default as useBatchOperator } from './useBatchOperator';
|
|
6
|
+
export { default as Subject } from './subject';
|
package/es/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from '@lemon-fe/components';
|
|
2
2
|
export * from '@lemon-fe/hooks';
|
|
3
|
-
export * from '@lemon-fe/layouts';
|
|
3
|
+
export * from '@lemon-fe/layouts';
|
|
4
|
+
export { default as usePreload } from './usePreload';
|
|
5
|
+
export { default as useBatchOperator } from './useBatchOperator';
|
|
6
|
+
export { default as Subject } from './subject';
|
package/es/subject.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface Observer<State> {
|
|
2
|
+
next: (state: State) => void;
|
|
3
|
+
complete?: () => void;
|
|
4
|
+
}
|
|
5
|
+
export default function Subject<State>(): {
|
|
6
|
+
next: (state: State) => void;
|
|
7
|
+
subscribe: (observer: Observer<State>) => {
|
|
8
|
+
unsubscribe: () => void;
|
|
9
|
+
};
|
|
10
|
+
complete: () => void;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
package/es/subject.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export default function Subject() {
|
|
2
|
+
var observers = [];
|
|
3
|
+
return {
|
|
4
|
+
next: function next(state) {
|
|
5
|
+
observers.forEach(function (item) {
|
|
6
|
+
return item.next(state);
|
|
7
|
+
});
|
|
8
|
+
},
|
|
9
|
+
subscribe: function subscribe(observer) {
|
|
10
|
+
observers.push(observer);
|
|
11
|
+
return {
|
|
12
|
+
unsubscribe: function unsubscribe() {
|
|
13
|
+
var index = observers.findIndex(function (item) {
|
|
14
|
+
return item === observer;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
if (index >= 0) {
|
|
18
|
+
observers.splice(index, 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
complete: function complete() {
|
|
24
|
+
observers.forEach(function (item) {
|
|
25
|
+
if (item.complete) {
|
|
26
|
+
item.complete();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Key } from 'react';
|
|
2
|
+
import type { ColumnType, BaseTableProps } from '@lemon-fe/components';
|
|
3
|
+
declare type Result = void | string | Error | symbol;
|
|
4
|
+
export default function useBatchOperate<RecordType = Record<string, any>>(options: {
|
|
5
|
+
modalTitle: string;
|
|
6
|
+
handler: (record: RecordType) => Promise<string | void>;
|
|
7
|
+
columns?: ColumnType<RecordType>[];
|
|
8
|
+
rowKey?: BaseTableProps<RecordType>['rowKey'];
|
|
9
|
+
onClose?: (results: Map<Key, Result>) => void;
|
|
10
|
+
}): {
|
|
11
|
+
node: JSX.Element;
|
|
12
|
+
run: (data: RecordType[]) => void;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
+
|
|
3
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
+
|
|
5
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6
|
+
|
|
7
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
8
|
+
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
+
|
|
11
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
+
|
|
13
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
14
|
+
|
|
15
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
|
|
17
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
|
+
|
|
19
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
20
|
+
|
|
21
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
22
|
+
|
|
23
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
24
|
+
|
|
25
|
+
import React, { useMemo, useState, useRef, useEffect } from 'react';
|
|
26
|
+
import { Modal, Row, Spin } from 'antd';
|
|
27
|
+
import { PlayCircleOutlined, DeleteTwoTone, PauseCircleOutlined, ReloadOutlined } from '@ant-design/icons';
|
|
28
|
+
import { get } from 'lodash';
|
|
29
|
+
import { BaseTable, Section, Layout, Icons, Actions } from '@lemon-fe/components';
|
|
30
|
+
import { useThrottle } from '@lemon-fe/hooks';
|
|
31
|
+
var loading = Symbol('loading');
|
|
32
|
+
export default function useBatchOperate(options) {
|
|
33
|
+
var _options$modalTitle = options.modalTitle,
|
|
34
|
+
modalTitle = _options$modalTitle === void 0 ? '批量操作' : _options$modalTitle,
|
|
35
|
+
handler = options.handler,
|
|
36
|
+
columns = options.columns,
|
|
37
|
+
onClose = options.onClose,
|
|
38
|
+
rowKey = options.rowKey;
|
|
39
|
+
|
|
40
|
+
var _useState = useState(false),
|
|
41
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
42
|
+
visible = _useState2[0],
|
|
43
|
+
setVisible = _useState2[1];
|
|
44
|
+
|
|
45
|
+
var _useState3 = useState([]),
|
|
46
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
47
|
+
data = _useState4[0],
|
|
48
|
+
setData = _useState4[1];
|
|
49
|
+
|
|
50
|
+
var _useState5 = useState(new Map()),
|
|
51
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
52
|
+
results = _useState6[0],
|
|
53
|
+
setResults = _useState6[1];
|
|
54
|
+
|
|
55
|
+
var _useState7 = useState(-1),
|
|
56
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
57
|
+
active = _useState8[0],
|
|
58
|
+
setActive = _useState8[1];
|
|
59
|
+
|
|
60
|
+
var _useState9 = useState(true),
|
|
61
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
62
|
+
paused = _useState10[0],
|
|
63
|
+
setPaused = _useState10[1];
|
|
64
|
+
|
|
65
|
+
var mounted = useRef(false);
|
|
66
|
+
var pausedRef = useRef(paused);
|
|
67
|
+
pausedRef.current = paused;
|
|
68
|
+
useEffect(function () {
|
|
69
|
+
mounted.current = visible;
|
|
70
|
+
return function () {
|
|
71
|
+
mounted.current = false;
|
|
72
|
+
};
|
|
73
|
+
}, [visible]);
|
|
74
|
+
|
|
75
|
+
var getRowKey = function getRowKey(record, index) {
|
|
76
|
+
if (typeof rowKey === 'function') {
|
|
77
|
+
return rowKey(record, index);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (rowKey !== undefined) {
|
|
81
|
+
return get(record, rowKey);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return get(record, 'key');
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
var mCols = useMemo(function () {
|
|
88
|
+
var cols = columns ? _toConsumableArray(columns) : [{
|
|
89
|
+
title: '编号',
|
|
90
|
+
key: 'id',
|
|
91
|
+
dataIndex: typeof rowKey === 'string' ? rowKey : undefined,
|
|
92
|
+
render: function render(_, record, index) {
|
|
93
|
+
return getRowKey(record, index);
|
|
94
|
+
}
|
|
95
|
+
}];
|
|
96
|
+
cols.unshift({
|
|
97
|
+
title: '',
|
|
98
|
+
key: 'delete',
|
|
99
|
+
width: 32,
|
|
100
|
+
render: function render(_, record, index) {
|
|
101
|
+
var key = getRowKey(record, index);
|
|
102
|
+
return /*#__PURE__*/React.createElement(DeleteTwoTone, {
|
|
103
|
+
onClick: function onClick() {
|
|
104
|
+
if (!paused) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
setActive(function (prev) {
|
|
109
|
+
if (prev >= index) {
|
|
110
|
+
return prev - 1;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return prev;
|
|
114
|
+
});
|
|
115
|
+
setResults(function (prev) {
|
|
116
|
+
if (prev.has(key)) {
|
|
117
|
+
var next = new Map(prev);
|
|
118
|
+
next.delete(key);
|
|
119
|
+
return next;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return prev;
|
|
123
|
+
});
|
|
124
|
+
setData(function (prev) {
|
|
125
|
+
var next = _toConsumableArray(prev);
|
|
126
|
+
|
|
127
|
+
next.splice(index, 1);
|
|
128
|
+
return next;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
cols.push({
|
|
135
|
+
title: '状态',
|
|
136
|
+
key: 'status',
|
|
137
|
+
width: 'auto',
|
|
138
|
+
render: function render(_, record, index) {
|
|
139
|
+
var key = getRowKey(record, index);
|
|
140
|
+
var result = results.get(key);
|
|
141
|
+
|
|
142
|
+
if (active === index && !paused || result === loading) {
|
|
143
|
+
return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Spin, {
|
|
144
|
+
size: "small",
|
|
145
|
+
style: {
|
|
146
|
+
lineHeight: 1
|
|
147
|
+
}
|
|
148
|
+
}), /*#__PURE__*/React.createElement("span", null, " \u8FDB\u884C\u4E2D"));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (!results.has(key)) {
|
|
152
|
+
return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Icons.Tip, {
|
|
153
|
+
type: "warning"
|
|
154
|
+
}), /*#__PURE__*/React.createElement("span", null, " \u5F85\u5904\u7406"));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (result instanceof Error) {
|
|
158
|
+
return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Icons.Tip, {
|
|
159
|
+
type: "error"
|
|
160
|
+
}), /*#__PURE__*/React.createElement("span", null, " ", result.message, " "), /*#__PURE__*/React.createElement(ReloadOutlined, {
|
|
161
|
+
onClick: function onClick() {
|
|
162
|
+
return reload(record, index);
|
|
163
|
+
}
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Icons.Tip, {
|
|
168
|
+
type: "success"
|
|
169
|
+
}), /*#__PURE__*/React.createElement("span", null, " ", result || '操作成功'));
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return cols;
|
|
173
|
+
}, [columns, paused, active, results]);
|
|
174
|
+
|
|
175
|
+
var changeResult = function changeResult(key, val) {
|
|
176
|
+
if (mounted.current) {
|
|
177
|
+
setResults(function (prev) {
|
|
178
|
+
var next = new Map(prev);
|
|
179
|
+
next.set(key, val);
|
|
180
|
+
return next;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
var reload = useThrottle( /*#__PURE__*/function () {
|
|
186
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(item, index) {
|
|
187
|
+
var key, res;
|
|
188
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
189
|
+
while (1) {
|
|
190
|
+
switch (_context.prev = _context.next) {
|
|
191
|
+
case 0:
|
|
192
|
+
key = getRowKey(item, index);
|
|
193
|
+
_context.prev = 1;
|
|
194
|
+
changeResult(key, loading);
|
|
195
|
+
_context.next = 5;
|
|
196
|
+
return handler(item);
|
|
197
|
+
|
|
198
|
+
case 5:
|
|
199
|
+
res = _context.sent;
|
|
200
|
+
changeResult(key, res);
|
|
201
|
+
_context.next = 12;
|
|
202
|
+
break;
|
|
203
|
+
|
|
204
|
+
case 9:
|
|
205
|
+
_context.prev = 9;
|
|
206
|
+
_context.t0 = _context["catch"](1);
|
|
207
|
+
changeResult(key, _context.t0);
|
|
208
|
+
|
|
209
|
+
case 12:
|
|
210
|
+
case "end":
|
|
211
|
+
return _context.stop();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}, _callee, null, [[1, 9]]);
|
|
215
|
+
}));
|
|
216
|
+
|
|
217
|
+
return function (_x, _x2) {
|
|
218
|
+
return _ref.apply(this, arguments);
|
|
219
|
+
};
|
|
220
|
+
}(), 500);
|
|
221
|
+
var start = useThrottle( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
|
222
|
+
var i, item, key, res;
|
|
223
|
+
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
224
|
+
while (1) {
|
|
225
|
+
switch (_context2.prev = _context2.next) {
|
|
226
|
+
case 0:
|
|
227
|
+
setPaused(false);
|
|
228
|
+
i = active + 1;
|
|
229
|
+
|
|
230
|
+
case 2:
|
|
231
|
+
if (!(i < data.length)) {
|
|
232
|
+
_context2.next = 23;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
setActive(i);
|
|
237
|
+
item = data[i];
|
|
238
|
+
key = getRowKey(item, i);
|
|
239
|
+
_context2.prev = 6;
|
|
240
|
+
_context2.next = 9;
|
|
241
|
+
return handler(item);
|
|
242
|
+
|
|
243
|
+
case 9:
|
|
244
|
+
res = _context2.sent;
|
|
245
|
+
changeResult(key, res);
|
|
246
|
+
_context2.next = 16;
|
|
247
|
+
break;
|
|
248
|
+
|
|
249
|
+
case 13:
|
|
250
|
+
_context2.prev = 13;
|
|
251
|
+
_context2.t0 = _context2["catch"](6);
|
|
252
|
+
changeResult(key, _context2.t0);
|
|
253
|
+
|
|
254
|
+
case 16:
|
|
255
|
+
if (!pausedRef.current) {
|
|
256
|
+
_context2.next = 18;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return _context2.abrupt("return");
|
|
261
|
+
|
|
262
|
+
case 18:
|
|
263
|
+
if (mounted.current) {
|
|
264
|
+
_context2.next = 20;
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return _context2.abrupt("break", 23);
|
|
269
|
+
|
|
270
|
+
case 20:
|
|
271
|
+
i += 1;
|
|
272
|
+
_context2.next = 2;
|
|
273
|
+
break;
|
|
274
|
+
|
|
275
|
+
case 23:
|
|
276
|
+
if (mounted.current) {
|
|
277
|
+
setActive(-1);
|
|
278
|
+
setPaused(true);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
case 24:
|
|
282
|
+
case "end":
|
|
283
|
+
return _context2.stop();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}, _callee2, null, [[6, 13]]);
|
|
287
|
+
})), 500);
|
|
288
|
+
|
|
289
|
+
var run = function run(data) {
|
|
290
|
+
setVisible(true);
|
|
291
|
+
setData(data);
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
var handleClose = function handleClose() {
|
|
295
|
+
setVisible(false);
|
|
296
|
+
|
|
297
|
+
if (onClose) {
|
|
298
|
+
onClose(results);
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
var node = /*#__PURE__*/React.createElement(Modal, {
|
|
303
|
+
title: modalTitle,
|
|
304
|
+
visible: visible,
|
|
305
|
+
width: 896,
|
|
306
|
+
centered: true,
|
|
307
|
+
onCancel: handleClose,
|
|
308
|
+
footer: null,
|
|
309
|
+
maskClosable: false,
|
|
310
|
+
bodyStyle: {
|
|
311
|
+
height: '549px',
|
|
312
|
+
padding: 0,
|
|
313
|
+
backgroundColor: '#f9f9f9'
|
|
314
|
+
},
|
|
315
|
+
afterClose: function afterClose() {
|
|
316
|
+
setResults(new Map());
|
|
317
|
+
setPaused(true);
|
|
318
|
+
setActive(-1);
|
|
319
|
+
setData([]);
|
|
320
|
+
},
|
|
321
|
+
keyboard: false
|
|
322
|
+
}, /*#__PURE__*/React.createElement(Layout, {
|
|
323
|
+
full: true,
|
|
324
|
+
header: /*#__PURE__*/React.createElement(Row, {
|
|
325
|
+
justify: "space-between"
|
|
326
|
+
}, /*#__PURE__*/React.createElement("span", null, "\u660E\u7EC6".concat(results.size > 0 ? "(".concat(results.size, "/").concat(data.length, ")") : '')), /*#__PURE__*/React.createElement(Actions, {
|
|
327
|
+
actions: [paused ? {
|
|
328
|
+
disabled: data.length <= 0 || results.size >= data.length,
|
|
329
|
+
icon: /*#__PURE__*/React.createElement(PlayCircleOutlined, null),
|
|
330
|
+
text: active >= 0 ? '继续执行' : '开始执行',
|
|
331
|
+
onClick: start
|
|
332
|
+
} : {
|
|
333
|
+
disabled: data.length <= 0,
|
|
334
|
+
icon: /*#__PURE__*/React.createElement(PauseCircleOutlined, null),
|
|
335
|
+
text: '暂停执行',
|
|
336
|
+
onClick: function onClick() {
|
|
337
|
+
setPaused(true);
|
|
338
|
+
}
|
|
339
|
+
}]
|
|
340
|
+
}))
|
|
341
|
+
}, /*#__PURE__*/React.createElement(Section, {
|
|
342
|
+
type: "table"
|
|
343
|
+
}, /*#__PURE__*/React.createElement(BaseTable, {
|
|
344
|
+
scroll: {
|
|
345
|
+
y: true
|
|
346
|
+
},
|
|
347
|
+
pagination: false,
|
|
348
|
+
dataSource: data,
|
|
349
|
+
columns: mCols,
|
|
350
|
+
rowKey: rowKey
|
|
351
|
+
}))));
|
|
352
|
+
return {
|
|
353
|
+
node: node,
|
|
354
|
+
run: run
|
|
355
|
+
};
|
|
356
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export default function usePreload<TargetProps>(opts: {
|
|
3
|
+
request: () => Promise<TargetProps>;
|
|
4
|
+
onSuccess?: (data: TargetProps) => void;
|
|
5
|
+
} | (() => Promise<TargetProps>), deps?: ReadonlyArray<any>): {
|
|
6
|
+
refresh: () => void;
|
|
7
|
+
data: TargetProps | null;
|
|
8
|
+
mask: React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
|
|
9
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
|
|
3
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
|
|
5
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
+
|
|
7
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
|
+
|
|
9
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
10
|
+
|
|
11
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
+
|
|
13
|
+
import React, { useEffect, useState } from 'react';
|
|
14
|
+
import { Result, Button } from 'antd';
|
|
15
|
+
import { useRequest } from '@lemon-fe/hooks';
|
|
16
|
+
import { PageLoading } from '@lemon-fe/components';
|
|
17
|
+
export default function usePreload(opts, deps) {
|
|
18
|
+
var _useState = useState(null),
|
|
19
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
20
|
+
data = _useState2[0],
|
|
21
|
+
setData = _useState2[1];
|
|
22
|
+
|
|
23
|
+
var _useState3 = useState(null),
|
|
24
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
25
|
+
error = _useState4[0],
|
|
26
|
+
setError = _useState4[1];
|
|
27
|
+
|
|
28
|
+
var request;
|
|
29
|
+
|
|
30
|
+
var _onSuccess;
|
|
31
|
+
|
|
32
|
+
if (typeof opts === 'function') {
|
|
33
|
+
request = opts;
|
|
34
|
+
} else {
|
|
35
|
+
request = opts.request;
|
|
36
|
+
_onSuccess = opts.onSuccess;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var _useRequest = useRequest(request, {
|
|
40
|
+
onSuccess: function onSuccess(res) {
|
|
41
|
+
if (_onSuccess) {
|
|
42
|
+
_onSuccess(res);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
setData(res);
|
|
46
|
+
},
|
|
47
|
+
onError: function onError(err) {
|
|
48
|
+
setError(err);
|
|
49
|
+
}
|
|
50
|
+
}),
|
|
51
|
+
run = _useRequest.run;
|
|
52
|
+
|
|
53
|
+
useEffect(function () {
|
|
54
|
+
run();
|
|
55
|
+
}, deps ? deps : []);
|
|
56
|
+
|
|
57
|
+
var handleRefresh = function handleRefresh() {
|
|
58
|
+
setError(null);
|
|
59
|
+
run();
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
var mask = null;
|
|
63
|
+
|
|
64
|
+
if (error) {
|
|
65
|
+
mask = /*#__PURE__*/React.createElement(Result, {
|
|
66
|
+
status: "500",
|
|
67
|
+
title: "500",
|
|
68
|
+
subTitle: error.message,
|
|
69
|
+
extra: /*#__PURE__*/React.createElement(Button, {
|
|
70
|
+
type: "primary",
|
|
71
|
+
onClick: handleRefresh
|
|
72
|
+
}, "\u91CD\u65B0\u52A0\u8F7D")
|
|
73
|
+
});
|
|
74
|
+
} else if (data === null) {
|
|
75
|
+
mask = /*#__PURE__*/React.createElement(PageLoading, null);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
refresh: handleRefresh,
|
|
80
|
+
data: data,
|
|
81
|
+
mask: mask
|
|
82
|
+
};
|
|
83
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemon-fe/kits",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"author": "鲁盛杰 <lusj@cnlemon.net>",
|
|
6
6
|
"homepage": "",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"url": "git@gitlab.nhsoft.cn:lemon-fe/kits-next.git"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@lemon-fe/components": "^0.0.
|
|
24
|
-
"@lemon-fe/hooks": "^0.0.
|
|
25
|
-
"@lemon-fe/layouts": "^0.0.
|
|
23
|
+
"@lemon-fe/components": "^0.0.11",
|
|
24
|
+
"@lemon-fe/hooks": "^0.0.11",
|
|
25
|
+
"@lemon-fe/layouts": "^0.0.11"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
29
29
|
},
|
|
30
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "5ff7bc34a470e39c494efb4384f55d3d802e0e1e"
|
|
31
31
|
}
|