@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.
- package/dist/core/config.d.ts +13 -0
- package/dist/core/config.js +13 -0
- package/dist/core/editor/cascaderEditor/index.d.ts +5 -0
- package/dist/core/editor/cascaderEditor/index.js +54 -0
- package/dist/core/editor/cascaderEditor/index.less +28 -0
- package/dist/core/editor/dateEditor/index.d.ts +5 -0
- package/dist/core/editor/dateEditor/index.js +56 -0
- package/dist/core/editor/dateEditor/index.less +11 -0
- package/dist/core/editor/index.d.ts +4 -0
- package/dist/core/editor/index.js +4 -0
- package/dist/core/editor/numberEditor/index.d.ts +8 -0
- package/dist/core/editor/numberEditor/index.js +107 -0
- package/dist/core/editor/numberEditor/index.less +30 -0
- package/dist/core/editor/selectEditor/index.d.ts +6 -0
- package/dist/core/editor/selectEditor/index.js +96 -0
- package/dist/core/editor/selectEditor/index.less +43 -0
- package/dist/core/reducers/index.d.ts +9 -0
- package/dist/core/reducers/index.js +38 -0
- package/dist/core/reducers/keyboardReducer.d.ts +2 -0
- package/dist/core/reducers/keyboardReducer.js +93 -0
- package/dist/core/reducers/mouseReducer.d.ts +2 -0
- package/dist/core/reducers/mouseReducer.js +164 -0
- package/dist/core/reducers/sideEffectReducer.d.ts +4 -0
- package/dist/core/reducers/sideEffectReducer.js +378 -0
- package/dist/core/reducers/stateReducer.d.ts +2 -0
- package/dist/core/reducers/stateReducer.js +174 -0
- package/dist/core/sheet/Cell.d.ts +4 -0
- package/dist/core/sheet/Cell.js +181 -0
- package/dist/core/sheet/DataEditor.d.ts +3 -0
- package/dist/core/sheet/DataEditor.js +24 -0
- package/dist/core/sheet/DefaultCell.d.ts +11 -0
- package/dist/core/sheet/DefaultCell.js +31 -0
- package/dist/core/sheet/DefaultRow.d.ts +12 -0
- package/dist/core/sheet/DefaultRow.js +28 -0
- package/dist/core/sheet/DefaultRowMapper.d.ts +8 -0
- package/dist/core/sheet/DefaultRowMapper.js +15 -0
- package/dist/core/sheet/DefaultShell.d.ts +8 -0
- package/dist/core/sheet/DefaultShell.js +12 -0
- package/dist/core/sheet/Event.d.ts +5 -0
- package/dist/core/sheet/Event.js +17 -0
- package/dist/core/sheet/ValueViewer.d.ts +3 -0
- package/dist/core/sheet/ValueViewer.js +9 -0
- package/dist/core/sheet/index.d.ts +5 -0
- package/dist/core/sheet/index.js +265 -0
- package/dist/core/sheet/index.less +307 -0
- package/dist/core/sheet/useCellEvent.d.ts +3 -0
- package/dist/core/sheet/useCellEvent.js +22 -0
- package/dist/core/sheet/useContextMenu.d.ts +21 -0
- package/dist/core/sheet/useContextMenu.js +86 -0
- package/dist/core/sheet/useKeyBoardEvent.d.ts +3 -0
- package/dist/core/sheet/useKeyBoardEvent.js +66 -0
- package/dist/core/sheet/useMouseEvent.d.ts +3 -0
- package/dist/core/sheet/useMouseEvent.js +298 -0
- package/dist/core/sheet/useSelectVisible.d.ts +2 -0
- package/dist/core/sheet/useSelectVisible.js +57 -0
- package/dist/core/sheet/useVirtualList.d.ts +7 -0
- package/dist/core/sheet/useVirtualList.js +103 -0
- package/dist/core/sheet/var.less +41 -0
- package/dist/core/shell/draggableShell/index.d.ts +5 -0
- package/dist/core/shell/draggableShell/index.js +197 -0
- package/dist/core/shell/draggableShell/index.less +16 -0
- package/dist/core/shell/tableShell.d.ts +5 -0
- package/dist/core/shell/tableShell.js +109 -0
- package/dist/core/table/events.d.ts +15 -0
- package/dist/core/table/events.js +95 -0
- package/dist/core/table/index.d.ts +4 -0
- package/dist/core/table/index.js +313 -0
- package/dist/core/table/useGroupConfig.d.ts +2 -0
- package/dist/core/table/useGroupConfig.js +65 -0
- package/dist/core/table/useRowSelection.d.ts +2 -0
- package/dist/core/table/useRowSelection.js +24 -0
- package/dist/core/table/util.d.ts +8 -0
- package/dist/core/table/util.js +29 -0
- package/dist/core/util.d.ts +59 -0
- package/dist/core/util.js +490 -0
- package/dist/core/viewer/btnViewer/index.d.ts +2 -0
- package/dist/core/viewer/btnViewer/index.js +37 -0
- package/dist/core/viewer/cascaderViewer/index.d.ts +2 -0
- package/dist/core/viewer/cascaderViewer/index.js +11 -0
- package/dist/core/viewer/checkViewer/index.d.ts +2 -0
- package/dist/core/viewer/checkViewer/index.js +23 -0
- package/dist/core/viewer/editViewer/index.d.ts +2 -0
- package/dist/core/viewer/editViewer/index.js +31 -0
- package/dist/core/viewer/groupViewer/index.d.ts +2 -0
- package/dist/core/viewer/groupViewer/index.js +34 -0
- package/dist/core/viewer/index.d.ts +7 -0
- package/dist/core/viewer/index.js +7 -0
- package/dist/core/viewer/selectorViewer/index.d.ts +2 -0
- package/dist/core/viewer/selectorViewer/index.js +16 -0
- package/dist/core/viewer/switchViewer/index.d.ts +2 -0
- package/dist/core/viewer/switchViewer/index.js +22 -0
- package/dist/example/antComponent.d.ts +3 -0
- package/dist/example/antComponent.js +314 -0
- package/dist/example/basic.d.ts +4 -0
- package/dist/example/basic.js +121 -0
- package/dist/example/ellipsis.d.ts +3 -0
- package/dist/example/ellipsis.js +64 -0
- package/dist/example/fixed.d.ts +3 -0
- package/dist/example/fixed.js +89 -0
- package/dist/example/group.d.ts +3 -0
- package/dist/example/group.js +123 -0
- package/dist/example/index.less +5 -0
- package/dist/example/selection.d.ts +4 -0
- package/dist/example/selection.js +86 -0
- package/dist/example/sheet.d.ts +4 -0
- package/dist/example/sheet.js +393 -0
- package/dist/example/valuationAnalyze.d.ts +2 -0
- package/dist/example/valuationAnalyze.js +227 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/useEventBus.d.ts +4 -0
- package/dist/hooks/useEventBus.js +17 -0
- package/dist/hooks/useKeyboard.d.ts +18 -0
- package/dist/hooks/useKeyboard.js +108 -0
- package/dist/hooks/useMiddlewareReducer.d.ts +12 -0
- package/dist/hooks/useMiddlewareReducer.js +47 -0
- package/dist/hooks/useMouse.d.ts +11 -0
- package/dist/hooks/useMouse.js +68 -0
- package/dist/hooks/useSetState.d.ts +2 -0
- package/dist/hooks/useSetState.js +27 -0
- package/dist/hooks/useSheetEvent.d.ts +5 -0
- package/dist/hooks/useSheetEvent.js +5 -0
- package/dist/hooks/useWidthConfig.d.ts +4 -0
- package/dist/hooks/useWidthConfig.js +5 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/standardUtils/index.d.ts +9 -0
- package/dist/standardUtils/index.js +32 -0
- package/dist/type/index.d.ts +2 -0
- package/dist/type/index.js +4 -0
- package/dist/type/sheet.d.ts +205 -0
- package/dist/type/sheet.js +9 -0
- package/dist/type/sheetTable.d.ts +89 -0
- package/dist/type/sheetTable.js +1 -0
- package/dist/typings/index.d.ts +1 -0
- package/package.json +1 -1
- 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,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,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,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,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,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
|
+
};
|