handsontable 0.0.0-next-30065c6-20250405 → 0.0.0-next-ff10728-20250410

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.

Potentially problematic release.


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

Files changed (106) hide show
  1. package/3rdparty/walkontable/src/cell/range.js +0 -14
  2. package/3rdparty/walkontable/src/cell/range.mjs +0 -14
  3. package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -4
  4. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -4
  5. package/3rdparty/walkontable/src/selection/border/border.js +0 -5
  6. package/3rdparty/walkontable/src/selection/border/border.mjs +0 -5
  7. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +4 -3
  8. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +4 -3
  9. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -8
  10. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +10 -8
  11. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +4 -3
  12. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +4 -3
  13. package/3rdparty/walkontable/src/table.js +2 -5
  14. package/3rdparty/walkontable/src/table.mjs +2 -5
  15. package/CHANGELOG.md +0 -39
  16. package/base.js +2 -2
  17. package/base.mjs +2 -2
  18. package/core/focusCatcher/focusDetector.js +1 -1
  19. package/core/focusCatcher/focusDetector.mjs +2 -2
  20. package/core/hooks/constants.js +0 -8
  21. package/core/hooks/constants.mjs +0 -8
  22. package/core/hooks/index.d.ts +0 -1
  23. package/core.d.ts +1 -0
  24. package/core.js +25 -32
  25. package/core.mjs +26 -33
  26. package/dataMap/dataMap.js +7 -0
  27. package/dataMap/dataMap.mjs +7 -0
  28. package/dataMap/metaManager/metaSchema.js +0 -1
  29. package/dataMap/metaManager/metaSchema.mjs +0 -1
  30. package/dist/handsontable.css +3 -3
  31. package/dist/handsontable.full.css +3 -3
  32. package/dist/handsontable.full.js +350 -437
  33. package/dist/handsontable.full.min.css +3 -3
  34. package/dist/handsontable.full.min.js +17 -17
  35. package/dist/handsontable.js +350 -437
  36. package/dist/handsontable.min.css +3 -3
  37. package/dist/handsontable.min.js +18 -18
  38. package/editorManager.js +7 -1
  39. package/editorManager.mjs +7 -1
  40. package/editors/autocompleteEditor/autocompleteEditor.js +4 -14
  41. package/editors/autocompleteEditor/autocompleteEditor.mjs +4 -14
  42. package/editors/textEditor/textEditor.js +1 -1
  43. package/editors/textEditor/textEditor.mjs +2 -2
  44. package/helpers/browser.js +1 -1
  45. package/helpers/browser.mjs +1 -1
  46. package/helpers/dom/element.js +2 -2
  47. package/helpers/dom/element.mjs +1 -1
  48. package/helpers/mixed.js +2 -2
  49. package/helpers/mixed.mjs +2 -2
  50. package/helpers/object.js +0 -3
  51. package/helpers/object.mjs +0 -3
  52. package/package.json +1 -1
  53. package/plugins/autoColumnSize/autoColumnSize.js +1 -1
  54. package/plugins/autoColumnSize/autoColumnSize.mjs +1 -1
  55. package/plugins/autoRowSize/autoRowSize.js +6 -1
  56. package/plugins/autoRowSize/autoRowSize.mjs +6 -1
  57. package/plugins/columnSorting/columnSorting.js +4 -0
  58. package/plugins/columnSorting/columnSorting.mjs +4 -0
  59. package/plugins/comments/comments.js +0 -1
  60. package/plugins/comments/comments.mjs +0 -1
  61. package/plugins/contextMenu/menu/defaultShortcutsList.js +2 -2
  62. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +2 -2
  63. package/plugins/contextMenu/menu/menu.js +0 -1
  64. package/plugins/contextMenu/menu/menu.mjs +0 -1
  65. package/plugins/contextMenu/menu/positioner.js +2 -10
  66. package/plugins/contextMenu/menu/positioner.mjs +2 -10
  67. package/plugins/copyPaste/copyPaste.js +15 -12
  68. package/plugins/copyPaste/copyPaste.mjs +16 -13
  69. package/plugins/copyPaste/pasteEvent.js +0 -3
  70. package/plugins/copyPaste/pasteEvent.mjs +0 -3
  71. package/plugins/filters/filters.js +24 -25
  72. package/plugins/filters/filters.mjs +24 -25
  73. package/plugins/filters/ui/multipleSelect.js +1 -7
  74. package/plugins/filters/ui/multipleSelect.mjs +1 -7
  75. package/plugins/hiddenColumns/hiddenColumns.js +1 -1
  76. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  77. package/plugins/hiddenRows/hiddenRows.js +1 -1
  78. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  79. package/plugins/manualColumnResize/manualColumnResize.js +6 -4
  80. package/plugins/manualColumnResize/manualColumnResize.mjs +6 -4
  81. package/plugins/manualRowResize/manualRowResize.js +6 -4
  82. package/plugins/manualRowResize/manualRowResize.mjs +6 -4
  83. package/plugins/mergeCells/mergeCells.js +29 -8
  84. package/plugins/mergeCells/mergeCells.mjs +29 -8
  85. package/plugins/mergeCells/renderer.js +0 -15
  86. package/plugins/mergeCells/renderer.mjs +0 -15
  87. package/plugins/nestedRows/data/dataManager.js +2 -2
  88. package/plugins/nestedRows/data/dataManager.mjs +2 -2
  89. package/plugins/undoRedo/actions/removeColumn.js +14 -19
  90. package/plugins/undoRedo/actions/removeColumn.mjs +14 -19
  91. package/plugins/undoRedo/actions/removeRow.js +4 -12
  92. package/plugins/undoRedo/actions/removeRow.mjs +4 -12
  93. package/selection/selection.js +1 -3
  94. package/selection/selection.mjs +1 -3
  95. package/styles/handsontable.css +15 -14
  96. package/styles/handsontable.min.css +3 -3
  97. package/styles/ht-theme-horizon.css +2 -2
  98. package/styles/ht-theme-horizon.min.css +2 -2
  99. package/styles/ht-theme-main.css +2 -2
  100. package/styles/ht-theme-main.min.css +2 -2
  101. package/tableView.js +8 -5
  102. package/tableView.mjs +8 -5
  103. package/utils/ghostTable.js +0 -3
  104. package/utils/ghostTable.mjs +0 -3
  105. package/plugins/mergeCells/utils.js +0 -31
  106. package/plugins/mergeCells/utils.mjs +0 -27
@@ -1,6 +1,4 @@
1
1
  import { isObject } from "../../helpers/object.mjs";
2
- import { isSafari } from "../../helpers/browser.mjs";
3
- import { sumCellsHeights } from "./utils.mjs";
4
2
  /**
5
3
  * Creates a renderer object for the `MergeCells` plugin.
6
4
  *
@@ -16,7 +14,6 @@ export function createMergeCellRenderer(plugin) {
16
14
  rowIndexMapper: rowMapper,
17
15
  columnIndexMapper: columnMapper
18
16
  } = hot;
19
- const updateNextCellsHeight = new Map();
20
17
 
21
18
  /**
22
19
  * Runs before the cell is rendered.
@@ -38,10 +35,6 @@ export function createMergeCellRenderer(plugin) {
38
35
  if (!isObject(mergedCell)) {
39
36
  TD.removeAttribute('rowspan');
40
37
  TD.removeAttribute('colspan');
41
- if (isSafari() && updateNextCellsHeight.has(row) && !hot.getSettings().rowHeaders) {
42
- TD.style.height = `${updateNextCellsHeight.get(row)}px`;
43
- updateNextCellsHeight.delete(row);
44
- }
45
38
  TD.style.display = '';
46
39
  return;
47
40
  }
@@ -53,14 +46,6 @@ export function createMergeCellRenderer(plugin) {
53
46
  } = mergedCell;
54
47
  const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
55
48
  const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
56
-
57
- // Safari bug fix - the height of the cells next to the merged cell must be defined
58
- // so that their height is proportional to the height of the merged cell
59
- // (this emulates default behavior in Chrome, FF etc.)
60
- if (isSafari() && origColumn === 0 && !hot.getSettings().rowHeaders) {
61
- const height = sumCellsHeights(hot, origRow, origRowspan);
62
- updateNextCellsHeight.set(row, height / origRowspan);
63
- }
64
49
  const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
65
50
  const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
66
51
  const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
@@ -627,7 +627,7 @@ class DataManager {
627
627
  */
628
628
  syncRowWithRawSource(rowElement) {
629
629
  let upmostParent = rowElement;
630
- let tempParent = upmostParent;
630
+ let tempParent = null;
631
631
  do {
632
632
  tempParent = this.getRowParent(tempParent);
633
633
  if (tempParent !== null) {
@@ -635,7 +635,7 @@ class DataManager {
635
635
  }
636
636
  } while (tempParent !== null);
637
637
  this.plugin.disableCoreAPIModifiers();
638
- this.hot.setSourceDataAtCell(this.getRowIndexWithinParent(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
638
+ this.hot.setSourceDataAtCell(this.getRowIndex(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
639
639
  this.plugin.enableCoreAPIModifiers();
640
640
  }
641
641
 
@@ -624,7 +624,7 @@ class DataManager {
624
624
  */
625
625
  syncRowWithRawSource(rowElement) {
626
626
  let upmostParent = rowElement;
627
- let tempParent = upmostParent;
627
+ let tempParent = null;
628
628
  do {
629
629
  tempParent = this.getRowParent(tempParent);
630
630
  if (tempParent !== null) {
@@ -632,7 +632,7 @@ class DataManager {
632
632
  }
633
633
  } while (tempParent !== null);
634
634
  this.plugin.disableCoreAPIModifiers();
635
- this.hot.setSourceDataAtCell(this.getRowIndexWithinParent(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
635
+ this.hot.setSourceDataAtCell(this.getRowIndex(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
636
636
  this.plugin.enableCoreAPIModifiers();
637
637
  }
638
638
 
@@ -37,7 +37,7 @@ class RemoveColumnAction extends _base.BaseAction {
37
37
  */
38
38
  _defineProperty(this, "index", void 0);
39
39
  /**
40
- * @param {number[]} indexes The physical column indexes.
40
+ * @param {number[]} indexes The visual column indexes.
41
41
  */
42
42
  _defineProperty(this, "indexes", void 0);
43
43
  /**
@@ -103,14 +103,16 @@ class RemoveColumnAction extends _base.BaseAction {
103
103
  headers.push(hot.getSettings().colHeaders[hot.toPhysicalColumn(columnIndex + i)] || null);
104
104
  });
105
105
  }
106
+ const columnsMap = hot.columnIndexMapper.getIndexesSequence();
107
+ const rowsMap = hot.rowIndexMapper.getIndexesSequence();
106
108
  return new RemoveColumnAction({
107
109
  index: columnIndex,
108
110
  indexes,
109
111
  data: removedData,
110
112
  amount,
111
113
  headers,
112
- columnPositions: hot.columnIndexMapper.getIndexesSequence(),
113
- rowPositions: hot.rowIndexMapper.getIndexesSequence(),
114
+ columnPositions: columnsMap,
115
+ rowPositions: rowsMap,
114
116
  fixedColumnsStart: hot.getSettings().fixedColumnsStart,
115
117
  removedCellMetas: (0, _utils.getCellMetas)(hot, 0, hot.countRows(), columnIndex, lastColumnIndex)
116
118
  });
@@ -137,27 +139,14 @@ class RemoveColumnAction extends _base.BaseAction {
137
139
  }
138
140
  const sortedHeaders = (0, _array.arrayMap)(this.headers, sortByIndexes);
139
141
  const changes = [];
140
-
141
- // The indexes sequence have to be applied twice.
142
- // * First for proper index translation. The alter method accepts a visual index
143
- // and we are able to retrieve the correct index indicating where to add a new row based
144
- // only on the previous order state of the columns;
145
- // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
146
- // the same as it was in the previous state;
147
- hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
148
- hot.alter('insert_col_start', hot.toVisualColumn(this.indexes[0]), this.indexes.length, 'UndoRedo.undo');
149
- hot.batchExecution(() => {
150
- // Restore row sequence in a case when all columns are removed. the original
151
- // row sequence is lost in that case.
152
- hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
153
- hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
154
- }, true);
142
+ hot.alter('insert_col_start', this.indexes[0], this.indexes.length, 'UndoRedo.undo');
155
143
  (0, _array.arrayEach)(hot.getSourceDataArray(), (rowData, rowIndex) => {
156
144
  (0, _array.arrayEach)(ascendingIndexes, (changedIndex, contiquesIndex) => {
157
145
  rowData[changedIndex] = sortedData[rowIndex][contiquesIndex];
158
146
  changes.push([rowIndex, changedIndex, rowData[changedIndex]]);
159
147
  });
160
148
  });
149
+ hot.setSourceDataAtCell(changes, undefined, undefined, 'UndoRedo.undo');
161
150
  if (typeof this.headers !== 'undefined') {
162
151
  (0, _array.arrayEach)(sortedHeaders, (headerData, columnIndex) => {
163
152
  hot.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;
@@ -167,8 +156,14 @@ class RemoveColumnAction extends _base.BaseAction {
167
156
  let [rowIndex, columnIndex, cellMeta] = _ref2;
168
157
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
169
158
  });
159
+ hot.batchExecution(() => {
160
+ // Restore row sequence in a case when all columns are removed. the original
161
+ // row sequence is lost in that case.
162
+ hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
163
+ hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
164
+ }, true);
170
165
  hot.addHookOnce('afterViewRender', undoneCallback);
171
- hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
166
+ hot.render();
172
167
  }
173
168
 
174
169
  /**
@@ -34,7 +34,7 @@ export class RemoveColumnAction extends BaseAction {
34
34
  */
35
35
  _defineProperty(this, "index", void 0);
36
36
  /**
37
- * @param {number[]} indexes The physical column indexes.
37
+ * @param {number[]} indexes The visual column indexes.
38
38
  */
39
39
  _defineProperty(this, "indexes", void 0);
40
40
  /**
@@ -100,14 +100,16 @@ export class RemoveColumnAction extends BaseAction {
100
100
  headers.push(hot.getSettings().colHeaders[hot.toPhysicalColumn(columnIndex + i)] || null);
101
101
  });
102
102
  }
103
+ const columnsMap = hot.columnIndexMapper.getIndexesSequence();
104
+ const rowsMap = hot.rowIndexMapper.getIndexesSequence();
103
105
  return new RemoveColumnAction({
104
106
  index: columnIndex,
105
107
  indexes,
106
108
  data: removedData,
107
109
  amount,
108
110
  headers,
109
- columnPositions: hot.columnIndexMapper.getIndexesSequence(),
110
- rowPositions: hot.rowIndexMapper.getIndexesSequence(),
111
+ columnPositions: columnsMap,
112
+ rowPositions: rowsMap,
111
113
  fixedColumnsStart: hot.getSettings().fixedColumnsStart,
112
114
  removedCellMetas: getCellMetas(hot, 0, hot.countRows(), columnIndex, lastColumnIndex)
113
115
  });
@@ -134,27 +136,14 @@ export class RemoveColumnAction extends BaseAction {
134
136
  }
135
137
  const sortedHeaders = arrayMap(this.headers, sortByIndexes);
136
138
  const changes = [];
137
-
138
- // The indexes sequence have to be applied twice.
139
- // * First for proper index translation. The alter method accepts a visual index
140
- // and we are able to retrieve the correct index indicating where to add a new row based
141
- // only on the previous order state of the columns;
142
- // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
143
- // the same as it was in the previous state;
144
- hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
145
- hot.alter('insert_col_start', hot.toVisualColumn(this.indexes[0]), this.indexes.length, 'UndoRedo.undo');
146
- hot.batchExecution(() => {
147
- // Restore row sequence in a case when all columns are removed. the original
148
- // row sequence is lost in that case.
149
- hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
150
- hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
151
- }, true);
139
+ hot.alter('insert_col_start', this.indexes[0], this.indexes.length, 'UndoRedo.undo');
152
140
  arrayEach(hot.getSourceDataArray(), (rowData, rowIndex) => {
153
141
  arrayEach(ascendingIndexes, (changedIndex, contiquesIndex) => {
154
142
  rowData[changedIndex] = sortedData[rowIndex][contiquesIndex];
155
143
  changes.push([rowIndex, changedIndex, rowData[changedIndex]]);
156
144
  });
157
145
  });
146
+ hot.setSourceDataAtCell(changes, undefined, undefined, 'UndoRedo.undo');
158
147
  if (typeof this.headers !== 'undefined') {
159
148
  arrayEach(sortedHeaders, (headerData, columnIndex) => {
160
149
  hot.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;
@@ -164,8 +153,14 @@ export class RemoveColumnAction extends BaseAction {
164
153
  let [rowIndex, columnIndex, cellMeta] = _ref2;
165
154
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
166
155
  });
156
+ hot.batchExecution(() => {
157
+ // Restore row sequence in a case when all columns are removed. the original
158
+ // row sequence is lost in that case.
159
+ hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
160
+ hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
161
+ }, true);
167
162
  hot.addHookOnce('afterViewRender', undoneCallback);
168
- hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
163
+ hot.render();
169
164
  }
170
165
 
171
166
  /**
@@ -29,7 +29,7 @@ class RemoveRowAction extends _base.BaseAction {
29
29
  } = _ref;
30
30
  super('remove_row');
31
31
  /**
32
- * @param {number} index The physical row index.
32
+ * @param {number} index The visual row index.
33
33
  */
34
34
  _defineProperty(this, "index", void 0);
35
35
  /**
@@ -97,22 +97,14 @@ class RemoveRowAction extends _base.BaseAction {
97
97
  changes.push([this.index + rowIndexDelta, isNaN(columnIndex) ? columnProp : columnIndex, dataRow[columnProp]]);
98
98
  });
99
99
  });
100
-
101
- // The indexes sequence have to be applied twice.
102
- // * First for proper index translation. The alter method accepts a visual index
103
- // and we are able to retrieve the correct index indicating where to add a new row based
104
- // only on the previous order state of the rows;
105
- // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
106
- // the same as it was in the previous state;
107
- hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
108
- hot.alter('insert_row_above', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.undo');
109
- hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
100
+ hot.alter('insert_row_above', this.index, this.data.length, 'UndoRedo.undo');
110
101
  this.removedCellMetas.forEach(_ref2 => {
111
102
  let [rowIndex, columnIndex, cellMeta] = _ref2;
112
103
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
113
104
  });
114
105
  hot.addHookOnce('afterViewRender', undoneCallback);
115
106
  hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
107
+ hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
116
108
  }
117
109
 
118
110
  /**
@@ -121,7 +113,7 @@ class RemoveRowAction extends _base.BaseAction {
121
113
  */
122
114
  redo(hot, redoneCallback) {
123
115
  hot.addHookOnce('afterRemoveRow', redoneCallback);
124
- hot.alter('remove_row', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.redo');
116
+ hot.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo');
125
117
  }
126
118
  }
127
119
  exports.RemoveRowAction = RemoveRowAction;
@@ -26,7 +26,7 @@ export class RemoveRowAction extends BaseAction {
26
26
  } = _ref;
27
27
  super('remove_row');
28
28
  /**
29
- * @param {number} index The physical row index.
29
+ * @param {number} index The visual row index.
30
30
  */
31
31
  _defineProperty(this, "index", void 0);
32
32
  /**
@@ -94,22 +94,14 @@ export class RemoveRowAction extends BaseAction {
94
94
  changes.push([this.index + rowIndexDelta, isNaN(columnIndex) ? columnProp : columnIndex, dataRow[columnProp]]);
95
95
  });
96
96
  });
97
-
98
- // The indexes sequence have to be applied twice.
99
- // * First for proper index translation. The alter method accepts a visual index
100
- // and we are able to retrieve the correct index indicating where to add a new row based
101
- // only on the previous order state of the rows;
102
- // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
103
- // the same as it was in the previous state;
104
- hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
105
- hot.alter('insert_row_above', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.undo');
106
- hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
97
+ hot.alter('insert_row_above', this.index, this.data.length, 'UndoRedo.undo');
107
98
  this.removedCellMetas.forEach(_ref2 => {
108
99
  let [rowIndex, columnIndex, cellMeta] = _ref2;
109
100
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
110
101
  });
111
102
  hot.addHookOnce('afterViewRender', undoneCallback);
112
103
  hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
104
+ hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
113
105
  }
114
106
 
115
107
  /**
@@ -118,6 +110,6 @@ export class RemoveRowAction extends BaseAction {
118
110
  */
119
111
  redo(hot, redoneCallback) {
120
112
  hot.addHookOnce('afterRemoveRow', redoneCallback);
121
- hot.alter('remove_row', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.redo');
113
+ hot.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo');
122
114
  }
123
115
  }
@@ -1192,9 +1192,7 @@ class Selection {
1192
1192
  col: (0, _number.clamp)(to.col, 0, countColumns - 1)
1193
1193
  });
1194
1194
  this.selectedRange.ranges.push(range);
1195
- if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, this.selectedRange.current().highlight)) {
1196
- this.highlight.getFocus().add(highlight).commit().syncWith(range);
1197
- }
1195
+ this.highlight.getFocus().add(highlight).commit().syncWith(range);
1198
1196
  this.applyAndCommit(range);
1199
1197
  }
1200
1198
 
@@ -1186,9 +1186,7 @@ class Selection {
1186
1186
  col: clamp(to.col, 0, countColumns - 1)
1187
1187
  });
1188
1188
  this.selectedRange.ranges.push(range);
1189
- if (this.highlight.isEnabledFor(FOCUS_TYPE, this.selectedRange.current().highlight)) {
1190
- this.highlight.getFocus().add(highlight).commit().syncWith(range);
1191
- }
1189
+ this.highlight.getFocus().add(highlight).commit().syncWith(range);
1192
1190
  this.applyAndCommit(range);
1193
1191
  }
1194
1192
 
@@ -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-30065c6-20250405
29
- * Release date: 19/03/2025 (built at 05/04/2025 20:52:27)
28
+ * Version: 0.0.0-next-ff10728-20250410
29
+ * Release date: 20/02/2025 (built at 10/04/2025 06:43:56)
30
30
  */
31
31
  .ht-wrapper:not([class*=ht-theme]) {
32
32
  --ht-gap-size: 4px;
@@ -85,15 +85,13 @@
85
85
  .handsontable.htGhostTable table thead th {
86
86
  border-bottom-width: 0;
87
87
  }
88
- .handsontable.htGhostTable table tbody tr th,
89
- .handsontable.htGhostTable table tbody tr td {
88
+ .handsontable.htGhostTable table tbody tr td,
89
+ .handsontable.htGhostTable table tbody tr th {
90
90
  border-top-width: 0;
91
- height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);
92
91
  }
93
- .handsontable.htGhostTable table.htGhostTableFirstRow tbody tr th,
94
- .handsontable.htGhostTable table.htGhostTableFirstRow tbody tr td {
95
- border-top-width: 1px;
96
- height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 2px);
92
+ .handsontable.htGhostTable table tbody tr:first-of-type th,
93
+ .handsontable.htGhostTable table tbody tr:first-of-type td {
94
+ height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);
97
95
  }
98
96
  .handsontable.htHasScrollX .ht_master .wtHolder, .handsontable.htHasScrollY .ht_master .wtHolder {
99
97
  background-color: var(--ht-background-color);
@@ -1787,6 +1785,9 @@
1787
1785
  .handsontable.htDropdownMenu table tbody tr td .htUIButton input, .handsontable.htContextMenu table tbody tr td .htUIButton input, .handsontable.htFiltersConditionsMenu table tbody tr td .htUIButton input {
1788
1786
  width: 100%;
1789
1787
  }
1788
+ .handsontable.htContextMenuSub_Alignment, .handsontable.htDropdownMenuSub_Alignment {
1789
+ margin-top: calc(var(--ht-menu-vertical-padding) * -1);
1790
+ }
1790
1791
  .handsontable .htUIClearAll a,
1791
1792
  .handsontable .htUISelectAll a {
1792
1793
  padding: var(--ht-gap-size);
@@ -1908,7 +1909,7 @@
1908
1909
  outline: 1px solid var(--ht-link-hover-color);
1909
1910
  }
1910
1911
  .handsontable .htUIMultipleSelect .ht_master .wtHolder {
1911
- overflow: auto;
1912
+ overflow-y: auto;
1912
1913
  }
1913
1914
  .handsontable .htUIMultipleSelect .ht_master .wtHolder .wtHider,
1914
1915
  .handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore,
@@ -1961,20 +1962,20 @@
1961
1962
  background-color: var(--ht-comments-textarea-focus-background-color, #ffffff);
1962
1963
  }
1963
1964
 
1964
- .handsontable .columnSorting:not(.indicatorDisabled) {
1965
+ .handsontable .columnSorting {
1965
1966
  position: relative;
1966
1967
  }
1967
- .handsontable .columnSorting:not(.indicatorDisabled).sortAction {
1968
+ .handsontable .columnSorting.sortAction {
1968
1969
  padding-inline-start: calc(var(--ht-icon-size, 16px) + 2px);
1969
1970
  padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);
1970
1971
  min-width: calc(var(--ht-icon-size, 16px) + 8px);
1971
1972
  max-width: calc(100% - var(--ht-icon-size, 16px) * 2 - 4px);
1972
1973
  }
1973
- .handsontable .columnSorting:not(.indicatorDisabled).sortAction:hover {
1974
+ .handsontable .columnSorting.sortAction:hover {
1974
1975
  text-decoration: none;
1975
1976
  cursor: pointer;
1976
1977
  }
1977
- .handsontable .columnSorting:not(.indicatorDisabled).sortAction::before {
1978
+ .handsontable .columnSorting.sortAction::before {
1978
1979
  content: "";
1979
1980
  display: block;
1980
1981
  width: var(--ht-icon-size, 16px);