@aloudata/aloudata-design 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,10 +35,10 @@ function SkeletonBody(props) {
35
35
  }, [rows, row]);
36
36
  return /*#__PURE__*/React.createElement("div", {
37
37
  className: "ald-data-preview-table-body"
38
- }, datasource.slice(startRowIndex, endRowIndex).map(function (x, rowIndex) {
38
+ }, datasource.slice(startRowIndex, endRowIndex + 1).map(function (x, rowIndex) {
39
39
  return /*#__PURE__*/React.createElement(React.Fragment, {
40
40
  key: rowIndex
41
- }, row.slice(startIndex, endIndex).map(function (cell, index) {
41
+ }, row.slice(startIndex, endIndex + 1).map(function (cell, index) {
42
42
  var columnIndex = startIndex + index;
43
43
  var style = {
44
44
  height: CELL_HEIGHT,
@@ -24,13 +24,14 @@ function Body(props) {
24
24
  startRowIndex = _props$rowRange[0],
25
25
  endRowIndex = _props$rowRange[1];
26
26
 
27
+ console.log(columnLayout, columns, 'columnLayout---body');
27
28
  return /*#__PURE__*/React.createElement("div", {
28
29
  className: "ald-data-preview-table-body"
29
30
  }, datasource.slice(startRowIndex, endRowIndex).map(function (row, rowIndex) {
30
31
  var currentRowIndex = startRowIndex + rowIndex;
31
32
  return /*#__PURE__*/React.createElement(React.Fragment, {
32
33
  key: currentRowIndex
33
- }, row.slice(startIndex, endIndex).map(function (cell, index) {
34
+ }, row.slice(startIndex, endIndex + 1).map(function (cell, index) {
34
35
  var columnIndex = startIndex + index;
35
36
  var style = {
36
37
  height: CELL_HEIGHT,
@@ -1,9 +1,9 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  import { IColumnLayout, PreviewColumn } from '../../interface';
3
3
  interface IHeader {
4
4
  columns: PreviewColumn[];
5
5
  columnLayout: IColumnLayout;
6
- setWidth: React.Dispatch<React.SetStateAction<number[]>>;
6
+ setWidth: (columnId: string, width: number) => void;
7
7
  columnRange: [number, number];
8
8
  }
9
9
  export default function Header(props: IHeader): JSX.Element;
@@ -1,34 +1,26 @@
1
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
2
 
3
- 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."); }
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
4
 
5
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
6
 
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
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
8
 
9
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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
10
 
11
- 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; }
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
- import React, { useCallback } from 'react';
13
+ import React from 'react';
14
14
  import { HEADER_HEIGHT } from "../../constant";
15
15
  import DragBar from "../DragBar";
16
16
  export default function Header(props) {
17
17
  var columns = props.columns,
18
18
  columnLayout = props.columnLayout,
19
19
  setWidth = props.setWidth,
20
- columnRange = props.columnRange;
21
- var dragBarOnChange = useCallback(function (columnId, width) {
22
- var index = columns.findIndex(function (item) {
23
- return item.id === columnId;
24
- });
25
- setWidth(function (prev) {
26
- var next = _toConsumableArray(prev);
20
+ _props$columnRange = _slicedToArray(props.columnRange, 2),
21
+ startIndex = _props$columnRange[0],
22
+ endIndex = _props$columnRange[1];
27
23
 
28
- next[index] = width;
29
- return next;
30
- });
31
- }, [columns, setWidth]);
32
24
  return /*#__PURE__*/React.createElement("div", {
33
25
  className: "ald-data-preview-header",
34
26
  style: {
@@ -36,7 +28,7 @@ export default function Header(props) {
36
28
  top: 0,
37
29
  left: 0
38
30
  }
39
- }, columns.slice(columnRange[0], columnRange[1]).map(function (column) {
31
+ }, columns.slice(startIndex, endIndex + 1).map(function (column) {
40
32
  var _column$renderHeader;
41
33
 
42
34
  var innerCell = (_column$renderHeader = column.renderHeader) === null || _column$renderHeader === void 0 ? void 0 : _column$renderHeader.call(column, column);
@@ -62,7 +54,7 @@ export default function Header(props) {
62
54
  })), /*#__PURE__*/React.createElement(DragBar, {
63
55
  columnId: column.id,
64
56
  wrapWidth: columnLayout[column.id].width,
65
- onChange: dragBarOnChange
57
+ onChange: setWidth
66
58
  }));
67
59
  }));
68
60
  }
@@ -1,28 +1,11 @@
1
1
  import { RefObject } from 'react';
2
2
  import { IColumnLayout, PreviewColumn } from '../interface';
3
- export interface IScrollData {
4
- scrollLeft: number;
5
- scrollTop: number;
6
- direction: IScrollDirection;
7
- }
8
- export interface IScrollDirection {
9
- horizontal: EScrollHorizontalDirection;
10
- vertical: EScrollVerticalDirection;
11
- current: EScrollHorizontalDirection | EScrollVerticalDirection | 'init';
12
- }
13
- export declare enum EScrollHorizontalDirection {
14
- SCROLL_TO_LEFT = "toLeft",
15
- SCROLL_TO_RIGHT = "toRight"
16
- }
17
- export declare enum EScrollVerticalDirection {
18
- SCROLL_TO_TOP = "toTop",
19
- SCROLL_TO_BOTTOM = "toBottom"
20
- }
21
3
  export default function useDirection(columns: PreviewColumn[], wrapRef: RefObject<HTMLDivElement>): {
22
- setRange: (scrollTop: number, scrollLeft: number) => void;
23
4
  columnRange: [number, number];
24
5
  rowRange: [number, number];
25
- setColumnsWidth: import("react").Dispatch<import("react").SetStateAction<number[]>>;
6
+ setColumnsWidth: (columnId: string, width: number) => void;
26
7
  columnLayout: IColumnLayout;
27
- columnsWidth: number[];
8
+ contentWidth: number;
9
+ tableColumns: PreviewColumn[];
10
+ onScroll: () => void;
28
11
  };
@@ -12,23 +12,13 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
12
12
 
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
14
 
15
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
16
- import { CELL_HEIGHT, DEFAULT_COLUMN_WIDTH, PRE_RENDER_RANGE } from "../constant";
17
- import { findFirstIndex } from "../utils/findRange";
18
- export var EScrollHorizontalDirection;
19
-
20
- (function (EScrollHorizontalDirection) {
21
- EScrollHorizontalDirection["SCROLL_TO_LEFT"] = "toLeft";
22
- EScrollHorizontalDirection["SCROLL_TO_RIGHT"] = "toRight";
23
- })(EScrollHorizontalDirection || (EScrollHorizontalDirection = {}));
24
-
25
- export var EScrollVerticalDirection;
26
-
27
- (function (EScrollVerticalDirection) {
28
- EScrollVerticalDirection["SCROLL_TO_TOP"] = "toTop";
29
- EScrollVerticalDirection["SCROLL_TO_BOTTOM"] = "toBottom";
30
- })(EScrollVerticalDirection || (EScrollVerticalDirection = {}));
31
-
15
+ import { useCallback, useEffect, useRef, useState } from 'react';
16
+ import { DEFAULT_COLUMN_WIDTH } from "../constant";
17
+ import { EScrollHorizontalDirection, EScrollVerticalDirection } from "../interface";
18
+ import getColumnOffsetsFromWidths from "../utils/getColumnOffsetsFromWidths";
19
+ import getColumnRange from "../utils/getColumnRange";
20
+ import getRowRange from "../utils/getRowRange";
21
+ import getTableLayout from "../utils/getTableLayout";
32
22
  export default function useDirection(columns, wrapRef) {
33
23
  var prevScrollData = useRef({
34
24
  scrollTop: 0,
@@ -40,21 +30,27 @@ export default function useDirection(columns, wrapRef) {
40
30
  }
41
31
  });
42
32
 
43
- var _useState = useState([]),
33
+ var _useState = useState([0, 0]),
44
34
  _useState2 = _slicedToArray(_useState, 2),
45
- columnsWidth = _useState2[0],
46
- setColumnsWidth = _useState2[1];
35
+ columnRange = _useState2[0],
36
+ setColumnRange = _useState2[1];
47
37
 
48
38
  var _useState3 = useState([0, 0]),
49
39
  _useState4 = _slicedToArray(_useState3, 2),
50
- columnRange = _useState4[0],
51
- setColumnRange = _useState4[1];
40
+ rowRange = _useState4[0],
41
+ setRowRange = _useState4[1];
52
42
 
53
- var _useState5 = useState([0, 0]),
43
+ var _useState5 = useState([]),
54
44
  _useState6 = _slicedToArray(_useState5, 2),
55
- rowRange = _useState6[0],
56
- setRowRange = _useState6[1];
45
+ tableColumns = _useState6[0],
46
+ setTableColumns = _useState6[1];
47
+
48
+ var _useState7 = useState(0),
49
+ _useState8 = _slicedToArray(_useState7, 2),
50
+ contentWidth = _useState8[0],
51
+ setContentWidth = _useState8[1];
57
52
 
53
+ var columnWidthRef = useRef({});
58
54
  var getScrollDirection = useCallback(function (currentScrollTop, currentScrollLeft) {
59
55
  var _prevScrollData$curre = prevScrollData.current,
60
56
  preScrollTop = _prevScrollData$curre.scrollTop,
@@ -112,136 +108,101 @@ export default function useDirection(columns, wrapRef) {
112
108
  return prevScrollData.current.direction;
113
109
  }
114
110
  }, []);
115
- var columnsOffsets = useMemo(function () {
116
- var offset = 0;
117
- return columnsWidth.map(function (width) {
118
- var currentOffset = offset;
119
- offset += width;
120
- return currentOffset;
121
- });
122
- }, [columnsWidth]);
123
- var setRange = useCallback(function (scrollTop, scrollLeft) {
124
- var direction = getScrollDirection(scrollTop, scrollLeft);
125
- var current = direction.current;
126
-
127
- if (current === EScrollHorizontalDirection.SCROLL_TO_LEFT) {
128
- var _wrapRef$current;
129
111
 
130
- // 往左滚动
131
- var wrapWidth = ((_wrapRef$current = wrapRef.current) === null || _wrapRef$current === void 0 ? void 0 : _wrapRef$current.clientWidth) || 0;
132
- setColumnRange(function (prev) {
133
- var _prev = _slicedToArray(prev, 2),
134
- start = _prev[0],
135
- end = _prev[1];
112
+ var _useState9 = useState([]),
113
+ _useState10 = _slicedToArray(_useState9, 2),
114
+ columnsOffsets = _useState10[0],
115
+ setColumnsOffsets = _useState10[1];
136
116
 
137
- var firstIndex = findFirstIndex(columnsOffsets, scrollLeft - PRE_RENDER_RANGE);
138
- var lastIndex = findFirstIndex(columnsOffsets, scrollLeft + wrapWidth);
139
-
140
- if (firstIndex === start && lastIndex === end) {
141
- return prev;
142
- }
117
+ var setRange = useCallback(function (columnsOffsets) {
118
+ var _wrapRef$current, _wrapRef$current2, _wrapRef$current3, _wrapRef$current4;
143
119
 
144
- return [firstIndex, lastIndex + 1];
145
- });
146
- }
147
-
148
- if (current === EScrollHorizontalDirection.SCROLL_TO_RIGHT || current === 'init') {
149
- var _wrapRef$current2;
150
-
151
- // 往右滚动
152
- var _wrapWidth = ((_wrapRef$current2 = wrapRef.current) === null || _wrapRef$current2 === void 0 ? void 0 : _wrapRef$current2.clientWidth) || 0;
153
-
154
- setColumnRange(function (prev) {
155
- var _prev2 = _slicedToArray(prev, 2),
156
- start = _prev2[0],
157
- end = _prev2[1];
158
-
159
- var firstIndex = findFirstIndex(columnsOffsets, scrollLeft);
160
- var lastIndex = findFirstIndex(columnsOffsets, scrollLeft + PRE_RENDER_RANGE + _wrapWidth);
161
-
162
- if (firstIndex === start && lastIndex === end) {
163
- return prev;
164
- }
120
+ console.log(columnsOffsets, 'columnsOffsets');
121
+ var scrollTop = ((_wrapRef$current = wrapRef.current) === null || _wrapRef$current === void 0 ? void 0 : _wrapRef$current.scrollTop) || 0;
122
+ var scrollLeft = ((_wrapRef$current2 = wrapRef.current) === null || _wrapRef$current2 === void 0 ? void 0 : _wrapRef$current2.scrollLeft) || 0;
123
+ var direction = getScrollDirection(scrollTop, scrollLeft);
124
+ var columnRange = getColumnRange({
125
+ direction: direction.horizontal,
126
+ wrapWidth: ((_wrapRef$current3 = wrapRef.current) === null || _wrapRef$current3 === void 0 ? void 0 : _wrapRef$current3.clientWidth) || 0,
127
+ scrollLeft: scrollLeft,
128
+ columnsOffsets: columnsOffsets
129
+ });
165
130
 
166
- return [firstIndex, lastIndex + 1];
167
- });
131
+ if (columnRange) {
132
+ setColumnRange(columnRange);
168
133
  }
169
134
 
170
- if (current === EScrollVerticalDirection.SCROLL_TO_TOP) {
171
- var _wrapRef$current3;
172
-
173
- // 往上滚动
174
- var wrapHeight = ((_wrapRef$current3 = wrapRef.current) === null || _wrapRef$current3 === void 0 ? void 0 : _wrapRef$current3.clientHeight) || 0;
175
- var firstIndex = Math.floor((scrollTop - PRE_RENDER_RANGE) / CELL_HEIGHT);
176
-
177
- if (firstIndex < 0) {
178
- firstIndex = 0;
179
- }
180
-
181
- var lastIndex = Math.ceil((scrollTop + wrapHeight) / CELL_HEIGHT) + 1;
182
- setRowRange(function (prev) {
183
- var _prev3 = _slicedToArray(prev, 2),
184
- start = _prev3[0],
185
- end = _prev3[1];
186
-
187
- if (firstIndex === start && lastIndex === end) {
188
- return prev;
189
- }
135
+ var rowRange = getRowRange({
136
+ direction: direction.vertical,
137
+ wrapHeight: ((_wrapRef$current4 = wrapRef.current) === null || _wrapRef$current4 === void 0 ? void 0 : _wrapRef$current4.clientHeight) || 0,
138
+ scrollTop: scrollTop
139
+ });
190
140
 
191
- return [firstIndex, lastIndex + 1];
192
- });
141
+ if (rowRange) {
142
+ setRowRange(rowRange);
193
143
  }
144
+ }, [getScrollDirection, wrapRef]);
194
145
 
195
- if (current === EScrollVerticalDirection.SCROLL_TO_BOTTOM || current === 'init') {
196
- var _wrapRef$current4;
197
-
198
- // 往下滚动
199
- var _wrapHeight = ((_wrapRef$current4 = wrapRef.current) === null || _wrapRef$current4 === void 0 ? void 0 : _wrapRef$current4.clientHeight) || 0;
200
-
201
- var _firstIndex = Math.floor(scrollTop / CELL_HEIGHT);
202
-
203
- var _lastIndex = Math.ceil((scrollTop + _wrapHeight + PRE_RENDER_RANGE) / CELL_HEIGHT) + 1;
146
+ var _useState11 = useState({}),
147
+ _useState12 = _slicedToArray(_useState11, 2),
148
+ columnLayout = _useState12[0],
149
+ setColumnLayout = _useState12[1];
204
150
 
205
- setRowRange(function (prev) {
206
- var _prev4 = _slicedToArray(prev, 2),
207
- start = _prev4[0],
208
- end = _prev4[1];
151
+ var onScroll = function onScroll() {
152
+ console.log(111);
153
+ setRange(columnsOffsets);
154
+ };
209
155
 
210
- if (_firstIndex === start && _lastIndex === end) {
211
- return prev;
212
- }
156
+ useEffect(function () {
157
+ if (columns.length > 0) {
158
+ // 存在有效的列
159
+ // 计算列宽
160
+ var columnWidths = columns.map(function (_ref) {
161
+ var defaultWidth = _ref.defaultWidth,
162
+ id = _ref.id;
163
+ var width = columnWidthRef.current[id] || defaultWidth || DEFAULT_COLUMN_WIDTH;
164
+ columnWidthRef.current[id] = width;
165
+ return width;
166
+ }); // 计算contentWidth
167
+
168
+ var _contentWidth = columnWidths.reduce(function (sum, width) {
169
+ return sum + width;
170
+ }, 0); // 计算columnsOffsets
171
+
172
+
173
+ var offsets = getColumnOffsetsFromWidths(columnWidths); // 计算columnLayout
174
+
175
+ var _columnLayout = getTableLayout(columns, columnWidths);
176
+
177
+ setContentWidth(_contentWidth);
178
+ setColumnsOffsets(offsets);
179
+ setColumnLayout(_columnLayout);
180
+ setRange(offsets);
181
+ setTableColumns(columns);
182
+ } else {
183
+ // 没有有效的列
184
+ setContentWidth(0);
185
+ setColumnsOffsets([]);
186
+ setColumnLayout({}); // setRange();
213
187
 
214
- return [_firstIndex, _lastIndex + 1];
215
- });
188
+ setTableColumns([]);
216
189
  }
217
- }, [columnsOffsets, getScrollDirection, wrapRef]);
218
- var columnLayout = useMemo(function () {
219
- var columnLayout = {};
220
- var left = 0;
221
- columns.forEach(function (column, index) {
222
- var columnWidth = columnsWidth[index] || column.defaultWidth || DEFAULT_COLUMN_WIDTH;
223
- columnLayout[column.id] = {
224
- width: columnWidth,
225
- left: left
226
- };
227
- left += columnWidth;
190
+ }, [columns, setRange]);
191
+ var setColumnsWidth = useCallback(function (columnId, width) {
192
+ columnWidthRef.current[columnId] = width;
193
+ var columnWidths = columns.map(function (_ref2) {
194
+ var id = _ref2.id;
195
+ return columnWidthRef.current[id];
228
196
  });
229
- return columnLayout;
230
- }, [columns, columnsWidth]);
231
- useEffect(function () {
232
- if (columnsWidth.length === 0 && columns.length > 0) {
233
- var widths = columns.map(function (_ref) {
234
- var defaultWidth = _ref.defaultWidth;
235
- return defaultWidth || 100;
236
- });
237
- setColumnsWidth(widths);
238
- }
239
- }, [columns, columnsWidth]);
240
- useEffect(function () {
241
- var _wrapRef$current5, _wrapRef$current6;
242
-
243
- setRange(((_wrapRef$current5 = wrapRef.current) === null || _wrapRef$current5 === void 0 ? void 0 : _wrapRef$current5.scrollTop) || 0, ((_wrapRef$current6 = wrapRef.current) === null || _wrapRef$current6 === void 0 ? void 0 : _wrapRef$current6.scrollLeft) || 0); // eslint-disable-next-line react-hooks/exhaustive-deps
244
- }, [columnLayout, wrapRef]);
197
+ var offsets = getColumnOffsetsFromWidths(columnWidths);
198
+ var columnLayout = getTableLayout(columns, columnWidths);
199
+ setContentWidth(columnWidths.reduce(function (sum, width) {
200
+ return sum + width;
201
+ }, 0));
202
+ setColumnsOffsets(offsets);
203
+ setColumnLayout(columnLayout);
204
+ setRange(offsets);
205
+ }, [columns, setRange]);
245
206
  useEffect(function () {
246
207
  var wrap = wrapRef.current;
247
208
  var resizeObserver = new ResizeObserver(function (entries) {
@@ -253,9 +214,9 @@ export default function useDirection(columns, wrapRef) {
253
214
  var entry = _step.value;
254
215
 
255
216
  if (entry.contentRect) {
256
- setRange((wrap === null || wrap === void 0 ? void 0 : wrap.scrollTop) || 0, (wrap === null || wrap === void 0 ? void 0 : wrap.scrollLeft) || 0);
217
+ setRange(columnsOffsets);
257
218
  } else if (entry.contentBoxSize) {
258
- setRange((wrap === null || wrap === void 0 ? void 0 : wrap.scrollTop) || 0, (wrap === null || wrap === void 0 ? void 0 : wrap.scrollLeft) || 0);
219
+ setRange(columnsOffsets);
259
220
  }
260
221
  }
261
222
  } catch (err) {
@@ -269,13 +230,15 @@ export default function useDirection(columns, wrapRef) {
269
230
  resizeObserver.unobserve(wrap);
270
231
  resizeObserver.disconnect();
271
232
  };
272
- }, [wrapRef, setRange]);
233
+ }, [wrapRef, setRange, columnsOffsets]);
234
+ console.log(columnLayout, 'columnLayout,useDirection', columnRange);
273
235
  return {
274
- setRange: setRange,
275
236
  columnRange: columnRange,
276
237
  rowRange: rowRange,
277
238
  setColumnsWidth: setColumnsWidth,
278
239
  columnLayout: columnLayout,
279
- columnsWidth: columnsWidth
240
+ contentWidth: contentWidth,
241
+ tableColumns: tableColumns,
242
+ onScroll: onScroll
280
243
  };
281
244
  }
@@ -1,3 +1,10 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
7
+ import { useWhyDidYouUpdate } from 'ahooks';
1
8
  import classNames from 'classnames';
2
9
  import React, { forwardRef, memo, useEffect, useMemo, useRef } from 'react';
3
10
  import Progress from "../Progress";
@@ -30,16 +37,19 @@ function DataPreviewTable(props, ref) {
30
37
  var _useDirection = useDirection(columns, wrapRef),
31
38
  columnRange = _useDirection.columnRange,
32
39
  rowRange = _useDirection.rowRange,
33
- columnsWidth = _useDirection.columnsWidth,
34
- setRange = _useDirection.setRange,
40
+ onScroll = _useDirection.onScroll,
35
41
  columnLayout = _useDirection.columnLayout,
36
- setColumnsWidth = _useDirection.setColumnsWidth;
42
+ setColumnsWidth = _useDirection.setColumnsWidth,
43
+ contentWidth = _useDirection.contentWidth,
44
+ tableColumns = _useDirection.tableColumns;
37
45
 
38
- var contentWidth = useMemo(function () {
39
- return columnsWidth.reduce(function (sum, width) {
40
- return sum + width;
41
- }, 0);
42
- }, [columnsWidth]);
46
+ useWhyDidYouUpdate('DataPreviewTable', _objectSpread({
47
+ columnRange: columnRange,
48
+ rowRange: rowRange,
49
+ onScroll: onScroll,
50
+ columnLayout: columnLayout,
51
+ setColumnsWidth: setColumnsWidth
52
+ }, props));
43
53
  useEffect(function () {
44
54
  if (ref) {
45
55
  if (typeof ref === 'function') {
@@ -53,6 +63,7 @@ function DataPreviewTable(props, ref) {
53
63
  var rows = Math.ceil((((_wrapRef$current = wrapRef.current) === null || _wrapRef$current === void 0 ? void 0 : _wrapRef$current.clientHeight) || 0 - HEADER_HEIGHT) / CELL_HEIGHT);
54
64
  return rows - 1 < 0 ? 0 : rows - 1; // eslint-disable-next-line react-hooks/exhaustive-deps
55
65
  }, [wrapRef.current]);
66
+ console.log(columnLayout, 'columnLayout');
56
67
  return /*#__PURE__*/React.createElement(ScrollArea, {
57
68
  ref: wrapRef,
58
69
  style: {
@@ -60,11 +71,9 @@ function DataPreviewTable(props, ref) {
60
71
  height: height,
61
72
  willChange: 'transform'
62
73
  },
63
- onViewportScroll: function onViewportScroll(e) {
64
- var _ref = e.target,
65
- scrollTop = _ref.scrollTop,
66
- scrollLeft = _ref.scrollLeft;
67
- setRange(scrollTop, scrollLeft);
74
+ onViewportScroll: function onViewportScroll() {
75
+ // const { scrollTop, scrollLeft } = e.target as HTMLDivElement;
76
+ onScroll();
68
77
  },
69
78
  className: classNames(props.className, 'ald-data-preview-table', {
70
79
  'ald-data-preview-table-show-skeleton': dataStatus === 'pending'
@@ -79,18 +88,18 @@ function DataPreviewTable(props, ref) {
79
88
  position: 'relative'
80
89
  }
81
90
  }, /*#__PURE__*/React.createElement(Header, {
82
- columns: columns,
91
+ columns: tableColumns,
83
92
  columnLayout: columnLayout,
84
93
  setWidth: setColumnsWidth,
85
94
  columnRange: columnRange
86
95
  }), dataStatus === 'pending' && /*#__PURE__*/React.createElement(SkeletonBody, {
87
- columns: columns,
96
+ columns: tableColumns,
88
97
  columnRange: columnRange,
89
98
  columnLayout: columnLayout,
90
99
  rowRange: rowRange,
91
100
  rows: skeletonRows
92
101
  }), dataStatus === 'success' && /*#__PURE__*/React.createElement(Body, {
93
- columns: columns,
102
+ columns: tableColumns,
94
103
  columnRange: columnRange,
95
104
  columnLayout: columnLayout,
96
105
  datasource: datasource,
@@ -25,3 +25,21 @@ export interface IColumnLayout {
25
25
  left: number;
26
26
  };
27
27
  }
28
+ export interface IScrollData {
29
+ scrollLeft: number;
30
+ scrollTop: number;
31
+ direction: IScrollDirection;
32
+ }
33
+ export interface IScrollDirection {
34
+ horizontal: EScrollHorizontalDirection;
35
+ vertical: EScrollVerticalDirection;
36
+ current: EScrollHorizontalDirection | EScrollVerticalDirection | 'init';
37
+ }
38
+ export declare enum EScrollHorizontalDirection {
39
+ SCROLL_TO_LEFT = "toLeft",
40
+ SCROLL_TO_RIGHT = "toRight"
41
+ }
42
+ export declare enum EScrollVerticalDirection {
43
+ SCROLL_TO_TOP = "toTop",
44
+ SCROLL_TO_BOTTOM = "toBottom"
45
+ }
@@ -1 +1,13 @@
1
- export {};
1
+ export var EScrollHorizontalDirection;
2
+
3
+ (function (EScrollHorizontalDirection) {
4
+ EScrollHorizontalDirection["SCROLL_TO_LEFT"] = "toLeft";
5
+ EScrollHorizontalDirection["SCROLL_TO_RIGHT"] = "toRight";
6
+ })(EScrollHorizontalDirection || (EScrollHorizontalDirection = {}));
7
+
8
+ export var EScrollVerticalDirection;
9
+
10
+ (function (EScrollVerticalDirection) {
11
+ EScrollVerticalDirection["SCROLL_TO_TOP"] = "toTop";
12
+ EScrollVerticalDirection["SCROLL_TO_BOTTOM"] = "toBottom";
13
+ })(EScrollVerticalDirection || (EScrollVerticalDirection = {}));
@@ -0,0 +1 @@
1
+ export default function (columnsWidth: number[]): number[];
@@ -0,0 +1,8 @@
1
+ export default function (columnsWidth) {
2
+ var offset = 0;
3
+ return columnsWidth.map(function (width) {
4
+ var currentOffset = offset;
5
+ offset += width;
6
+ return currentOffset;
7
+ });
8
+ }
@@ -0,0 +1,8 @@
1
+ import { IScrollDirection } from '../interface';
2
+ declare const _default: ({ direction, wrapWidth, scrollLeft, columnsOffsets, }: {
3
+ direction: IScrollDirection['current'];
4
+ wrapWidth: number;
5
+ scrollLeft: number;
6
+ columnsOffsets: number[];
7
+ }) => [number, number] | undefined;
8
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import { PRE_RENDER_RANGE } from "../constant";
2
+ import { EScrollHorizontalDirection } from "../interface";
3
+ import { findFirstIndex, findLastIndex } from "./findRange";
4
+ export default (function (_ref) {
5
+ var direction = _ref.direction,
6
+ wrapWidth = _ref.wrapWidth,
7
+ scrollLeft = _ref.scrollLeft,
8
+ columnsOffsets = _ref.columnsOffsets;
9
+
10
+ if (direction === EScrollHorizontalDirection.SCROLL_TO_LEFT) {
11
+ // 往左滚动
12
+ var firstIndex = findFirstIndex(columnsOffsets, scrollLeft - PRE_RENDER_RANGE);
13
+ var lastIndex = findLastIndex(columnsOffsets, scrollLeft + wrapWidth);
14
+ return [firstIndex, lastIndex];
15
+ }
16
+
17
+ if (direction === EScrollHorizontalDirection.SCROLL_TO_RIGHT || direction === 'init') {
18
+ // 往右滚动
19
+ var _firstIndex = findFirstIndex(columnsOffsets, scrollLeft);
20
+
21
+ var _lastIndex = findLastIndex(columnsOffsets, scrollLeft + PRE_RENDER_RANGE + wrapWidth);
22
+
23
+ return [_firstIndex, _lastIndex];
24
+ }
25
+ });
@@ -0,0 +1,7 @@
1
+ import { IScrollDirection } from '../interface';
2
+ declare const _default: ({ direction, wrapHeight, scrollTop, }: {
3
+ direction: IScrollDirection['current'];
4
+ wrapHeight: number;
5
+ scrollTop: number;
6
+ }) => [number, number] | undefined;
7
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { CELL_HEIGHT, PRE_RENDER_RANGE } from "../constant";
2
+ import { EScrollVerticalDirection } from "../interface";
3
+ export default (function (_ref) {
4
+ var direction = _ref.direction,
5
+ wrapHeight = _ref.wrapHeight,
6
+ scrollTop = _ref.scrollTop;
7
+
8
+ if (direction === EScrollVerticalDirection.SCROLL_TO_TOP) {
9
+ // 往上滚动
10
+ var firstIndex = Math.floor((scrollTop - PRE_RENDER_RANGE) / CELL_HEIGHT);
11
+
12
+ if (firstIndex < 0) {
13
+ firstIndex = 0;
14
+ }
15
+
16
+ var lastIndex = Math.ceil((scrollTop + wrapHeight) / CELL_HEIGHT) + 1;
17
+ return [firstIndex, lastIndex];
18
+ }
19
+
20
+ if (direction === EScrollVerticalDirection.SCROLL_TO_BOTTOM || direction === 'init') {
21
+ // 往下滚动
22
+ var _firstIndex = Math.floor(scrollTop / CELL_HEIGHT);
23
+
24
+ var _lastIndex = Math.ceil((scrollTop + wrapHeight + PRE_RENDER_RANGE) / CELL_HEIGHT) + 1;
25
+
26
+ return [_firstIndex, _lastIndex];
27
+ }
28
+ });
@@ -0,0 +1,3 @@
1
+ import { IColumnLayout, PreviewColumn } from '../interface';
2
+ declare const _default: (tableColumns: PreviewColumn[], columnsWidth: number[]) => IColumnLayout;
3
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { DEFAULT_COLUMN_WIDTH } from "../constant";
2
+ export default (function (tableColumns, columnsWidth) {
3
+ if (columnsWidth.length !== tableColumns.length) {
4
+ throw new Error('columnsWidth.length !== tableColumns.length');
5
+ }
6
+
7
+ var columnLayout = {};
8
+ var left = 0;
9
+ tableColumns.forEach(function (column, index) {
10
+ var columnWidth = columnsWidth[index] || column.defaultWidth || DEFAULT_COLUMN_WIDTH;
11
+ columnLayout[column.id] = {
12
+ width: columnWidth,
13
+ left: left
14
+ };
15
+ left += columnWidth;
16
+ });
17
+ return columnLayout;
18
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aloudata/aloudata-design",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",