@zhenliang/sheet 0.1.56 → 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
  }
@@ -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.56",
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",