sheet-happens 0.0.55 → 0.0.57

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,6 +35,15 @@ function _extends() {
35
35
  return n;
36
36
  }, _extends.apply(null, arguments);
37
37
  }
38
+ function _objectWithoutPropertiesLoose(r, e) {
39
+ if (null == r) return {};
40
+ var t = {};
41
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
42
+ if (e.includes(n)) continue;
43
+ t[n] = r[n];
44
+ }
45
+ return t;
46
+ }
38
47
  function _unsupportedIterableToArray(r, a) {
39
48
  if (r) {
40
49
  if ("string" == typeof r) return _arrayLikeToArray(r, a);
@@ -969,7 +978,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
969
978
  pixelToRow = _ref$current2$cellLay.pixelToRow;
970
979
  onFocusChange === null || onFocusChange === void 0 ? void 0 : onFocusChange(true);
971
980
  if (knobArea && draggingKnob) {
972
- var changes = parseKnobOperation(knobArea, selection, sourceData, editData, cellReadOnly);
981
+ var changes = parseKnobOperation(knobArea, selection, editData, sourceData, cellReadOnly);
973
982
  onChange === null || onChange === void 0 ? void 0 : onChange(changes);
974
983
  onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(knobArea, true, true);
975
984
  onKnobAreaChange === null || onKnobAreaChange === void 0 ? void 0 : onKnobAreaChange(null);
@@ -1406,7 +1415,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1406
1415
  mouseHandlers: mouseHandlers
1407
1416
  };
1408
1417
  };
1409
- var parseKnobOperation = function parseKnobOperation(knobArea, selection, sourceData, editData, cellReadOnly) {
1418
+ var parseKnobOperation = function parseKnobOperation(knobArea, selection, editData, sourceData, cellReadOnly) {
1410
1419
  var _normalizeSelection7 = normalizeSelection(knobArea),
1411
1420
  _normalizeSelection7$ = _normalizeSelection7[0],
1412
1421
  kx1 = _normalizeSelection7$[0],
@@ -1441,12 +1450,14 @@ var parseKnobOperation = function parseKnobOperation(knobArea, selection, source
1441
1450
  var srcY = sy1;
1442
1451
  for (var y = fy1; y <= fy2; y++) {
1443
1452
  for (var x = fx1; x <= fx2; x++) {
1444
- var value = sourceData(x, srcY);
1453
+ var value = editData(x, srcY);
1454
+ var data = sourceData(x, srcY);
1445
1455
  if (!cellReadOnly(x, y)) {
1446
1456
  changes.push({
1447
1457
  x: x,
1448
1458
  y: y,
1449
1459
  value: value,
1460
+ data: data,
1450
1461
  source: {
1451
1462
  x: x,
1452
1463
  y: srcY
@@ -1474,12 +1485,14 @@ var parseKnobOperation = function parseKnobOperation(knobArea, selection, source
1474
1485
  var srcX = sx1;
1475
1486
  for (var _x2 = fx1; _x2 <= fx2; _x2++) {
1476
1487
  for (var _y2 = fy1; _y2 <= fy2; _y2++) {
1477
- var _value = sourceData(srcX, _y2);
1488
+ var _value = editData(srcX, _y2);
1489
+ var _data = sourceData(srcX, _y2);
1478
1490
  if (!cellReadOnly(_x2, _y2)) {
1479
1491
  changes.push({
1480
1492
  x: _x2,
1481
1493
  y: _y2,
1482
1494
  value: _value,
1495
+ data: _data,
1483
1496
  source: {
1484
1497
  x: srcX,
1485
1498
  y: _y2
@@ -2173,11 +2186,13 @@ function _catch(body, recover) {
2173
2186
  return result;
2174
2187
  }
2175
2188
 
2189
+ var _excluded = ["rows"],
2190
+ _excluded2 = ["origin"];
2176
2191
  var NON_BREAKING_SPACE = ' ';
2177
2192
  var EMPTY_TABLE = {
2178
2193
  rows: []
2179
2194
  };
2180
- var useClipboardTable = function useClipboardTable() {
2195
+ var useClipboardTable = function useClipboardTable(clipboardOrigin) {
2181
2196
  var _useState = useState(),
2182
2197
  peek = _useState[0],
2183
2198
  setPeek = _useState[1];
@@ -2194,22 +2209,17 @@ var useClipboardTable = function useClipboardTable() {
2194
2209
  };
2195
2210
  var hardRefresh = function hardRefresh() {
2196
2211
  try {
2197
- var _temp2 = _catch(function () {
2198
- return Promise.resolve(navigator.clipboard.read()).then(function (items) {
2199
- var item = items[0];
2200
- var _temp = function () {
2201
- if (item) {
2202
- return Promise.resolve(parseClipboardTable(item)).then(function (peek) {
2203
- setPeek(peek);
2204
- });
2205
- } else {
2206
- setPeek(EMPTY_TABLE);
2207
- }
2208
- }();
2209
- if (_temp && _temp.then) return _temp.then(function () {});
2212
+ var _temp = _catch(function () {
2213
+ return Promise.resolve(pasteClipboardTable()).then(function (pasted) {
2214
+ if (pasted) {
2215
+ var _peek = validateClipboardTable(pasted, clipboardOrigin);
2216
+ setPeek(_peek);
2217
+ } else {
2218
+ setPeek(EMPTY_TABLE);
2219
+ }
2210
2220
  });
2211
2221
  }, function () {});
2212
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
2222
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
2213
2223
  } catch (e) {
2214
2224
  return Promise.reject(e);
2215
2225
  }
@@ -2234,19 +2244,36 @@ var useClipboardTable = function useClipboardTable() {
2234
2244
  return {
2235
2245
  peek: peek,
2236
2246
  canPaste: canPaste,
2237
- copyTable: copyClipboardTable,
2238
- pasteTable: pasteClipboardTable
2247
+ copyTable: function copyTable(_ref) {
2248
+ var rows = _ref.rows,
2249
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
2250
+ return copyClipboardTable(rows, _extends({
2251
+ origin: clipboardOrigin
2252
+ }, rest));
2253
+ },
2254
+ pasteTable: function () {
2255
+ try {
2256
+ return Promise.resolve(pasteClipboardTable()).then(function (pasted) {
2257
+ return pasted ? validateClipboardTable(pasted, clipboardOrigin) : null;
2258
+ });
2259
+ } catch (e) {
2260
+ return Promise.reject(e);
2261
+ }
2262
+ }
2239
2263
  };
2240
2264
  };
2241
- var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly, addListener, onSelectionChange, onChange, onCopy, onPaste) {
2242
- var _useClipboardTable = useClipboardTable(),
2265
+ var useClipboardAPI = function useClipboardAPI(selection, editData, sourceData, cellReadOnly, addListener, onSelectionChange, onChange, onCopy, onPaste, clipboardOrigin) {
2266
+ if (clipboardOrigin === void 0) {
2267
+ clipboardOrigin = '';
2268
+ }
2269
+ var _useClipboardTable = useClipboardTable(clipboardOrigin),
2243
2270
  canPaste = _useClipboardTable.canPaste,
2244
2271
  copyTable = _useClipboardTable.copyTable,
2245
2272
  pasteTable = _useClipboardTable.pasteTable;
2246
2273
  var pasteIntoSelection = useCallback(function (selection, table) {
2247
2274
  try {
2248
2275
  var rows = table.rows,
2249
- payload = table.payload;
2276
+ data = table.data;
2250
2277
  var _normalizeSelection = normalizeSelection(selection),
2251
2278
  min = _normalizeSelection[0],
2252
2279
  max = _normalizeSelection[1];
@@ -2262,19 +2289,22 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
2262
2289
  var repeatX = Math.max(1, Math.floor(selectionSize[0]));
2263
2290
  var repeatY = Math.max(1, Math.floor(selectionSize[1]));
2264
2291
  var newSelection = [min, addXY(min, [width * repeatX - 1, height * repeatY - 1])];
2265
- return Promise.resolve(onPaste === null || onPaste === void 0 ? void 0 : onPaste(newSelection, rows, payload)).then(function (shouldPaste) {
2292
+ return Promise.resolve(onPaste === null || onPaste === void 0 ? void 0 : onPaste(newSelection, table)).then(function (shouldPaste) {
2266
2293
  if (shouldPaste !== false) {
2267
2294
  var changes = rows.flatMap(function (row, j) {
2268
2295
  return row.flatMap(function (value, i) {
2269
2296
  var cells = [];
2270
2297
  for (var rx = 0; rx < repeatX; ++rx) {
2271
2298
  for (var ry = 0; ry < repeatY; ++ry) {
2299
+ var _data$cells, _data$cells$j;
2272
2300
  var x = left + i + rx * width;
2273
2301
  var y = top + j + ry * height;
2302
+ var v = data === null || data === void 0 ? void 0 : (_data$cells = data.cells) === null || _data$cells === void 0 ? void 0 : (_data$cells$j = _data$cells[j]) === null || _data$cells$j === void 0 ? void 0 : _data$cells$j[i];
2274
2303
  if (!(cellReadOnly !== null && cellReadOnly !== void 0 && cellReadOnly(x, y))) cells.push({
2275
2304
  x: x,
2276
2305
  y: y,
2277
- value: value
2306
+ value: value,
2307
+ data: v
2278
2308
  });
2279
2309
  }
2280
2310
  }
@@ -2296,11 +2326,10 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
2296
2326
  cut = false;
2297
2327
  }
2298
2328
  try {
2299
- var _payload$cut;
2300
- var rows = formatSelectionAsRows(selection, editData);
2301
- var payload = onCopy === null || onCopy === void 0 ? void 0 : onCopy(selection, rows, cut);
2302
- copyTable(rows, payload);
2303
- if ((_payload$cut = payload === null || payload === void 0 ? void 0 : payload.cut) != null ? _payload$cut : cut) {
2329
+ var _onCopy, _table$cut;
2330
+ var table = (_onCopy = onCopy === null || onCopy === void 0 ? void 0 : onCopy(selection, cut)) != null ? _onCopy : formatSelectionAsRows(selection, editData, sourceData);
2331
+ copyTable(table);
2332
+ if ((_table$cut = table === null || table === void 0 ? void 0 : table.cut) != null ? _table$cut : cut) {
2304
2333
  var changes = [];
2305
2334
  forSelectionRows(selection)(function (y) {
2306
2335
  forSelectionColumns(selection)(function (x) {
@@ -2308,7 +2337,8 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
2308
2337
  var change = {
2309
2338
  x: x,
2310
2339
  y: y,
2311
- value: ''
2340
+ value: '',
2341
+ data: null
2312
2342
  };
2313
2343
  changes.push(change);
2314
2344
  }
@@ -2338,8 +2368,11 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
2338
2368
  try {
2339
2369
  e.preventDefault();
2340
2370
  var clipboardData = e.clipboardData || window.clipboardData;
2341
- return Promise.resolve(parseClipboardTable(clipboardData)).then(function (table) {
2342
- if (table) pasteIntoSelection(selection, table);
2371
+ return Promise.resolve(parseClipboardTable(clipboardData)).then(function (parsed) {
2372
+ if (parsed) {
2373
+ var table = validateClipboardTable(parsed, clipboardOrigin);
2374
+ if (table) pasteIntoSelection(selection, table);
2375
+ }
2343
2376
  });
2344
2377
  } catch (e) {
2345
2378
  return Promise.reject(e);
@@ -2365,6 +2398,21 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
2365
2398
  onClipboardPaste: onClipboardPaste
2366
2399
  };
2367
2400
  };
2401
+ var validateClipboardTable = function validateClipboardTable(parsed, clipboardOrigin) {
2402
+ var rows = parsed.rows,
2403
+ payload = parsed.payload;
2404
+ if (!payload) return {
2405
+ rows: rows
2406
+ };
2407
+ var origin = payload.origin,
2408
+ rest = _objectWithoutPropertiesLoose(payload, _excluded2);
2409
+ if (origin === clipboardOrigin) return _extends({
2410
+ rows: rows
2411
+ }, rest);
2412
+ return {
2413
+ rows: rows
2414
+ };
2415
+ };
2368
2416
  var copyClipboardTable = function copyClipboardTable(rows, payload) {
2369
2417
  try {
2370
2418
  var text = formatRowsAsTSV(rows);
@@ -2388,8 +2436,7 @@ var pasteClipboardTable = function pasteClipboardTable() {
2388
2436
  try {
2389
2437
  return Promise.resolve(navigator.clipboard.read()).then(function (items) {
2390
2438
  var item = items[0];
2391
- if (!item) return;
2392
- return parseClipboardTable(item);
2439
+ return item ? Promise.resolve(parseClipboardTable(item)) : null;
2393
2440
  });
2394
2441
  } catch (e) {
2395
2442
  return Promise.reject(e);
@@ -2397,7 +2444,7 @@ var pasteClipboardTable = function pasteClipboardTable() {
2397
2444
  };
2398
2445
  var parseClipboardTable = function parseClipboardTable(item) {
2399
2446
  try {
2400
- var _temp5 = function _temp5() {
2447
+ var _temp4 = function _temp4() {
2401
2448
  return rows ? {
2402
2449
  rows: rows,
2403
2450
  payload: payload
@@ -2415,7 +2462,7 @@ var parseClipboardTable = function parseClipboardTable(item) {
2415
2462
  return '';
2416
2463
  };
2417
2464
  var rows, payload;
2418
- var _temp4 = function () {
2465
+ var _temp3 = function () {
2419
2466
  if (has('text/html')) {
2420
2467
  return Promise.resolve(get('text/html')).then(function (pastedHtml) {
2421
2468
  var _parsePastedHtml = parsePastedHtml(pastedHtml);
@@ -2423,17 +2470,17 @@ var parseClipboardTable = function parseClipboardTable(item) {
2423
2470
  payload = _parsePastedHtml.payload;
2424
2471
  });
2425
2472
  } else {
2426
- var _temp6 = function () {
2473
+ var _temp5 = function () {
2427
2474
  if (has('text/plain')) {
2428
2475
  return Promise.resolve(get('text/plain')).then(function (text) {
2429
2476
  rows = parsePastedText(text);
2430
2477
  });
2431
2478
  }
2432
2479
  }();
2433
- if (_temp6 && _temp6.then) return _temp6.then(function () {});
2480
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
2434
2481
  }
2435
2482
  }();
2436
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
2483
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
2437
2484
  } catch (e) {
2438
2485
  return Promise.reject(e);
2439
2486
  }
@@ -2462,12 +2509,15 @@ var formatRowsAsHTML = function formatRowsAsHTML(rows, payload) {
2462
2509
  return table;
2463
2510
  };
2464
2511
  var formatTextAsHTML = function formatTextAsHTML(s) {
2465
- return s.replace(/[&"'<>]/g, function (i) {
2512
+ var _s$toString$replace;
2513
+ return (_s$toString$replace = s === null || s === void 0 ? void 0 : s.toString().replace(/[&"'<>]/g, function (i) {
2466
2514
  return "&#" + i.charCodeAt(0) + ";";
2467
- });
2515
+ })) != null ? _s$toString$replace : '';
2468
2516
  };
2469
- var formatSelectionAsRows = function formatSelectionAsRows(selection, editData) {
2470
- if (isEmptySelection(selection)) return [];
2517
+ var formatSelectionAsRows = function formatSelectionAsRows(selection, editData, sourceData) {
2518
+ if (isEmptySelection(selection)) return {
2519
+ rows: []
2520
+ };
2471
2521
  var _normalizeSelection2 = normalizeSelection(selection),
2472
2522
  _normalizeSelection2$ = _normalizeSelection2[0],
2473
2523
  minX = _normalizeSelection2$[0],
@@ -2487,18 +2537,27 @@ var formatSelectionAsRows = function formatSelectionAsRows(selection, editData)
2487
2537
  minY = 0;
2488
2538
  maxY = cellY;
2489
2539
  }
2490
- var rows = [];
2540
+ var texts = [];
2541
+ var datas = {};
2491
2542
  for (var y = minY; y <= maxY; y++) {
2492
- var row = [];
2543
+ var textRow = [];
2544
+ var dataRow = {};
2493
2545
  for (var x = minX; x <= maxX; x++) {
2494
- var value = editData(x, y);
2495
- if (value !== null && value !== undefined) {
2496
- row.push(value != null ? value : '');
2497
- }
2546
+ var _editData, _sourceData;
2547
+ var value = (_editData = editData(x, y)) != null ? _editData : '';
2548
+ var data = (_sourceData = sourceData(x, y)) != null ? _sourceData : null;
2549
+ dataRow[textRow.length] = data;
2550
+ textRow.push(value);
2498
2551
  }
2499
- rows.push(row);
2552
+ datas[texts.length] = dataRow;
2553
+ texts.push(textRow);
2500
2554
  }
2501
- return rows;
2555
+ return {
2556
+ rows: texts,
2557
+ data: {
2558
+ cells: datas
2559
+ }
2560
+ };
2502
2561
  };
2503
2562
  var _findTag = function findTag(element, tagName) {
2504
2563
  for (var _iterator = _createForOfIteratorHelperLoose(element.children), _step; !(_step = _iterator()).done;) {
@@ -2522,9 +2581,11 @@ var parsePastedHtml = function parsePastedHtml(html) {
2522
2581
  var json = sheetNode.getAttribute('payload');
2523
2582
  try {
2524
2583
  payload = JSON.parse(json);
2584
+ if (!payload || typeof payload !== 'object') payload = null;
2525
2585
  } catch (e) {}
2526
2586
  }
2527
2587
  var tableNode = _findTag(div, 'TABLE');
2588
+ var spanNode = _findTag(div, 'SPAN');
2528
2589
  if (tableNode) {
2529
2590
  for (var _iterator2 = _createForOfIteratorHelperLoose(tableNode.children), _step2; !(_step2 = _iterator2()).done;) {
2530
2591
  var tableChild = _step2.value;
@@ -2557,6 +2618,12 @@ var parsePastedHtml = function parsePastedHtml(html) {
2557
2618
  }
2558
2619
  }
2559
2620
  }
2621
+ } else if (spanNode) {
2622
+ var _str = '';
2623
+ _str = spanNode.textContent.trim();
2624
+ _str = _str.replaceAll('\n', '');
2625
+ _str = _str.replaceAll(/\s\s+/g, ' ');
2626
+ rows.push([_str]);
2560
2627
  }
2561
2628
  return {
2562
2629
  rows: rows,
@@ -3420,7 +3487,7 @@ var resolveSheetStyle = function resolveSheetStyle(sheetStyle) {
3420
3487
  };
3421
3488
 
3422
3489
  var Sheet = forwardRef(function (props, ref) {
3423
- var _props$selection, _props$secondarySelec, _props$cacheLayout, _props$inputComponent;
3490
+ var _props$selection, _props$secondarySelec, _props$cacheLayout, _props$clipboardOrigi, _props$inputComponent2;
3424
3491
  var canvasRef = useRef(null);
3425
3492
  var overlayRef = useRef(null);
3426
3493
  var _useState = useState(INITIAL_MAX_SCROLL),
@@ -3461,9 +3528,12 @@ var Sheet = forwardRef(function (props, ref) {
3461
3528
  var _useState11 = useState(''),
3462
3529
  editValue = _useState11[0],
3463
3530
  setEditValue = _useState11[1];
3464
- var _useState12 = useState(false),
3465
- arrowKeyCommitMode = _useState12[0],
3466
- setArrowKeyCommitMode = _useState12[1];
3531
+ var _useState12 = useState(null),
3532
+ sourceValue = _useState12[0],
3533
+ setSourceValue = _useState12[1];
3534
+ var _useState13 = useState(false),
3535
+ arrowKeyCommitMode = _useState13[0],
3536
+ setArrowKeyCommitMode = _useState13[1];
3467
3537
  var _useResizeObserver = useResizeObserver({
3468
3538
  ref: overlayRef
3469
3539
  }),
@@ -3623,16 +3693,21 @@ var Sheet = forwardRef(function (props, ref) {
3623
3693
  if (props.onChange) {
3624
3694
  var cellX = editCell[0],
3625
3695
  cellY = editCell[1];
3696
+ var hasData = !!input;
3697
+ var v = hasData ? null : value;
3698
+ var d = hasData ? value : null;
3626
3699
  props.onChange([{
3627
3700
  x: cellX,
3628
3701
  y: cellY,
3629
- value: value !== undefined ? value : editValue
3702
+ value: value !== undefined ? v : editValue,
3703
+ data: value !== undefined ? d : sourceValue
3630
3704
  }]);
3631
3705
  }
3632
3706
  setEditCell(NO_CELL);
3633
3707
  setFocused(true);
3634
3708
  };
3635
3709
  var startEditingCell = function startEditingCell(editCell, arrowKeyCommitMode) {
3710
+ var _props$inputComponent, _editData, _sourceData;
3636
3711
  if (arrowKeyCommitMode === void 0) {
3637
3712
  arrowKeyCommitMode = false;
3638
3713
  }
@@ -3641,13 +3716,18 @@ var Sheet = forwardRef(function (props, ref) {
3641
3716
  if (cellReadOnly(cellX, cellY)) {
3642
3717
  return;
3643
3718
  }
3644
- var editDataValue = editData(cellX, cellY);
3645
- var val = '';
3646
- if (editDataValue !== null && editDataValue !== undefined) {
3647
- val = editDataValue;
3719
+ var hasData = !!((_props$inputComponent = props.inputComponent) !== null && _props$inputComponent !== void 0 && _props$inputComponent.call(props, cellX, cellY, _extends({}, inputProps, {
3720
+ onChange: function onChange() {}
3721
+ }), function () {}));
3722
+ var editValue = (_editData = editData(cellX, cellY)) != null ? _editData : '';
3723
+ var sourceValue = (_sourceData = sourceData(cellX, cellY)) != null ? _sourceData : null;
3724
+ if (hasData) {
3725
+ setEditValue(null);
3726
+ setSourceValue(sourceValue);
3727
+ } else {
3728
+ setEditValue(editValue);
3648
3729
  }
3649
3730
  setEditCell(editCell);
3650
- setEditValue(val);
3651
3731
  setArrowKeyCommitMode(arrowKeyCommitMode);
3652
3732
  setLastEditKey(editKeys.apply(void 0, editCell));
3653
3733
  };
@@ -3666,7 +3746,7 @@ var Sheet = forwardRef(function (props, ref) {
3666
3746
  }, [maxRows, maxColumns]);
3667
3747
  var hitmapRef = useRef(NO_CLICKABLES);
3668
3748
  var isFocused = focused || editMode;
3669
- var _useClipboardAPI = useClipboardAPI(selection, editData, cellReadOnly, isFocused && !editMode, changeSelection, props.onChange, props.onCopy, props.onPaste),
3749
+ var _useClipboardAPI = useClipboardAPI(selection, editData, sourceData, cellReadOnly, isFocused && !editMode, changeSelection, props.onChange, props.onCopy, props.onPaste, (_props$clipboardOrigi = props.clipboardOrigin) != null ? _props$clipboardOrigi : location.origin),
3670
3750
  clipboardApi = _useClipboardAPI.clipboardApi,
3671
3751
  onClipboardCopy = _useClipboardAPI.onClipboardCopy;
3672
3752
  var onScroll = useScroll(dataOffset, maxScroll, cellLayout, setDataOffset, setMaxScroll);
@@ -3697,9 +3777,9 @@ var Sheet = forwardRef(function (props, ref) {
3697
3777
  window.cancelAnimationFrame(animationFrameId);
3698
3778
  };
3699
3779
  }, [cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset]);
3700
- var _useState13 = useState(''),
3701
- lastEditKey = _useState13[0],
3702
- setLastEditKey = _useState13[1];
3780
+ var _useState14 = useState(''),
3781
+ lastEditKey = _useState14[0],
3782
+ setLastEditKey = _useState14[1];
3703
3783
  var editTextPosition = ORIGIN;
3704
3784
  var editTextWidth = 0;
3705
3785
  var editTextHeight = 0;
@@ -3732,7 +3812,7 @@ var Sheet = forwardRef(function (props, ref) {
3732
3812
  textX = _editTextPosition[0],
3733
3813
  textY = _editTextPosition[1];
3734
3814
  var inputProps = {
3735
- value: editValue,
3815
+ value: editValue != null ? editValue : '',
3736
3816
  autoFocus: true,
3737
3817
  onKeyDown: onInputKeyDown,
3738
3818
  style: {
@@ -3753,8 +3833,8 @@ var Sheet = forwardRef(function (props, ref) {
3753
3833
  resize: 'none'
3754
3834
  }
3755
3835
  };
3756
- var input = (_props$inputComponent = props.inputComponent) === null || _props$inputComponent === void 0 ? void 0 : _props$inputComponent.call(props, editCellX, editCellY, _extends({}, inputProps, {
3757
- onChange: setEditValue
3836
+ var input = (_props$inputComponent2 = props.inputComponent) === null || _props$inputComponent2 === void 0 ? void 0 : _props$inputComponent2.call(props, editCellX, editCellY, _extends({}, inputProps, {
3837
+ onChange: setSourceValue
3758
3838
  }), commitEditingCell);
3759
3839
  var overlayDivClassName = styles.sheetscroll;
3760
3840
  var overlayDivStyles = {