handsontable 15.0.0 → 15.1.0-next-dfdf994-20250206

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.
Files changed (168) hide show
  1. package/3rdparty/walkontable/src/index.js +2 -0
  2. package/3rdparty/walkontable/src/index.mjs +2 -1
  3. package/3rdparty/walkontable/src/overlays.js +2 -39
  4. package/3rdparty/walkontable/src/overlays.mjs +2 -39
  5. package/3rdparty/walkontable/src/renderer/_base.js +3 -4
  6. package/3rdparty/walkontable/src/renderer/_base.mjs +2 -2
  7. package/3rdparty/walkontable/src/renderer/cells.js +7 -11
  8. package/3rdparty/walkontable/src/renderer/cells.mjs +6 -9
  9. package/3rdparty/walkontable/src/renderer/colGroup.js +6 -7
  10. package/3rdparty/walkontable/src/renderer/colGroup.mjs +5 -5
  11. package/3rdparty/walkontable/src/renderer/columnHeaders.js +4 -5
  12. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +3 -3
  13. package/3rdparty/walkontable/src/renderer/index.js +18 -19
  14. package/3rdparty/walkontable/src/renderer/index.mjs +6 -6
  15. package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -7
  16. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -5
  17. package/3rdparty/walkontable/src/renderer/rows.js +23 -11
  18. package/3rdparty/walkontable/src/renderer/rows.mjs +23 -10
  19. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  20. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  21. package/3rdparty/walkontable/src/selection/border/border.js +10 -2
  22. package/3rdparty/walkontable/src/selection/border/border.mjs +10 -2
  23. package/3rdparty/walkontable/src/utils/nodesPool.js +21 -6
  24. package/3rdparty/walkontable/src/utils/nodesPool.mjs +21 -6
  25. package/3rdparty/walkontable/src/utils/orderView/index.js +4 -5
  26. package/3rdparty/walkontable/src/utils/orderView/index.mjs +2 -2
  27. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +3 -4
  28. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  29. package/3rdparty/walkontable/src/utils/orderView/view.js +60 -76
  30. package/3rdparty/walkontable/src/utils/orderView/view.mjs +59 -74
  31. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.js +138 -0
  32. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.mjs +135 -0
  33. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.js +72 -0
  34. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.mjs +68 -0
  35. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  36. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  37. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +4 -5
  38. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +3 -3
  39. package/CHANGELOG.md +54 -0
  40. package/README.md +3 -3
  41. package/base.js +2 -2
  42. package/base.mjs +2 -2
  43. package/cellTypes/dropdownType/dropdownType.js +4 -2
  44. package/cellTypes/dropdownType/dropdownType.mjs +4 -2
  45. package/core.js +39 -38
  46. package/core.mjs +36 -35
  47. package/dataMap/dataMap.js +8 -0
  48. package/dataMap/dataMap.mjs +8 -0
  49. package/dataMap/dataSource.js +4 -0
  50. package/dataMap/dataSource.mjs +4 -0
  51. package/dataMap/metaManager/lazyFactoryMap.js +8 -5
  52. package/dataMap/metaManager/lazyFactoryMap.mjs +8 -5
  53. package/dataMap/metaManager/metaSchema.js +24 -9
  54. package/dataMap/metaManager/metaSchema.mjs +24 -9
  55. package/dist/handsontable.css +6 -2
  56. package/dist/handsontable.full.css +6 -2
  57. package/dist/handsontable.full.js +8020 -6915
  58. package/dist/handsontable.full.min.css +3 -3
  59. package/dist/handsontable.full.min.js +530 -528
  60. package/dist/handsontable.js +3827 -2902
  61. package/dist/handsontable.min.css +3 -3
  62. package/dist/handsontable.min.js +35 -33
  63. package/editors/autocompleteEditor/autocompleteEditor.js +1 -3
  64. package/editors/autocompleteEditor/autocompleteEditor.mjs +1 -3
  65. package/editors/dateEditor/dateEditor.js +4 -0
  66. package/editors/dateEditor/dateEditor.mjs +4 -0
  67. package/editors/dropdownEditor/dropdownEditor.js +3 -16
  68. package/editors/dropdownEditor/dropdownEditor.mjs +3 -16
  69. package/editors/handsontableEditor/handsontableEditor.js +4 -4
  70. package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
  71. package/focusManager.js +1 -1
  72. package/focusManager.mjs +1 -1
  73. package/helpers/dom/element.d.ts +0 -1
  74. package/helpers/mixed.js +2 -2
  75. package/helpers/mixed.mjs +2 -2
  76. package/helpers/object.js +4 -0
  77. package/helpers/object.mjs +4 -0
  78. package/package.json +2 -2
  79. package/plugins/base/base.js +0 -7
  80. package/plugins/base/base.mjs +0 -7
  81. package/plugins/comments/comments.js +12 -3
  82. package/plugins/comments/comments.mjs +12 -3
  83. package/plugins/contextMenu/contextMenu.js +2 -7
  84. package/plugins/contextMenu/contextMenu.mjs +2 -7
  85. package/plugins/contextMenu/menu/menu.js +2 -2
  86. package/plugins/contextMenu/menu/menu.mjs +2 -2
  87. package/plugins/contextMenu/predefinedItems/clearColumn.js +15 -4
  88. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +15 -4
  89. package/plugins/filters/conditionCollection.js +8 -7
  90. package/plugins/filters/conditionCollection.mjs +8 -7
  91. package/plugins/filters/filters.js +26 -16
  92. package/plugins/filters/filters.mjs +26 -16
  93. package/plugins/filters/utils.js +7 -24
  94. package/plugins/filters/utils.mjs +7 -24
  95. package/plugins/hiddenColumns/hiddenColumns.js +1 -3
  96. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -3
  97. package/plugins/hiddenRows/hiddenRows.js +1 -3
  98. package/plugins/hiddenRows/hiddenRows.mjs +1 -3
  99. package/plugins/manualRowMove/manualRowMove.js +1 -1
  100. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  101. package/plugins/mergeCells/calculations/autofill.js +60 -44
  102. package/plugins/mergeCells/calculations/autofill.mjs +60 -44
  103. package/plugins/mergeCells/cellsCollection.js +25 -8
  104. package/plugins/mergeCells/cellsCollection.mjs +25 -8
  105. package/plugins/mergeCells/mergeCells.js +15 -16
  106. package/plugins/mergeCells/mergeCells.mjs +15 -16
  107. package/plugins/nestedHeaders/nestedHeaders.js +6 -1
  108. package/plugins/nestedHeaders/nestedHeaders.mjs +6 -1
  109. package/plugins/nestedHeaders/stateManager/index.js +1 -2
  110. package/plugins/nestedHeaders/stateManager/index.mjs +1 -2
  111. package/plugins/nestedHeaders/utils/ghostTable.js +4 -0
  112. package/plugins/nestedHeaders/utils/ghostTable.mjs +4 -0
  113. package/plugins/nestedRows/utils/rowMoveController.js +1 -6
  114. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -6
  115. package/plugins/undoRedo/actions/_base.js +19 -0
  116. package/plugins/undoRedo/actions/_base.mjs +15 -0
  117. package/plugins/undoRedo/actions/cellAlignment.js +85 -0
  118. package/plugins/undoRedo/actions/cellAlignment.mjs +81 -0
  119. package/plugins/undoRedo/actions/columnMove.js +84 -0
  120. package/plugins/undoRedo/actions/columnMove.mjs +80 -0
  121. package/plugins/undoRedo/actions/columnSort.js +73 -0
  122. package/plugins/undoRedo/actions/columnSort.mjs +69 -0
  123. package/plugins/undoRedo/actions/createColumn.js +60 -0
  124. package/plugins/undoRedo/actions/createColumn.mjs +56 -0
  125. package/plugins/undoRedo/actions/createRow.js +65 -0
  126. package/plugins/undoRedo/actions/createRow.mjs +61 -0
  127. package/plugins/undoRedo/actions/dataChange.js +123 -0
  128. package/plugins/undoRedo/actions/dataChange.mjs +119 -0
  129. package/plugins/undoRedo/actions/filters.js +66 -0
  130. package/plugins/undoRedo/actions/filters.mjs +62 -0
  131. package/plugins/undoRedo/actions/index.js +27 -0
  132. package/plugins/undoRedo/actions/index.mjs +23 -0
  133. package/plugins/undoRedo/actions/mergeCells.js +63 -0
  134. package/plugins/undoRedo/actions/mergeCells.mjs +59 -0
  135. package/plugins/undoRedo/actions/removeColumn.js +176 -0
  136. package/plugins/undoRedo/actions/removeColumn.mjs +172 -0
  137. package/plugins/undoRedo/actions/removeRow.js +119 -0
  138. package/plugins/undoRedo/actions/removeRow.mjs +115 -0
  139. package/plugins/undoRedo/actions/rowMove.js +84 -0
  140. package/plugins/undoRedo/actions/rowMove.mjs +80 -0
  141. package/plugins/undoRedo/actions/unmergeCells.js +56 -0
  142. package/plugins/undoRedo/actions/unmergeCells.mjs +52 -0
  143. package/plugins/undoRedo/index.js +3 -4
  144. package/plugins/undoRedo/index.mjs +1 -2
  145. package/plugins/undoRedo/undoRedo.js +277 -879
  146. package/plugins/undoRedo/undoRedo.mjs +277 -880
  147. package/plugins/undoRedo/utils.js +37 -0
  148. package/plugins/undoRedo/utils.mjs +33 -0
  149. package/renderers/checkboxRenderer/checkboxRenderer.js +8 -1
  150. package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -1
  151. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +1 -0
  152. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +1 -0
  153. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +2 -1
  154. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +2 -1
  155. package/styles/handsontable.css +75 -103
  156. package/styles/handsontable.min.css +3 -3
  157. package/styles/ht-theme-horizon.css +2 -2
  158. package/styles/ht-theme-horizon.min.css +2 -2
  159. package/styles/ht-theme-main.css +2 -2
  160. package/styles/ht-theme-main.min.css +2 -2
  161. package/tableView.js +17 -1
  162. package/tableView.mjs +17 -1
  163. package/utils/autoResize.js +1 -1
  164. package/utils/autoResize.mjs +1 -1
  165. package/utils/parseTable.js +1 -1
  166. package/utils/parseTable.mjs +1 -1
  167. package/validators/dateValidator/dateValidator.js +1 -1
  168. package/validators/dateValidator/dateValidator.mjs +1 -1
@@ -182,6 +182,10 @@ class DataSource {
182
182
  value = valueHolder.value;
183
183
  }
184
184
  }
185
+ if (!Number.isInteger(row)) {
186
+ // invalid row number
187
+ return;
188
+ }
185
189
  if (!Number.isInteger(column)) {
186
190
  // column argument is the prop name
187
191
  setProperty(this.data[row], column, value);
@@ -10,7 +10,8 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
10
10
  require("core-js/modules/es.set.is-superset-of.v2.js");
11
11
  require("core-js/modules/es.set.symmetric-difference.v2.js");
12
12
  require("core-js/modules/es.set.union.v2.js");
13
- var _array = require("../../helpers/array");
13
+ require("core-js/modules/esnext.iterator.constructor.js");
14
+ require("core-js/modules/esnext.iterator.filter.js");
14
15
  var _utils = require("./utils");
15
16
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
16
17
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -208,7 +209,7 @@ class LazyFactoryMap {
208
209
  * new data.
209
210
  *
210
211
  * @param {number} key The key as volatile zero-based index at which to begin inserting space for new data.
211
- * @param {number} [amount=1] Ammount of data to insert.
212
+ * @param {number} [amount=1] Amount of data to insert.
212
213
  */
213
214
  insert(key) {
214
215
  let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
@@ -227,7 +228,7 @@ class LazyFactoryMap {
227
228
  * Removes (soft remove) data from "index" and according to the amount of data.
228
229
  *
229
230
  * @param {number} key The key as volatile zero-based index at which to begin removing the data.
230
- * @param {number} [amount=1] Ammount data to remove.
231
+ * @param {number} [amount=1] Amount data to remove.
231
232
  */
232
233
  remove(key) {
233
234
  let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
@@ -256,7 +257,9 @@ class LazyFactoryMap {
256
257
  * @returns {Iterator}
257
258
  */
258
259
  values() {
259
- return (0, _array.arrayFilter)(this.data, (_, index) => !this.holes.has(index))[Symbol.iterator]();
260
+ return this.data.filter((meta, index) => {
261
+ return meta !== undefined && !this.holes.has(index);
262
+ })[Symbol.iterator]();
260
263
  }
261
264
 
262
265
  /**
@@ -268,7 +271,7 @@ class LazyFactoryMap {
268
271
  const validEntries = [];
269
272
  for (let i = 0; i < this.data.length; i++) {
270
273
  const keyIndex = this._getKeyByStorageIndex(i);
271
- if (keyIndex !== -1) {
274
+ if (keyIndex !== -1 && this.data[i] !== undefined) {
272
275
  validEntries.push([keyIndex, this.data[i]]);
273
276
  }
274
277
  }
@@ -7,10 +7,11 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
7
7
  import "core-js/modules/es.set.is-superset-of.v2.js";
8
8
  import "core-js/modules/es.set.symmetric-difference.v2.js";
9
9
  import "core-js/modules/es.set.union.v2.js";
10
+ import "core-js/modules/esnext.iterator.constructor.js";
11
+ import "core-js/modules/esnext.iterator.filter.js";
10
12
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
13
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
14
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
- import { arrayFilter } from "../../helpers/array.mjs";
14
15
  import { assert, isUnsignedNumber, isNullish } from "./utils.mjs";
15
16
  /* eslint-disable jsdoc/require-description-complete-sentence */
16
17
  /**
@@ -205,7 +206,7 @@ export default class LazyFactoryMap {
205
206
  * new data.
206
207
  *
207
208
  * @param {number} key The key as volatile zero-based index at which to begin inserting space for new data.
208
- * @param {number} [amount=1] Ammount of data to insert.
209
+ * @param {number} [amount=1] Amount of data to insert.
209
210
  */
210
211
  insert(key) {
211
212
  let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
@@ -224,7 +225,7 @@ export default class LazyFactoryMap {
224
225
  * Removes (soft remove) data from "index" and according to the amount of data.
225
226
  *
226
227
  * @param {number} key The key as volatile zero-based index at which to begin removing the data.
227
- * @param {number} [amount=1] Ammount data to remove.
228
+ * @param {number} [amount=1] Amount data to remove.
228
229
  */
229
230
  remove(key) {
230
231
  let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
@@ -253,7 +254,9 @@ export default class LazyFactoryMap {
253
254
  * @returns {Iterator}
254
255
  */
255
256
  values() {
256
- return arrayFilter(this.data, (_, index) => !this.holes.has(index))[Symbol.iterator]();
257
+ return this.data.filter((meta, index) => {
258
+ return meta !== undefined && !this.holes.has(index);
259
+ })[Symbol.iterator]();
257
260
  }
258
261
 
259
262
  /**
@@ -265,7 +268,7 @@ export default class LazyFactoryMap {
265
268
  const validEntries = [];
266
269
  for (let i = 0; i < this.data.length; i++) {
267
270
  const keyIndex = this._getKeyByStorageIndex(i);
268
- if (keyIndex !== -1) {
271
+ if (keyIndex !== -1 && this.data[i] !== undefined) {
269
272
  validEntries.push([keyIndex, this.data[i]]);
270
273
  }
271
274
  }
@@ -2631,7 +2631,7 @@ var _default = () => {
2631
2631
  * columns: [{
2632
2632
  * type: 'checkbox',
2633
2633
  * // add 'My label:' after the checkbox
2634
- * label: { position: 'after', value: 'My label: ', separated: true }
2634
+ * label: { position: 'before', value: 'My label: ', separated: true }
2635
2635
  * }],
2636
2636
  * ```
2637
2637
  */
@@ -2992,11 +2992,13 @@ var _default = () => {
2992
2992
  *
2993
2993
  * You can set the `mergeCells` option to one of the following:
2994
2994
  *
2995
- * | Setting | Description |
2996
- * | ------------------- | --------------------------------------------------------------------------------------------------- |
2997
- * | `true` | Enable the [`MergeCells`](@/api/mergeCells.md) plugin |
2998
- * | `false` | Disable the [`MergeCells`](@/api/mergeCells.md) plugin |
2999
- * | An array of objects | - Enable the [`MergeCells`](@/api/mergeCells.md) plugin<br>- Merge specific cells at initialization |
2995
+ * | Setting | Description |
2996
+ * | --------------------- | --------------------------------------------------------------------------------------------------- |
2997
+ * | `true` | Enable the [`MergeCells`](@/api/mergeCells.md) plugin |
2998
+ * | `false` | Disable the [`MergeCells`](@/api/mergeCells.md) plugin |
2999
+ * | An array of objects | - Enable the [`MergeCells`](@/api/mergeCells.md) plugin<br>- Merge specific cells at initialization |
3000
+ * | { virtualized: true } | Enable the [`MergeCells`](@/api/mergeCells.md) plugin with enabled virtualization mode |
3001
+ *
3000
3002
  *
3001
3003
  * To merge specific cells at Handsontable's initialization,
3002
3004
  * set the `mergeCells` option to an array of objects, with the following properties:
@@ -3031,6 +3033,20 @@ var _default = () => {
3031
3033
  * // merge cells from cell (5,6) to cell (3,3)
3032
3034
  * {row: 5, col: 6, rowspan: 3, colspan: 3}
3033
3035
  * ],
3036
+ *
3037
+ * // enable the `MergeCells` plugin with enabled virtualization mode
3038
+ * // and merge specific cells at initialization
3039
+ * mergeCells: {
3040
+ * virtualized: true,
3041
+ * cells: [
3042
+ * // merge cells from cell (1,1) to cell (3,3)
3043
+ * {row: 1, col: 1, rowspan: 3, colspan: 3},
3044
+ * // merge cells from cell (3,4) to cell (2,2)
3045
+ * {row: 3, col: 4, rowspan: 2, colspan: 2},
3046
+ * // merge cells from cell (5,6) to cell (3,3)
3047
+ * {row: 5, col: 6, rowspan: 3, colspan: 3}
3048
+ * ],
3049
+ * },
3034
3050
  * ```
3035
3051
  */
3036
3052
  mergeCells: false,
@@ -4604,8 +4620,7 @@ var _default = () => {
4604
4620
  * | `true` | Enable the [`UndoRedo`](@/api/undoRedo.md) plugin |
4605
4621
  * | `false` | Disable the [`UndoRedo`](@/api/undoRedo.md) plugin |
4606
4622
  *
4607
- * By default, the `undo` option is set to `undefined`,
4608
- * but the [`UndoRedo`](@/api/undoRedo.md) plugin acts as enabled.
4623
+ * By default, the `undo` option is set to `true`,
4609
4624
  * To disable the [`UndoRedo`](@/api/undoRedo.md) plugin completely,
4610
4625
  * set the `undo` option to `false`.
4611
4626
  *
@@ -4623,7 +4638,7 @@ var _default = () => {
4623
4638
  * undo: true,
4624
4639
  * ```
4625
4640
  */
4626
- undo: undefined,
4641
+ undo: true,
4627
4642
  /**
4628
4643
  * @description
4629
4644
  * The `validator` option sets a [cell validator](@/guides/cell-functions/cell-validator/cell-validator.md) for a cell.
@@ -2628,7 +2628,7 @@ export default () => {
2628
2628
  * columns: [{
2629
2629
  * type: 'checkbox',
2630
2630
  * // add 'My label:' after the checkbox
2631
- * label: { position: 'after', value: 'My label: ', separated: true }
2631
+ * label: { position: 'before', value: 'My label: ', separated: true }
2632
2632
  * }],
2633
2633
  * ```
2634
2634
  */
@@ -2989,11 +2989,13 @@ export default () => {
2989
2989
  *
2990
2990
  * You can set the `mergeCells` option to one of the following:
2991
2991
  *
2992
- * | Setting | Description |
2993
- * | ------------------- | --------------------------------------------------------------------------------------------------- |
2994
- * | `true` | Enable the [`MergeCells`](@/api/mergeCells.md) plugin |
2995
- * | `false` | Disable the [`MergeCells`](@/api/mergeCells.md) plugin |
2996
- * | An array of objects | - Enable the [`MergeCells`](@/api/mergeCells.md) plugin<br>- Merge specific cells at initialization |
2992
+ * | Setting | Description |
2993
+ * | --------------------- | --------------------------------------------------------------------------------------------------- |
2994
+ * | `true` | Enable the [`MergeCells`](@/api/mergeCells.md) plugin |
2995
+ * | `false` | Disable the [`MergeCells`](@/api/mergeCells.md) plugin |
2996
+ * | An array of objects | - Enable the [`MergeCells`](@/api/mergeCells.md) plugin<br>- Merge specific cells at initialization |
2997
+ * | { virtualized: true } | Enable the [`MergeCells`](@/api/mergeCells.md) plugin with enabled virtualization mode |
2998
+ *
2997
2999
  *
2998
3000
  * To merge specific cells at Handsontable's initialization,
2999
3001
  * set the `mergeCells` option to an array of objects, with the following properties:
@@ -3028,6 +3030,20 @@ export default () => {
3028
3030
  * // merge cells from cell (5,6) to cell (3,3)
3029
3031
  * {row: 5, col: 6, rowspan: 3, colspan: 3}
3030
3032
  * ],
3033
+ *
3034
+ * // enable the `MergeCells` plugin with enabled virtualization mode
3035
+ * // and merge specific cells at initialization
3036
+ * mergeCells: {
3037
+ * virtualized: true,
3038
+ * cells: [
3039
+ * // merge cells from cell (1,1) to cell (3,3)
3040
+ * {row: 1, col: 1, rowspan: 3, colspan: 3},
3041
+ * // merge cells from cell (3,4) to cell (2,2)
3042
+ * {row: 3, col: 4, rowspan: 2, colspan: 2},
3043
+ * // merge cells from cell (5,6) to cell (3,3)
3044
+ * {row: 5, col: 6, rowspan: 3, colspan: 3}
3045
+ * ],
3046
+ * },
3031
3047
  * ```
3032
3048
  */
3033
3049
  mergeCells: false,
@@ -4601,8 +4617,7 @@ export default () => {
4601
4617
  * | `true` | Enable the [`UndoRedo`](@/api/undoRedo.md) plugin |
4602
4618
  * | `false` | Disable the [`UndoRedo`](@/api/undoRedo.md) plugin |
4603
4619
  *
4604
- * By default, the `undo` option is set to `undefined`,
4605
- * but the [`UndoRedo`](@/api/undoRedo.md) plugin acts as enabled.
4620
+ * By default, the `undo` option is set to `true`,
4606
4621
  * To disable the [`UndoRedo`](@/api/undoRedo.md) plugin completely,
4607
4622
  * set the `undo` option to `false`.
4608
4623
  *
@@ -4620,7 +4635,7 @@ export default () => {
4620
4635
  * undo: true,
4621
4636
  * ```
4622
4637
  */
4623
- undo: undefined,
4638
+ undo: true,
4624
4639
  /**
4625
4640
  * @description
4626
4641
  * The `validator` option sets a [cell validator](@/guides/cell-functions/cell-validator/cell-validator.md) for a cell.
@@ -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: 15.0.0
29
- * Release date: 16/12/2024 (built at 16/12/2024 13:19:50)
28
+ * Version: 15.1.0-next-dfdf994-20250206
29
+ * Release date: 12/02/2025 (built at 06/02/2025 09:05:15)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -1990,6 +1990,10 @@ textarea.HandsontableCopyPaste {
1990
1990
  display: none;
1991
1991
  }
1992
1992
 
1993
+ thead th.hiddenHeaderText .colHeader {
1994
+ opacity: 0;
1995
+ }
1996
+
1993
1997
  @charset "UTF-8";
1994
1998
 
1995
1999
  .handsontable th.ht_nestingLevels {
@@ -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: 15.0.0
29
- * Release date: 16/12/2024 (built at 16/12/2024 13:19:50)
28
+ * Version: 15.1.0-next-dfdf994-20250206
29
+ * Release date: 12/02/2025 (built at 06/02/2025 09:05:15)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -1990,6 +1990,10 @@ textarea.HandsontableCopyPaste {
1990
1990
  display: none;
1991
1991
  }
1992
1992
 
1993
+ thead th.hiddenHeaderText .colHeader {
1994
+ opacity: 0;
1995
+ }
1996
+
1993
1997
  @charset "UTF-8";
1994
1998
 
1995
1999
  .handsontable th.ht_nestingLevels {