@zhenliang/sheet 0.1.55 → 0.1.57-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.
@@ -95,7 +95,8 @@ export var getNumberEditor = function getNumberEditor(extraProps, getExtraProps)
95
95
  return;
96
96
  }
97
97
  if (!value) {
98
- return handleChange('');
98
+ handleChange(null);
99
+ return;
99
100
  }
100
101
  if (max && +value > max) {
101
102
  handleChange(max);
@@ -357,8 +357,11 @@ export var sideEffectReducer = {
357
357
  start = _getState10.start,
358
358
  end = _getState10.end,
359
359
  history = _getState10.history,
360
+ _getState10$recoverHi = _getState10.recoverHisotry,
361
+ recoverHisotry = _getState10$recoverHi === void 0 ? [] : _getState10$recoverHi,
360
362
  cellChangeHandler = _getState10.cellChangeHandler,
361
- eventBus = _getState10.eventBus;
363
+ eventBus = _getState10.eventBus,
364
+ data = _getState10.data;
362
365
  if (!(history !== null && history !== void 0 && history.length)) return;
363
366
  var changeHistory = _toConsumableArray(history);
364
367
  var change = changeHistory.pop();
@@ -368,12 +371,70 @@ export var sideEffectReducer = {
368
371
  dispatch({
369
372
  type: 'changes',
370
373
  payload: {
371
- history: changeHistory
374
+ history: changeHistory,
375
+ recoverHisotry: [].concat(_toConsumableArray(recoverHisotry), [change])
372
376
  }
373
377
  });
374
378
  return;
375
379
  }
376
380
  cellChangeHandler && cellChangeHandler(change.changes);
381
+ var recoverChange = _objectSpread(_objectSpread({}, change), {}, {
382
+ changes: change.changes.map(function (item) {
383
+ var _item$row, _item$col;
384
+ return _objectSpread(_objectSpread({}, item), {}, {
385
+ value: data[(_item$row = item.row) !== null && _item$row !== void 0 ? _item$row : 0][(_item$col = item.col) !== null && _item$col !== void 0 ? _item$col : -1].value
386
+ });
387
+ })
388
+ });
389
+ dispatch({
390
+ type: 'changes',
391
+ payload: {
392
+ start: pick(head(change.changes), ['row', 'col']),
393
+ end: pick(last(change.changes), ['row', 'col']),
394
+ lastSelected: {
395
+ start: start,
396
+ end: end
397
+ },
398
+ history: changeHistory,
399
+ recoverHisotry: [].concat(_toConsumableArray(recoverHisotry), [recoverChange])
400
+ }
401
+ });
402
+ },
403
+ recover: function recover(dispatch, getState) {
404
+ var _getState11 = getState(),
405
+ eventBus = _getState11.eventBus,
406
+ _getState11$recoverHi = _getState11.recoverHisotry,
407
+ recoverHisotry = _getState11$recoverHi === void 0 ? [] : _getState11$recoverHi,
408
+ _getState11$history = _getState11.history,
409
+ history = _getState11$history === void 0 ? [] : _getState11$history,
410
+ cellChangeHandler = _getState11.cellChangeHandler,
411
+ start = _getState11.start,
412
+ end = _getState11.end,
413
+ data = _getState11.data;
414
+ if (!(recoverHisotry !== null && recoverHisotry !== void 0 && recoverHisotry.length)) return;
415
+ var changeHistory = _toConsumableArray(recoverHisotry);
416
+ var change = changeHistory.pop();
417
+ var type = change.type;
418
+ if (!['Edit', 'Paste', 'Delete'].includes(type)) {
419
+ eventBus.emit('recover', change);
420
+ dispatch({
421
+ type: 'changes',
422
+ payload: {
423
+ recoverHisotry: changeHistory,
424
+ history: [].concat(_toConsumableArray(history), [change])
425
+ }
426
+ });
427
+ return;
428
+ }
429
+ var reverseChange = _objectSpread(_objectSpread({}, change), {}, {
430
+ changes: change.changes.map(function (item) {
431
+ var _item$row2, _item$col2;
432
+ return _objectSpread(_objectSpread({}, item), {}, {
433
+ value: data[(_item$row2 = item.row) !== null && _item$row2 !== void 0 ? _item$row2 : 0][(_item$col2 = item.col) !== null && _item$col2 !== void 0 ? _item$col2 : -1].value
434
+ });
435
+ })
436
+ });
437
+ cellChangeHandler && cellChangeHandler(change.changes);
377
438
  dispatch({
378
439
  type: 'changes',
379
440
  payload: {
@@ -383,7 +444,8 @@ export var sideEffectReducer = {
383
444
  start: start,
384
445
  end: end
385
446
  },
386
- history: changeHistory
447
+ history: [].concat(_toConsumableArray(history), [reverseChange]),
448
+ recoverHisotry: changeHistory
387
449
  }
388
450
  });
389
451
  }
@@ -10,7 +10,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
10
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
11
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
12
12
  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); }
13
- import { SheetType } from "../..";
13
+ import { stripRowIndex } from "../util";
14
14
  export var searchReducer = {
15
15
  changeSearch: function changeSearch(state, payload) {
16
16
  var data = state.data;
@@ -177,27 +177,20 @@ export var stateReducer = _objectSpread({
177
177
  });
178
178
  },
179
179
  selectOneRow: function selectOneRow(state, payload) {
180
- var _state$data4, _state$data$0$length, _state$data5, _state$data6;
181
- var startCol = ((_state$data4 = state.data) === null || _state$data4 === void 0 || (_state$data4 = _state$data4[0]) === null || _state$data4 === void 0 ? void 0 : _state$data4.findIndex(function (item) {
182
- return !item.fixed;
183
- })) || 0;
184
- var endCol = ((_state$data$0$length = (_state$data5 = state.data) === null || _state$data5 === 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;
185
- var lastFixed = (_state$data6 = state.data) === null || _state$data6 === void 0 || (_state$data6 = _state$data6[0]) === null || _state$data6 === void 0 ? void 0 : _state$data6.find(function (item) {
186
- return item.fixed === SheetType.CellAlign.right;
187
- });
188
- if (lastFixed) {
189
- var _state$data$0$indexOf, _state$data7;
190
- 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;
191
- }
192
- if (startCol >= 0 && endCol >= 0) {
180
+ var _state$data4 = state.data,
181
+ data = _state$data4 === void 0 ? [] : _state$data4;
182
+ var _stripRowIndex = stripRowIndex(data),
183
+ startIndex = _stripRowIndex.startIndex,
184
+ endIndex = _stripRowIndex.endIndex;
185
+ if (startIndex >= 0 && endIndex >= 0) {
193
186
  return _objectSpread(_objectSpread({}, state), {}, {
194
187
  start: {
195
188
  row: payload,
196
- col: startCol
189
+ col: startIndex
197
190
  },
198
191
  end: {
199
192
  row: payload,
200
- col: endCol
193
+ col: endIndex
201
194
  },
202
195
  lastSelected: {
203
196
  start: state.start,
@@ -35,6 +35,10 @@ export var useKeyBoardEvent = function useKeyBoardEvent(dispatch, elementRef) {
35
35
  reverse: function reverse() {
36
36
  dispatch(sideEffectReducer.reverse);
37
37
  },
38
+ recover: function recover(e) {
39
+ e.preventDefault();
40
+ dispatch(sideEffectReducer.recover);
41
+ },
38
42
  delete: function _delete() {
39
43
  dispatch(sideEffectReducer.delete);
40
44
  },
@@ -9,6 +9,7 @@ type KeyboardHandler = {
9
9
  copy: KeyOrClipBoardEvent;
10
10
  paste: KeyOrClipBoardEvent;
11
11
  reverse: KeyOrClipBoardEvent;
12
+ recover: KeyOrClipBoardEvent;
12
13
  cut: KeyOrClipBoardEvent;
13
14
  search: KeyOrClipBoardEvent;
14
15
  };
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useEffect } from 'react';
2
- import { A_KEY, BACKSPACE_KEY, C_KEY, DELETE_KEY, DOWN_KEY, ENTER_KEY, ESCAPE_KEY, F_KEY, LEFT_KEY, RIGHT_KEY, TAB_KEY, UP_KEY, V_KEY, X_KEY, Z_KEY } from "../core/config";
2
+ import { A_KEY, BACKSPACE_KEY, C_KEY, DELETE_KEY, DOWN_KEY, ENTER_KEY, ESCAPE_KEY, F_KEY, LEFT_KEY, RIGHT_KEY, TAB_KEY, UP_KEY, V_KEY, X_KEY, Y_KEY, Z_KEY } from "../core/config";
3
3
  import { isInputKey } from "../core/util";
4
4
  var ua = window.navigator.userAgent;
5
5
  var isIE = /MSIE|Trident/.test(ua);
@@ -56,11 +56,15 @@ export var useKeyBoard = function useKeyBoard(handler, listenElement) {
56
56
  handler.search(e);
57
57
  return;
58
58
  }
59
- var isReverse = ctrlKeyPressed && keyCode === Z_KEY;
59
+ var isReverse = ctrlKeyPressed && keyCode === Z_KEY && !shiftKey;
60
60
  if (isReverse) {
61
61
  handler.reverse(e);
62
62
  return;
63
63
  }
64
+ var isRecover = ctrlKeyPressed && (keyCode === Z_KEY && shiftKey || keyCode === Y_KEY);
65
+ if (isRecover) {
66
+ handler.recover(e);
67
+ }
64
68
  var isSelectAll = ctrlKeyPressed && keyCode === A_KEY;
65
69
  if (isSelectAll) {
66
70
  handler.selectAll(e);
@@ -191,6 +191,7 @@ export type UpdateStateType = {
191
191
  value?: string;
192
192
  };
193
193
  history: OperateHistory[];
194
+ recoverHisotry: OperateHistory[];
194
195
  freePaste?: boolean;
195
196
  data: Cell[][];
196
197
  mouseDown: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhenliang/sheet",
3
- "version": "0.1.55",
3
+ "version": "0.1.57-beta.0",
4
4
  "description": "A react library developed with dumi",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",