handsontable 0.0.0-next-d4ae6d7-20221205 → 0.0.0-next-0c2e6f8-20221206

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-d4ae6d7-20221205
29
- * Release date: 25/10/2022 (built at 05/12/2022 10:27:39)
28
+ * Version: 0.0.0-next-0c2e6f8-20221206
29
+ * Release date: 25/10/2022 (built at 06/12/2022 11:00:58)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -3075,7 +3075,7 @@ var domMessages = {
3075
3075
  function _injectProductInfo(key, element) {
3076
3076
  var hasValidType = !isEmpty(key);
3077
3077
  var isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
3078
- var hotVersion = "0.0.0-next-d4ae6d7-20221205";
3078
+ var hotVersion = "0.0.0-next-0c2e6f8-20221206";
3079
3079
  var keyValidityDate;
3080
3080
  var consoleMessageState = 'invalid';
3081
3081
  var domMessageState = 'invalid';
@@ -31333,6 +31333,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));
31333
31333
  var _createClass2 = _interopRequireDefault(__webpack_require__(3));
31334
31334
  var _unicode = __webpack_require__(107);
31335
31335
  var _event = __webpack_require__(75);
31336
+ var _element = __webpack_require__(16);
31336
31337
  var _registry = __webpack_require__(129);
31337
31338
  var _eventManager = _interopRequireDefault(__webpack_require__(49));
31338
31339
  var _mixed = __webpack_require__(24);
@@ -31556,10 +31557,12 @@ var EditorManager = /*#__PURE__*/function () {
31556
31557
  // Getting values using the modified coordinates.
31557
31558
  this.cellProperties = this.instance.getCellMeta(visualRowToCheck, visualColumnToCheck);
31558
31559
  var activeElement = this.instance.rootDocument.activeElement;
31559
- if (activeElement) {
31560
- // Blurring the activeElement removes unwanted border around the focusable element
31561
- // (and resets activeElement prop). Without blurring the activeElement points to the
31562
- // previously focusable element after clicking onto the cell (#6877).
31560
+
31561
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
31562
+ // and resets the `document.activeElement` property. The blurring should happen only when the
31563
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
31564
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
31565
+ if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
31563
31566
  activeElement.blur();
31564
31567
  }
31565
31568
  if (!this.isCellEditable()) {
@@ -49170,7 +49173,7 @@ var Formulas = /*#__PURE__*/function (_BasePlugin) {
49170
49173
  * @private
49171
49174
  * @param {Array[]} changes An array of changes in format [[row, prop, oldValue, value], ...].
49172
49175
  * @param {string} [source] String that identifies source of hook call
49173
- * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
49176
+ * ([list of all available sources]{@link https://handsontable.com/docs/javascript-data-grid/events-and-hooks/#handsontable-hooks}).
49174
49177
  */
49175
49178
  }, {
49176
49179
  key: "onAfterSetDataAtCell",
@@ -49231,7 +49234,7 @@ var Formulas = /*#__PURE__*/function (_BasePlugin) {
49231
49234
  * @private
49232
49235
  * @param {Array[]} changes An array of changes in format [[row, column, oldValue, value], ...].
49233
49236
  * @param {string} [source] String that identifies source of hook call
49234
- * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
49237
+ * ([list of all available sources]{@link https://handsontable.com/docs/javascript-data-grid/events-and-hooks/#handsontable-hooks}).
49235
49238
  */
49236
49239
  }, {
49237
49240
  key: "onAfterSetSourceDataAtCell",
@@ -49346,7 +49349,7 @@ var Formulas = /*#__PURE__*/function (_BasePlugin) {
49346
49349
  * @param {number} row Represents the visual index of first newly created row in the data source array.
49347
49350
  * @param {number} amount Number of newly created rows in the data source array.
49348
49351
  * @param {string} [source] String that identifies source of hook call
49349
- * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
49352
+ * ([list of all available sources]{@link https://handsontable.com/docs/javascript-data-grid/events-and-hooks/#handsontable-hooks}).
49350
49353
  */
49351
49354
  }, {
49352
49355
  key: "onAfterCreateRow",
@@ -49365,7 +49368,7 @@ var Formulas = /*#__PURE__*/function (_BasePlugin) {
49365
49368
  * @param {number} col Represents the visual index of first newly created column in the data source.
49366
49369
  * @param {number} amount Number of newly created columns in the data source.
49367
49370
  * @param {string} [source] String that identifies source of hook call
49368
- * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
49371
+ * ([list of all available sources]{@link https://handsontable.com/docs/javascript-data-grid/events-and-hooks/#handsontable-hooks}).
49369
49372
  */
49370
49373
  }, {
49371
49374
  key: "onAfterCreateCol",
@@ -49385,7 +49388,7 @@ var Formulas = /*#__PURE__*/function (_BasePlugin) {
49385
49388
  * @param {number} amount An amount of removed rows.
49386
49389
  * @param {number[]} physicalRows An array of physical rows removed from the data source.
49387
49390
  * @param {string} [source] String that identifies source of hook call
49388
- * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
49391
+ * ([list of all available sources]{@link https://handsontable.com/docs/javascript-data-grid/events-and-hooks/#handsontable-hooks}).
49389
49392
  */
49390
49393
  }, {
49391
49394
  key: "onAfterRemoveRow",
@@ -49411,7 +49414,7 @@ var Formulas = /*#__PURE__*/function (_BasePlugin) {
49411
49414
  * @param {number} amount An amount of removed columns.
49412
49415
  * @param {number[]} physicalColumns An array of physical columns removed from the data source.
49413
49416
  * @param {string} [source] String that identifies source of hook call
49414
- * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
49417
+ * ([list of all available sources]{@link https://handsontable.com/docs/javascript-data-grid/events-and-hooks/#handsontable-hooks}).
49415
49418
  */
49416
49419
  }, {
49417
49420
  key: "onAfterRemoveCol",
@@ -66480,7 +66483,7 @@ var deprecationWarns = new Set();
66480
66483
  *
66481
66484
  * ::: only-for react
66482
66485
  * To use these methods, associate a Handsontable instance with your instance
66483
- * of the [`HotTable` component](@/guides/getting-started/installation.md#hottable-component),
66486
+ * of the [`HotTable` component](@/guides/getting-started/installation.md#use-the-hottable-component),
66484
66487
  * by using React's `ref` feature (read more on the [Instance methods](@/guides/getting-started/react-methods.md) page).
66485
66488
  * :::
66486
66489
  *
@@ -66917,6 +66920,7 @@ function Core(rootElement, userSettings) {
66917
66920
  rowDelta = _datamap$createRow.delta,
66918
66921
  startRowPhysicalIndex = _datamap$createRow.startPhysicalIndex;
66919
66922
  if (rowDelta) {
66923
+ metaManager.createRow(startRowPhysicalIndex, amount);
66920
66924
  var currentSelectedRange = selection.selectedRange.current();
66921
66925
  var currentFromRange = currentSelectedRange === null || currentSelectedRange === void 0 ? void 0 : currentSelectedRange.from;
66922
66926
  var currentFromRow = currentFromRange === null || currentFromRange === void 0 ? void 0 : currentFromRange.row;
@@ -66972,6 +66976,7 @@ function Core(rootElement, userSettings) {
66972
66976
  colDelta = _datamap$createCol.delta,
66973
66977
  startColumnPhysicalIndex = _datamap$createCol.startPhysicalIndex;
66974
66978
  if (colDelta) {
66979
+ metaManager.createColumn(startColumnPhysicalIndex, amount);
66975
66980
  if (Array.isArray(tableMeta.colHeaders)) {
66976
66981
  var spliceArray = [instance.toVisualColumn(startColumnPhysicalIndex), 0];
66977
66982
  spliceArray.length += colDelta; // inserts empty (undefined) elements at the end of an array
@@ -67034,6 +67039,7 @@ function Core(rootElement, userSettings) {
67034
67039
  if (!wasRemoved) {
67035
67040
  return;
67036
67041
  }
67042
+ metaManager.removeRow(instance.toPhysicalRow(calcIndex), groupAmount);
67037
67043
  var totalRows = instance.countRows();
67038
67044
  var fixedRowsTop = tableMeta.fixedRowsTop;
67039
67045
  if (fixedRowsTop >= calcIndex + 1) {
@@ -67079,6 +67085,7 @@ function Core(rootElement, userSettings) {
67079
67085
  if (!wasRemoved) {
67080
67086
  return;
67081
67087
  }
67088
+ metaManager.removeColumn(physicalColumnIndex, groupAmount);
67082
67089
  var fixedColumnsStart = tableMeta.fixedColumnsStart;
67083
67090
  if (fixedColumnsStart >= calcIndex + 1) {
67084
67091
  tableMeta.fixedColumnsStart -= Math.min(groupAmount, fixedColumnsStart - calcIndex);
@@ -67660,7 +67667,9 @@ function Core(rootElement, userSettings) {
67660
67667
  source: source
67661
67668
  }),
67662
67669
  numberOfCreatedRows = _datamap$createRow2.delta;
67663
- if (numberOfCreatedRows === 0) {
67670
+ if (numberOfCreatedRows >= 1) {
67671
+ metaManager.createRow(null, numberOfCreatedRows);
67672
+ } else {
67664
67673
  skipThisChange = true;
67665
67674
  break;
67666
67675
  }
@@ -67672,7 +67681,9 @@ function Core(rootElement, userSettings) {
67672
67681
  source: source
67673
67682
  }),
67674
67683
  numberOfCreatedColumns = _datamap$createCol2.delta;
67675
- if (numberOfCreatedColumns === 0) {
67684
+ if (numberOfCreatedColumns >= 1) {
67685
+ metaManager.createColumn(null, numberOfCreatedColumns);
67686
+ } else {
67676
67687
  skipThisChange = true;
67677
67688
  break;
67678
67689
  }
@@ -68497,7 +68508,6 @@ function Core(rootElement, userSettings) {
68497
68508
  dataSource: dataSource,
68498
68509
  internalSource: 'updateData',
68499
68510
  source: source,
68500
- metaManager: metaManager,
68501
68511
  firstRun: firstRun
68502
68512
  });
68503
68513
  };
@@ -68540,7 +68550,6 @@ function Core(rootElement, userSettings) {
68540
68550
  dataSource: dataSource,
68541
68551
  internalSource: 'loadData',
68542
68552
  source: source,
68543
- metaManager: metaManager,
68544
68553
  firstRun: firstRun
68545
68554
  });
68546
68555
  };
@@ -77918,8 +77927,8 @@ __webpack_require__(73);
77918
77927
  __webpack_require__(53);
77919
77928
  __webpack_require__(89);
77920
77929
  __webpack_require__(40);
77921
- __webpack_require__(23);
77922
77930
  __webpack_require__(20);
77931
+ __webpack_require__(23);
77923
77932
  __webpack_require__(35);
77924
77933
  __webpack_require__(22);
77925
77934
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(32));
@@ -77966,9 +77975,9 @@ var DataMap = /*#__PURE__*/function () {
77966
77975
  /**
77967
77976
  * @param {object} instance Instance of Handsontable.
77968
77977
  * @param {Array} data Array of arrays or array of objects containing data.
77969
- * @param {MetaManager} metaManager The meta manager instance.
77978
+ * @param {TableMeta} tableMeta The table meta instance.
77970
77979
  */
77971
- function DataMap(instance, data, metaManager) {
77980
+ function DataMap(instance, data, tableMeta) {
77972
77981
  (0, _classCallCheck2.default)(this, DataMap);
77973
77982
  /**
77974
77983
  * Instance of {@link Handsontable}.
@@ -77978,12 +77987,12 @@ var DataMap = /*#__PURE__*/function () {
77978
77987
  */
77979
77988
  this.instance = instance;
77980
77989
  /**
77981
- * Instance of {@link MetaManager}.
77990
+ * Instance of {@link TableMeta}.
77982
77991
  *
77983
77992
  * @private
77984
- * @type {MetaManager}
77993
+ * @type {TableMeta}
77985
77994
  */
77986
- this.metaManager = metaManager;
77995
+ this.tableMeta = tableMeta;
77987
77996
  /**
77988
77997
  * Reference to the original dataset.
77989
77998
  *
@@ -78021,7 +78030,7 @@ var DataMap = /*#__PURE__*/function () {
78021
78030
  if (typeof schema === 'undefined') {
78022
78031
  throw new Error('trying to create `columns` definition but you didn\'t provide `schema` nor `data`');
78023
78032
  }
78024
- var columns = this.instance.getSettings().columns;
78033
+ var columns = this.tableMeta.columns;
78025
78034
  var i;
78026
78035
  this.colToPropCache = [];
78027
78036
  this.propToColCache = new Map();
@@ -78034,7 +78043,7 @@ var DataMap = /*#__PURE__*/function () {
78034
78043
  columnsLen = schemaLen > 0 ? schemaLen : this.countFirstRowKeys();
78035
78044
  columnsAsFunc = true;
78036
78045
  } else {
78037
- var maxCols = this.instance.getSettings().maxCols;
78046
+ var maxCols = this.tableMeta.maxCols;
78038
78047
  columnsLen = Math.min(maxCols, columns.length);
78039
78048
  }
78040
78049
  for (i = 0; i < columnsLen; i++) {
@@ -78156,7 +78165,7 @@ var DataMap = /*#__PURE__*/function () {
78156
78165
  }, {
78157
78166
  key: "getSchema",
78158
78167
  value: function getSchema() {
78159
- var schema = this.instance.getSettings().dataSchema;
78168
+ var schema = this.tableMeta.dataSchema;
78160
78169
  if (schema) {
78161
78170
  if (typeof schema === 'function') {
78162
78171
  return schema();
@@ -78218,17 +78227,15 @@ var DataMap = /*#__PURE__*/function () {
78218
78227
  }
78219
78228
  var continueProcess = this.instance.runHooks('beforeCreateRow', rowIndex, amount, source);
78220
78229
  if (continueProcess === false || physicalRowIndex === null) {
78221
- return {
78222
- delta: 0
78223
- };
78230
+ return 0;
78224
78231
  }
78225
- var maxRows = this.instance.getSettings().maxRows;
78232
+ var maxRows = this.tableMeta.maxRows;
78226
78233
  var columnCount = this.getSchema().length;
78227
78234
  var rowsToAdd = [];
78228
78235
  var _loop = function _loop() {
78229
78236
  var row = null;
78230
78237
  if (_this2.instance.dataType === 'array') {
78231
- if (_this2.instance.getSettings().dataSchema) {
78238
+ if (_this2.tableMeta.dataSchema) {
78232
78239
  // Clone template array
78233
78240
  row = (0, _object.deepClone)(_this2.getSchema());
78234
78241
  } else {
@@ -78239,7 +78246,7 @@ var DataMap = /*#__PURE__*/function () {
78239
78246
  });
78240
78247
  }
78241
78248
  } else if (_this2.instance.dataType === 'function') {
78242
- row = _this2.instance.getSettings().dataSchema(rowIndex + numberOfCreatedRows);
78249
+ row = _this2.tableMeta.dataSchema(rowIndex + numberOfCreatedRows);
78243
78250
  } else {
78244
78251
  row = {};
78245
78252
  (0, _object.deepExtend)(row, _this2.getSchema());
@@ -78262,14 +78269,6 @@ var DataMap = /*#__PURE__*/function () {
78262
78269
  if (this.instance.countSourceRows() === rowsToAdd.length) {
78263
78270
  this.instance.columnIndexMapper.initToLength(this.instance.getInitialColumnCount());
78264
78271
  }
78265
- if (numberOfCreatedRows > 0) {
78266
- if (index === void 0 || index === null) {
78267
- // Creates the meta rows at the end of the rows collection.
78268
- this.metaManager.createRow(null, numberOfCreatedRows);
78269
- } else if (source !== 'auto') {
78270
- this.metaManager.createRow(physicalRowIndex, amount);
78271
- }
78272
- }
78273
78272
  this.instance.runHooks('afterCreateRow', newVisualRowIndex, numberOfCreatedRows, source);
78274
78273
  this.instance.forceFullRender = true; // used when data was changed
78275
78274
 
@@ -78303,7 +78302,7 @@ var DataMap = /*#__PURE__*/function () {
78303
78302
  throw new Error('Cannot create new column. When data source in an object, ' + 'you can only have as much columns as defined in first data row, data schema or in the \'columns\' setting.' + 'If you want to be able to add new columns, you have to use array datasource.');
78304
78303
  }
78305
78304
  var dataSource = this.dataSource;
78306
- var maxCols = this.instance.getSettings().maxCols;
78305
+ var maxCols = this.tableMeta.maxCols;
78307
78306
  var countSourceCols = this.instance.countSourceCols();
78308
78307
  var columnIndex = index;
78309
78308
  if (typeof columnIndex !== 'number' || columnIndex >= countSourceCols) {
@@ -78311,9 +78310,7 @@ var DataMap = /*#__PURE__*/function () {
78311
78310
  }
78312
78311
  var continueProcess = this.instance.runHooks('beforeCreateCol', columnIndex, amount, source);
78313
78312
  if (continueProcess === false) {
78314
- return {
78315
- delta: 0
78316
- };
78313
+ return 0;
78317
78314
  }
78318
78315
  var physicalColumnIndex = countSourceCols;
78319
78316
  if (columnIndex < this.instance.countCols()) {
@@ -78349,14 +78346,6 @@ var DataMap = /*#__PURE__*/function () {
78349
78346
  nrOfColumns += 1;
78350
78347
  }
78351
78348
  this.instance.columnIndexMapper.insertIndexes(columnIndex, numberOfCreatedCols);
78352
- if (numberOfCreatedCols > 0) {
78353
- if (index === void 0 || index === null) {
78354
- // Creates the meta columns at the end of the columns collection.
78355
- this.metaManager.createColumn(null, numberOfCreatedCols);
78356
- } else if (source !== 'auto') {
78357
- this.metaManager.createColumn(startPhysicalIndex, amount);
78358
- }
78359
- }
78360
78349
  var newVisualColumnIndex = this.instance.toVisualColumn(startPhysicalIndex);
78361
78350
  this.instance.runHooks('afterCreateCol', newVisualColumnIndex, numberOfCreatedCols, source);
78362
78351
  this.instance.forceFullRender = true; // used when data was changed
@@ -78381,7 +78370,6 @@ var DataMap = /*#__PURE__*/function () {
78381
78370
  }, {
78382
78371
  key: "removeRow",
78383
78372
  value: function removeRow(index) {
78384
- var _this3 = this;
78385
78373
  var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
78386
78374
  var source = arguments.length > 2 ? arguments[2] : undefined;
78387
78375
  var rowIndex = Number.isInteger(index) ? index : -amount; // -amount = taking indexes from the end.
@@ -78402,19 +78390,13 @@ var DataMap = /*#__PURE__*/function () {
78402
78390
  // TODO: Function `removeRow` should validate fully, probably above.
78403
78391
  if (rowIndex < this.instance.countRows()) {
78404
78392
  this.instance.rowIndexMapper.removeIndexes(removedPhysicalIndexes);
78405
- var customDefinedColumns = (0, _mixed.isDefined)(this.instance.getSettings().columns) || (0, _mixed.isDefined)(this.instance.getSettings().dataSchema);
78393
+ var customDefinedColumns = (0, _mixed.isDefined)(this.tableMeta.columns) || (0, _mixed.isDefined)(this.tableMeta.dataSchema);
78406
78394
 
78407
78395
  // All rows have been removed. There shouldn't be any columns.
78408
78396
  if (this.instance.rowIndexMapper.getNotTrimmedIndexesLength() === 0 && customDefinedColumns === false) {
78409
78397
  this.instance.columnIndexMapper.setIndexesSequence([]);
78410
78398
  }
78411
78399
  }
78412
- var descendingPhysicalRows = removedPhysicalIndexes.slice(0).sort(function (a, b) {
78413
- return b - a;
78414
- });
78415
- descendingPhysicalRows.forEach(function (rowPhysicalIndex) {
78416
- _this3.metaManager.removeRow(rowPhysicalIndex, 1);
78417
- });
78418
78400
  this.instance.runHooks('afterRemoveRow', rowIndex, numberOfRemovedIndexes, removedPhysicalIndexes, source);
78419
78401
  this.instance.forceFullRender = true; // used when data was changed
78420
78402
 
@@ -78436,56 +78418,51 @@ var DataMap = /*#__PURE__*/function () {
78436
78418
  value: function removeCol(index) {
78437
78419
  var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
78438
78420
  var source = arguments.length > 2 ? arguments[2] : undefined;
78439
- if (this.instance.dataType === 'object' || this.instance.getSettings().columns) {
78421
+ if (this.instance.dataType === 'object' || this.tableMeta.columns) {
78440
78422
  throw new Error('cannot remove column with object data source or columns option specified');
78441
78423
  }
78442
78424
  var columnIndex = typeof index !== 'number' ? -amount : index;
78443
78425
  columnIndex = (this.instance.countCols() + columnIndex) % this.instance.countCols();
78444
- var removedPhysicalIndexes = this.visualColumnsToPhysical(columnIndex, amount);
78445
- var descendingPhysicalColumns = removedPhysicalIndexes.slice(0).sort(function (a, b) {
78426
+ var logicColumns = this.visualColumnsToPhysical(columnIndex, amount);
78427
+ var descendingLogicColumns = logicColumns.slice(0).sort(function (a, b) {
78446
78428
  return b - a;
78447
78429
  });
78448
- var actionWasNotCancelled = this.instance.runHooks('beforeRemoveCol', columnIndex, amount, removedPhysicalIndexes, source);
78430
+ var actionWasNotCancelled = this.instance.runHooks('beforeRemoveCol', columnIndex, amount, logicColumns, source);
78449
78431
  if (actionWasNotCancelled === false) {
78450
78432
  return false;
78451
78433
  }
78452
78434
  var isTableUniform = true;
78453
- var removedColumnsCount = descendingPhysicalColumns.length;
78435
+ var removedColumnsCount = descendingLogicColumns.length;
78454
78436
  var data = this.dataSource;
78455
78437
  for (var c = 0; c < removedColumnsCount; c++) {
78456
- if (isTableUniform && removedPhysicalIndexes[0] !== removedPhysicalIndexes[c] - c) {
78438
+ if (isTableUniform && logicColumns[0] !== logicColumns[c] - c) {
78457
78439
  isTableUniform = false;
78458
78440
  }
78459
78441
  }
78460
78442
  if (isTableUniform) {
78461
78443
  for (var r = 0, rlen = this.instance.countSourceRows(); r < rlen; r++) {
78462
- data[r].splice(removedPhysicalIndexes[0], amount);
78463
- if (r === 0) {
78464
- this.metaManager.removeColumn(removedPhysicalIndexes[0], amount);
78465
- }
78444
+ data[r].splice(logicColumns[0], amount);
78466
78445
  }
78467
78446
  } else {
78468
78447
  for (var _r = 0, _rlen = this.instance.countSourceRows(); _r < _rlen; _r++) {
78469
78448
  for (var _c = 0; _c < removedColumnsCount; _c++) {
78470
- data[_r].splice(descendingPhysicalColumns[_c], 1);
78471
- if (_r === 0) {
78472
- this.metaManager.removeColumn(descendingPhysicalColumns[_c], 1);
78473
- }
78449
+ data[_r].splice(descendingLogicColumns[_c], 1);
78474
78450
  }
78475
78451
  }
78476
78452
  }
78477
78453
 
78478
78454
  // TODO: Function `removeCol` should validate fully, probably above.
78479
78455
  if (columnIndex < this.instance.countCols()) {
78480
- this.instance.columnIndexMapper.removeIndexes(removedPhysicalIndexes);
78456
+ this.instance.columnIndexMapper.removeIndexes(logicColumns);
78481
78457
 
78482
78458
  // All columns have been removed. There shouldn't be any rows.
78483
78459
  if (this.instance.columnIndexMapper.getNotTrimmedIndexesLength() === 0) {
78484
78460
  this.instance.rowIndexMapper.setIndexesSequence([]);
78485
78461
  }
78486
78462
  }
78487
- this.instance.runHooks('afterRemoveCol', columnIndex, amount, removedPhysicalIndexes, source);
78463
+ this.instance.runHooks('afterRemoveCol', columnIndex, amount, logicColumns, source);
78488
78464
  this.instance.forceFullRender = true; // used when data was changed
78465
+
78489
78466
  this.refreshDuckSchema();
78490
78467
  return true;
78491
78468
  }
@@ -78557,7 +78534,7 @@ var DataMap = /*#__PURE__*/function () {
78557
78534
  }, {
78558
78535
  key: "spliceData",
78559
78536
  value: function spliceData(index, deleteCount, elements) {
78560
- var _this4 = this;
78537
+ var _this3 = this;
78561
78538
  var continueSplicing = this.instance.runHooks('beforeDataSplice', index, deleteCount, elements);
78562
78539
  if (continueSplicing !== false) {
78563
78540
  var newData = [].concat((0, _toConsumableArray2.default)(this.dataSource.slice(0, index)), (0, _toConsumableArray2.default)(elements), (0, _toConsumableArray2.default)(this.dataSource.slice(index)));
@@ -78568,7 +78545,7 @@ var DataMap = /*#__PURE__*/function () {
78568
78545
  // Pushing to array instead of using `splice`, because Babel changes the code to one that uses the `apply` method.
78569
78546
  // The used method was cause of the problem described within #7840.
78570
78547
  newData.forEach(function (row) {
78571
- return _this4.dataSource.push(row);
78548
+ return _this3.dataSource.push(row);
78572
78549
  });
78573
78550
  }
78574
78551
  }
@@ -78777,7 +78754,7 @@ var DataMap = /*#__PURE__*/function () {
78777
78754
  }, {
78778
78755
  key: "getLength",
78779
78756
  value: function getLength() {
78780
- var maxRowsFromSettings = this.instance.getSettings().maxRows;
78757
+ var maxRowsFromSettings = this.tableMeta.maxRows;
78781
78758
  var maxRows;
78782
78759
  if (maxRowsFromSettings < 0 || maxRowsFromSettings === 0) {
78783
78760
  maxRows = 0;
@@ -78836,8 +78813,8 @@ var DataMap = /*#__PURE__*/function () {
78836
78813
  var r;
78837
78814
  var c;
78838
78815
  var row;
78839
- var maxRows = this.instance.getSettings().maxRows;
78840
- var maxCols = this.instance.getSettings().maxCols;
78816
+ var maxRows = this.tableMeta.maxRows;
78817
+ var maxCols = this.tableMeta.maxCols;
78841
78818
  if (maxRows === 0 || maxCols === 0) {
78842
78819
  return [];
78843
78820
  }
@@ -78894,7 +78871,7 @@ var DataMap = /*#__PURE__*/function () {
78894
78871
  key: "destroy",
78895
78872
  value: function destroy() {
78896
78873
  this.instance = null;
78897
- this.metaManager = null;
78874
+ this.tableMeta = null;
78898
78875
  this.dataSource = null;
78899
78876
  this.duckSchema = null;
78900
78877
  this.colToPropCache.length = 0;
@@ -79002,7 +78979,7 @@ var _object = __webpack_require__(12);
79002
78979
  * ::: only-for react
79003
78980
  *
79004
78981
  * To apply configuration options, pass them as individual props
79005
- * of the [`HotTable`](@/guides/getting-started/installation.md##hottable-component)
78982
+ * of the [`HotTable`](@/guides/getting-started/installation.md#use-the-hottable-component)
79006
78983
  * or [`HotColumn`](@/guides/columns/react-hot-column.md) components.
79007
78984
  *
79008
78985
  * Read more on the [Configuration options](@/guides/getting-started/configuration-options.md) page.
@@ -79032,10 +79009,10 @@ var _object = __webpack_require__(12);
79032
79009
  * :::
79033
79010
  *
79034
79011
  * Depending on your needs, you can apply [configuration options](@/api/options.md) to different elements of your grid:
79035
- * - [The entire grid](@/guides/getting-started/configuration-options.md#setting-grid-options)
79036
- * - [Individual columns](@/guides/getting-started/configuration-options.md#setting-column-options)
79037
- * - [Individual rows](@/guides/getting-started/configuration-options.md#setting-row-options)
79038
- * - [Individual cells](@/guides/getting-started/configuration-options.md#setting-cell-options)
79012
+ * - [The entire grid](@/guides/getting-started/configuration-options.md#set-grid-options)
79013
+ * - [Individual columns](@/guides/getting-started/configuration-options.md#set-column-options)
79014
+ * - [Individual rows](@/guides/getting-started/configuration-options.md#set-row-options)
79015
+ * - [Individual cells](@/guides/getting-started/configuration-options.md#set-cell-options)
79039
79016
  * - [Individual grid elements, based on any logic you implement](@/guides/getting-started/configuration-options.md#implementing-custom-logic)
79040
79017
  *
79041
79018
  * Read more:
@@ -79356,14 +79333,16 @@ var _default = function _default() {
79356
79333
  */
79357
79334
  autoRowSize: void 0,
79358
79335
  /**
79359
- * The `autoWrapCol` option determines what happens to current cell selection when you navigate to the grid's top or bottom edge.
79336
+ * With [`autoWrapCol`](#autowrapcol) enabled:
79337
+ * - When you select a bottom-most cell, pressing <kbd>**↓**</kbd> takes you to the top-most cell of the next column.
79338
+ * - When you select a top-most cell, pressing <kbd>**↑**</kbd> takes you to the bottom-most cell of the previous column.
79360
79339
  *
79361
- * You can set the `autoWrapCol` option to one of the following:
79340
+ * You can set the [`autoWrapCol`](#autowrapcol) option to one of the following:
79362
79341
  *
79363
- * | Setting | Description |
79364
- * | ----------------- | ----------------------------------------------------------------------------------------------------------------------- |
79365
- * | `true` | On reaching the grid's top or bottom edge<br>- Jump to the opposite edge<br>- Select a cell in the previous/next column |
79366
- * | `false` (default) | On reaching the grid's top or bottom edge, stop |
79342
+ * | Setting | Description |
79343
+ * | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
79344
+ * | `true` | When you select a bottom-most cell, pressing <kbd>**↓**</kbd> takes you to the top-most cell of the next column.<br><br>When you select a top-most cell, pressing <kbd>**↑**</kbd> takes you to the bottom-most cell of the previous column. |
79345
+ * | `false` (default) | When you select a bottom-most cell, pressing <kbd>**↓**</kbd> doesn't do anything.<br><br>When you select a top-most cell, pressing <kbd>**↑**</kbd> doesn't do anything. |
79367
79346
  *
79368
79347
  * @memberof Options#
79369
79348
  * @type {boolean}
@@ -79372,20 +79351,29 @@ var _default = function _default() {
79372
79351
  *
79373
79352
  * @example
79374
79353
  * ```js
79375
- * // on reaching the grid's top or bottom edge, jump to the opposite edge
79354
+ * // when you select a bottom-most cell, pressing doesn't do anything
79355
+ * // when you select a top-most cell, pressing ⬆ doesn't do anything
79356
+ * autoWrapCol: false, // default setting
79357
+ *
79358
+ * // when you select a bottom-most cell, pressing ⬇ takes you to the top-most cell of the next column
79359
+ * // when you select a top-most cell, pressing ⬆ takes you to the bottom-most cell of the previous column
79376
79360
  * autoWrapCol: true,
79377
79361
  * ```
79378
79362
  */
79379
79363
  autoWrapCol: false,
79380
79364
  /**
79381
- * The `autoWrapRow` option determines what happens to current cell selection when you navigate to the grid's left or right edge.
79365
+ * With [`autoWrapRow`](#autoWrapRow) enabled:
79366
+ * - When you select the first cell of a row, pressing <kbd>**←**</kbd>* takes you to the last cell of the row above.
79367
+ * - When you select the last cell of a row, pressing <kbd>**→**</kbd>* takes you to the first cell of the row below.
79368
+ *
79369
+ * You can set the [`autoWrapRow`](#autoWrapRow) option to one of the following:
79382
79370
  *
79383
- * You can set the `autoWrapRow` option to one of the following:
79371
+ * | Setting | Description |
79372
+ * | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
79373
+ * | `true` | When you select the first cell of a row, pressing <kbd>**←**</kbd>* takes you to the last cell of the row above.<br><br>When you select the last cell of a row, pressing <kbd>**→**</kbd>* takes you to the first cell of the row below. |
79374
+ * | `false` (default) | When you select the first cell of a row, pressing <kbd>**←**</kbd>* doesn't do anything.<br><br>When you select the last cell of a row, pressing <kbd>**→**</kbd>* doesn't do anything. |
79384
79375
  *
79385
- * | Setting | Description |
79386
- * | ----------------- | ---------------------------------------------------------------------------------------------------------------------------- |
79387
- * | `true` | On reaching the grid's left or right edge:<br>- Jump to the grid's opposite edge<br>- Select a cell in the previous/next row |
79388
- * | `false` (default) | On reaching the grid's left or right edge, stop |
79376
+ * \* The exact key depends on your [`layoutDirection`](#layoutdirection) configuration.
79389
79377
  *
79390
79378
  * @memberof Options#
79391
79379
  * @type {boolean}
@@ -79394,7 +79382,12 @@ var _default = function _default() {
79394
79382
  *
79395
79383
  * @example
79396
79384
  * ```js
79397
- * // on reaching the grid's left or right edge, jump to the opposite edge
79385
+ * // when you select the first cell of a row, pressing doesn't do anything
79386
+ * // when you select the last cell of a row, pressing ➡️ doesn't do anything
79387
+ * autoWrapRow: false, // default setting
79388
+ *
79389
+ * // when you select the first cell of a row, pressing ⬅ takes you to the last cell of the row above
79390
+ * // when you select the last cell of a row, pressing ➡️ takes you to the first cell of the row below
79398
79391
  * autoWrapRow: true,
79399
79392
  * ```
79400
79393
  */
@@ -79428,11 +79421,11 @@ var _default = function _default() {
79428
79421
  /**
79429
79422
  * The `cell` option lets you apply [configuration options](@/guides/getting-started/configuration-options.md) to individual cells.
79430
79423
  *
79431
- * The `cell` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options.md#setting-grid-options),
79424
+ * The `cell` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options.md#set-grid-options),
79432
79425
  * and the [`columns`](#columns) options.
79433
79426
  *
79434
79427
  * Read more:
79435
- * - [Configuration options: Setting cell options](@/guides/getting-started/configuration-options.md#setting-cell-options)
79428
+ * - [Configuration options: Setting cell options](@/guides/getting-started/configuration-options.md#set-cell-options)
79436
79429
  * - [`columns`](#columns)
79437
79430
  *
79438
79431
  * @memberof Options#
@@ -79469,8 +79462,8 @@ var _default = function _default() {
79469
79462
  * | `prop` | No | String \| Number | If [`data`](#data) is set to an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), `prop` is the same number as `column`.<br><br>If [`data`](#data) is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), `prop` is a property name for the column's data object. |
79470
79463
  *
79471
79464
  * Read more:
79472
- * - [Configuration options: Implementing custom logic](@/guides/getting-started/configuration-options.md#implementing-custom-logic)
79473
- * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options.md#setting-row-options)
79465
+ * - [Configuration options: Implementing custom logic](@/guides/getting-started/configuration-options.md#implement-custom-logic)
79466
+ * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options.md#set-row-options)
79474
79467
  * - [`columns`](#columns)
79475
79468
  * - [`cell`](#cell)
79476
79469
  *
@@ -79687,12 +79680,12 @@ var _default = function _default() {
79687
79680
  * - An array of objects (each object represents one column)
79688
79681
  * - A function that returns an array of objects
79689
79682
  *
79690
- * The `columns` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options.md#setting-grid-options).
79683
+ * The `columns` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options.md#set-grid-options).
79691
79684
  *
79692
79685
  * When you use `columns`, the [`startCols`](#startCols), [`minCols`](#minCols), and [`maxCols`](#maxCols) options are ignored.
79693
79686
  *
79694
79687
  * Read more:
79695
- * - [Configuration options: Setting column options](@/guides/getting-started/configuration-options.md#setting-column-options)
79688
+ * - [Configuration options: Setting column options](@/guides/getting-started/configuration-options.md#set-column-options)
79696
79689
  * - [`startCols`](#startCols)
79697
79690
  * - [`minCols`](#minCols)
79698
79691
  * - [`maxCols`](#maxCols)
@@ -79825,12 +79818,12 @@ var _default = function _default() {
79825
79818
  * | `type` | `'sum'` \| `'min'` \| `'max'` \| `'count'` \| `'average'` \| `'custom'` | [Summary function](@/guides/columns/column-summary.md#step-3-calculate-your-summary) |
79826
79819
  * | `destinationRow` | A number | [Destination cell's row coordinate](@/guides/columns/column-summary.md#step-4-provide-the-destination-cell-s-coordinates) |
79827
79820
  * | `destinationColumn` | A number | [Destination cell's column coordinate](@/guides/columns/column-summary.md#step-4-provide-the-destination-cell-s-coordinates) |
79828
- * | `forceNumeric` | `true` \| `false` | [Treat non-numerics as numerics](@/guides/columns/column-summary.md#forcing-numeric-values) |
79821
+ * | `forceNumeric` | `true` \| `false` | [Treat non-numerics as numerics](@/guides/columns/column-summary.md#force-numeric-values) |
79829
79822
  * | `reversedRowCoords` | `true` \| `false` | [Reverse row coordinates](@/guides/columns/column-summary.md#step-5-make-room-for-the-destination-cell) |
79830
- * | `suppressDataTypeErrors` | `true` \| `false` | [Suppress data type errors](@/guides/columns/column-summary.md#throwing-data-type-errors) |
79823
+ * | `suppressDataTypeErrors` | `true` \| `false` | [Suppress data type errors](@/guides/columns/column-summary.md#throw-data-type-errors) |
79831
79824
  * | `readOnly` | `true` \| `false` | Make summary cell read-only |
79832
- * | `roundFloat` | `true` \| `false` | [Round summary result](@/guides/columns/column-summary.md#rounding-a-column-summary-result) |
79833
- * | `customFunction` | A function | [Custom summary function](@/guides/columns/column-summary.md#implementing-a-custom-summary-function) |
79825
+ * | `roundFloat` | `true` \| `false` | [Round summary result](@/guides/columns/column-summary.md#round-a-column-summary-result) |
79826
+ * | `customFunction` | A function | [Custom summary function](@/guides/columns/column-summary.md#implement-a-custom-summary-function) |
79834
79827
  *
79835
79828
  * Read more:
79836
79829
  * - [Column summary](@/guides/columns/column-summary.md)
@@ -80008,13 +80001,13 @@ var _default = function _default() {
80008
80001
  * | `false` | Disable the [`ContextMenu`](@/api/contextMenu.md) plugin |
80009
80002
  * | `true` | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Use the [default context menu options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-default-options) |
80010
80003
  * | An array | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Modify [individual context menu options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-specific-options) |
80011
- * | An object | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Apply a [custom context menu configuration](@/guides/accessories-and-menus/context-menu.md#context-menu-with-fully-custom-configuration) |
80004
+ * | An object | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Apply a [custom context menu configuration](@/guides/accessories-and-menus/context-menu.md#context-menu-with-a-fully-custom-configuration) |
80012
80005
  *
80013
80006
  * Read more:
80014
80007
  * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
80015
80008
  * - [Context menu: Context menu with default options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-default-options)
80016
80009
  * - [Context menu: Context menu with specific options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-specific-options)
80017
- * - [Context menu: Context menu with fully custom configuration options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-fully-custom-configuration)
80010
+ * - [Context menu: Context menu with fully custom configuration options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-a-fully-custom-configuration)
80018
80011
  * - [Plugins: `ContextMenu`](@/api/contextMenu.md)
80019
80012
  *
80020
80013
  * @memberof Options#
@@ -81511,7 +81504,7 @@ var _default = function _default() {
81511
81504
  *
81512
81505
  * You can set the layout direction only at Handsontable's [initialization](@/guides/getting-started/installation.md#initialize-handsontable). Any change of the `layoutDirection` option after the initialization (e.g. using the [`updateSettings()`](@/api/core.md#updatesettings) method) is ignored.
81513
81506
  *
81514
- * You can set the `layoutDirection` option only [for the entire grid](@/guides/getting-started/configuration-options.md#setting-grid-options).
81507
+ * You can set the `layoutDirection` option only [for the entire grid](@/guides/getting-started/configuration-options.md#set-grid-options).
81515
81508
  * You can't set it for individual columns, rows, or cells.
81516
81509
  *
81517
81510
  * You can set the `layoutDirection` option to one of the following strings:
@@ -81583,8 +81576,8 @@ var _default = function _default() {
81583
81576
  * The `locale` option configures Handsontable's [locale](@/guides/internationalization/locale.md) settings.
81584
81577
  *
81585
81578
  * You can set the `locale` option to any valid and canonicalized Unicode BCP 47 locale tag,
81586
- * both for the [entire grid](@/guides/internationalization/locale.md#setting-the-grid-s-locale),
81587
- * and for [individual columns](@/guides/internationalization/locale.md#setting-a-column-s-locale).
81579
+ * both for the [entire grid](@/guides/internationalization/locale.md#set-the-grid-s-locale),
81580
+ * and for [individual columns](@/guides/internationalization/locale.md#set-a-column-s-locale).
81588
81581
  *
81589
81582
  * Read more:
81590
81583
  * - [Locale](@/guides/internationalization/locale.md)
@@ -82237,7 +82230,7 @@ var _default = function _default() {
82237
82230
  * | `true` | Enable the [`PersistentState`](@/api/persistentState.md) plugin |
82238
82231
  *
82239
82232
  * Read more:
82240
- * - [Saving data: Saving data locally](@/guides/getting-started/saving-data.md#saving-data-locally)
82233
+ * - [Saving data: Saving data locally](@/guides/getting-started/saving-data.md#save-data-locally)
82241
82234
  * - [Plugins: `PersistentState`](@/api/persistentState.md)
82242
82235
  *
82243
82236
  * @memberof Options#
@@ -82680,7 +82673,7 @@ var _default = function _default() {
82680
82673
  * | `'multiple'` | Allow the user to select multiple ranges of cells at a time. |
82681
82674
  *
82682
82675
  * Read more:
82683
- * - [Selection: Selecting ranges](@/guides/cell-features/selection.md#selecting-ranges)
82676
+ * - [Selection: Selecting ranges](@/guides/cell-features/selection.md#select-ranges)
82684
82677
  *
82685
82678
  * @memberof Options#
82686
82679
  * @type {string}
@@ -82771,7 +82764,7 @@ var _default = function _default() {
82771
82764
  * | `true` | - Disable pasting data into this column<br>- On pasting, paste data into the next column to the right |
82772
82765
  *
82773
82766
  * Read more:
82774
- * - [Configuration options: Setting column options](@/guides/getting-started/configuration-options.md#setting-column-options)
82767
+ * - [Configuration options: Setting column options](@/guides/getting-started/configuration-options.md#set-column-options)
82775
82768
  *
82776
82769
  * @memberof Options#
82777
82770
  * @type {boolean}
@@ -82804,7 +82797,7 @@ var _default = function _default() {
82804
82797
  * | `true` | - Disable pasting data into this row<br>- On pasting, paste data into the row below |
82805
82798
  *
82806
82799
  * Read more:
82807
- * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options.md#setting-row-options)
82800
+ * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options.md#set-row-options)
82808
82801
  *
82809
82802
  * @memberof Options#
82810
82803
  * @type {boolean}
@@ -96288,8 +96281,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
96288
96281
  Handsontable.CellCoords = _src.CellCoords;
96289
96282
  Handsontable.CellRange = _src.CellRange;
96290
96283
  Handsontable.packageName = 'handsontable';
96291
- Handsontable.buildDate = "05/12/2022 10:27:39";
96292
- Handsontable.version = "0.0.0-next-d4ae6d7-20221205";
96284
+ Handsontable.buildDate = "06/12/2022 11:00:58";
96285
+ Handsontable.version = "0.0.0-next-0c2e6f8-20221206";
96293
96286
  Handsontable.languages = {
96294
96287
  dictionaryKeys: _registry.dictionaryKeys,
96295
96288
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -111278,7 +111271,6 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
111278
111271
  dataSource = config.dataSource,
111279
111272
  internalSource = config.internalSource,
111280
111273
  source = config.source,
111281
- metaManager = config.metaManager,
111282
111274
  firstRun = config.firstRun;
111283
111275
  var capitalizedInternalSource = (0, _string.toUpperCaseFirst)(internalSource);
111284
111276
  var tableMeta = hotInstance.getSettings();
@@ -111293,7 +111285,7 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
111293
111285
  dataMap.destroy();
111294
111286
  }
111295
111287
  data = hotInstance.runHooks("before".concat(capitalizedInternalSource), data, firstRun, source);
111296
- var newDataMap = new _dataMap.default(hotInstance, data, metaManager);
111288
+ var newDataMap = new _dataMap.default(hotInstance, data, tableMeta);
111297
111289
 
111298
111290
  // We need to apply the new dataMap immediately, because of some asynchronous logic in the
111299
111291
  // `autoRowSize`/`autoColumnSize` plugins.
@@ -111613,7 +111605,7 @@ var _recorder = __webpack_require__(825);
111613
111605
  * @param {object} options The manager's options
111614
111606
  * @param {EventTarget} options.ownerWindow A starting `window` element
111615
111607
  * @param {Function} options.handleEvent A condition on which `event` is handled.
111616
- * @param {Function} options.beforeKeyDown A hook fired before the `keydown` event is handled. You can use it to [block a keyboard shortcut's actions](@/guides/accessories-and-menus/keyboard-shortcuts.md#blocking-a-keyboard-shortcut-s-actions).
111608
+ * @param {Function} options.beforeKeyDown A hook fired before the `keydown` event is handled. You can use it to [block a keyboard shortcut's actions](@/guides/accessories-and-menus/keyboard-shortcuts.md#block-a-keyboard-shortcut-s-actions).
111617
111609
  * @param {Function} options.afterKeyDown A hook fired after the `keydown` event is handled
111618
111610
  */
111619
111611
  var createShortcutManager = function createShortcutManager(_ref) {
@@ -123070,7 +123062,7 @@ var PLUGIN_PRIORITY = 220;
123070
123062
  * The `ColumnSummary` plugin lets you [easily summarize your columns](@/guides/columns/column-summary.md).
123071
123063
  *
123072
123064
  * You can use the [built-in summary functions](@/guides/columns/column-summary.md#built-in-summary-functions),
123073
- * or implement a [custom summary function](@/guides/columns/column-summary.md#implementing-a-custom-summary-function).
123065
+ * or implement a [custom summary function](@/guides/columns/column-summary.md#implement-a-custom-summary-function).
123074
123066
  *
123075
123067
  * For each column summary, you can set the following configuration options:
123076
123068
  *
@@ -123081,12 +123073,12 @@ var PLUGIN_PRIORITY = 220;
123081
123073
  * | `type` | Yes | String | - | [Sets a summary function](@/guides/columns/column-summary.md#step-3-calculate-your-summary) |
123082
123074
  * | `destinationRow` | Yes | Number | - | [Sets the destination cell's row coordinate](@/guides/columns/column-summary.md#step-4-provide-the-destination-cell-s-coordinates) |
123083
123075
  * | `destinationColumn` | Yes | Number | - | [Sets the destination cell's column coordinate](@/guides/columns/column-summary.md#step-4-provide-the-destination-cell-s-coordinates) |
123084
- * | `forceNumeric` | No | Boolean | `false` | [Forces the summary to treat non-numerics as numerics](@/guides/columns/column-summary.md#forcing-numeric-values) |
123076
+ * | `forceNumeric` | No | Boolean | `false` | [Forces the summary to treat non-numerics as numerics](@/guides/columns/column-summary.md#force-numeric-values) |
123085
123077
  * | `reversedRowCoords` | No | Boolean | `false` | [Reverses row coordinates](@/guides/columns/column-summary.md#step-5-make-room-for-the-destination-cell) |
123086
- * | `suppressDataTypeErrors` | No | Boolean | `true` | [Suppresses data type errors](@/guides/columns/column-summary.md#throwing-data-type-errors) |
123078
+ * | `suppressDataTypeErrors` | No | Boolean | `true` | [Suppresses data type errors](@/guides/columns/column-summary.md#throw-data-type-errors) |
123087
123079
  * | `readOnly` | No | Boolean | `true` | Makes summary cell read-only |
123088
- * | `roundFloat` | No | Number | - | [Rounds summary result](@/guides/columns/column-summary.md#rounding-a-column-summary-result) |
123089
- * | `customFunction` | No | Function | - | [Lets you add a custom summary function](@/guides/columns/column-summary.md#implementing-a-custom-summary-function) |
123080
+ * | `roundFloat` | No | Number | - | [Rounds summary result](@/guides/columns/column-summary.md#round-a-column-summary-result) |
123081
+ * | `customFunction` | No | Function | - | [Lets you add a custom summary function](@/guides/columns/column-summary.md#implement-a-custom-summary-function) |
123090
123082
  *
123091
123083
  * @example
123092
123084
  * ::: only-for javascript
@@ -124056,6 +124048,15 @@ var Endpoints = /*#__PURE__*/function () {
124056
124048
  var useOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
124057
124049
  var alterRowOffset = endpoint.alterRowOffset || 0;
124058
124050
  var alterColOffset = endpoint.alterColumnOffset || 0;
124051
+ var _ref = [this.hot.toVisualRow(endpoint.destinationRow), this.hot.toVisualColumn(endpoint.destinationColumn)],
124052
+ visualRowIndex = _ref[0],
124053
+ visualColumnIndex = _ref[1];
124054
+ if (visualColumnIndex !== null && visualRowIndex !== null) {
124055
+ // Clear the meta on the "old" indexes
124056
+ var cellMeta = this.hot.getCellMeta(visualRowIndex, visualColumnIndex);
124057
+ cellMeta.readOnly = false;
124058
+ cellMeta.className = '';
124059
+ }
124059
124060
  this.cellsToSetCache.push([this.hot.toVisualRow(endpoint.destinationRow + (useOffset ? alterRowOffset : 0)), this.hot.toVisualColumn(endpoint.destinationColumn + (useOffset ? alterColOffset : 0)), '']);
124060
124061
  }
124061
124062
 
@@ -124070,14 +124071,17 @@ var Endpoints = /*#__PURE__*/function () {
124070
124071
  key: "setEndpointValue",
124071
124072
  value: function setEndpointValue(endpoint, source) {
124072
124073
  var render = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
124074
+ // We'll need the reversed offset values, because cellMeta will be shifted AGAIN afterwards.
124075
+ var reverseRowOffset = -1 * endpoint.alterRowOffset || 0;
124076
+ var reverseColOffset = -1 * endpoint.alterColumnOffset || 0;
124073
124077
  var visualEndpointRowIndex = this.hot.toVisualRow(endpoint.destinationRow);
124074
124078
  if (endpoint.destinationRow >= this.hot.countRows() || endpoint.destinationColumn >= this.hot.countCols()) {
124075
124079
  this.throwOutOfBoundsWarning();
124076
124080
  return;
124077
124081
  }
124078
- var destinationVisualRow = this.hot.toVisualRow(endpoint.destinationRow);
124082
+ var destinationVisualRow = this.hot.toVisualRow(endpoint.destinationRow + reverseRowOffset);
124079
124083
  if (destinationVisualRow !== null) {
124080
- var cellMeta = this.hot.getCellMeta(destinationVisualRow, endpoint.destinationColumn);
124084
+ var cellMeta = this.hot.getCellMeta(destinationVisualRow, endpoint.destinationColumn + reverseColOffset);
124081
124085
  if (source === 'init' || cellMeta.readOnly !== endpoint.readOnly) {
124082
124086
  cellMeta.readOnly = endpoint.readOnly;
124083
124087
  cellMeta.className = 'columnSummaryResult';