@zhenliang/sheet 0.1.22 → 0.1.23

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 (137) hide show
  1. package/dist/core/config.d.ts +13 -0
  2. package/dist/core/config.js +13 -0
  3. package/dist/core/editor/cascaderEditor/index.d.ts +5 -0
  4. package/dist/core/editor/cascaderEditor/index.js +54 -0
  5. package/dist/core/editor/cascaderEditor/index.less +28 -0
  6. package/dist/core/editor/dateEditor/index.d.ts +5 -0
  7. package/dist/core/editor/dateEditor/index.js +56 -0
  8. package/dist/core/editor/dateEditor/index.less +11 -0
  9. package/dist/core/editor/index.d.ts +4 -0
  10. package/dist/core/editor/index.js +4 -0
  11. package/dist/core/editor/numberEditor/index.d.ts +8 -0
  12. package/dist/core/editor/numberEditor/index.js +107 -0
  13. package/dist/core/editor/numberEditor/index.less +30 -0
  14. package/dist/core/editor/selectEditor/index.d.ts +6 -0
  15. package/dist/core/editor/selectEditor/index.js +96 -0
  16. package/dist/core/editor/selectEditor/index.less +43 -0
  17. package/dist/core/reducers/index.d.ts +9 -0
  18. package/dist/core/reducers/index.js +38 -0
  19. package/dist/core/reducers/keyboardReducer.d.ts +2 -0
  20. package/dist/core/reducers/keyboardReducer.js +93 -0
  21. package/dist/core/reducers/mouseReducer.d.ts +2 -0
  22. package/dist/core/reducers/mouseReducer.js +164 -0
  23. package/dist/core/reducers/sideEffectReducer.d.ts +4 -0
  24. package/dist/core/reducers/sideEffectReducer.js +378 -0
  25. package/dist/core/reducers/stateReducer.d.ts +2 -0
  26. package/dist/core/reducers/stateReducer.js +174 -0
  27. package/dist/core/sheet/Cell.d.ts +4 -0
  28. package/dist/core/sheet/Cell.js +181 -0
  29. package/dist/core/sheet/DataEditor.d.ts +3 -0
  30. package/dist/core/sheet/DataEditor.js +24 -0
  31. package/dist/core/sheet/DefaultCell.d.ts +11 -0
  32. package/dist/core/sheet/DefaultCell.js +31 -0
  33. package/dist/core/sheet/DefaultRow.d.ts +12 -0
  34. package/dist/core/sheet/DefaultRow.js +28 -0
  35. package/dist/core/sheet/DefaultRowMapper.d.ts +8 -0
  36. package/dist/core/sheet/DefaultRowMapper.js +15 -0
  37. package/dist/core/sheet/DefaultShell.d.ts +8 -0
  38. package/dist/core/sheet/DefaultShell.js +12 -0
  39. package/dist/core/sheet/Event.d.ts +5 -0
  40. package/dist/core/sheet/Event.js +17 -0
  41. package/dist/core/sheet/ValueViewer.d.ts +3 -0
  42. package/dist/core/sheet/ValueViewer.js +9 -0
  43. package/dist/core/sheet/index.d.ts +5 -0
  44. package/dist/core/sheet/index.js +265 -0
  45. package/dist/core/sheet/index.less +307 -0
  46. package/dist/core/sheet/useCellEvent.d.ts +3 -0
  47. package/dist/core/sheet/useCellEvent.js +22 -0
  48. package/dist/core/sheet/useContextMenu.d.ts +21 -0
  49. package/dist/core/sheet/useContextMenu.js +86 -0
  50. package/dist/core/sheet/useKeyBoardEvent.d.ts +3 -0
  51. package/dist/core/sheet/useKeyBoardEvent.js +66 -0
  52. package/dist/core/sheet/useMouseEvent.d.ts +3 -0
  53. package/dist/core/sheet/useMouseEvent.js +298 -0
  54. package/dist/core/sheet/useSelectVisible.d.ts +2 -0
  55. package/dist/core/sheet/useSelectVisible.js +57 -0
  56. package/dist/core/sheet/useVirtualList.d.ts +7 -0
  57. package/dist/core/sheet/useVirtualList.js +103 -0
  58. package/dist/core/sheet/var.less +41 -0
  59. package/dist/core/shell/draggableShell/index.d.ts +5 -0
  60. package/dist/core/shell/draggableShell/index.js +197 -0
  61. package/dist/core/shell/draggableShell/index.less +16 -0
  62. package/dist/core/shell/tableShell.d.ts +5 -0
  63. package/dist/core/shell/tableShell.js +109 -0
  64. package/dist/core/table/events.d.ts +15 -0
  65. package/dist/core/table/events.js +95 -0
  66. package/dist/core/table/index.d.ts +4 -0
  67. package/dist/core/table/index.js +313 -0
  68. package/dist/core/table/useGroupConfig.d.ts +2 -0
  69. package/dist/core/table/useGroupConfig.js +65 -0
  70. package/dist/core/table/useRowSelection.d.ts +2 -0
  71. package/dist/core/table/useRowSelection.js +24 -0
  72. package/dist/core/table/util.d.ts +8 -0
  73. package/dist/core/table/util.js +29 -0
  74. package/dist/core/util.d.ts +59 -0
  75. package/dist/core/util.js +490 -0
  76. package/dist/core/viewer/btnViewer/index.d.ts +2 -0
  77. package/dist/core/viewer/btnViewer/index.js +37 -0
  78. package/dist/core/viewer/cascaderViewer/index.d.ts +2 -0
  79. package/dist/core/viewer/cascaderViewer/index.js +11 -0
  80. package/dist/core/viewer/checkViewer/index.d.ts +2 -0
  81. package/dist/core/viewer/checkViewer/index.js +23 -0
  82. package/dist/core/viewer/editViewer/index.d.ts +2 -0
  83. package/dist/core/viewer/editViewer/index.js +31 -0
  84. package/dist/core/viewer/groupViewer/index.d.ts +2 -0
  85. package/dist/core/viewer/groupViewer/index.js +34 -0
  86. package/dist/core/viewer/index.d.ts +7 -0
  87. package/dist/core/viewer/index.js +7 -0
  88. package/dist/core/viewer/selectorViewer/index.d.ts +2 -0
  89. package/dist/core/viewer/selectorViewer/index.js +16 -0
  90. package/dist/core/viewer/switchViewer/index.d.ts +2 -0
  91. package/dist/core/viewer/switchViewer/index.js +22 -0
  92. package/dist/example/antComponent.d.ts +3 -0
  93. package/dist/example/antComponent.js +314 -0
  94. package/dist/example/basic.d.ts +4 -0
  95. package/dist/example/basic.js +121 -0
  96. package/dist/example/ellipsis.d.ts +3 -0
  97. package/dist/example/ellipsis.js +64 -0
  98. package/dist/example/fixed.d.ts +3 -0
  99. package/dist/example/fixed.js +89 -0
  100. package/dist/example/group.d.ts +3 -0
  101. package/dist/example/group.js +123 -0
  102. package/dist/example/index.less +5 -0
  103. package/dist/example/selection.d.ts +4 -0
  104. package/dist/example/selection.js +86 -0
  105. package/dist/example/sheet.d.ts +4 -0
  106. package/dist/example/sheet.js +393 -0
  107. package/dist/example/valuationAnalyze.d.ts +2 -0
  108. package/dist/example/valuationAnalyze.js +227 -0
  109. package/dist/hooks/index.d.ts +8 -0
  110. package/dist/hooks/index.js +7 -0
  111. package/dist/hooks/useEventBus.d.ts +4 -0
  112. package/dist/hooks/useEventBus.js +17 -0
  113. package/dist/hooks/useKeyboard.d.ts +18 -0
  114. package/dist/hooks/useKeyboard.js +108 -0
  115. package/dist/hooks/useMiddlewareReducer.d.ts +12 -0
  116. package/dist/hooks/useMiddlewareReducer.js +47 -0
  117. package/dist/hooks/useMouse.d.ts +11 -0
  118. package/dist/hooks/useMouse.js +68 -0
  119. package/dist/hooks/useSetState.d.ts +2 -0
  120. package/dist/hooks/useSetState.js +27 -0
  121. package/dist/hooks/useSheetEvent.d.ts +5 -0
  122. package/dist/hooks/useSheetEvent.js +5 -0
  123. package/dist/hooks/useWidthConfig.d.ts +4 -0
  124. package/dist/hooks/useWidthConfig.js +5 -0
  125. package/dist/index.d.ts +8 -0
  126. package/dist/index.js +8 -0
  127. package/dist/standardUtils/index.d.ts +9 -0
  128. package/dist/standardUtils/index.js +32 -0
  129. package/dist/type/index.d.ts +2 -0
  130. package/dist/type/index.js +4 -0
  131. package/dist/type/sheet.d.ts +205 -0
  132. package/dist/type/sheet.js +9 -0
  133. package/dist/type/sheetTable.d.ts +89 -0
  134. package/dist/type/sheetTable.js +1 -0
  135. package/dist/typings/index.d.ts +1 -0
  136. package/package.json +1 -1
  137. package/changes.md +0 -45
@@ -0,0 +1,174 @@
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 _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 _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); }
5
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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
+ 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; }
9
+ 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; }
10
+ 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; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
+ 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); }
13
+ import { SheetType } from "../..";
14
+ export var stateReducer = {
15
+ change: function change(state, payload) {
16
+ var _ref = payload,
17
+ key = _ref.key,
18
+ value = _ref.value;
19
+ return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, key, value));
20
+ },
21
+ changes: function changes(state, payload) {
22
+ return _objectSpread(_objectSpread({}, state), payload);
23
+ },
24
+ rowMove: function rowMove(state, payload) {
25
+ var _state$data, _state$end, _state$end2;
26
+ var maxRow = (((_state$data = state.data) === null || _state$data === void 0 ? void 0 : _state$data.length) || 0) - 1;
27
+ var newRow = (((_state$end = state.end) === null || _state$end === void 0 ? void 0 : _state$end.row) || 0) + payload;
28
+ if (newRow < 0 || newRow > maxRow) return state;
29
+ return _objectSpread(_objectSpread({}, state), {}, {
30
+ end: {
31
+ col: (_state$end2 = state.end) === null || _state$end2 === void 0 ? void 0 : _state$end2.col,
32
+ row: newRow
33
+ }
34
+ });
35
+ },
36
+ colMove: function colMove(state, payload) {
37
+ var _state$data2, _state$data2$, _state$end3, _state$data3, _state$end4;
38
+ var maxCol = (((_state$data2 = state.data) === null || _state$data2 === void 0 ? void 0 : (_state$data2$ = _state$data2[0]) === null || _state$data2$ === void 0 ? void 0 : _state$data2$.length) || 0) - 1;
39
+ var newCol = (((_state$end3 = state.end) === null || _state$end3 === void 0 ? void 0 : _state$end3.col) || 0) + payload;
40
+ if (newCol < 0 || newCol > maxCol || (_state$data3 = state.data) !== null && _state$data3 !== void 0 && _state$data3[0][newCol].fixed) return state;
41
+ return _objectSpread(_objectSpread({}, state), {}, {
42
+ end: {
43
+ row: (_state$end4 = state.end) === null || _state$end4 === void 0 ? void 0 : _state$end4.row,
44
+ col: newCol
45
+ }
46
+ });
47
+ },
48
+ editFinish: function editFinish(state, payload) {
49
+ var _data$row;
50
+ var data = state.data;
51
+ var _ref2 = payload,
52
+ _ref2$cell = _ref2.cell,
53
+ row = _ref2$cell.row,
54
+ col = _ref2$cell.col,
55
+ confirm = _ref2$cell.confirm,
56
+ id = _ref2$cell.id;
57
+ var history = _toConsumableArray(state.history || []);
58
+ var current = data === null || data === void 0 ? void 0 : (_data$row = data[row]) === null || _data$row === void 0 ? void 0 : _data$row[col].value;
59
+ history.push({
60
+ changes: [{
61
+ row: row,
62
+ col: col,
63
+ value: current,
64
+ id: id
65
+ }],
66
+ type: 'Edit'
67
+ });
68
+ if (confirm) {
69
+ return _objectSpread(_objectSpread({}, state), {}, {
70
+ editing: undefined,
71
+ lastEditing: state.editing,
72
+ history: history
73
+ });
74
+ }
75
+ return _objectSpread(_objectSpread({}, state), {}, {
76
+ history: history
77
+ });
78
+ },
79
+ popHistory: function popHistory(state) {
80
+ var _state$history = state.history,
81
+ history = _state$history === void 0 ? [] : _state$history;
82
+ var newHistory = _toConsumableArray(history);
83
+ newHistory.pop();
84
+ return _objectSpread(_objectSpread({}, state), {}, {
85
+ history: newHistory
86
+ });
87
+ },
88
+ pushHistory: function pushHistory(state, payload) {
89
+ return _objectSpread(_objectSpread({}, state), {}, {
90
+ history: [].concat(_toConsumableArray(state.history || []), [payload])
91
+ });
92
+ },
93
+ select: function select(state, payload) {
94
+ var oldStart = state.start,
95
+ oldEnd = state.end;
96
+ var _ref3 = payload,
97
+ start = _ref3.start,
98
+ end = _ref3.end;
99
+ return _objectSpread(_objectSpread({}, state), {}, {
100
+ start: start,
101
+ end: end,
102
+ lastSelected: {
103
+ start: oldStart,
104
+ end: oldEnd
105
+ }
106
+ });
107
+ },
108
+ selectRow: function selectRow(state, payload) {
109
+ var _state$data4, _state$data4$, _state$data$0$length, _state$data5, _state$data5$, _state$data6, _state$data6$;
110
+ var startCol = ((_state$data4 = state.data) === null || _state$data4 === void 0 ? void 0 : (_state$data4$ = _state$data4[0]) === null || _state$data4$ === void 0 ? void 0 : _state$data4$.findIndex(function (item) {
111
+ return !item.fixed;
112
+ })) || 0;
113
+ var endCol = ((_state$data$0$length = (_state$data5 = state.data) === null || _state$data5 === void 0 ? void 0 : (_state$data5$ = _state$data5[0]) === null || _state$data5$ === void 0 ? void 0 : _state$data5$.length) !== null && _state$data$0$length !== void 0 ? _state$data$0$length : 0) - 1;
114
+ var lastFixed = (_state$data6 = state.data) === null || _state$data6 === void 0 ? void 0 : (_state$data6$ = _state$data6[0]) === null || _state$data6$ === void 0 ? void 0 : _state$data6$.find(function (item) {
115
+ return item.fixed === SheetType.CellAlign.right;
116
+ });
117
+ if (lastFixed) {
118
+ var _state$data$0$indexOf, _state$data7;
119
+ endCol = ((_state$data$0$indexOf = (_state$data7 = state.data) === null || _state$data7 === void 0 ? void 0 : _state$data7[0].indexOf(lastFixed)) !== null && _state$data$0$indexOf !== void 0 ? _state$data$0$indexOf : 0) - 1;
120
+ }
121
+ if (startCol >= 0 && endCol >= 0) {
122
+ return _objectSpread(_objectSpread({}, state), {}, {
123
+ start: {
124
+ row: payload,
125
+ col: startCol
126
+ },
127
+ end: {
128
+ row: payload,
129
+ col: endCol
130
+ },
131
+ lastSelected: {
132
+ start: state.start,
133
+ end: state.end
134
+ }
135
+ });
136
+ }
137
+ return state;
138
+ },
139
+ clearSelect: function clearSelect(state) {
140
+ var start = state.start,
141
+ end = state.end;
142
+ return _objectSpread(_objectSpread({}, state), {}, {
143
+ start: undefined,
144
+ end: undefined,
145
+ lastSelected: {
146
+ start: start,
147
+ end: end
148
+ }
149
+ });
150
+ },
151
+ clearSelectIfNotSingleRow: function clearSelectIfNotSingleRow(state) {
152
+ var start = state.start,
153
+ end = state.end;
154
+ if (!start || !end || (start === null || start === void 0 ? void 0 : start.row) === (end === null || end === void 0 ? void 0 : end.row)) {
155
+ return state;
156
+ }
157
+ return _objectSpread(_objectSpread({}, state), {}, {
158
+ start: undefined,
159
+ end: undefined,
160
+ lastSelected: {
161
+ start: start,
162
+ end: end
163
+ }
164
+ });
165
+ },
166
+ clearEdit: function clearEdit(state) {
167
+ var editing = state.editing;
168
+ if (!editing) return state;
169
+ return _objectSpread(_objectSpread({}, state), {}, {
170
+ editing: undefined,
171
+ lastEditing: editing
172
+ });
173
+ }
174
+ };
@@ -0,0 +1,4 @@
1
+ import type { SheetType } from "../../type";
2
+ import React from 'react';
3
+ declare const _default: React.MemoExoticComponent<(props: SheetType.CellProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,181 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
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
+ 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
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { isNil } from 'lodash';
8
+ import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
+ import { useSetState, useSheetEvent } from "../../hooks";
10
+ import { renderValue } from "../util";
11
+ import DataEditor from "./DataEditor";
12
+ import DefaultCell from "./DefaultCell";
13
+ import ValueViewer from "./ValueViewer";
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ function initialData(_ref) {
16
+ var cell = _ref.cell;
17
+ return renderValue(cell);
18
+ }
19
+ function widthStyle(cell) {
20
+ var width = typeof (cell === null || cell === void 0 ? void 0 : cell.width) === 'number' ? "".concat(cell.width, "px") : cell.width;
21
+ var align = cell.align || 'left';
22
+ var position = cell.fixed ? 'sticky' : 'unset';
23
+ var left = cell.fixed === 'left' ? 0 : 'unset';
24
+ var right = cell.fixed === 'right' ? 0 : 'unset';
25
+ return {
26
+ width: width,
27
+ textAlign: align,
28
+ position: position,
29
+ left: left,
30
+ right: right
31
+ };
32
+ }
33
+ var Cell = function Cell(props) {
34
+ var _cell$editable;
35
+ var row = props.row,
36
+ col = props.col,
37
+ cell = props.cell,
38
+ _props$cellRenderer = props.cellRenderer,
39
+ CellRenderer = _props$cellRenderer === void 0 ? DefaultCell : _props$cellRenderer,
40
+ dataEditor = props.dataEditor,
41
+ valueViewer = props.valueViewer,
42
+ attributesRenderer = props.attributesRenderer;
43
+ var eventBus = useSheetEvent();
44
+ var _useSetState = useSetState(),
45
+ _useSetState2 = _slicedToArray(_useSetState, 2),
46
+ eventState = _useSetState2[0],
47
+ setEventState = _useSetState2[1];
48
+ var selected = eventState.selected,
49
+ selectedInfo = eventState.selectedInfo,
50
+ editing = eventState.editing,
51
+ confirm = eventState.confirm;
52
+ var _useState = useState(initialData(props)),
53
+ _useState2 = _slicedToArray(_useState, 2),
54
+ value = _useState2[0],
55
+ setValue = _useState2[1];
56
+ var valueRef = useRef(value);
57
+ useEffect(function () {
58
+ var newValue = renderValue(cell);
59
+ setValue(newValue);
60
+ valueRef.current = newValue;
61
+ }, [cell, row, col]);
62
+ useEffect(function () {
63
+ if (isNil(row) || isNil(col) || !eventBus) {
64
+ return;
65
+ }
66
+ var onCellState = function onCellState(eventInfo) {
67
+ if (eventInfo.editing === false && !eventInfo.confirm) {
68
+ // 退出编辑,重设数据
69
+ setValue(valueRef.current);
70
+ } else if (eventInfo.value && eventInfo.editing) {
71
+ var _cell$dataEditor, _cell$dataEditor2, _cell$dataEditor2$par;
72
+ // 单元格直接键盘编辑,设置为输入值
73
+ setValue((_cell$dataEditor = cell.dataEditor) !== null && _cell$dataEditor !== void 0 && _cell$dataEditor.parser ? cell === null || cell === void 0 ? void 0 : (_cell$dataEditor2 = cell.dataEditor) === null || _cell$dataEditor2 === void 0 ? void 0 : (_cell$dataEditor2$par = _cell$dataEditor2.parser) === null || _cell$dataEditor2$par === void 0 ? void 0 : _cell$dataEditor2$par.call(_cell$dataEditor2, eventInfo.value, cell.record) : eventInfo.value);
74
+ }
75
+ setEventState(eventInfo);
76
+ };
77
+ eventBus.on("cell-".concat(row, "-").concat(col, "-change"), onCellState);
78
+ eventBus.emit("cell-create", {
79
+ row: row,
80
+ col: col
81
+ });
82
+ return function () {
83
+ eventBus.off("cell-".concat(row, "-").concat(col, "-change"), onCellState);
84
+ };
85
+ }, [eventBus, row, col]);
86
+ useEffect(function () {
87
+ if (isNil(row) || isNil(col) || !eventBus) {
88
+ return;
89
+ }
90
+ if (confirm) {
91
+ setEventState({
92
+ confirm: false
93
+ });
94
+ if (value !== valueRef.current) {
95
+ var _cell$dataEditor3, _cell$dataEditor4, _cell$dataEditor4$che;
96
+ if (cell !== null && cell !== void 0 && (_cell$dataEditor3 = cell.dataEditor) !== null && _cell$dataEditor3 !== void 0 && _cell$dataEditor3.checker && !((_cell$dataEditor4 = cell.dataEditor) !== null && _cell$dataEditor4 !== void 0 && (_cell$dataEditor4$che = _cell$dataEditor4.checker) !== null && _cell$dataEditor4$che !== void 0 && _cell$dataEditor4$che.call(_cell$dataEditor4, value, cell.record))) {
97
+ setValue(valueRef.current);
98
+ return;
99
+ }
100
+ eventBus.emit('cell-change', {
101
+ row: row,
102
+ col: col,
103
+ id: cell.id,
104
+ value: value
105
+ // 没必要format value 已经是legal 的值了
106
+ // value: cell.dataEditor?.formatter
107
+ // ? cell.dataEditor.formatter?.(value)
108
+ // : value,
109
+ });
110
+ }
111
+ }
112
+ }, [confirm, eventBus, value, cell]);
113
+ var handleCommit = useCallback(function (value) {
114
+ var _cell$dataEditor5, _cell$dataEditor6, _cell$dataEditor6$che;
115
+ if (valueRef.current === value) {
116
+ return;
117
+ }
118
+ if (value !== null && cell !== null && cell !== void 0 && (_cell$dataEditor5 = cell.dataEditor) !== null && _cell$dataEditor5 !== void 0 && _cell$dataEditor5.checker && !((_cell$dataEditor6 = cell.dataEditor) !== null && _cell$dataEditor6 !== void 0 && (_cell$dataEditor6$che = _cell$dataEditor6.checker) !== null && _cell$dataEditor6$che !== void 0 && _cell$dataEditor6$che.call(_cell$dataEditor6, value, cell.record))) {
119
+ setValue(valueRef.current);
120
+ return;
121
+ }
122
+ setValue(value);
123
+ eventBus.emit('cell-change', {
124
+ row: row,
125
+ col: col,
126
+ id: cell.id,
127
+ value: value,
128
+ confirm: true
129
+ });
130
+ }, [eventBus, valueRef, cell]);
131
+ var renderEditor = function renderEditor(cel, r, col, editor, isEditing) {
132
+ if (isEditing) {
133
+ var Editor = cel.dataEditor || editor || DataEditor;
134
+ return /*#__PURE__*/_jsx(Editor, {
135
+ cell: cel,
136
+ row: r,
137
+ col: col,
138
+ value: value,
139
+ record: cel.record,
140
+ onConfirm: handleCommit,
141
+ onChange: setValue
142
+ });
143
+ }
144
+ return null;
145
+ };
146
+ var renderViewer = function renderViewer(cel, r, col, valViewer) {
147
+ var Viewer = cell.valueViewer || valViewer || ValueViewer;
148
+ var val = renderValue(cell);
149
+ return /*#__PURE__*/_jsx("span", {
150
+ className: "value-viewer",
151
+ children: /*#__PURE__*/_jsx(Viewer, {
152
+ record: cell.record,
153
+ cell: cell,
154
+ row: row,
155
+ col: col,
156
+ value: val
157
+ })
158
+ });
159
+ };
160
+ var content = ((_cell$editable = cell.editable) !== null && _cell$editable !== void 0 ? _cell$editable : true) && editing ? renderEditor(cell, row, col, dataEditor, editing) : renderViewer(cell, row, col, valueViewer);
161
+ var className = useMemo(function () {
162
+ return [cell.className, 'cell', selected && 'selected', (selectedInfo === null || selectedInfo === void 0 ? void 0 : selectedInfo.isStart) && 'selected-start', (selectedInfo === null || selectedInfo === void 0 ? void 0 : selectedInfo.isBottom) && 'selected-bottom', (selectedInfo === null || selectedInfo === void 0 ? void 0 : selectedInfo.isTop) && 'selected-top', (selectedInfo === null || selectedInfo === void 0 ? void 0 : selectedInfo.isLeft) && 'selected-left', (selectedInfo === null || selectedInfo === void 0 ? void 0 : selectedInfo.isRight) && 'selected-right', editing && 'editing', cell.readonly && 'read-only'].filter(function (a) {
163
+ return a;
164
+ }).join(' ');
165
+ }, [editing, selected, selectedInfo, cell.className, cell.readonly]);
166
+ return /*#__PURE__*/_jsx(CellRenderer, {
167
+ row: row,
168
+ col: col,
169
+ cell: cell,
170
+ selected: eventState.selected,
171
+ editing: eventState.editing,
172
+ attributesRenderer: attributesRenderer,
173
+ className: className,
174
+ style: widthStyle(cell),
175
+ children: content
176
+ });
177
+ };
178
+ export default /*#__PURE__*/memo(Cell, function (pre, next) {
179
+ var shouldUpdate = pre.col === next.col && pre.row === next.row && pre.cell.value === next.cell.value && pre.cell.dataEditor === next.cell.dataEditor && pre.cell.record === next.cell.record;
180
+ return shouldUpdate;
181
+ });
@@ -0,0 +1,3 @@
1
+ import type { SheetType } from "../../type";
2
+ declare const DataEditor: SheetType.CellEditor;
3
+ export default DataEditor;
@@ -0,0 +1,24 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ var DataEditor = function DataEditor(_ref) {
4
+ var value = _ref.value,
5
+ onChange = _ref.onChange;
6
+ var inputRef = useRef(null);
7
+ useEffect(function () {
8
+ var _inputRef$current;
9
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
10
+ }, []);
11
+ var handleChange = function handleChange(e) {
12
+ onChange(e.target.value);
13
+ };
14
+ return /*#__PURE__*/_jsx("input", {
15
+ ref: inputRef,
16
+ onMouseDown: function onMouseDown(e) {
17
+ return e.stopPropagation();
18
+ },
19
+ className: "data-editor",
20
+ value: value,
21
+ onChange: handleChange
22
+ });
23
+ };
24
+ export default DataEditor;
@@ -0,0 +1,11 @@
1
+ import type { SheetType } from "../../type";
2
+ declare const DefaultCell: (props: {
3
+ cell: SheetType.Cell;
4
+ row: number;
5
+ col: number;
6
+ attributesRenderer?: SheetType.AttributesRenderer | undefined;
7
+ className: string;
8
+ style: Record<string, string>;
9
+ children: React.ReactElement;
10
+ }) => JSX.Element;
11
+ export default DefaultCell;
@@ -0,0 +1,31 @@
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; }
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); }
7
+ import { classNames } from "../util";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ var DefaultCell = function DefaultCell(props) {
10
+ var cell = props.cell,
11
+ row = props.row,
12
+ col = props.col,
13
+ attributesRenderer = props.attributesRenderer,
14
+ className = props.className,
15
+ style = props.style,
16
+ children = props.children;
17
+ var colSpan = cell.colSpan,
18
+ rowSpan = cell.rowSpan;
19
+ var attributes = attributesRenderer ? attributesRenderer(cell, row, col) : {};
20
+ return /*#__PURE__*/_jsx("td", _objectSpread(_objectSpread({
21
+ "data-row": row,
22
+ "data-col": col,
23
+ className: classNames(className, cell.fixed && 'fixed', cell.fixed && "fixed-".concat(cell.fixed)),
24
+ colSpan: colSpan,
25
+ rowSpan: rowSpan,
26
+ style: style
27
+ }, attributes), {}, {
28
+ children: children
29
+ }));
30
+ };
31
+ export default DefaultCell;
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import type { SheetType } from "../../type";
3
+ declare const DefaultRow: React.FC<{
4
+ children: React.ReactElement;
5
+ rowClassName?: string;
6
+ row: number;
7
+ groupConfig?: {
8
+ groups: SheetType.RowGroup[];
9
+ groupOpen: boolean[];
10
+ };
11
+ }>;
12
+ export default DefaultRow;
@@ -0,0 +1,28 @@
1
+ import { useMemo } from 'react';
2
+ import { groupConfigToGroupMap } from "../util";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ var DefaultRow = function DefaultRow(_ref) {
5
+ var _groupMap$get, _groupMap$get2;
6
+ var rowClassName = _ref.rowClassName,
7
+ children = _ref.children,
8
+ row = _ref.row,
9
+ groupConfig = _ref.groupConfig;
10
+ var groupMap = useMemo(function () {
11
+ // 分组逻辑
12
+ return groupConfigToGroupMap(groupConfig);
13
+ }, [groupConfig]);
14
+ if (groupMap.get(row) && !((_groupMap$get = groupMap.get(row)) !== null && _groupMap$get !== void 0 && _groupMap$get.isStart) && !((_groupMap$get2 = groupMap.get(row)) !== null && _groupMap$get2 !== void 0 && _groupMap$get2.isOpen)) {
15
+ return /*#__PURE__*/_jsx("tr", {
16
+ className: rowClassName,
17
+ style: {
18
+ display: 'none'
19
+ },
20
+ children: children
21
+ });
22
+ }
23
+ return /*#__PURE__*/_jsx("tr", {
24
+ className: rowClassName,
25
+ children: children
26
+ });
27
+ };
28
+ export default DefaultRow;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { SheetType } from "../../type";
3
+ interface DefaultRowMapperProps {
4
+ rowData: SheetType.Cell[];
5
+ row: number;
6
+ }
7
+ export declare const DefaultRowMapper: React.FC<DefaultRowMapperProps>;
8
+ export {};
@@ -0,0 +1,15 @@
1
+ import { memo } from 'react';
2
+ import Cell from "./Cell";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ export var DefaultRowMapper = /*#__PURE__*/memo(function (_ref) {
5
+ var rowData = _ref.rowData,
6
+ row = _ref.row;
7
+ var cls = rowData.map(function (cell, col) {
8
+ return /*#__PURE__*/_jsx(Cell, {
9
+ row: row,
10
+ col: col,
11
+ cell: cell
12
+ }, col);
13
+ });
14
+ return cls;
15
+ });
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ interface IShell {
3
+ children: React.ReactElement;
4
+ data?: unknown;
5
+ className?: string;
6
+ }
7
+ declare const DefaultShell: React.FC<IShell>;
8
+ export default DefaultShell;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ var DefaultShell = function DefaultShell(_ref) {
3
+ var children = _ref.children,
4
+ className = _ref.className;
5
+ return /*#__PURE__*/_jsx("table", {
6
+ className: className,
7
+ children: /*#__PURE__*/_jsx("tbody", {
8
+ children: children
9
+ })
10
+ });
11
+ };
12
+ export default DefaultShell;
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ export declare const SheetEvent: FC<{
3
+ handler?: (value: unknown) => void;
4
+ name: string;
5
+ }>;
@@ -0,0 +1,17 @@
1
+ import { useSheetEvent } from "../..";
2
+ import { useEffect } from 'react';
3
+ export var SheetEvent = function SheetEvent(_ref) {
4
+ var handler = _ref.handler,
5
+ name = _ref.name;
6
+ var eventBus = useSheetEvent();
7
+ useEffect(function () {
8
+ if (!eventBus || !handler) {
9
+ return;
10
+ }
11
+ eventBus.on(name, handler);
12
+ return function () {
13
+ eventBus.off(name, handler);
14
+ };
15
+ }, [eventBus, handler, name]);
16
+ return null;
17
+ };
@@ -0,0 +1,3 @@
1
+ import type { SheetType } from "../../type";
2
+ declare const ValueViewer: SheetType.CellViewer;
3
+ export default ValueViewer;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ var ValueViewer = function ValueViewer(_ref) {
3
+ var value = _ref.value;
4
+ return /*#__PURE__*/_jsx("span", {
5
+ className: "value-viewer",
6
+ children: value
7
+ });
8
+ };
9
+ export default ValueViewer;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import type { SheetType } from "../../type";
3
+ import './index.less';
4
+ declare const Sheet: React.FC<SheetType.SheetProps>;
5
+ export default Sheet;