@zhenliang/sheet 0.1.4 → 0.1.7-3.beta.0

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 (117) hide show
  1. package/dist/assets/arrow-mac-down.svg +19 -0
  2. package/dist/assets/arrow-mac-right.svg +17 -0
  3. package/dist/assets/arrow-windows-down.svg +17 -0
  4. package/dist/assets/arrow-windows-right.svg +17 -0
  5. package/dist/core/config.d.ts +3 -0
  6. package/dist/core/config.js +4 -1
  7. package/dist/core/editor/cascaderEditor/index.d.ts +1 -1
  8. package/dist/core/editor/cascaderEditor/index.js +12 -11
  9. package/dist/core/editor/cascaderEditor/index.less +15 -7
  10. package/dist/core/editor/dateEditor/index.js +31 -8
  11. package/dist/core/editor/dateEditor/index.less +9 -2
  12. package/dist/core/editor/numberEditor/index.d.ts +3 -1
  13. package/dist/core/editor/numberEditor/index.js +62 -27
  14. package/dist/core/editor/numberEditor/index.less +3 -2
  15. package/dist/core/editor/selectEditor/index.d.ts +1 -1
  16. package/dist/core/editor/selectEditor/index.js +34 -19
  17. package/dist/core/editor/selectEditor/index.less +16 -5
  18. package/dist/core/reducers/index.d.ts +2 -2
  19. package/dist/core/reducers/index.js +8 -1
  20. package/dist/core/reducers/keyboardReducer.js +39 -9
  21. package/dist/core/reducers/mouseReducer.js +115 -11
  22. package/dist/core/reducers/sideEffectReducer.d.ts +1 -1
  23. package/dist/core/reducers/sideEffectReducer.js +146 -41
  24. package/dist/core/reducers/stateReducer.d.ts +1 -0
  25. package/dist/core/reducers/stateReducer.js +96 -27
  26. package/dist/core/sheet/Cell.d.ts +1 -1
  27. package/dist/core/sheet/Cell.js +33 -24
  28. package/dist/core/sheet/Control.d.ts +21 -0
  29. package/dist/core/sheet/Control.js +83 -0
  30. package/dist/core/sheet/DataEditor.js +3 -3
  31. package/dist/core/sheet/DefaultCell.d.ts +8 -3
  32. package/dist/core/sheet/DefaultCell.js +12 -8
  33. package/dist/core/sheet/DefaultRow.js +3 -9
  34. package/dist/core/sheet/DefaultRowMapper.d.ts +3 -0
  35. package/dist/core/sheet/DefaultRowMapper.js +22 -6
  36. package/dist/core/sheet/DefaultShell.js +1 -1
  37. package/dist/core/sheet/Event.d.ts +1 -1
  38. package/dist/core/sheet/Event.js +1 -1
  39. package/dist/core/sheet/Menu.d.ts +6 -0
  40. package/dist/core/sheet/Menu.js +21 -0
  41. package/dist/core/sheet/ValueViewer.js +1 -1
  42. package/dist/core/sheet/index.js +249 -88
  43. package/dist/core/sheet/index.less +199 -107
  44. package/dist/core/sheet/searchInput.d.ts +15 -0
  45. package/dist/core/sheet/searchInput.js +78 -0
  46. package/dist/core/sheet/useCellEvent.js +1 -1
  47. package/dist/core/sheet/useContextMenu.d.ts +1 -1
  48. package/dist/core/sheet/useContextMenu.js +13 -10
  49. package/dist/core/sheet/useKeyBoardEvent.js +19 -2
  50. package/dist/core/sheet/useMouseEvent.js +19 -12
  51. package/dist/core/sheet/useSearchInput.d.ts +11 -0
  52. package/dist/core/sheet/useSearchInput.js +65 -0
  53. package/dist/core/sheet/useSelectVisible.d.ts +1 -1
  54. package/dist/core/sheet/useSelectVisible.js +17 -7
  55. package/dist/core/sheet/useVirtualList.d.ts +10 -1
  56. package/dist/core/sheet/useVirtualList.js +44 -28
  57. package/dist/core/sheet/var.less +41 -34
  58. package/dist/core/shell/draggableShell/index.d.ts +4 -1
  59. package/dist/core/shell/draggableShell/index.js +133 -50
  60. package/dist/core/shell/tableShell.d.ts +4 -1
  61. package/dist/core/shell/tableShell.js +82 -34
  62. package/dist/core/table/addButton.d.ts +6 -0
  63. package/dist/core/table/addButton.js +103 -0
  64. package/dist/core/table/events.d.ts +1 -3
  65. package/dist/core/table/events.js +30 -35
  66. package/dist/core/table/index.js +97 -189
  67. package/dist/core/table/index.less +12 -0
  68. package/dist/core/table/useGroupConfig.d.ts +4 -1
  69. package/dist/core/table/useGroupConfig.js +139 -14
  70. package/dist/core/table/useRowSelection.d.ts +3 -0
  71. package/dist/core/table/useRowSelection.js +68 -2
  72. package/dist/core/util.d.ts +10 -4
  73. package/dist/core/util.js +121 -69
  74. package/dist/core/viewer/btnViewer/index.js +3 -3
  75. package/dist/core/viewer/cascaderViewer/index.js +6 -1
  76. package/dist/core/viewer/checkViewer/index.js +2 -2
  77. package/dist/core/viewer/editViewer/index.js +3 -3
  78. package/dist/core/viewer/groupViewer/index.js +26 -10
  79. package/dist/core/viewer/selectorViewer/index.js +7 -3
  80. package/dist/core/viewer/switchViewer/index.js +10 -4
  81. package/dist/example/antComponent.d.ts +1 -1
  82. package/dist/example/antComponent.js +63 -37
  83. package/dist/example/basic.d.ts +1 -1
  84. package/dist/example/basic.js +20 -14
  85. package/dist/example/ellipsis.d.ts +1 -1
  86. package/dist/example/ellipsis.js +3 -2
  87. package/dist/example/fixed.d.ts +1 -1
  88. package/dist/example/fixed.js +3 -2
  89. package/dist/example/group.js +40 -17
  90. package/dist/example/selection.d.ts +1 -1
  91. package/dist/example/selection.js +9 -8
  92. package/dist/example/sheet.d.ts +1 -1
  93. package/dist/example/sheet.js +21 -22
  94. package/dist/example/valuationAnalyze.d.ts +1 -0
  95. package/dist/example/valuationAnalyze.js +3 -4
  96. package/dist/hooks/index.d.ts +1 -1
  97. package/dist/hooks/index.js +1 -1
  98. package/dist/hooks/useEventBus.d.ts +1 -0
  99. package/dist/hooks/useEventBus.js +2 -2
  100. package/dist/hooks/useGroupConfig.d.ts +4 -0
  101. package/dist/hooks/useGroupConfig.js +5 -0
  102. package/dist/hooks/useKeyboard.d.ts +5 -2
  103. package/dist/hooks/useKeyboard.js +17 -3
  104. package/dist/hooks/useMiddlewareReducer.d.ts +5 -5
  105. package/dist/hooks/useMiddlewareReducer.js +3 -3
  106. package/dist/hooks/useMouse.d.ts +1 -1
  107. package/dist/hooks/useMouse.js +7 -7
  108. package/dist/hooks/useSetState.js +7 -7
  109. package/dist/hooks/useSheetEvent.d.ts +1 -1
  110. package/dist/hooks/useSheetEvent.js +2 -2
  111. package/dist/hooks/useWidthConfig.d.ts +3 -3
  112. package/dist/hooks/useWidthConfig.js +2 -2
  113. package/dist/standardUtils/index.d.ts +1 -1
  114. package/dist/standardUtils/index.js +1 -1
  115. package/dist/type/sheet.d.ts +77 -31
  116. package/dist/type/sheetTable.d.ts +21 -12
  117. package/package.json +7 -4
@@ -1,11 +1,23 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
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."); }
4
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
5
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
6
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
10
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
11
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
12
  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."); }
3
13
  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); }
4
14
  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; }
5
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
15
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import { flatten } from 'lodash';
8
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
17
+ import { flatten, isNil } from 'lodash';
18
+ import { useCallback, useEffect, useMemo, useRef, useState } from "../../../node_modules/@types/react";
19
+ import { groupConfigToGroupMap } from "../util";
20
+ import { GroupViewer } from "../viewer";
9
21
  import { dataSourceToRowConfig } from "./util";
10
22
  export var useGroupConfig = function useGroupConfig(dataSource, tableGroupConfig, hasChildren) {
11
23
  var _useState = useState(),
@@ -26,26 +38,139 @@ export var useGroupConfig = function useGroupConfig(dataSource, tableGroupConfig
26
38
  }, [dataSource]);
27
39
  useEffect(function () {
28
40
  if (!hasChildren) return;
29
- console.log('groupConfigEffect', dataSource.length);
30
- var rowConfig = dataSourceToRowConfig(dataSource, tableGroupConfig === null || tableGroupConfig === void 0 ? void 0 : tableGroupConfig.defaultOpen);
41
+ var computedRowGroup = dataSourceToRowConfig(dataSource, tableGroupConfig === null || tableGroupConfig === void 0 ? void 0 : tableGroupConfig.defaultOpen);
42
+ var rowConfig = computedRowGroup;
43
+ var _ref = tableGroupConfig || {},
44
+ rowGroup = _ref.rowGroup;
45
+ if (rowGroup) {
46
+ var notEqual = rowGroup.groups.length !== computedRowGroup.groups.length;
47
+ var notSameGroup = notEqual || rowGroup.groups.some(function (group, index) {
48
+ return computedRowGroup.groups[index].groupStart !== group.groupStart || computedRowGroup.groups[index].groupEnd !== group.groupEnd;
49
+ });
50
+ if (!notSameGroup) {
51
+ rowConfig = rowGroup;
52
+ } else {
53
+ var _tableGroupConfig$onC;
54
+ tableGroupConfig === null || tableGroupConfig === void 0 || (_tableGroupConfig$onC = tableGroupConfig.onChange) === null || _tableGroupConfig$onC === void 0 || _tableGroupConfig$onC.call(tableGroupConfig, computedRowGroup);
55
+ }
56
+ }
31
57
  if (groupConfigRef.current) {
32
- groupConfigRef.current.groups.forEach(function (_ref, index) {
33
- var _groupConfigRef$curre;
34
- var groupName = _ref.groupName;
35
- var rowIndex = rowConfig.groups.findIndex(function (item) {
58
+ rowConfig.groups.forEach(function (_ref2, index) {
59
+ var _groupConfigRef$curre, _groupConfigRef$curre2;
60
+ var groupName = _ref2.groupName,
61
+ newGroupStart = _ref2.groupStart,
62
+ newGroupEnd = _ref2.groupEnd;
63
+ var rowIndex = (_groupConfigRef$curre = (_groupConfigRef$curre2 = groupConfigRef.current) === null || _groupConfigRef$curre2 === void 0 ? void 0 : _groupConfigRef$curre2.groups.findIndex(function (item) {
36
64
  return item.groupName === groupName;
37
- });
38
- rowConfig.groupOpen[rowIndex] = ((_groupConfigRef$curre = groupConfigRef.current) === null || _groupConfigRef$curre === void 0 ? void 0 : _groupConfigRef$curre.groupOpen[index]) || rowConfig.groupOpen[rowIndex];
65
+ })) !== null && _groupConfigRef$curre !== void 0 ? _groupConfigRef$curre : -1;
66
+ if (rowIndex >= 0) {
67
+ var _groupConfigRef$curre3, _groupConfigRef$curre4;
68
+ var hasNewLine = false;
69
+ var currentOld = (_groupConfigRef$curre3 = groupConfigRef.current) === null || _groupConfigRef$curre3 === void 0 ? void 0 : _groupConfigRef$curre3.groups[rowIndex];
70
+ if (currentOld && !isNil(currentOld.groupEnd) && !isNil(currentOld.groupStart)) {
71
+ var oldLength = currentOld.groupEnd - currentOld.groupStart;
72
+ var newLength = newGroupEnd - newGroupStart;
73
+ hasNewLine = newLength > oldLength;
74
+ } else {
75
+ hasNewLine = true;
76
+ }
77
+ rowConfig.groupOpen[index] = hasNewLine ? true : (_groupConfigRef$curre4 = groupConfigRef.current) === null || _groupConfigRef$curre4 === void 0 ? void 0 : _groupConfigRef$curre4.groupOpen[rowIndex];
78
+ } else {
79
+ // 新子行
80
+ rowConfig.groupOpen[index] = true;
81
+ }
39
82
  });
40
83
  }
41
84
  setGroupConfig(rowConfig);
42
- console.log('groupConfigEffect', rowConfig.groups, rowConfig.groupOpen);
43
85
  groupConfigRef.current = rowConfig;
44
86
  }, [dataSource.length, childrenLength, hasChildren]);
45
- console.log('groupConfigEffect', dataSource.length, childrenLength);
46
87
  var handleGroupChange = useCallback(function (value) {
88
+ var _tableGroupConfig$onC2;
47
89
  setGroupConfig(value);
90
+ tableGroupConfig === null || tableGroupConfig === void 0 || (_tableGroupConfig$onC2 = tableGroupConfig.onChange) === null || _tableGroupConfig$onC2 === void 0 || _tableGroupConfig$onC2.call(tableGroupConfig, value);
48
91
  groupConfigRef.current = value;
49
92
  }, [setGroupConfig]);
50
- return [groupConfig, handleGroupChange];
93
+ var memoConfig = useMemo(function () {
94
+ var configMap = groupConfigToGroupMap({
95
+ groups: groupConfig === null || groupConfig === void 0 ? void 0 : groupConfig.groups,
96
+ groupOpen: groupConfig === null || groupConfig === void 0 ? void 0 : groupConfig.groupOpen
97
+ });
98
+ return _objectSpread(_objectSpread({}, groupConfig), {}, {
99
+ configMap: configMap
100
+ });
101
+ }, [groupConfig]);
102
+ return [memoConfig, handleGroupChange];
103
+ };
104
+ export var formatGroupData = function formatGroupData(param) {
105
+ var dataSource = param.dataSource,
106
+ columns = param.columns,
107
+ rowKey = param.rowKey;
108
+ var data = [];
109
+ var currentIndex = 0;
110
+ dataSource.forEach(function (item, row) {
111
+ var groupList = [item];
112
+ if (item.children) {
113
+ groupList = [item].concat(_toConsumableArray(item.children));
114
+ }
115
+ groupList.forEach(function (itemRow) {
116
+ var _columns$, _columns$2, _columns$3, _columns$4;
117
+ var dataRow = [];
118
+ var rowId = itemRow.id || itemRow.key || String(currentIndex);
119
+ if (rowKey) {
120
+ if (rowKey instanceof Function) {
121
+ rowId = rowKey(itemRow, row);
122
+ } else {
123
+ rowId = itemRow[rowKey];
124
+ }
125
+ }
126
+ dataRow.push({
127
+ id: rowId,
128
+ row: currentIndex,
129
+ col: -2,
130
+ editable: false,
131
+ readonly: true,
132
+ fixed: 'left',
133
+ valueViewer: function valueViewer() {
134
+ return null;
135
+ },
136
+ className: 'sheet-control sheet-row-cursor'
137
+ });
138
+ dataRow.push({
139
+ id: rowId,
140
+ row: currentIndex,
141
+ col: -1,
142
+ editable: !((columns === null || columns === void 0 ? void 0 : columns[0].editable) instanceof Function) ? columns === null || columns === void 0 || (_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.editable : columns === null || columns === void 0 || (_columns$2 = columns[0]) === null || _columns$2 === void 0 ? void 0 : _columns$2.editable('', itemRow, currentIndex),
143
+ readonly: !((columns === null || columns === void 0 ? void 0 : columns[0].readonly) instanceof Function) ? columns === null || columns === void 0 || (_columns$3 = columns[0]) === null || _columns$3 === void 0 ? void 0 : _columns$3.readonly : columns === null || columns === void 0 || (_columns$4 = columns[0]) === null || _columns$4 === void 0 ? void 0 : _columns$4.readonly('', itemRow, currentIndex),
144
+ align: 'center',
145
+ // fixed: 'unset',
146
+ valueViewer: GroupViewer,
147
+ className: 'sheet-control'
148
+ });
149
+ columns.forEach(function (colInfo, col) {
150
+ var _colInfo$readonly, _colInfo$editable, _colInfo$cellConfig, _colInfo$cellConfig2, _colInfo$cellConfig3;
151
+ var value = itemRow[colInfo.dataIndex || ''];
152
+ dataRow.push({
153
+ id: rowId,
154
+ value: value,
155
+ record: itemRow,
156
+ readonly: !(colInfo.readonly instanceof Function) ? (_colInfo$readonly = colInfo.readonly) !== null && _colInfo$readonly !== void 0 ? _colInfo$readonly : false : colInfo.readonly(value, itemRow, currentIndex, col),
157
+ align: colInfo.align,
158
+ fixed: colInfo.fixed,
159
+ editable: !(colInfo.editable instanceof Function) ? (_colInfo$editable = colInfo.editable) !== null && _colInfo$editable !== void 0 ? _colInfo$editable : true : colInfo.editable(value, itemRow, currentIndex, col),
160
+ valueViewer: colInfo.render ? colInfo.render : undefined,
161
+ dataEditor: colInfo.editor ? colInfo.editor : undefined,
162
+ searchKey: colInfo.searchKey,
163
+ row: currentIndex,
164
+ className: !(((_colInfo$cellConfig = colInfo.cellConfig) === null || _colInfo$cellConfig === void 0 ? void 0 : _colInfo$cellConfig.className) instanceof Function) ? (_colInfo$cellConfig2 = colInfo.cellConfig) === null || _colInfo$cellConfig2 === void 0 ? void 0 : _colInfo$cellConfig2.className : (_colInfo$cellConfig3 = colInfo.cellConfig) === null || _colInfo$cellConfig3 === void 0 ? void 0 : _colInfo$cellConfig3.className(value, itemRow, currentIndex),
165
+ dataIndex: colInfo.dataIndex,
166
+ key: colInfo.key,
167
+ allowClear: colInfo.allowClear,
168
+ col: col
169
+ });
170
+ });
171
+ data.push(dataRow);
172
+ currentIndex++;
173
+ });
174
+ });
175
+ return data;
51
176
  };
@@ -1,2 +1,5 @@
1
1
  import { SheetTableType } from "../..";
2
2
  export declare const useRowSelection: (dataSource: Record<string, unknown>[], rowSelection?: SheetTableType.TableRowSelection, hasChildren?: boolean) => [boolean[], (value: boolean[]) => void];
3
+ export declare const formatSelectionData: (param: Pick<SheetTableType.TableProps, "columns" | "dataSource" | "rowKey" | "rowSelection"> & {
4
+ checked: boolean[];
5
+ }) => any[][];
@@ -2,9 +2,10 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
2
2
  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."); }
3
3
  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); }
4
4
  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; }
5
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import { useEffect, useRef, useState } from 'react';
7
+ import { CheckViewer } from "../..";
8
+ import { useEffect, useRef, useState } from "../../../node_modules/@types/react";
8
9
  export var useRowSelection = function useRowSelection(dataSource, rowSelection, hasChildren) {
9
10
  var _dataSource$length;
10
11
  var _useState = useState(Array((_dataSource$length = dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) !== null && _dataSource$length !== void 0 ? _dataSource$length : 0).fill(false)),
@@ -21,4 +22,69 @@ export var useRowSelection = function useRowSelection(dataSource, rowSelection,
21
22
  checkedRowRef.current = currentEmpty;
22
23
  }, [dataSource.length, hasChildren, rowSelection]);
23
24
  return [checkedRow, setCheckedRow];
25
+ };
26
+ export var formatSelectionData = function formatSelectionData(param) {
27
+ var dataSource = param.dataSource,
28
+ columns = param.columns,
29
+ checked = param.checked,
30
+ rowKey = param.rowKey,
31
+ rowSelection = param.rowSelection;
32
+ return dataSource.map(function (item, row) {
33
+ var rowId = item.id || item.key || String(row);
34
+ if (rowKey) {
35
+ if (rowKey instanceof Function) {
36
+ rowId = rowKey(item, row);
37
+ } else {
38
+ rowId = item[rowKey];
39
+ }
40
+ }
41
+ var rows = [];
42
+ rows.push({
43
+ id: rowId,
44
+ row: row,
45
+ col: -2,
46
+ editable: false,
47
+ readonly: true,
48
+ fixed: 'left',
49
+ valueViewer: function valueViewer() {
50
+ return null;
51
+ },
52
+ className: 'sheet-control sheet-row-cursor'
53
+ });
54
+ if (rowSelection) {
55
+ rows.push({
56
+ id: rowId,
57
+ row: row,
58
+ col: -1,
59
+ readonly: true,
60
+ align: 'center',
61
+ value: checked[row],
62
+ valueViewer: CheckViewer,
63
+ className: 'sheet-control'
64
+ });
65
+ }
66
+ columns.forEach(function (colInfo, col) {
67
+ var _colInfo$readonly, _colInfo$editable, _colInfo$cellConfig, _colInfo$cellConfig2, _colInfo$cellConfig3;
68
+ var value = item[colInfo.dataIndex || ''];
69
+ rows.push({
70
+ id: rowId,
71
+ value: value,
72
+ record: item,
73
+ readonly: !(colInfo.readonly instanceof Function) ? (_colInfo$readonly = colInfo.readonly) !== null && _colInfo$readonly !== void 0 ? _colInfo$readonly : false : colInfo.readonly(value, item, row, col),
74
+ align: colInfo.align,
75
+ fixed: colInfo.fixed,
76
+ editable: !(colInfo.editable instanceof Function) ? (_colInfo$editable = colInfo.editable) !== null && _colInfo$editable !== void 0 ? _colInfo$editable : true : colInfo.editable(value, item, row),
77
+ valueViewer: colInfo.render ? colInfo.render : undefined,
78
+ dataEditor: colInfo.editor ? colInfo.editor : undefined,
79
+ searchKey: colInfo.searchKey,
80
+ className: !(((_colInfo$cellConfig = colInfo.cellConfig) === null || _colInfo$cellConfig === void 0 ? void 0 : _colInfo$cellConfig.className) instanceof Function) ? (_colInfo$cellConfig2 = colInfo.cellConfig) === null || _colInfo$cellConfig2 === void 0 ? void 0 : _colInfo$cellConfig2.className : (_colInfo$cellConfig3 = colInfo.cellConfig) === null || _colInfo$cellConfig3 === void 0 ? void 0 : _colInfo$cellConfig3.className(value, item, row),
81
+ row: row,
82
+ col: col,
83
+ dataIndex: colInfo.dataIndex,
84
+ allowClear: colInfo.allowClear,
85
+ key: colInfo.key
86
+ });
87
+ });
88
+ return rows;
89
+ });
24
90
  };
@@ -14,7 +14,7 @@ export declare function flatRowColIndex(start?: SheetType.CellPosition, end?: Sh
14
14
  export declare function flatRowCol(start?: SheetType.CellPosition, end?: SheetType.CellPosition): string[];
15
15
  export declare function isInputKey(keyCode: number): boolean;
16
16
  export declare function classNames(...args: (string | null | undefined)[]): string;
17
- export declare function stringToClipboardData(str: string): void;
17
+ export declare function stringToClipboardData(str: string, count: number): void;
18
18
  export declare const defaultParsePaste: (str: string) => string[][];
19
19
  export declare function clipboardDataToString(): Promise<string[][]>;
20
20
  export declare function formatDataToCell({ start, editing, end, data, pasteData, groupConfig, freePaste, }: Partial<SheetType.UpdateStateType> & {
@@ -31,9 +31,8 @@ export declare const defaultValueRenderer: (cell: SheetType.Cell) => string | nu
31
31
  export declare function renderValue(cell: SheetType.Cell): string | number;
32
32
  export declare const optionsToValuesFromLabelOrValue: (options: SheetType.OptionsType[], val: string) => string[];
33
33
  export declare const optionsTransferToValue: (options: SheetType.OptionsType[], val: string, key?: string) => string[];
34
- export declare const optionsTransferToValue2: (options?: SheetType.OptionsType[], value?: string, path?: string[]) => string[];
35
34
  export declare const valuesTransferToLabel: (options?: SheetType.OptionsType[], value?: string) => string | null;
36
- export declare const groupConfigToGroupMap: (rowGroupConfig?: SheetType.RowGroupConfig) => Map<number, SheetType.RowGroup & {
35
+ export declare const groupConfigToGroupMap: (rowGroupConfig?: Partial<SheetType.RowGroupConfig>) => Map<number, SheetType.RowGroup & {
37
36
  isStart: boolean;
38
37
  isOpen: boolean;
39
38
  }>;
@@ -41,7 +40,8 @@ export declare const changeGroupConfig: (rowGroupConfig: SheetType.RowGroupConfi
41
40
  add?: number | undefined;
42
41
  remove?: number | undefined;
43
42
  }) => SheetType.RowGroupConfig;
44
- export declare const rowToActualRow: (row: number, groupConfig?: SheetType.RowGroupConfig) => number;
43
+ export declare const rowToActualRow: (row: number, groupConfig?: SheetType.RowGroupConfig, max?: number) => number;
44
+ export declare const rowToCountRow: (row: number, groupConfig: SheetType.RowGroupConfig, max: number) => number;
45
45
  export declare const getRowHeight: (container: HTMLSpanElement) => number;
46
46
  export declare const getNextVisibleRow: (row: number, maxRow: number, groupMap?: Map<number, SheetType.RowGroup & {
47
47
  isStart: boolean;
@@ -56,3 +56,9 @@ export declare const calcMenuPosition: ({ tableElement, menuElement, x, y, }: {
56
56
  top: number;
57
57
  left: number;
58
58
  };
59
+ export declare const isFreezedCell: (row: number, col: number, data?: SheetType.Cell[][]) => boolean;
60
+ export declare const stripRowIndex: (data: SheetType.Cell[][]) => {
61
+ startIndex: number;
62
+ endIndex: number;
63
+ };
64
+ export declare const ensureFocus: (container?: HTMLElement | null) => void;
package/dist/core/util.js CHANGED
@@ -1,9 +1,9 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- 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; }
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; }
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
8
8
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
9
  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."); }
@@ -14,6 +14,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
14
14
  /* eslint-disable no-param-reassign */
15
15
  /* eslint-disable @typescript-eslint/no-use-before-define */
16
16
 
17
+ import { message } from 'antd';
17
18
  import { cloneDeep, get, isNil, range } from 'lodash';
18
19
  export function findParentTd(el) {
19
20
  if (!el) return null;
@@ -85,16 +86,18 @@ export function classNames() {
85
86
  }
86
87
  return args.filter(Boolean).join(' ');
87
88
  }
88
- export function stringToClipboardData(str) {
89
+ export function stringToClipboardData(str, count) {
89
90
  // navigator.clipboard.writeText(str);
90
91
  navigator.clipboard.writeText(str).then(function () {
91
- console.log('复制成功');
92
+ // console.log('复制成功');
93
+ message.success("\u5DF2\u590D\u5236".concat(count, "\u4E2A\u5355\u5143\u683C"));
92
94
  }, function () {
93
- console.error('复制失败');
95
+ // console.error('复制失败');
96
+ message.info("\u590D\u5236\u5931\u8D25");
94
97
  });
95
98
  }
96
99
  export var defaultParsePaste = function defaultParsePaste(str) {
97
- return str.split(/\r\n|\n|\r/).map(function (row) {
100
+ return str.trimEnd().split(/\r\n|\n|\r/).map(function (row) {
98
101
  return row.split('\t');
99
102
  });
100
103
  };
@@ -172,8 +175,8 @@ export function formatDataToCell(_ref2) {
172
175
  value: (_pasteData$i$j = pasteData[i][j]) === null || _pasteData$i$j === void 0 ? void 0 : _pasteData$i$j.trimStart().trimEnd()
173
176
  });
174
177
  } else {
175
- var _data, _data2, _groupMap$get5, _groupMap$get6, _pasteData$i$j2;
176
- if (data !== null && data !== void 0 && (_data = data[row + i]) !== null && _data !== void 0 && (_data2 = _data[col + j]) !== null && _data2 !== void 0 && _data2.readonly) return;
178
+ var _data, _groupMap$get5, _groupMap$get6, _pasteData$i$j2;
179
+ if (data !== null && data !== void 0 && (_data = data[row + i]) !== null && _data !== void 0 && (_data = _data[col + j]) !== null && _data !== void 0 && _data.readonly) return;
177
180
  if (groupMap.get(row + i) && !((_groupMap$get5 = groupMap.get(row + i)) !== null && _groupMap$get5 !== void 0 && _groupMap$get5.isStart) && !((_groupMap$get6 = groupMap.get(row + i)) !== null && _groupMap$get6 !== void 0 && _groupMap$get6.isOpen)) {
178
181
  hasStartAndNotOpen = true;
179
182
  }
@@ -186,7 +189,7 @@ export function formatDataToCell(_ref2) {
186
189
  });
187
190
  });
188
191
  if (hasStartAndNotOpen) {
189
- console.error('有折叠单元格,不可粘贴');
192
+ message.error('有折叠单元格,不可粘贴');
190
193
  return {
191
194
  changes: [],
192
195
  extChanges: []
@@ -199,6 +202,7 @@ export function formatDataToCell(_ref2) {
199
202
  } else {
200
203
  // 选中多个单元格,粘贴多个数据
201
204
  if (actualRowCount !== pasteData.length || cells.length / rowCount * actualRowCount !== pasteData.length * pasteData[0].length) {
205
+ message.warning('选中单元格数量与粘贴数据不匹配');
202
206
  // 单元格数量不对
203
207
  return;
204
208
  }
@@ -206,7 +210,7 @@ export function formatDataToCell(_ref2) {
206
210
  var lastRow = cells[0].row;
207
211
  var pasteCount = 0;
208
212
  cells.forEach(function (_ref4) {
209
- var _data$row$col, _groupMap$get7, _groupMap$get8, _pasteData$pasteCount, _pasteData$pasteCount2;
213
+ var _data$row$col, _groupMap$get7, _groupMap$get8, _pasteData$pasteCount;
210
214
  var row = _ref4.row,
211
215
  col = _ref4.col;
212
216
  if ((_data$row$col = data[row][col]) !== null && _data$row$col !== void 0 && _data$row$col.readonly) return;
@@ -220,7 +224,7 @@ export function formatDataToCell(_ref2) {
220
224
  changes.push({
221
225
  row: row,
222
226
  col: col,
223
- value: pasteData === null || pasteData === void 0 ? void 0 : (_pasteData$pasteCount = pasteData[pasteCount]) === null || _pasteData$pasteCount === void 0 ? void 0 : (_pasteData$pasteCount2 = _pasteData$pasteCount[col - baseCol]) === null || _pasteData$pasteCount2 === void 0 ? void 0 : _pasteData$pasteCount2.trimStart().trimEnd()
227
+ value: pasteData === null || pasteData === void 0 || (_pasteData$pasteCount = pasteData[pasteCount]) === null || _pasteData$pasteCount === void 0 || (_pasteData$pasteCount = _pasteData$pasteCount[col - baseCol]) === null || _pasteData$pasteCount === void 0 ? void 0 : _pasteData$pasteCount.trimStart().trimEnd()
224
228
  });
225
229
  });
226
230
  return {
@@ -255,7 +259,6 @@ export var optionsTransferToValue = function optionsTransferToValue(options, val
255
259
  }
256
260
  } else if (get(options[i], key) === val) {
257
261
  values.push(value);
258
- console.log('cascader', get(options[i], key), val, value);
259
262
  break;
260
263
  } else {
261
264
  values = [];
@@ -263,48 +266,15 @@ export var optionsTransferToValue = function optionsTransferToValue(options, val
263
266
  }
264
267
  return values;
265
268
  };
266
- export var optionsTransferToValue2 = function optionsTransferToValue2(options, value) {
267
- var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
268
- if (!(options !== null && options !== void 0 && options.length) || !value) return _toConsumableArray(path);
269
+ export var valuesTransferToLabel = function valuesTransferToLabel(options, value) {
270
+ if (!(options !== null && options !== void 0 && options.length) || !value) return null;
269
271
  var leaveNode = options === null || options === void 0 ? void 0 : options.find(function (item) {
270
272
  var _item$children;
271
273
  return !((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) && value === item.value;
272
274
  });
273
- if (leaveNode) {
274
- return [leaveNode.value];
275
- }
276
- var childrenNodes = options === null || options === void 0 ? void 0 : options.filter(function (item) {
275
+ var childrenNode = options === null || options === void 0 ? void 0 : options.filter(function (item) {
277
276
  var _item$children2;
278
277
  return (_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.length;
279
- });
280
- if (childrenNodes) {
281
- var _iterator = _createForOfIteratorHelper(childrenNodes),
282
- _step;
283
- try {
284
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
285
- var childrenNode = _step.value;
286
- var allPath = optionsTransferToValue(childrenNode.children, value, [].concat(_toConsumableArray(path), [childrenNode.value]));
287
- if (allPath !== null && allPath !== void 0 && allPath.length) {
288
- return allPath;
289
- }
290
- }
291
- } catch (err) {
292
- _iterator.e(err);
293
- } finally {
294
- _iterator.f();
295
- }
296
- }
297
- return [];
298
- };
299
- export var valuesTransferToLabel = function valuesTransferToLabel(options, value) {
300
- if (!(options !== null && options !== void 0 && options.length) || !value) return null;
301
- var leaveNode = options === null || options === void 0 ? void 0 : options.find(function (item) {
302
- var _item$children3;
303
- return !((_item$children3 = item.children) !== null && _item$children3 !== void 0 && _item$children3.length) && value === item.value;
304
- });
305
- var childrenNode = options === null || options === void 0 ? void 0 : options.filter(function (item) {
306
- var _item$children4;
307
- return (_item$children4 = item.children) === null || _item$children4 === void 0 ? void 0 : _item$children4.length;
308
278
  }).map(function (item) {
309
279
  return item.children;
310
280
  });
@@ -312,20 +282,20 @@ export var valuesTransferToLabel = function valuesTransferToLabel(options, value
312
282
  return leaveNode.label;
313
283
  }
314
284
  if (childrenNode) {
315
- var _iterator2 = _createForOfIteratorHelper(childrenNode),
316
- _step2;
285
+ var _iterator = _createForOfIteratorHelper(childrenNode),
286
+ _step;
317
287
  try {
318
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
319
- var children = _step2.value;
288
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
289
+ var children = _step.value;
320
290
  var label = valuesTransferToLabel(children, value);
321
291
  if (label) {
322
292
  return label;
323
293
  }
324
294
  }
325
295
  } catch (err) {
326
- _iterator2.e(err);
296
+ _iterator.e(err);
327
297
  } finally {
328
- _iterator2.f();
298
+ _iterator.f();
329
299
  }
330
300
  }
331
301
  return null;
@@ -335,13 +305,14 @@ export var groupConfigToGroupMap = function groupConfigToGroupMap(rowGroupConfig
335
305
  var groupMap = new Map();
336
306
  if (!rowGroupConfig || !((_rowGroupConfig$group = rowGroupConfig.groups) !== null && _rowGroupConfig$group !== void 0 && _rowGroupConfig$group.length)) return groupMap;
337
307
  var groups = rowGroupConfig.groups;
338
- groups === null || groups === void 0 ? void 0 : groups.forEach(function (group, index) {
308
+ groups === null || groups === void 0 || groups.forEach(function (group, index) {
339
309
  var groupStart = group.groupStart,
340
310
  groupEnd = group.groupEnd;
341
311
  for (var i = groupStart; i <= groupEnd; i++) {
312
+ var _rowGroupConfig$group2;
342
313
  groupMap.set(i, _objectSpread(_objectSpread({}, group), {}, {
343
314
  isStart: i === groupStart,
344
- isOpen: rowGroupConfig.groupOpen[index]
315
+ isOpen: !!(rowGroupConfig !== null && rowGroupConfig !== void 0 && (_rowGroupConfig$group2 = rowGroupConfig.groupOpen) !== null && _rowGroupConfig$group2 !== void 0 && _rowGroupConfig$group2[index])
345
316
  }));
346
317
  }
347
318
  });
@@ -385,22 +356,64 @@ export var changeGroupConfig = function changeGroupConfig(rowGroupConfig, change
385
356
  });
386
357
  };
387
358
  export var rowToActualRow = function rowToActualRow(row, groupConfig) {
359
+ var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100000;
388
360
  var groupMap = groupConfigToGroupMap(groupConfig);
389
- if (!groupMap.size) return row;
390
- groupMap.forEach(function (item, index) {
391
- if (index <= row && !(item !== null && item !== void 0 && item.isOpen) && !(item !== null && item !== void 0 && item.isStart)) {
392
- row--;
361
+ if (!groupMap.size || row < 0) return row;
362
+ var openCount = 0;
363
+ for (var i = 0; i < max; i++) {
364
+ var _groupMap$get9, _groupMap$get10;
365
+ if (groupMap.has(i) && !((_groupMap$get9 = groupMap.get(i)) !== null && _groupMap$get9 !== void 0 && _groupMap$get9.isOpen) && !((_groupMap$get10 = groupMap.get(i)) !== null && _groupMap$get10 !== void 0 && _groupMap$get10.isStart)) {
366
+ continue;
367
+ } else {
368
+ if (i >= row) {
369
+ break;
370
+ }
371
+ openCount++;
393
372
  }
394
- });
395
- return row;
373
+ }
374
+ return openCount;
375
+ };
376
+ export var rowToCountRow = function rowToCountRow(row, groupConfig, max) {
377
+ var groupMap = groupConfigToGroupMap(groupConfig);
378
+ if (!groupMap.size || row < 0) return row;
379
+
380
+ // 加法的做法
381
+ var maxCount = 0;
382
+ var maxIndex = max;
383
+ for (var i = 0; i < max; i++) {
384
+ var _groupMap$get11, _groupMap$get12;
385
+ if (groupMap.has(i) && !((_groupMap$get11 = groupMap.get(i)) !== null && _groupMap$get11 !== void 0 && _groupMap$get11.isOpen) && !((_groupMap$get12 = groupMap.get(i)) !== null && _groupMap$get12 !== void 0 && _groupMap$get12.isStart)) {
386
+ continue;
387
+ } else {
388
+ maxCount++;
389
+ }
390
+ }
391
+ if (row >= maxCount) {
392
+ return maxIndex;
393
+ }
394
+ maxIndex = 0;
395
+ var openCount = 0;
396
+ for (var _i2 = 0; _i2 < max; _i2++) {
397
+ var _groupMap$get13, _groupMap$get14;
398
+ if (groupMap.has(_i2) && !((_groupMap$get13 = groupMap.get(_i2)) !== null && _groupMap$get13 !== void 0 && _groupMap$get13.isOpen) && !((_groupMap$get14 = groupMap.get(_i2)) !== null && _groupMap$get14 !== void 0 && _groupMap$get14.isStart)) {
399
+ continue;
400
+ } else {
401
+ openCount++;
402
+ if (openCount >= row) {
403
+ maxIndex = _i2;
404
+ break;
405
+ }
406
+ }
407
+ }
408
+ return maxIndex;
396
409
  };
397
410
  export var getRowHeight = function getRowHeight(container) {
398
- var _container$getElement, _container$getElement2;
399
- var h = ((_container$getElement = container.getElementsByTagName('td')[0]) === null || _container$getElement === void 0 ? void 0 : (_container$getElement2 = _container$getElement.parentNode) === null || _container$getElement2 === void 0 ? void 0 : _container$getElement2.clientHeight) || 30;
411
+ var _container$getElement;
412
+ var h = ((_container$getElement = container.getElementsByTagName('td')[0]) === null || _container$getElement === void 0 || (_container$getElement = _container$getElement.parentNode) === null || _container$getElement === void 0 ? void 0 : _container$getElement.clientHeight) || 30;
400
413
  return h;
401
414
  };
402
415
  export var getNextVisibleRow = function getNextVisibleRow(row, maxRow, groupMap) {
403
- var _groupMap$get9, _groupMap$get10;
416
+ var _groupMap$get15, _groupMap$get16;
404
417
  var up = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
405
418
  if (!(groupMap !== null && groupMap !== void 0 && groupMap.size)) {
406
419
  return row;
@@ -408,7 +421,7 @@ export var getNextVisibleRow = function getNextVisibleRow(row, maxRow, groupMap)
408
421
  if (row > maxRow) {
409
422
  return null;
410
423
  }
411
- if (groupMap.get(row) && !((_groupMap$get9 = groupMap.get(row)) !== null && _groupMap$get9 !== void 0 && _groupMap$get9.isOpen) && !((_groupMap$get10 = groupMap.get(row)) !== null && _groupMap$get10 !== void 0 && _groupMap$get10.isStart)) {
424
+ if (groupMap.get(row) && !((_groupMap$get15 = groupMap.get(row)) !== null && _groupMap$get15 !== void 0 && _groupMap$get15.isOpen) && !((_groupMap$get16 = groupMap.get(row)) !== null && _groupMap$get16 !== void 0 && _groupMap$get16.isStart)) {
412
425
  return getNextVisibleRow(row + up, maxRow, groupMap);
413
426
  }
414
427
  return row;
@@ -443,4 +456,43 @@ export var calcMenuPosition = function calcMenuPosition(_ref5) {
443
456
  top: top,
444
457
  left: left
445
458
  };
459
+ };
460
+ export var isFreezedCell = function isFreezedCell(row, col, data) {
461
+ var _data$row$col$classNa;
462
+ var isFreezed = (data === null || data === void 0 ? void 0 : data[row][col].fixed) || (data === null || data === void 0 || (_data$row$col$classNa = data[row][col].className) === null || _data$row$col$classNa === void 0 ? void 0 : _data$row$col$classNa.includes('sheet-control'));
463
+ return !!isFreezed;
464
+ };
465
+ export var stripRowIndex = function stripRowIndex(data) {
466
+ if (!data.length || !data[0].length) return {
467
+ startIndex: 0,
468
+ endIndex: 0
469
+ };
470
+ var rowData = data[0];
471
+ var startIndex = 1,
472
+ endIndex = rowData.length - 1;
473
+ if (!rowData[1].editable) {
474
+ startIndex = 2;
475
+ }
476
+ if (rowData[rowData.length - 1].fixed && !rowData[rowData.length - 1].editable) {
477
+ endIndex = rowData.length - 2;
478
+ }
479
+ return {
480
+ startIndex: startIndex,
481
+ endIndex: endIndex
482
+ };
483
+ };
484
+ var focusInterval;
485
+ export var ensureFocus = function ensureFocus(container) {
486
+ if (!container) return;
487
+ if (focusInterval) {
488
+ clearInterval(focusInterval);
489
+ focusInterval = undefined;
490
+ }
491
+ focusInterval = setInterval(function () {
492
+ container === null || container === void 0 || container.focus();
493
+ }, 100);
494
+ setTimeout(function () {
495
+ clearInterval(focusInterval);
496
+ focusInterval = undefined;
497
+ }, 1000);
446
498
  };