@zhenliang/sheet 0.1.7-3.beta.9 → 0.1.7-4.beta.2

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.
@@ -35,7 +35,7 @@ export var sideEffectReducer = {
35
35
  cell: cell
36
36
  }
37
37
  });
38
- cellChangeHandler && cellChangeHandler([cell]);
38
+ cellChangeHandler && cellChangeHandler([cell], undefined, 'Edit');
39
39
  });
40
40
  });
41
41
  eventBus.on('cell-create', function (_ref) {
@@ -307,7 +307,7 @@ export var sideEffectReducer = {
307
307
  }
308
308
  }
309
309
  });
310
- cellChangeHandler && cellChangeHandler(legalChanges, freePaste ? legalExtChanges : []);
310
+ cellChangeHandler && cellChangeHandler(legalChanges, freePaste ? legalExtChanges : [], 'Paste');
311
311
  case 18:
312
312
  case "end":
313
313
  return _context.stop();
@@ -364,7 +364,7 @@ export var sideEffectReducer = {
364
364
  history: newHistory
365
365
  }
366
366
  });
367
- cellChangeHandler && cellChangeHandler(changes);
367
+ cellChangeHandler && cellChangeHandler(changes, undefined, 'Delete');
368
368
  },
369
369
  reverse: function reverse(dispatch, getState) {
370
370
  var _getState10 = getState(),
@@ -391,7 +391,7 @@ export var sideEffectReducer = {
391
391
  });
392
392
  return;
393
393
  }
394
- cellChangeHandler && cellChangeHandler(change.changes);
394
+ cellChangeHandler && cellChangeHandler(change.changes, undefined, 'Reverse');
395
395
  var recoverChange = _objectSpread(_objectSpread({}, change), {}, {
396
396
  changes: change.changes.map(function (item) {
397
397
  var _item$row, _item$col;
@@ -448,7 +448,7 @@ export var sideEffectReducer = {
448
448
  });
449
449
  })
450
450
  });
451
- cellChangeHandler && cellChangeHandler(change.changes);
451
+ cellChangeHandler && cellChangeHandler(change.changes, undefined, 'Recover');
452
452
  dispatch({
453
453
  type: 'changes',
454
454
  payload: {
@@ -8,9 +8,9 @@ export var Remark = /*#__PURE__*/forwardRef(function (props, ref) {
8
8
  var rightOverflow = document.body.clientWidth - position.left < 400;
9
9
  var bottomOverflow = document.body.clientHeight - position.top < 400;
10
10
  if (rightOverflow && bottomOverflow) {
11
- return "translate(-100%, -100%)";
11
+ return "translate(calc(-100% - 4px), calc(-100% - 4px))";
12
12
  } else if (rightOverflow && !bottomOverflow) {
13
- return "translate(-100%, 40px)";
13
+ return "translate(calc(-100% - 4px), 44px)";
14
14
  } else if (!rightOverflow && bottomOverflow) {
15
15
  return "translate(0, calc(40px - 100%))";
16
16
  }
@@ -1,3 +1,9 @@
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
+ 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(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); }
1
7
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
8
  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
9
  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); }
@@ -201,6 +207,16 @@ var Sheet = function Sheet(props) {
201
207
  }
202
208
  });
203
209
  return history !== null && history !== void 0 ? history : [];
210
+ },
211
+ call: function call(caller) {
212
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
213
+ args[_key - 1] = arguments[_key];
214
+ }
215
+ return dispatch(function (d, getState) {
216
+ var _getState3 = getState(),
217
+ data = _getState3.data;
218
+ caller === null || caller === void 0 || caller.apply(void 0, args.concat([data]));
219
+ });
204
220
  }
205
221
  };
206
222
  }, [state.history]);
@@ -221,6 +237,21 @@ var Sheet = function Sheet(props) {
221
237
  useMouseEvent(dispatch, sheetWrapperRef);
222
238
  useKeyBoardEvent(dispatch, sheetWrapperRef);
223
239
  var menu = useContextMenu(dispatch, sheetWrapperRef, !!ContextMenu, contextMenuRef);
240
+ var menuCell = useMemo(function () {
241
+ var _data$cellPosition$ro, _data$cellPosition$ro2, _data$cellPosition$ro3;
242
+ var cellPosition = menu.cellPosition,
243
+ showMenu = menu.showMenu;
244
+ if (!showMenu) {
245
+ return cellPosition;
246
+ }
247
+ var _ref2 = (_data$cellPosition$ro = data === null || data === void 0 || (_data$cellPosition$ro2 = data[cellPosition.row]) === null || _data$cellPosition$ro2 === void 0 ? void 0 : _data$cellPosition$ro2[cellPosition.col - 1 - ((_data$cellPosition$ro3 = data[cellPosition.row][0].col) !== null && _data$cellPosition$ro3 !== void 0 ? _data$cellPosition$ro3 : 0)]) !== null && _data$cellPosition$ro !== void 0 ? _data$cellPosition$ro : {},
248
+ id = _ref2.id,
249
+ dataIndex = _ref2.dataIndex;
250
+ return _objectSpread(_objectSpread({}, cellPosition), {}, {
251
+ id: id,
252
+ key: dataIndex
253
+ });
254
+ }, [data, menu.cellPosition]);
224
255
  var _useRemarkContainer = useRemarkContainer(sheetWrapperRef, state.start, state.editing, showRemark),
225
256
  remarkInfo = _useRemarkContainer.remarkInfo;
226
257
 
@@ -383,7 +414,7 @@ var Sheet = function Sheet(props) {
383
414
  }, "sheet"), /*#__PURE__*/_jsx(Menu, {
384
415
  ref: contextMenuRef,
385
416
  position: menu.position,
386
- cell: menu.cellPosition,
417
+ cell: menuCell,
387
418
  showMenu: menu.showMenu,
388
419
  contextMenu: ContextMenu,
389
420
  onContextMenu: onContextMenu
@@ -386,9 +386,11 @@ span.harvest-sheet-container:focus {
386
386
  z-index: 10;
387
387
  margin-left: 5px;
388
388
  overflow: auto;
389
+ scroll-behavior: smooth;
389
390
  padding: 0;
390
391
  background: rgb(255,255,255);
391
392
  box-shadow: 0 4px 8px rgba(216,223,235,.5);
393
+ transition: top .1s linear,left .1s linear,transform .05s linear;
392
394
  }
393
395
  .harvest-remark-container::-webkit-scrollbar{
394
396
  display: none;
@@ -188,7 +188,9 @@ export var useMouseEvent = function useMouseEvent(dispatch, elementRef) {
188
188
  });
189
189
  }, []);
190
190
  var mouseUp = useCallback(function (e) {
191
- e.preventDefault();
191
+ // input select 问题
192
+ // e.preventDefault();
193
+
192
194
  resetInterval();
193
195
  var currentCell = findParentTd(e.target);
194
196
  if (!currentCell || currentCell.classList.contains('fixed')) {
@@ -287,7 +289,7 @@ export var useMouseEvent = function useMouseEvent(dispatch, elementRef) {
287
289
  }, []);
288
290
  useEffect(function () {
289
291
  if (elementRef.current) {
290
- if (navigator.appVersion.indexOf("Mac") !== -1) {
292
+ if (navigator.appVersion.indexOf('Mac') !== -1) {
291
293
  elementRef.current.style.setProperty('--arrow-down', 'var(--arrow-mac-down)');
292
294
  elementRef.current.style.setProperty('--arrow-right', 'var(--arrow-mac-right)');
293
295
  }
@@ -62,21 +62,44 @@ export var useRemarkContainer = function useRemarkContainer(elementRef, start, e
62
62
  }, [showRemark, editing]);
63
63
  useEffect(function () {
64
64
  var _elementRef$current, _elementRef$current2;
65
- var remarkScroll = throttle(function () {
66
- setRemarkInfo({
67
- show: false
68
- });
69
- }, 50);
65
+ var scrollTimer;
70
66
  var remarkScrollEnd = function remarkScrollEnd() {
71
67
  var position = calcPosition();
72
68
  if (!position) {
73
69
  return;
74
70
  }
71
+ // end called
72
+ if (scrollTimer) {
73
+ clearTimeout(scrollTimer);
74
+ }
75
75
  setRemarkInfo({
76
76
  position: position,
77
77
  show: position.visible && showRemark && !editing && position.left > 0 && position.top > 0
78
78
  });
79
79
  };
80
+ var remarkScroll = throttle(function () {
81
+ var _ref = elementRef.current || {},
82
+ _ref$scrollTop = _ref.scrollTop,
83
+ scrollTop = _ref$scrollTop === void 0 ? 0 : _ref$scrollTop,
84
+ _ref$scrollHeight = _ref.scrollHeight,
85
+ scrollHeight = _ref$scrollHeight === void 0 ? 0 : _ref$scrollHeight,
86
+ _ref$clientHeight = _ref.clientHeight,
87
+ clientHeight = _ref$clientHeight === void 0 ? 0 : _ref$clientHeight;
88
+ // 滚动条抖动导致的
89
+ if (Math.abs(clientHeight + scrollTop - scrollHeight) <= 1) {
90
+ return;
91
+ }
92
+ setRemarkInfo({
93
+ show: false
94
+ });
95
+ if (scrollTimer) {
96
+ clearTimeout(scrollTimer);
97
+ }
98
+ scrollTimer = setTimeout(function () {
99
+ remarkScrollEnd();
100
+ clearTimeout(scrollTimer);
101
+ }, 100);
102
+ }, 50);
80
103
  (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 || _elementRef$current.addEventListener('scroll', remarkScroll);
81
104
  (_elementRef$current2 = elementRef.current) === null || _elementRef$current2 === void 0 || _elementRef$current2.addEventListener('scrollend', remarkScrollEnd);
82
105
  return function () {
@@ -96,13 +119,13 @@ export var useRemarkContainer = function useRemarkContainer(elementRef, start, e
96
119
  }
97
120
  var io = new IntersectionObserver(function (entries) {
98
121
  var ratio = entries[0].intersectionRatio;
99
- if (ratio < 1) {
122
+ if (ratio < 0.5) {
100
123
  setRemarkInfo({
101
124
  show: false
102
125
  });
103
126
  }
104
127
  }, {
105
- threshold: 1
128
+ threshold: 0.5
106
129
  });
107
130
  io.observe(cell);
108
131
  return function () {
@@ -69,14 +69,14 @@ var Table = function Table(_ref) {
69
69
  useImperativeHandle(sheetRef, function () {
70
70
  return new Proxy({}, {
71
71
  get: function get(target, property) {
72
- var _sheetInstance$curren3;
72
+ var _sheetInstance$curren4;
73
73
  if (property === 'goToByTable') {
74
- return function (id, columnKey) {
75
- var _sheetInstance$curren, _sheetInstance$curren2;
76
- var toCol = columns.findIndex(function (column) {
77
- return column.dataIndex === columnKey;
78
- }) + offset;
79
- var toRow = data.findIndex(function (d) {
74
+ var goToByTable = function goToByTable(id, columnKey, currentData) {
75
+ var _currentData$, _sheetInstance$curren, _sheetInstance$curren2;
76
+ var toCol = currentData === null || currentData === void 0 || (_currentData$ = currentData[0]) === null || _currentData$ === void 0 ? void 0 : _currentData$.findIndex(function (d) {
77
+ return d.dataIndex === columnKey;
78
+ });
79
+ var toRow = currentData.findIndex(function (d) {
80
80
  return String(d === null || d === void 0 ? void 0 : d[0].id) === String(id);
81
81
  });
82
82
  (_sheetInstance$curren = sheetInstance.current) === null || _sheetInstance$curren === void 0 || _sheetInstance$curren.goTo(toRow, toCol);
@@ -91,11 +91,18 @@ var Table = function Table(_ref) {
91
91
  }
92
92
  });
93
93
  };
94
+ return function () {
95
+ var _sheetInstance$curren3;
96
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
97
+ args[_key] = arguments[_key];
98
+ }
99
+ (_sheetInstance$curren3 = sheetInstance.current) === null || _sheetInstance$curren3 === void 0 || _sheetInstance$curren3.call.apply(_sheetInstance$curren3, [goToByTable].concat(args));
100
+ };
94
101
  }
95
- return (_sheetInstance$curren3 = sheetInstance.current) === null || _sheetInstance$curren3 === void 0 ? void 0 : _sheetInstance$curren3[property];
102
+ return (_sheetInstance$curren4 = sheetInstance.current) === null || _sheetInstance$curren4 === void 0 ? void 0 : _sheetInstance$curren4[property];
96
103
  }
97
104
  });
98
- }, [columns, data]);
105
+ }, [columns, dataSource, offset]);
99
106
  var _useRowSelection = useRowSelection(dataSource, rowSelection, hasChildren),
100
107
  _useRowSelection2 = _slicedToArray(_useRowSelection, 2),
101
108
  checkedRow = _useRowSelection2[0],
@@ -133,7 +140,7 @@ var Table = function Table(_ref) {
133
140
  setData([[]]);
134
141
  }
135
142
  }, [dataSource, columns]);
136
- var handleChanges = useCallback(function (changes, extChange) {
143
+ var handleChanges = useCallback(function (changes, extChange, type) {
137
144
  if (freeze) return;
138
145
  onChange && onChange(changes.map(function (item) {
139
146
  return {
@@ -151,7 +158,7 @@ var Table = function Table(_ref) {
151
158
  key: item.key || columns[item.col - offset].dataIndex,
152
159
  value: item.value
153
160
  };
154
- }));
161
+ }), type);
155
162
  }, [columns, onChange, hasControl, freeze]);
156
163
  var handleReverse = useCallback(function (value) {
157
164
  var _ref2 = value,
@@ -69,8 +69,9 @@ export type CellData = {
69
69
  key?: string;
70
70
  value?: string;
71
71
  };
72
+ export type ChangeType = 'Edit' | 'Paste' | 'Delete' | 'Reverse' | 'Recover';
72
73
  export type CellNavigable = (cell?: Cell, row?: number, col?: number) => boolean;
73
- export type CellChangeHandler = (cells: CellData[], additions?: CellData[]) => void;
74
+ export type CellChangeHandler = (cells: CellData[], additions: CellData[] | undefined, type: ChangeType) => void;
74
75
  export type RowGroup = {
75
76
  groupName: string;
76
77
  groupStart: number;
@@ -90,7 +91,7 @@ export type MenuRenderProps = {
90
91
  top: number;
91
92
  left: number;
92
93
  };
93
- cell?: CellPosition;
94
+ cell?: CellPosition & Partial<Cell>;
94
95
  onContextMenu?: (event: any) => void;
95
96
  children?: ReactNode | ReactNode[];
96
97
  target?: any;
@@ -106,6 +107,7 @@ export type SheetInstance = {
106
107
  }) => void;
107
108
  popHistory: () => OperateHistory;
108
109
  dropHistory: () => OperateHistory[];
110
+ call: (caller: (...args: any) => void, ...args: any) => void;
109
111
  };
110
112
  export type SheetProps = {
111
113
  sheetInstance?: React.MutableRefObject<SheetInstance | null>;
@@ -232,7 +234,7 @@ export type UpdateStateType = {
232
234
  lastEditing: CellPosition & {
233
235
  confirm?: boolean;
234
236
  };
235
- cellChangeHandler: (cells: CellData[], additions?: CellData[]) => void;
237
+ cellChangeHandler: (cells: CellData[], additions: CellData[] | undefined, type: ChangeType) => void;
236
238
  fixedInfo: SheetType.FixedInfo[];
237
239
  } & SearchState;
238
240
  export type UpdateFocus = (start: CellPosition, end: CellPosition) => void;
@@ -1,5 +1,6 @@
1
1
  import { CSSProperties, ReactNode } from 'react';
2
2
  import { SheetType } from '.';
3
+ import { ChangeType } from './sheet';
3
4
  export type refAssertion = {
4
5
  contains?: (target: EventTarget | null) => boolean;
5
6
  focus?: () => boolean;
@@ -100,7 +101,7 @@ export type TableProps = {
100
101
  groupConfig?: TableGroupConfig;
101
102
  menuRenderer?: React.FC<SheetType.MenuRenderProps>;
102
103
  onContextMenu?: (event: any) => void;
103
- onChange: (changes: TableChange[], extChanges?: TableChange[]) => void;
104
+ onChange: (changes: TableChange[], extChanges: TableChange[] | undefined, type: ChangeType) => void;
104
105
  handleAdd?: () => void;
105
106
  handleBatchAdd?: (value: number) => void;
106
107
  eventHandler?: Record<'reverse' | 'btn-click' | 'cell-edit' | 'cell-switch' | string, undefined | EventHandler>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhenliang/sheet",
3
- "version": "0.1.73.beta.9",
3
+ "version": "0.1.74.beta.2",
4
4
  "description": "A react library developed with dumi",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",
@@ -85,4 +85,4 @@
85
85
  "fizz.zhou@ap.jll.com"
86
86
  ],
87
87
  "preid": "beta"
88
- }
88
+ }