linkmore-design 1.0.18 → 1.0.21

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 (59) hide show
  1. package/dist/index.umd.js +1001 -53
  2. package/dist/index.umd.min.js +6 -6
  3. package/es/Button/style/style.css +2 -2
  4. package/es/CkFilter/baseFilter/moreFilters.js +29 -4
  5. package/es/CkFilter/components/Controls.js +3 -1
  6. package/es/CkFilter/components/filterTypes.js +81 -44
  7. package/es/CkFilter/style/style.css +12 -2
  8. package/es/Input/style/style.css +21 -7
  9. package/es/InputNumber/style/index.css +1 -0
  10. package/es/LeftTable/style/style.css +1 -0
  11. package/es/LmTable/ImgList/body.js +111 -0
  12. package/es/LmTable/ImgList/cardCell.js +192 -0
  13. package/es/LmTable/ImgList/context.js +12 -0
  14. package/es/LmTable/ImgList/empty.js +24 -0
  15. package/es/LmTable/ImgList/footer.js +59 -0
  16. package/es/LmTable/ImgList/imgCell.js +181 -0
  17. package/es/LmTable/ImgList/imgTable.js +110 -0
  18. package/es/LmTable/ImgList/index.js +13 -0
  19. package/es/LmTable/Table.js +390 -0
  20. package/es/LmTable/VList.js +594 -0
  21. package/es/LmTable/autosize.js +170 -0
  22. package/es/LmTable/context.js +12 -0
  23. package/es/LmTable/detectElementResize.js +225 -0
  24. package/es/LmTable/index.js +19 -0
  25. package/es/LmTable/resetConfig.js +39 -0
  26. package/es/LmTable/style/index.js +3 -0
  27. package/es/LmTable/style/style.css +1068 -0
  28. package/es/ProTable/style/style.css +0 -3
  29. package/es/Radio/style/style.css +3 -0
  30. package/es/index.js +9 -1
  31. package/lib/Button/style/style.css +2 -2
  32. package/lib/CkFilter/baseFilter/moreFilters.js +29 -4
  33. package/lib/CkFilter/components/Controls.js +3 -1
  34. package/lib/CkFilter/components/filterTypes.js +81 -44
  35. package/lib/CkFilter/style/style.css +12 -2
  36. package/lib/Input/style/style.css +21 -7
  37. package/lib/InputNumber/style/index.css +1 -0
  38. package/lib/LeftTable/style/style.css +1 -0
  39. package/lib/LmTable/ImgList/body.js +111 -0
  40. package/lib/LmTable/ImgList/cardCell.js +192 -0
  41. package/lib/LmTable/ImgList/context.js +12 -0
  42. package/lib/LmTable/ImgList/empty.js +24 -0
  43. package/lib/LmTable/ImgList/footer.js +59 -0
  44. package/lib/LmTable/ImgList/imgCell.js +181 -0
  45. package/lib/LmTable/ImgList/imgTable.js +110 -0
  46. package/lib/LmTable/ImgList/index.js +13 -0
  47. package/lib/LmTable/Table.js +390 -0
  48. package/lib/LmTable/VList.js +594 -0
  49. package/lib/LmTable/autosize.js +170 -0
  50. package/lib/LmTable/context.js +12 -0
  51. package/lib/LmTable/detectElementResize.js +225 -0
  52. package/lib/LmTable/index.js +19 -0
  53. package/lib/LmTable/resetConfig.js +39 -0
  54. package/lib/LmTable/style/index.js +3 -0
  55. package/lib/LmTable/style/style.css +1068 -0
  56. package/lib/ProTable/style/style.css +0 -3
  57. package/lib/Radio/style/style.css +3 -0
  58. package/lib/index.js +9 -1
  59. package/package.json +1 -1
@@ -0,0 +1,594 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.scrollTo = exports.VList = void 0;
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
13
+
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/extends"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
17
+
18
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _lodash = require("lodash");
23
+
24
+ var _reactResizable = require("react-resizable");
25
+
26
+ var _context = _interopRequireDefault(require("./context"));
27
+
28
+ var _excluded = ["width", "onResize", "children"],
29
+ _excluded2 = ["children"],
30
+ _excluded3 = ["children", "style"],
31
+ _excluded4 = ["children"],
32
+ _excluded5 = ["style", "children"],
33
+ _excluded6 = ["width"];
34
+ // ===============reducer ============== //
35
+ var initialState = {
36
+ // 行高度
37
+ rowHeight: 0,
38
+ // 当前的scrollTop
39
+ curScrollTop: 0,
40
+ // 总行数
41
+ totalLen: 0
42
+ };
43
+
44
+ function reducer(state, action) {
45
+ var curScrollTop = action.curScrollTop,
46
+ curScrollLeft = action.curScrollLeft,
47
+ rowHeight = action.rowHeight,
48
+ totalLen = action.totalLen,
49
+ ifScrollTopClear = action.ifScrollTopClear,
50
+ isScrolling = action.isScrolling;
51
+ var stateScrollTop = state.curScrollTop;
52
+
53
+ switch (action.type) {
54
+ // 滚动条是否滚动中
55
+ case 'changeScrolling':
56
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
57
+ isScrolling: isScrolling
58
+ });
59
+
60
+ case 'changeTrs':
61
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
62
+ curScrollTop: curScrollTop
63
+ });
64
+ // 滚动横向滚动条 即 改变渲染的列表operate
65
+
66
+ case 'changeOperate':
67
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
68
+ curScrollLeft: curScrollLeft
69
+ });
70
+ // 初始化每行的高度, 表格总高度, 渲染的条数
71
+
72
+ case 'initHeight':
73
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
74
+ rowHeight: rowHeight
75
+ });
76
+ // 更改totalLen
77
+
78
+ case 'changeTotalLen':
79
+ if (totalLen === 0) {
80
+ stateScrollTop = 0;
81
+ }
82
+
83
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
84
+ totalLen: totalLen,
85
+ curScrollTop: stateScrollTop
86
+ });
87
+
88
+ case 'reset':
89
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
90
+ curScrollTop: ifScrollTopClear ? 0 : state.curScrollTop
91
+ });
92
+
93
+ default:
94
+ throw new Error();
95
+ }
96
+ } // ============== 全局常量 ================== //
97
+
98
+
99
+ var DEFAULT_VID = 'vtable';
100
+ var vidMap = new Map(); // =============== context ============== //
101
+
102
+ var ScrollContext = /*#__PURE__*/(0, _react.createContext)({
103
+ dispatch: undefined,
104
+ renderLen: 1,
105
+ start: 0,
106
+ offsetStart: 0,
107
+ // =============
108
+ rowHeight: initialState.rowHeight,
109
+ totalLen: 0,
110
+ vid: DEFAULT_VID
111
+ });
112
+ var HeaderContext = /*#__PURE__*/(0, _react.createContext)(); // ============= 组件 =================== //
113
+
114
+ var HeaderWrapper = function HeaderWrapper(props) {
115
+ var _useState = (0, _react.useState)(),
116
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
117
+ useKeys = _useState2[0],
118
+ setKeys = _useState2[1];
119
+
120
+ var _useContext = (0, _react.useContext)(_context.default),
121
+ width = _useContext.width;
122
+
123
+ var changeKeys = function changeKeys() {
124
+ setKeys(Date.now());
125
+ };
126
+
127
+ (0, _react.useEffect)(function () {
128
+ changeKeys();
129
+ }, [width]); // console.log('每列的偏移', props.children[0].props.stickyOffsets);
130
+
131
+ return /*#__PURE__*/_react.default.createElement(HeaderContext.Provider, {
132
+ value: {
133
+ changeKeys: changeKeys
134
+ }
135
+ }, /*#__PURE__*/_react.default.createElement("thead", (0, _extends2.default)({
136
+ key: useKeys
137
+ }, props)));
138
+ };
139
+
140
+ var HeaderCell = function HeaderCell(props) {
141
+ var width = props.width,
142
+ onResize = props.onResize,
143
+ children = props.children,
144
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
145
+
146
+ var _useState3 = (0, _react.useState)(width || 0),
147
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
148
+ useWidth = _useState4[0],
149
+ setWidth = _useState4[1];
150
+
151
+ var _useContext2 = (0, _react.useContext)(HeaderContext),
152
+ changeKeys = _useContext2.changeKeys;
153
+
154
+ var handleResize = function handleResize(e, _ref) {
155
+ var size = _ref.size;
156
+ var nValue = size.width;
157
+ setWidth(nValue);
158
+ };
159
+
160
+ var handleResizeStop = function handleResizeStop(e, _ref2) {
161
+ var size = _ref2.size;
162
+ var nValue = size.width; // const sc = width - nValue > 0 ? width - nValue : 1;
163
+
164
+ onResize === null || onResize === void 0 ? void 0 : onResize(width, nValue); // 触发重新渲染列头单元格,重新计算拖拽位置
165
+
166
+ changeKeys === null || changeKeys === void 0 ? void 0 : changeKeys();
167
+ };
168
+
169
+ if (!width) {
170
+ return /*#__PURE__*/_react.default.createElement("th", restProps, /*#__PURE__*/_react.default.createElement("div", {
171
+ className: "text-overflow"
172
+ }, children));
173
+ }
174
+
175
+ return /*#__PURE__*/_react.default.createElement("th", restProps, /*#__PURE__*/_react.default.createElement("div", {
176
+ className: "text-overflow"
177
+ }, children), /*#__PURE__*/_react.default.createElement(_reactResizable.ResizableBox, {
178
+ className: "yf_resizable_bar",
179
+ width: useWidth,
180
+ height: 0,
181
+ handle: /*#__PURE__*/_react.default.createElement("div", {
182
+ className: "react-resizable-handle",
183
+ onClick: function onClick(e) {
184
+ e.stopPropagation();
185
+ }
186
+ }),
187
+ onResize: handleResize,
188
+ onResizeStop: handleResizeStop,
189
+ minConstraints: [40, 0] // draggableOpts={{ enableUserSelectHack: false }}
190
+
191
+ }));
192
+ };
193
+
194
+ var VCell = function VCell(props) {
195
+ var children = props.children,
196
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded2);
197
+ return /*#__PURE__*/_react.default.createElement("td", restProps, children);
198
+ };
199
+
200
+ var VRow = function VRow(props, ref) {
201
+ var _useContext3 = (0, _react.useContext)(ScrollContext),
202
+ dispatch = _useContext3.dispatch,
203
+ rowHeight = _useContext3.rowHeight,
204
+ totalLen = _useContext3.totalLen,
205
+ vid = _useContext3.vid;
206
+
207
+ var children = props.children,
208
+ style = props.style,
209
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded3);
210
+ var trRef = (0, _react.useRef)(null);
211
+ (0, _react.useEffect)(function () {
212
+ var initHeight = function initHeight(tempRef) {
213
+ var _tempRef$current;
214
+
215
+ if ((tempRef === null || tempRef === void 0 ? void 0 : (_tempRef$current = tempRef.current) === null || _tempRef$current === void 0 ? void 0 : _tempRef$current.offsetHeight) && !rowHeight && totalLen) {
216
+ var _tempRef$current$offs, _tempRef$current2;
217
+
218
+ var tempRowHeight = (_tempRef$current$offs = tempRef === null || tempRef === void 0 ? void 0 : (_tempRef$current2 = tempRef.current) === null || _tempRef$current2 === void 0 ? void 0 : _tempRef$current2.offsetHeight) !== null && _tempRef$current$offs !== void 0 ? _tempRef$current$offs : 0;
219
+ vidMap.set(vid, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, vidMap.get(vid)), {}, {
220
+ rowItemHeight: tempRowHeight
221
+ }));
222
+ dispatch({
223
+ type: 'initHeight',
224
+ rowHeight: tempRowHeight
225
+ });
226
+ }
227
+ };
228
+
229
+ initHeight(Object.prototype.hasOwnProperty.call(ref, 'current') ? ref : trRef);
230
+ }, [trRef, dispatch, rowHeight, totalLen, ref, vid]);
231
+ return /*#__PURE__*/_react.default.createElement("tr", (0, _extends2.default)({}, restProps, {
232
+ ref: Object.prototype.hasOwnProperty.call(ref, 'current') ? ref : trRef,
233
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, style), {}, {
234
+ height: rowHeight || 'auto',
235
+ boxSizing: 'border-box'
236
+ })
237
+ }), children);
238
+ };
239
+
240
+ var VWrapper = function VWrapper(props) {
241
+ var children = props.children,
242
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded4);
243
+
244
+ var _useContext4 = (0, _react.useContext)(ScrollContext),
245
+ renderLen = _useContext4.renderLen,
246
+ start = _useContext4.start,
247
+ dispatch = _useContext4.dispatch,
248
+ vid = _useContext4.vid,
249
+ totalLen = _useContext4.totalLen;
250
+
251
+ var contents = (0, _react.useMemo)(function () {
252
+ return children[1];
253
+ }, [children]);
254
+ var contentsLen = (0, _react.useMemo)(function () {
255
+ var _contents$length;
256
+
257
+ return (_contents$length = contents === null || contents === void 0 ? void 0 : contents.length) !== null && _contents$length !== void 0 ? _contents$length : 0;
258
+ }, [contents]);
259
+ (0, _react.useEffect)(function () {
260
+ if (totalLen !== contentsLen) {
261
+ dispatch({
262
+ type: 'changeTotalLen',
263
+ totalLen: contentsLen !== null && contentsLen !== void 0 ? contentsLen : 0
264
+ });
265
+ }
266
+ }, [contentsLen, dispatch, vid, totalLen]);
267
+ var tempNode = null;
268
+
269
+ if (Array.isArray(contents) && contents.length) {
270
+ tempNode = [children[0], contents.slice(start, start + (renderLen !== null && renderLen !== void 0 ? renderLen : 1)) // contents.slice(start, start + (renderLen ?? 1)).map((item) => {
271
+ // if (Array.isArray(item)) {
272
+ // // 兼容antd v4.3.5 --- rc-table 7.8.1及以下
273
+ // return item[0];
274
+ // }
275
+ // // 处理antd ^v4.4.0 --- rc-table ^7.8.2
276
+ // return item;
277
+ // }),
278
+ ];
279
+ } else {
280
+ tempNode = children;
281
+ }
282
+
283
+ return /*#__PURE__*/_react.default.createElement("tbody", restProps, tempNode);
284
+ };
285
+
286
+ var VTable = function VTable(props, otherParams) {
287
+ var _children$1$props$dat, _children$, _children$$props, _children$$props$data;
288
+
289
+ var style = props.style,
290
+ children = props.children,
291
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded5);
292
+ var width = style.width,
293
+ restStyle = (0, _objectWithoutProperties2.default)(style, _excluded6);
294
+
295
+ var _ref3 = otherParams !== null && otherParams !== void 0 ? otherParams : {},
296
+ vid = _ref3.vid,
297
+ scrollY = _ref3.scrollY,
298
+ reachEnd = _ref3.reachEnd,
299
+ onScroll = _ref3.onScroll,
300
+ resetScrollTopWhenDataChange = _ref3.resetScrollTopWhenDataChange;
301
+
302
+ var _useReducer = (0, _react.useReducer)(reducer, initialState),
303
+ _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
304
+ state = _useReducer2[0],
305
+ dispatch = _useReducer2[1];
306
+
307
+ var wrapTableRef = (0, _react.useRef)(null);
308
+ var tableRef = (0, _react.useRef)(null);
309
+ var ifChangeRef = (0, _react.useRef)(false); // 数据的总条数
310
+
311
+ var _useState5 = (0, _react.useState)((_children$1$props$dat = (_children$ = children[1]) === null || _children$ === void 0 ? void 0 : (_children$$props = _children$.props) === null || _children$$props === void 0 ? void 0 : (_children$$props$data = _children$$props.data) === null || _children$$props$data === void 0 ? void 0 : _children$$props$data.length) !== null && _children$1$props$dat !== void 0 ? _children$1$props$dat : 0),
312
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
313
+ totalLen = _useState6[0],
314
+ setTotalLen = _useState6[1];
315
+
316
+ (0, _react.useEffect)(function () {
317
+ setTotalLen(state.totalLen);
318
+ }, [state.totalLen]);
319
+ (0, _react.useEffect)(function () {
320
+ return function () {
321
+ vidMap.delete(vid);
322
+ };
323
+ }, [vid]); // 数据变更
324
+
325
+ (0, _react.useEffect)(function () {
326
+ var _children$2, _children$2$props, _children$2$props$dat;
327
+
328
+ ifChangeRef.current = true;
329
+
330
+ if ((0, _lodash.isNumber)((_children$2 = children[1]) === null || _children$2 === void 0 ? void 0 : (_children$2$props = _children$2.props) === null || _children$2$props === void 0 ? void 0 : (_children$2$props$dat = _children$2$props.data) === null || _children$2$props$dat === void 0 ? void 0 : _children$2$props$dat.length)) {
331
+ var _children$1$props$dat2, _children$3, _children$3$props, _children$3$props$dat;
332
+
333
+ dispatch({
334
+ type: 'changeTotalLen',
335
+ totalLen: (_children$1$props$dat2 = (_children$3 = children[1]) === null || _children$3 === void 0 ? void 0 : (_children$3$props = _children$3.props) === null || _children$3$props === void 0 ? void 0 : (_children$3$props$dat = _children$3$props.data) === null || _children$3$props$dat === void 0 ? void 0 : _children$3$props$dat.length) !== null && _children$1$props$dat2 !== void 0 ? _children$1$props$dat2 : 0
336
+ });
337
+ }
338
+ }, [children[1].props.data]); // table总高度
339
+
340
+ var tableHeight = (0, _react.useMemo)(function () {
341
+ var temp = 'auto';
342
+
343
+ if (state.rowHeight && totalLen) {
344
+ temp = state.rowHeight * totalLen;
345
+ }
346
+
347
+ return temp;
348
+ }, [state.rowHeight, totalLen]); // table的scrollY值
349
+
350
+ var _useState7 = (0, _react.useState)(0),
351
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
352
+ tableScrollY = _useState8[0],
353
+ setTableScrollY = _useState8[1]; // tableScrollY 随scrollY / tableHeight 进行变更
354
+
355
+
356
+ (0, _react.useEffect)(function () {
357
+ var temp = 0;
358
+
359
+ if (typeof scrollY === 'string') {
360
+ var _wrapTableRef$current, _wrapTableRef$current2, _wrapTableRef$current3;
361
+
362
+ temp = (_wrapTableRef$current = (_wrapTableRef$current2 = wrapTableRef.current) === null || _wrapTableRef$current2 === void 0 ? void 0 : (_wrapTableRef$current3 = _wrapTableRef$current2.parentNode) === null || _wrapTableRef$current3 === void 0 ? void 0 : _wrapTableRef$current3.offsetHeight) !== null && _wrapTableRef$current !== void 0 ? _wrapTableRef$current : 0;
363
+ } else {
364
+ temp = scrollY;
365
+ } // if (isNumber(tableHeight) && tableHeight < temp) {
366
+ // temp = tableHeight;
367
+ // }
368
+ // 处理tableScrollY <= 0的情况
369
+
370
+
371
+ if (temp <= 0) {
372
+ temp = 0;
373
+ }
374
+
375
+ setTableScrollY(temp);
376
+ }, [scrollY, tableHeight]); // 渲染的条数
377
+
378
+ var renderLen = (0, _react.useMemo)(function () {
379
+ var temp = 1;
380
+
381
+ if (state.rowHeight && totalLen && tableScrollY) {
382
+ if (tableScrollY <= 0) {
383
+ temp = 0;
384
+ } else {
385
+ var tempRenderLen = (tableScrollY / state.rowHeight || 0) + 1 + 20; // temp = tempRenderLen > totalLen ? totalLen : tempRenderLen;
386
+
387
+ temp = tempRenderLen;
388
+ }
389
+ }
390
+
391
+ return temp;
392
+ }, [state.rowHeight, totalLen, tableScrollY]); // 渲染中的第一条
393
+
394
+ var start = state.rowHeight ? state.curScrollTop / state.rowHeight || 0 : 0; // 偏移量
395
+
396
+ var offsetStart = state.rowHeight ? state.curScrollTop % state.rowHeight : 0; // 用来优化向上滚动出现的空白
397
+
398
+ if (state.curScrollTop && state.rowHeight && state.curScrollTop > state.rowHeight) {
399
+ start -= 1;
400
+ offsetStart += state.rowHeight;
401
+ } else {
402
+ start = 0;
403
+ } // 数据变更 操作scrollTop
404
+
405
+
406
+ (0, _react.useEffect)(function () {
407
+ var _wrapTableRef$current4;
408
+
409
+ var scrollNode = (_wrapTableRef$current4 = wrapTableRef.current) === null || _wrapTableRef$current4 === void 0 ? void 0 : _wrapTableRef$current4.parentNode;
410
+
411
+ if (ifChangeRef === null || ifChangeRef === void 0 ? void 0 : ifChangeRef.current) {
412
+ ifChangeRef.current = false;
413
+
414
+ if (resetScrollTopWhenDataChange) {
415
+ // 重置scrollTop
416
+ if (scrollNode) {
417
+ scrollNode.scrollTop = 0;
418
+ }
419
+
420
+ dispatch({
421
+ type: 'reset',
422
+ ifScrollTopClear: true
423
+ });
424
+ } else {
425
+ // 不重置scrollTop 不清空curScrollTop
426
+ dispatch({
427
+ type: 'reset',
428
+ ifScrollTopClear: false
429
+ });
430
+ }
431
+ }
432
+
433
+ if (vidMap.has(vid)) {
434
+ vidMap.set(vid, {
435
+ scrollNode: scrollNode
436
+ });
437
+ }
438
+ }, [totalLen, resetScrollTopWhenDataChange, vid, children]);
439
+ (0, _react.useEffect)(function () {
440
+ var _wrapTableRef$current5;
441
+
442
+ var timer = null;
443
+ var timeout = 100;
444
+ var throttleScroll = (0, _lodash.throttle)(function (e) {
445
+ var _e$target$scrollLeft, _e$target, _e$target$scrollTop, _e$target2, _e$target$scrollHeigh, _e$target3, _e$target$clientHeigh, _e$target4;
446
+
447
+ var scrollLeft = (_e$target$scrollLeft = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.scrollLeft) !== null && _e$target$scrollLeft !== void 0 ? _e$target$scrollLeft : 0;
448
+ var scrollTop = (_e$target$scrollTop = e === null || e === void 0 ? void 0 : (_e$target2 = e.target) === null || _e$target2 === void 0 ? void 0 : _e$target2.scrollTop) !== null && _e$target$scrollTop !== void 0 ? _e$target$scrollTop : 0;
449
+ var scrollHeight = (_e$target$scrollHeigh = e === null || e === void 0 ? void 0 : (_e$target3 = e.target) === null || _e$target3 === void 0 ? void 0 : _e$target3.scrollHeight) !== null && _e$target$scrollHeigh !== void 0 ? _e$target$scrollHeigh : 0;
450
+ var clientHeight = (_e$target$clientHeigh = e === null || e === void 0 ? void 0 : (_e$target4 = e.target) === null || _e$target4 === void 0 ? void 0 : _e$target4.clientHeight) !== null && _e$target$clientHeigh !== void 0 ? _e$target$clientHeigh : 0; // 到底了 没有滚动条就不会触发reachEnd. 建议设置scrolly高度少点或者数据量多点.
451
+
452
+ if (scrollTop === scrollHeight) {// reachEnd && reachEnd()
453
+ } else if (scrollTop + clientHeight >= scrollHeight) {
454
+ // 有滚动条的情况
455
+ reachEnd && reachEnd();
456
+ }
457
+
458
+ onScroll && onScroll(scrollTop, scrollLeft);
459
+
460
+ if (!timer) {
461
+ dispatch({
462
+ type: 'changeScrolling',
463
+ isScrolling: true
464
+ });
465
+ } else {
466
+ clearTimeout(timer);
467
+ timer = null;
468
+ }
469
+
470
+ timer = setTimeout(function () {
471
+ dispatch({
472
+ type: 'changeScrolling',
473
+ isScrolling: false
474
+ });
475
+ timer = null;
476
+ }, timeout);
477
+ dispatch({
478
+ type: 'changeScrolling',
479
+ isScrolling: true
480
+ });
481
+ dispatch({
482
+ type: 'changeTrs',
483
+ curScrollTop: scrollTop
484
+ });
485
+ dispatch({
486
+ type: 'changeOperate',
487
+ curScrollLeft: scrollLeft
488
+ });
489
+ }, 60);
490
+ var ref = wrapTableRef === null || wrapTableRef === void 0 ? void 0 : (_wrapTableRef$current5 = wrapTableRef.current) === null || _wrapTableRef$current5 === void 0 ? void 0 : _wrapTableRef$current5.parentNode;
491
+
492
+ if (ref) {
493
+ ref.addEventListener('scroll', throttleScroll);
494
+ }
495
+
496
+ return function () {
497
+ ref.removeEventListener('scroll', throttleScroll);
498
+ };
499
+ }, [onScroll, reachEnd]);
500
+ return /*#__PURE__*/_react.default.createElement("div", {
501
+ className: "virtuallist",
502
+ ref: wrapTableRef,
503
+ style: {
504
+ width: '100%',
505
+ position: 'relative',
506
+ height: tableHeight,
507
+ boxSizing: 'border-box',
508
+ paddingTop: state.curScrollTop
509
+ }
510
+ }, /*#__PURE__*/_react.default.createElement(ScrollContext.Provider, {
511
+ value: {
512
+ dispatch: dispatch,
513
+ rowHeight: state.rowHeight,
514
+ start: start,
515
+ offsetStart: offsetStart,
516
+ scrollLeft: state.curScrollLeft,
517
+ renderLen: renderLen,
518
+ totalLen: totalLen,
519
+ vid: vid
520
+ }
521
+ }, /*#__PURE__*/_react.default.createElement("table", (0, _extends2.default)({}, rest, {
522
+ ref: tableRef,
523
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restStyle), {}, {
524
+ width: width,
525
+ position: 'relative',
526
+ transform: "translateY(-".concat(offsetStart, "px)"),
527
+ pointerEvents: state.isScrolling ? 'none' : 'initial'
528
+ })
529
+ }), children)));
530
+ }; // ================导出===================
531
+
532
+
533
+ var VList = function VList(props) {
534
+ var _props$vid = props.vid,
535
+ vid = _props$vid === void 0 ? DEFAULT_VID : _props$vid,
536
+ height = props.height,
537
+ onReachEnd = props.onReachEnd,
538
+ onScroll = props.onScroll,
539
+ _props$resetTopWhenDa = props.resetTopWhenDataChange,
540
+ resetTopWhenDataChange = _props$resetTopWhenDa === void 0 ? true : _props$resetTopWhenDa;
541
+ var resetScrollTopWhenDataChange = onReachEnd ? false : resetTopWhenDataChange;
542
+
543
+ if (!vidMap.has(vid)) {
544
+ vidMap.set(vid, {});
545
+ }
546
+
547
+ return {
548
+ table: function table(p) {
549
+ return VTable(p, {
550
+ vid: vid,
551
+ scrollY: height,
552
+ reachEnd: onReachEnd,
553
+ onScroll: onScroll,
554
+ resetScrollTopWhenDataChange: resetScrollTopWhenDataChange
555
+ });
556
+ },
557
+ body: {
558
+ wrapper: VWrapper,
559
+ row: VRow,
560
+ cell: function cell(cellProps) {
561
+ return /*#__PURE__*/_react.default.createElement(VCell, cellProps);
562
+ }
563
+ },
564
+ header: {
565
+ wrapper: HeaderWrapper,
566
+ cell: HeaderCell
567
+ }
568
+ };
569
+ };
570
+
571
+ exports.VList = VList;
572
+
573
+ var scrollTo = function scrollTo(option) {
574
+ var row = option.row,
575
+ y = option.y,
576
+ _option$vid = option.vid,
577
+ vid = _option$vid === void 0 ? DEFAULT_VID : _option$vid;
578
+
579
+ var _vidMap$get = vidMap.get(vid),
580
+ scrollNode = _vidMap$get.scrollNode,
581
+ rowItemHeight = _vidMap$get.rowItemHeight;
582
+
583
+ if (row) {
584
+ if (row - 1 > 0) {
585
+ scrollNode.scrollTop = (row - 1) * (rowItemHeight !== null && rowItemHeight !== void 0 ? rowItemHeight : 0);
586
+ } else {
587
+ scrollNode.scrollTop = 0;
588
+ }
589
+ } else {
590
+ scrollNode.scrollTop = y !== null && y !== void 0 ? y : 0;
591
+ }
592
+ };
593
+
594
+ exports.scrollTo = scrollTo;