handsontable 0.0.0-next-ac97c93-20230617 → 0.0.0-next-acb8c02-20230620

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.

Files changed (237) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +61 -12
  3. package/3rdparty/walkontable/src/cell/coords.mjs +61 -12
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +44 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +44 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -4
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -4
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +63 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +30 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +329 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +323 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +364 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +360 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +133 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +7 -79
  50. package/3rdparty/walkontable/src/table.mjs +8 -80
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/core.d.ts +5 -3
  54. package/core.js +127 -309
  55. package/core.mjs +127 -309
  56. package/dataMap/metaManager/metaSchema.js +19 -0
  57. package/dataMap/metaManager/metaSchema.mjs +19 -0
  58. package/dist/handsontable.css +8 -3
  59. package/dist/handsontable.full.css +8 -3
  60. package/dist/handsontable.full.js +13260 -10403
  61. package/dist/handsontable.full.min.css +3 -3
  62. package/dist/handsontable.full.min.js +112 -112
  63. package/dist/handsontable.js +19121 -16264
  64. package/dist/handsontable.min.css +3 -3
  65. package/dist/handsontable.min.js +4 -4
  66. package/editorManager.js +21 -82
  67. package/editorManager.mjs +26 -86
  68. package/editors/textEditor/textEditor.js +3 -11
  69. package/editors/textEditor/textEditor.mjs +4 -12
  70. package/helpers/mixed.js +1 -1
  71. package/helpers/mixed.mjs +1 -1
  72. package/helpers/number.d.ts +1 -0
  73. package/helpers/number.js +18 -0
  74. package/helpers/number.mjs +17 -0
  75. package/package.json +1 -1
  76. package/pluginHooks.d.ts +5 -1
  77. package/pluginHooks.js +89 -1
  78. package/pluginHooks.mjs +89 -1
  79. package/plugins/collapsibleColumns/collapsibleColumns.js +81 -24
  80. package/plugins/collapsibleColumns/collapsibleColumns.mjs +81 -24
  81. package/plugins/columnSorting/columnSorting.js +50 -8
  82. package/plugins/columnSorting/columnSorting.mjs +49 -9
  83. package/plugins/columnSorting/index.js +4 -2
  84. package/plugins/columnSorting/index.mjs +1 -1
  85. package/plugins/contextMenu/utils.js +25 -0
  86. package/plugins/contextMenu/utils.mjs +24 -0
  87. package/plugins/copyPaste/copyPaste.js +5 -1
  88. package/plugins/copyPaste/copyPaste.mjs +5 -1
  89. package/plugins/customBorders/customBorders.js +18 -53
  90. package/plugins/customBorders/customBorders.mjs +19 -54
  91. package/plugins/dropdownMenu/dropdownMenu.js +79 -25
  92. package/plugins/dropdownMenu/dropdownMenu.mjs +79 -25
  93. package/plugins/mergeCells/mergeCells.js +5 -18
  94. package/plugins/mergeCells/mergeCells.mjs +5 -18
  95. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  96. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  97. package/plugins/nestedHeaders/nestedHeaders.js +132 -10
  98. package/plugins/nestedHeaders/nestedHeaders.mjs +132 -10
  99. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  100. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  101. package/plugins/nestedRows/nestedRows.js +52 -7
  102. package/plugins/nestedRows/nestedRows.mjs +52 -7
  103. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  104. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  105. package/selection/highlight/highlight.js +312 -89
  106. package/selection/highlight/highlight.mjs +302 -85
  107. package/selection/highlight/types/activeHeader.js +10 -9
  108. package/selection/highlight/types/activeHeader.mjs +10 -8
  109. package/selection/highlight/types/area.js +12 -27
  110. package/selection/highlight/types/area.mjs +16 -30
  111. package/selection/highlight/types/areaLayered.js +54 -0
  112. package/selection/highlight/types/areaLayered.mjs +49 -0
  113. package/selection/highlight/types/column.js +50 -0
  114. package/selection/highlight/types/column.mjs +45 -0
  115. package/selection/highlight/types/customSelection.js +7 -10
  116. package/selection/highlight/types/customSelection.mjs +7 -9
  117. package/selection/highlight/types/fill.js +5 -8
  118. package/selection/highlight/types/fill.mjs +5 -7
  119. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  120. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  121. package/selection/highlight/types/header.js +10 -20
  122. package/selection/highlight/types/header.mjs +10 -19
  123. package/selection/highlight/types/{index.js → row.js} +27 -31
  124. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  125. package/selection/highlight/visualSelection.js +31 -27
  126. package/selection/highlight/visualSelection.mjs +31 -27
  127. package/selection/index.js +4 -7
  128. package/selection/index.mjs +2 -3
  129. package/selection/mouseEventHandler.js +1 -1
  130. package/selection/mouseEventHandler.mjs +1 -1
  131. package/selection/range.js +8 -8
  132. package/selection/range.mjs +8 -8
  133. package/selection/selection.js +315 -181
  134. package/selection/selection.mjs +310 -180
  135. package/selection/transformation.js +233 -96
  136. package/selection/transformation.mjs +230 -93
  137. package/selection/utils.js +12 -36
  138. package/selection/utils.mjs +13 -36
  139. package/settings.d.ts +1 -0
  140. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  141. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  142. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  143. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  144. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  145. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  146. package/shortcutContexts/commands/editor/index.js +16 -0
  147. package/shortcutContexts/commands/editor/index.mjs +12 -0
  148. package/shortcutContexts/commands/editor/open.js +29 -0
  149. package/shortcutContexts/commands/editor/open.mjs +24 -0
  150. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  151. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  152. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  153. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  154. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  155. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  156. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  157. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  158. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  159. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  160. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  161. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  162. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  163. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  164. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  165. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  166. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  167. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  168. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  169. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  170. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  171. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  172. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  173. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  174. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  175. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  176. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  177. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  178. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  179. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  180. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  181. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  182. package/shortcutContexts/commands/index.js +52 -0
  183. package/shortcutContexts/commands/index.mjs +48 -0
  184. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  185. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  186. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  187. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  188. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  189. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  190. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  191. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  192. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  193. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  194. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  195. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  196. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  197. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  198. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  199. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  200. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  201. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  202. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  203. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  204. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  205. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  206. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  207. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  208. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  209. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  210. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  211. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  212. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  213. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  214. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  215. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  216. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  217. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  218. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  219. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  220. package/shortcutContexts/commands/selectAll.js +11 -0
  221. package/shortcutContexts/commands/selectAll.mjs +6 -0
  222. package/shortcutContexts/constants.js +19 -0
  223. package/shortcutContexts/constants.mjs +12 -0
  224. package/shortcutContexts/editor.js +29 -0
  225. package/shortcutContexts/editor.mjs +25 -0
  226. package/shortcutContexts/grid.js +244 -0
  227. package/shortcutContexts/grid.mjs +240 -0
  228. package/shortcutContexts/index.js +29 -0
  229. package/shortcutContexts/index.mjs +15 -0
  230. package/shortcuts/manager.js +2 -0
  231. package/shortcuts/manager.mjs +2 -0
  232. package/tableView.js +58 -9
  233. package/tableView.mjs +58 -9
  234. package/3rdparty/walkontable/src/selection.js +0 -355
  235. package/3rdparty/walkontable/src/selection.mjs +0 -349
  236. package/selection/highlight/constants.js +0 -16
  237. package/selection/highlight/constants.mjs +0 -6
@@ -25,8 +25,8 @@ require("core-js/modules/es.weak-map.js");
25
25
  require("core-js/modules/web.dom-collections.iterator.js");
26
26
  var _element = require("../../helpers/dom/element");
27
27
  var _number = require("../../helpers/number");
28
- var _event = require("../../helpers/dom/event");
29
28
  var _templateLiteralTag = require("../../helpers/templateLiteralTag");
29
+ var _event = require("../../helpers/dom/event");
30
30
  var _console = require("../../helpers/console");
31
31
  var _selection = require("../../selection");
32
32
  var _base = require("../base");
@@ -201,6 +201,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
201
201
  this.addHook('beforeOnCellMouseOver', function () {
202
202
  return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
203
203
  });
204
+ this.addHook('modifyTransformStart', function () {
205
+ return _this2.onModifyTransformStart.apply(_this2, arguments);
206
+ });
207
+ this.addHook('afterSelection', function () {
208
+ return _this2.updateFocusHighlightPosition();
209
+ });
204
210
  this.addHook('afterGetColumnHeaderRenderers', function (array) {
205
211
  return _this2.onAfterGetColumnHeaderRenderers(array);
206
212
  });
@@ -216,9 +222,18 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
216
222
  this.addHook('beforeCopy', function () {
217
223
  return _this2.onBeforeCopy.apply(_this2, arguments);
218
224
  });
225
+ this.addHook('beforeSelectColumns', function () {
226
+ return _this2.onBeforeSelectColumns.apply(_this2, arguments);
227
+ });
219
228
  this.addHook('afterViewportColumnCalculatorOverride', function () {
220
229
  return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
221
230
  });
231
+ this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
232
+ return _this2.updateFocusHighlightPosition();
233
+ });
234
+ this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
235
+ return _this2.updateFocusHighlightPosition();
236
+ });
222
237
  _get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
223
238
  this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
224
239
  }
@@ -440,6 +455,34 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
440
455
  return this.hot.getColHeader(visualColumnIndex, headerLevel);
441
456
  }
442
457
 
458
+ /**
459
+ * Updates the selection focus highlight position to point to the nested header root element (TH)
460
+ * even when the logical coordinates point in-between the header.
461
+ *
462
+ * @private
463
+ */
464
+ }, {
465
+ key: "updateFocusHighlightPosition",
466
+ value: function updateFocusHighlightPosition() {
467
+ var _this$hot;
468
+ var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
469
+ if (!selection) {
470
+ return;
471
+ }
472
+ var highlight = selection.highlight;
473
+ var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
474
+ if (isNestedHeadersRange) {
475
+ var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
476
+ var focusHighlight = this.hot.selection.highlight.getFocus();
477
+
478
+ // Correct the highlight/focus selection to highlight the correct TH element
479
+ focusHighlight.visualCellRange.highlight.col = columnIndex;
480
+ focusHighlight.visualCellRange.from.col = columnIndex;
481
+ focusHighlight.visualCellRange.to.col = columnIndex;
482
+ focusHighlight.commit();
483
+ }
484
+ }
485
+
443
486
  /**
444
487
  * Allows to control which header DOM element will be used to highlight.
445
488
  *
@@ -456,8 +499,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
456
499
  if (!headerNodeData) {
457
500
  return visualColumn;
458
501
  }
459
- var classNames = highlightMeta.classNames,
460
- columnCursor = highlightMeta.columnCursor,
502
+ var columnCursor = highlightMeta.columnCursor,
461
503
  selectionType = highlightMeta.selectionType,
462
504
  selectionWidth = highlightMeta.selectionWidth;
463
505
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -469,8 +511,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
469
511
  }
470
512
  } else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
471
513
  if (colspan > selectionWidth - columnCursor || !isRoot) {
472
- // Reset the class names array so the generated TH element won't be modified.
473
- classNames.length = 0;
514
+ // Prevents adding any CSS class names to the TH element
515
+ return null;
474
516
  }
475
517
  }
476
518
  return visualColumn;
@@ -601,7 +643,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
601
643
  }, {
602
644
  key: "onBeforeOnCellMouseOver",
603
645
  value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
604
- var _this$hot;
646
+ var _this$hot$selection;
605
647
  if (!this.hot.view.isMouseDown()) {
606
648
  return;
607
649
  }
@@ -622,13 +664,93 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
622
664
  controller.cell = true;
623
665
  var columnsToSelect = [];
624
666
  if (coords.col < from.col) {
625
- columnsToSelect.push(bottomEndCoords.col, columnIndex);
667
+ columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
626
668
  } else if (coords.col > from.col) {
627
- columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
669
+ columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
628
670
  } else {
629
- columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
671
+ columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
672
+ }
673
+ (_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
674
+ }
675
+
676
+ /**
677
+ * `modifyTransformStart` hook is called every time the keyboard navigation is used.
678
+ *
679
+ * @private
680
+ * @param {object} delta The transformation delta.
681
+ */
682
+ }, {
683
+ key: "onModifyTransformStart",
684
+ value: function onModifyTransformStart(delta) {
685
+ var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
686
+ highlight = _this$hot$getSelected.highlight;
687
+ var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
688
+ var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
689
+ if (!isNestedHeadersRange) {
690
+ return;
691
+ }
692
+ var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
693
+ var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
694
+ if (delta.col < 0) {
695
+ var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
696
+ var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
697
+ if (notHiddenColumnIndex === null) {
698
+ // There are no visible columns anymore, so move the selection out of the table edge. This will
699
+ // be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
700
+ delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
701
+ } else {
702
+ delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
703
+ }
704
+ } else if (delta.col > 0) {
705
+ var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
706
+ var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
707
+ if (_notHiddenColumnIndex === null) {
708
+ // There are no visible columns anymore, so move the selection out of the table edge. This will
709
+ // be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
710
+ delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
711
+ } else {
712
+ delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
713
+ }
714
+ }
715
+ }
716
+
717
+ /**
718
+ * The hook observes the column selection from the Selection API and modifies the column range to
719
+ * ensure that the whole nested column will be covered.
720
+ *
721
+ * @private
722
+ * @param {*} from The coords object where the selection starts.
723
+ * @param {*} to The coords object where the selection ends.
724
+ */
725
+ }, {
726
+ key: "onBeforeSelectColumns",
727
+ value: function onBeforeSelectColumns(from, to) {
728
+ var headerLevel = from.row;
729
+ var startNodeData = this._getHeaderTreeNodeDataByCoords({
730
+ row: headerLevel,
731
+ col: from.col
732
+ });
733
+ var endNodeData = this._getHeaderTreeNodeDataByCoords({
734
+ row: headerLevel,
735
+ col: to.col
736
+ });
737
+ if (to.col < from.col) {
738
+ // Column selection from right to left
739
+ if (startNodeData) {
740
+ from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
741
+ }
742
+ if (endNodeData) {
743
+ to.col = endNodeData.columnIndex;
744
+ }
745
+ } else if (to.col >= from.col) {
746
+ // Column selection from left to right or a single column selection
747
+ if (startNodeData) {
748
+ from.col = startNodeData.columnIndex;
749
+ }
750
+ if (endNodeData) {
751
+ to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
752
+ }
630
753
  }
631
- (_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
632
754
  }
633
755
 
634
756
  /**
@@ -45,8 +45,8 @@ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!priva
45
45
  function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
46
46
  import { addClass, removeClass } from "../../helpers/dom/element.mjs";
47
47
  import { isNumeric } from "../../helpers/number.mjs";
48
- import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
49
48
  import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
49
+ import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
50
50
  import { warn } from "../../helpers/console.mjs";
51
51
  import { ACTIVE_HEADER_TYPE, HEADER_TYPE } from "../../selection/index.mjs";
52
52
  import { BasePlugin } from "../base/index.mjs";
@@ -194,6 +194,12 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
194
194
  this.addHook('beforeOnCellMouseOver', function () {
195
195
  return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
196
196
  });
197
+ this.addHook('modifyTransformStart', function () {
198
+ return _this2.onModifyTransformStart.apply(_this2, arguments);
199
+ });
200
+ this.addHook('afterSelection', function () {
201
+ return _this2.updateFocusHighlightPosition();
202
+ });
197
203
  this.addHook('afterGetColumnHeaderRenderers', function (array) {
198
204
  return _this2.onAfterGetColumnHeaderRenderers(array);
199
205
  });
@@ -209,9 +215,18 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
209
215
  this.addHook('beforeCopy', function () {
210
216
  return _this2.onBeforeCopy.apply(_this2, arguments);
211
217
  });
218
+ this.addHook('beforeSelectColumns', function () {
219
+ return _this2.onBeforeSelectColumns.apply(_this2, arguments);
220
+ });
212
221
  this.addHook('afterViewportColumnCalculatorOverride', function () {
213
222
  return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
214
223
  });
224
+ this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
225
+ return _this2.updateFocusHighlightPosition();
226
+ });
227
+ this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
228
+ return _this2.updateFocusHighlightPosition();
229
+ });
215
230
  _get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
216
231
  this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
217
232
  }
@@ -433,6 +448,34 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
433
448
  return this.hot.getColHeader(visualColumnIndex, headerLevel);
434
449
  }
435
450
 
451
+ /**
452
+ * Updates the selection focus highlight position to point to the nested header root element (TH)
453
+ * even when the logical coordinates point in-between the header.
454
+ *
455
+ * @private
456
+ */
457
+ }, {
458
+ key: "updateFocusHighlightPosition",
459
+ value: function updateFocusHighlightPosition() {
460
+ var _this$hot;
461
+ var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
462
+ if (!selection) {
463
+ return;
464
+ }
465
+ var highlight = selection.highlight;
466
+ var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
467
+ if (isNestedHeadersRange) {
468
+ var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
469
+ var focusHighlight = this.hot.selection.highlight.getFocus();
470
+
471
+ // Correct the highlight/focus selection to highlight the correct TH element
472
+ focusHighlight.visualCellRange.highlight.col = columnIndex;
473
+ focusHighlight.visualCellRange.from.col = columnIndex;
474
+ focusHighlight.visualCellRange.to.col = columnIndex;
475
+ focusHighlight.commit();
476
+ }
477
+ }
478
+
436
479
  /**
437
480
  * Allows to control which header DOM element will be used to highlight.
438
481
  *
@@ -449,8 +492,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
449
492
  if (!headerNodeData) {
450
493
  return visualColumn;
451
494
  }
452
- var classNames = highlightMeta.classNames,
453
- columnCursor = highlightMeta.columnCursor,
495
+ var columnCursor = highlightMeta.columnCursor,
454
496
  selectionType = highlightMeta.selectionType,
455
497
  selectionWidth = highlightMeta.selectionWidth;
456
498
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -462,8 +504,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
462
504
  }
463
505
  } else if (selectionType === ACTIVE_HEADER_TYPE) {
464
506
  if (colspan > selectionWidth - columnCursor || !isRoot) {
465
- // Reset the class names array so the generated TH element won't be modified.
466
- classNames.length = 0;
507
+ // Prevents adding any CSS class names to the TH element
508
+ return null;
467
509
  }
468
510
  }
469
511
  return visualColumn;
@@ -594,7 +636,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
594
636
  }, {
595
637
  key: "onBeforeOnCellMouseOver",
596
638
  value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
597
- var _this$hot;
639
+ var _this$hot$selection;
598
640
  if (!this.hot.view.isMouseDown()) {
599
641
  return;
600
642
  }
@@ -615,13 +657,93 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
615
657
  controller.cell = true;
616
658
  var columnsToSelect = [];
617
659
  if (coords.col < from.col) {
618
- columnsToSelect.push(bottomEndCoords.col, columnIndex);
660
+ columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
619
661
  } else if (coords.col > from.col) {
620
- columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
662
+ columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
621
663
  } else {
622
- columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
664
+ columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
665
+ }
666
+ (_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
667
+ }
668
+
669
+ /**
670
+ * `modifyTransformStart` hook is called every time the keyboard navigation is used.
671
+ *
672
+ * @private
673
+ * @param {object} delta The transformation delta.
674
+ */
675
+ }, {
676
+ key: "onModifyTransformStart",
677
+ value: function onModifyTransformStart(delta) {
678
+ var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
679
+ highlight = _this$hot$getSelected.highlight;
680
+ var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
681
+ var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
682
+ if (!isNestedHeadersRange) {
683
+ return;
684
+ }
685
+ var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
686
+ var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
687
+ if (delta.col < 0) {
688
+ var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
689
+ var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
690
+ if (notHiddenColumnIndex === null) {
691
+ // There are no visible columns anymore, so move the selection out of the table edge. This will
692
+ // be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
693
+ delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
694
+ } else {
695
+ delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
696
+ }
697
+ } else if (delta.col > 0) {
698
+ var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
699
+ var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
700
+ if (_notHiddenColumnIndex === null) {
701
+ // There are no visible columns anymore, so move the selection out of the table edge. This will
702
+ // be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
703
+ delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
704
+ } else {
705
+ delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
706
+ }
707
+ }
708
+ }
709
+
710
+ /**
711
+ * The hook observes the column selection from the Selection API and modifies the column range to
712
+ * ensure that the whole nested column will be covered.
713
+ *
714
+ * @private
715
+ * @param {*} from The coords object where the selection starts.
716
+ * @param {*} to The coords object where the selection ends.
717
+ */
718
+ }, {
719
+ key: "onBeforeSelectColumns",
720
+ value: function onBeforeSelectColumns(from, to) {
721
+ var headerLevel = from.row;
722
+ var startNodeData = this._getHeaderTreeNodeDataByCoords({
723
+ row: headerLevel,
724
+ col: from.col
725
+ });
726
+ var endNodeData = this._getHeaderTreeNodeDataByCoords({
727
+ row: headerLevel,
728
+ col: to.col
729
+ });
730
+ if (to.col < from.col) {
731
+ // Column selection from right to left
732
+ if (startNodeData) {
733
+ from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
734
+ }
735
+ if (endNodeData) {
736
+ to.col = endNodeData.columnIndex;
737
+ }
738
+ } else if (to.col >= from.col) {
739
+ // Column selection from left to right or a single column selection
740
+ if (startNodeData) {
741
+ from.col = startNodeData.columnIndex;
742
+ }
743
+ if (endNodeData) {
744
+ to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
745
+ }
623
746
  }
624
- (_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
625
747
  }
626
748
 
627
749
  /**
@@ -416,6 +416,43 @@ var StateManager = /*#__PURE__*/function () {
416
416
  return stepBackColumn;
417
417
  }
418
418
 
419
+ /**
420
+ * The method is helpful in cases where the column index targets in-between currently
421
+ * collapsed column. In that case, the method returns the right-most column index
422
+ * where the nested header ends.
423
+ *
424
+ * @param {number} headerLevel Header level (there is support for negative and positive values).
425
+ * @param {number} columnIndex A visual column index.
426
+ * @returns {number}
427
+ */
428
+ }, {
429
+ key: "findRightMostColumnIndex",
430
+ value: function findRightMostColumnIndex(headerLevel, columnIndex) {
431
+ var _this$getHeaderSettin3;
432
+ var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
433
+ isRoot: true,
434
+ origColspan: 1
435
+ },
436
+ isRoot = _ref4.isRoot,
437
+ origColspan = _ref4.origColspan;
438
+ if (isRoot) {
439
+ return columnIndex + origColspan - 1;
440
+ }
441
+ var stepForthColumn = columnIndex + 1;
442
+ while (stepForthColumn < this.getColumnsCount()) {
443
+ var _this$getHeaderSettin4;
444
+ var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
445
+ isRoot: true
446
+ },
447
+ isRootNode = _ref5.isRoot;
448
+ if (isRootNode) {
449
+ break;
450
+ }
451
+ stepForthColumn += 1;
452
+ }
453
+ return stepForthColumn - 1;
454
+ }
455
+
419
456
  /**
420
457
  * Gets a total number of headers levels.
421
458
  *
@@ -411,6 +411,43 @@ var StateManager = /*#__PURE__*/function () {
411
411
  return stepBackColumn;
412
412
  }
413
413
 
414
+ /**
415
+ * The method is helpful in cases where the column index targets in-between currently
416
+ * collapsed column. In that case, the method returns the right-most column index
417
+ * where the nested header ends.
418
+ *
419
+ * @param {number} headerLevel Header level (there is support for negative and positive values).
420
+ * @param {number} columnIndex A visual column index.
421
+ * @returns {number}
422
+ */
423
+ }, {
424
+ key: "findRightMostColumnIndex",
425
+ value: function findRightMostColumnIndex(headerLevel, columnIndex) {
426
+ var _this$getHeaderSettin3;
427
+ var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
428
+ isRoot: true,
429
+ origColspan: 1
430
+ },
431
+ isRoot = _ref4.isRoot,
432
+ origColspan = _ref4.origColspan;
433
+ if (isRoot) {
434
+ return columnIndex + origColspan - 1;
435
+ }
436
+ var stepForthColumn = columnIndex + 1;
437
+ while (stepForthColumn < this.getColumnsCount()) {
438
+ var _this$getHeaderSettin4;
439
+ var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
440
+ isRoot: true
441
+ },
442
+ isRootNode = _ref5.isRoot;
443
+ if (isRootNode) {
444
+ break;
445
+ }
446
+ stepForthColumn += 1;
447
+ }
448
+ return stepForthColumn - 1;
449
+ }
450
+
414
451
  /**
415
452
  * Gets a total number of headers levels.
416
453
  *
@@ -62,6 +62,7 @@ var PLUGIN_KEY = 'nestedRows';
62
62
  exports.PLUGIN_KEY = PLUGIN_KEY;
63
63
  var PLUGIN_PRIORITY = 300;
64
64
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
65
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
65
66
  var privatePool = new WeakMap();
66
67
 
67
68
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -203,6 +204,7 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
203
204
  this.addHook('beforeUpdateData', function (data) {
204
205
  return _this2.onBeforeLoadData(data);
205
206
  });
207
+ this.registerShortcuts();
206
208
  _get(_getPrototypeOf(NestedRows.prototype), "enablePlugin", this).call(this);
207
209
  }
208
210
 
@@ -213,6 +215,7 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
213
215
  key: "disablePlugin",
214
216
  value: function disablePlugin() {
215
217
  this.hot.rowIndexMapper.unregisterMap('nestedRows');
218
+ this.unregisterShortcuts();
216
219
  _get(_getPrototypeOf(NestedRows.prototype), "disablePlugin", this).call(this);
217
220
  }
218
221
 
@@ -236,6 +239,48 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
236
239
  _get(_getPrototypeOf(NestedRows.prototype), "updatePlugin", this).call(this);
237
240
  }
238
241
 
242
+ /**
243
+ * Register shortcuts responsible for toggling collapsible columns.
244
+ *
245
+ * @private
246
+ */
247
+ }, {
248
+ key: "registerShortcuts",
249
+ value: function registerShortcuts() {
250
+ var _this3 = this;
251
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
252
+ keys: [['Enter']],
253
+ callback: function callback() {
254
+ var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
255
+ highlight = _this3$hot$getSelecte.highlight;
256
+ if (highlight.col === -1 && highlight.row >= 0) {
257
+ var row = _this3.collapsingUI.translateTrimmedRow(highlight.row);
258
+ if (_this3.collapsingUI.areChildrenCollapsed(row)) {
259
+ _this3.collapsingUI.expandChildren(row);
260
+ } else {
261
+ _this3.collapsingUI.collapseChildren(row);
262
+ }
263
+ }
264
+ },
265
+ runOnlyIf: function runOnlyIf() {
266
+ var _this3$hot$getSelecte2;
267
+ return (_this3$hot$getSelecte2 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte2 === void 0 ? void 0 : _this3$hot$getSelecte2.highlight.isHeader();
268
+ },
269
+ group: SHORTCUTS_GROUP
270
+ });
271
+ }
272
+
273
+ /**
274
+ * Unregister shortcuts responsible for toggling collapsible columns.
275
+ *
276
+ * @private
277
+ */
278
+ }, {
279
+ key: "unregisterShortcuts",
280
+ value: function unregisterShortcuts() {
281
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
282
+ }
283
+
239
284
  /**
240
285
  * `beforeRowMove` hook callback.
241
286
  *
@@ -415,15 +460,15 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
415
460
  }, {
416
461
  key: "onAfterRemoveRow",
417
462
  value: function onAfterRemoveRow(index, amount, logicRows, source) {
418
- var _this3 = this;
463
+ var _this4 = this;
419
464
  if (source === this.pluginName) {
420
465
  return;
421
466
  }
422
467
  var priv = privatePool.get(this);
423
468
  setTimeout(function () {
424
469
  priv.skipRender = null;
425
- _this3.headersUI.updateRowHeaderWidth();
426
- _this3.collapsingUI.collapsedRowsStash.applyStash();
470
+ _this4.headersUI.updateRowHeaderWidth();
471
+ _this4.collapsingUI.collapsedRowsStash.applyStash();
427
472
  }, 0);
428
473
  }
429
474
 
@@ -439,17 +484,17 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
439
484
  }, {
440
485
  key: "onBeforeRemoveRow",
441
486
  value: function onBeforeRemoveRow(index, amount, physicalRows) {
442
- var _this4 = this;
487
+ var _this5 = this;
443
488
  var modifiedPhysicalRows = Array.from(physicalRows.reduce(function (removedRows, physicalIndex) {
444
- if (_this4.dataManager.isParent(physicalIndex)) {
445
- var children = _this4.dataManager.getDataObject(physicalIndex).__children;
489
+ if (_this5.dataManager.isParent(physicalIndex)) {
490
+ var children = _this5.dataManager.getDataObject(physicalIndex).__children;
446
491
 
447
492
  // Preserve a parent in the list of removed rows.
448
493
  removedRows.add(physicalIndex);
449
494
  if (Array.isArray(children)) {
450
495
  // Add a children to the list of removed rows.
451
496
  children.forEach(function (child) {
452
- return removedRows.add(_this4.dataManager.getRowIndex(child));
497
+ return removedRows.add(_this5.dataManager.getRowIndex(child));
453
498
  });
454
499
  }
455
500
  return removedRows;