handsontable 12.0.1 → 12.1.0

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 (301) hide show
  1. package/3rdparty/walkontable/src/core/clone.js +2 -2
  2. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  3. package/3rdparty/walkontable/src/core/core.js +2 -2
  4. package/3rdparty/walkontable/src/core/core.mjs +2 -2
  5. package/3rdparty/walkontable/src/overlay/bottom.js +20 -14
  6. package/3rdparty/walkontable/src/overlay/bottom.mjs +20 -14
  7. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +14 -8
  8. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.mjs +14 -8
  9. package/3rdparty/walkontable/src/overlay/inlineStart.js +14 -5
  10. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +14 -5
  11. package/3rdparty/walkontable/src/overlay/top.js +12 -3
  12. package/3rdparty/walkontable/src/overlay/top.mjs +12 -3
  13. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +3 -3
  14. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +3 -3
  15. package/3rdparty/walkontable/src/overlays.js +2 -2
  16. package/3rdparty/walkontable/src/overlays.mjs +2 -2
  17. package/3rdparty/walkontable/src/renderer/cells.js +2 -2
  18. package/3rdparty/walkontable/src/renderer/cells.mjs +2 -2
  19. package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
  20. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  21. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  22. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  23. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  24. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
  25. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  26. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  27. package/3rdparty/walkontable/src/scroll.js +111 -63
  28. package/3rdparty/walkontable/src/scroll.mjs +110 -63
  29. package/3rdparty/walkontable/src/table/bottom.js +2 -2
  30. package/3rdparty/walkontable/src/table/bottom.mjs +2 -2
  31. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +2 -2
  32. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +2 -2
  33. package/3rdparty/walkontable/src/table/inlineStart.js +2 -2
  34. package/3rdparty/walkontable/src/table/inlineStart.mjs +2 -2
  35. package/3rdparty/walkontable/src/table/master.js +2 -2
  36. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  37. package/3rdparty/walkontable/src/table/top.js +2 -2
  38. package/3rdparty/walkontable/src/table/top.mjs +2 -2
  39. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +2 -2
  40. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +2 -2
  41. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
  42. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  43. package/3rdparty/walkontable/src/viewport.js +14 -22
  44. package/3rdparty/walkontable/src/viewport.mjs +14 -22
  45. package/CHANGELOG.md +32 -0
  46. package/LICENSE.txt +1 -1
  47. package/base.js +2 -2
  48. package/base.mjs +2 -2
  49. package/core.js +38 -30
  50. package/core.mjs +38 -30
  51. package/dataMap/metaManager/metaSchema.js +165 -168
  52. package/dataMap/metaManager/metaSchema.mjs +165 -168
  53. package/dist/handsontable.css +18 -18
  54. package/dist/handsontable.full.css +19 -29
  55. package/dist/handsontable.full.js +13389 -12669
  56. package/dist/handsontable.full.min.css +5 -5
  57. package/dist/handsontable.full.min.js +134 -135
  58. package/dist/handsontable.js +3961 -3794
  59. package/dist/handsontable.min.css +4 -4
  60. package/dist/handsontable.min.js +4 -4
  61. package/dist/languages/all.js +97 -33
  62. package/dist/languages/all.min.js +1 -1
  63. package/dist/languages/cs-CZ.js +167 -0
  64. package/dist/languages/cs-CZ.min.js +1 -0
  65. package/dist/languages/de-CH.js +3 -2
  66. package/dist/languages/de-CH.min.js +1 -1
  67. package/dist/languages/de-DE.js +3 -2
  68. package/dist/languages/de-DE.min.js +1 -1
  69. package/dist/languages/en-US.js +3 -2
  70. package/dist/languages/en-US.min.js +1 -1
  71. package/dist/languages/es-MX.js +3 -2
  72. package/dist/languages/es-MX.min.js +1 -1
  73. package/dist/languages/fr-FR.js +3 -2
  74. package/dist/languages/fr-FR.min.js +1 -1
  75. package/dist/languages/it-IT.js +3 -2
  76. package/dist/languages/it-IT.min.js +1 -1
  77. package/dist/languages/ja-JP.js +36 -39
  78. package/dist/languages/ja-JP.min.js +1 -1
  79. package/dist/languages/ko-KR.js +2 -2
  80. package/dist/languages/ko-KR.min.js +1 -1
  81. package/dist/languages/lv-LV.js +2 -2
  82. package/dist/languages/lv-LV.min.js +1 -1
  83. package/dist/languages/nb-NO.js +2 -2
  84. package/dist/languages/nb-NO.min.js +1 -1
  85. package/dist/languages/nl-NL.js +2 -2
  86. package/dist/languages/nl-NL.min.js +1 -1
  87. package/dist/languages/pl-PL.js +2 -2
  88. package/dist/languages/pl-PL.min.js +1 -1
  89. package/dist/languages/pt-BR.js +2 -2
  90. package/dist/languages/pt-BR.min.js +1 -1
  91. package/dist/languages/ru-RU.js +2 -2
  92. package/dist/languages/ru-RU.min.js +1 -1
  93. package/dist/languages/sr-SP.js +171 -0
  94. package/dist/languages/sr-SP.min.js +1 -0
  95. package/dist/languages/zh-CN.js +24 -24
  96. package/dist/languages/zh-CN.min.js +1 -1
  97. package/dist/languages/zh-TW.js +2 -2
  98. package/dist/languages/zh-TW.min.js +1 -1
  99. package/editors/autocompleteEditor/autocompleteEditor.js +13 -14
  100. package/editors/autocompleteEditor/autocompleteEditor.mjs +13 -14
  101. package/editors/baseEditor/baseEditor.js +2 -2
  102. package/editors/baseEditor/baseEditor.mjs +2 -2
  103. package/editors/checkboxEditor/checkboxEditor.js +2 -2
  104. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  105. package/editors/dateEditor/dateEditor.js +3 -3
  106. package/editors/dateEditor/dateEditor.mjs +3 -3
  107. package/editors/dropdownEditor/dropdownEditor.js +3 -3
  108. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  109. package/editors/handsontableEditor/handsontableEditor.js +3 -3
  110. package/editors/handsontableEditor/handsontableEditor.mjs +3 -3
  111. package/editors/numericEditor/numericEditor.js +2 -2
  112. package/editors/numericEditor/numericEditor.mjs +2 -2
  113. package/editors/passwordEditor/passwordEditor.js +3 -3
  114. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  115. package/editors/selectEditor/selectEditor.js +3 -3
  116. package/editors/selectEditor/selectEditor.mjs +3 -3
  117. package/editors/textEditor/textEditor.js +3 -3
  118. package/editors/textEditor/textEditor.mjs +3 -3
  119. package/editors/timeEditor/timeEditor.js +3 -3
  120. package/editors/timeEditor/timeEditor.mjs +3 -3
  121. package/helpers/mixed.js +2 -2
  122. package/helpers/mixed.mjs +2 -2
  123. package/i18n/languages/cs-CZ.js +40 -0
  124. package/i18n/languages/cs-CZ.mjs +16 -0
  125. package/i18n/languages/index.js +8 -0
  126. package/i18n/languages/index.mjs +3 -1
  127. package/i18n/languages/sr-SP.js +40 -0
  128. package/i18n/languages/sr-SP.mjs +16 -0
  129. package/languages/all.js +97 -33
  130. package/languages/cs-CZ.js +167 -0
  131. package/languages/cs-CZ.mjs +18 -0
  132. package/languages/de-CH.js +3 -2
  133. package/languages/de-DE.js +3 -2
  134. package/languages/en-US.js +3 -2
  135. package/languages/es-MX.js +3 -2
  136. package/languages/fr-FR.js +3 -2
  137. package/languages/index.js +97 -33
  138. package/languages/index.mjs +3 -1
  139. package/languages/it-IT.js +3 -2
  140. package/languages/ja-JP.js +36 -39
  141. package/languages/ko-KR.js +2 -2
  142. package/languages/lv-LV.js +2 -2
  143. package/languages/nb-NO.js +2 -2
  144. package/languages/nl-NL.js +2 -2
  145. package/languages/pl-PL.js +2 -2
  146. package/languages/pt-BR.js +2 -2
  147. package/languages/ru-RU.js +2 -2
  148. package/languages/sr-SP.js +171 -0
  149. package/languages/sr-SP.mjs +18 -0
  150. package/languages/zh-CN.js +24 -24
  151. package/languages/zh-TW.js +2 -2
  152. package/package.json +22 -2
  153. package/pluginHooks.js +46 -8
  154. package/pluginHooks.mjs +46 -8
  155. package/plugins/autoColumnSize/autoColumnSize.js +3 -3
  156. package/plugins/autoColumnSize/autoColumnSize.mjs +3 -3
  157. package/plugins/autoRowSize/autoRowSize.js +3 -3
  158. package/plugins/autoRowSize/autoRowSize.mjs +3 -3
  159. package/plugins/autofill/autofill.js +3 -3
  160. package/plugins/autofill/autofill.mjs +3 -3
  161. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
  162. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  163. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
  164. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  165. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
  166. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
  167. package/plugins/collapsibleColumns/collapsibleColumns.js +3 -3
  168. package/plugins/collapsibleColumns/collapsibleColumns.mjs +3 -3
  169. package/plugins/columnSorting/columnSorting.js +3 -3
  170. package/plugins/columnSorting/columnSorting.mjs +3 -3
  171. package/plugins/columnSummary/columnSummary.js +3 -3
  172. package/plugins/columnSummary/columnSummary.mjs +3 -3
  173. package/plugins/comments/commentEditor.js +2 -2
  174. package/plugins/comments/commentEditor.mjs +2 -2
  175. package/plugins/comments/comments.js +39 -31
  176. package/plugins/comments/comments.mjs +40 -32
  177. package/plugins/contextMenu/contextMenu.js +3 -3
  178. package/plugins/contextMenu/contextMenu.mjs +3 -3
  179. package/plugins/copyPaste/copyPaste.js +6 -6
  180. package/plugins/copyPaste/copyPaste.mjs +6 -6
  181. package/plugins/customBorders/customBorders.js +3 -3
  182. package/plugins/customBorders/customBorders.mjs +3 -3
  183. package/plugins/dragToScroll/dragToScroll.js +3 -3
  184. package/plugins/dragToScroll/dragToScroll.mjs +3 -3
  185. package/plugins/dropdownMenu/dropdownMenu.js +5 -4
  186. package/plugins/dropdownMenu/dropdownMenu.mjs +5 -4
  187. package/plugins/exportFile/exportFile.js +2 -2
  188. package/plugins/exportFile/exportFile.mjs +2 -2
  189. package/plugins/exportFile/types/csv.js +2 -2
  190. package/plugins/exportFile/types/csv.mjs +2 -2
  191. package/plugins/filters/component/actionBar.js +2 -2
  192. package/plugins/filters/component/actionBar.mjs +2 -2
  193. package/plugins/filters/component/condition.js +3 -3
  194. package/plugins/filters/component/condition.mjs +3 -3
  195. package/plugins/filters/component/operators.js +2 -2
  196. package/plugins/filters/component/operators.mjs +2 -2
  197. package/plugins/filters/component/value.js +3 -3
  198. package/plugins/filters/component/value.mjs +3 -3
  199. package/plugins/filters/filters.js +3 -3
  200. package/plugins/filters/filters.mjs +3 -3
  201. package/plugins/filters/ui/input.js +3 -3
  202. package/plugins/filters/ui/input.mjs +3 -3
  203. package/plugins/filters/ui/link.js +3 -3
  204. package/plugins/filters/ui/link.mjs +3 -3
  205. package/plugins/filters/ui/multipleSelect.js +3 -3
  206. package/plugins/filters/ui/multipleSelect.mjs +3 -3
  207. package/plugins/filters/ui/radioInput.js +3 -3
  208. package/plugins/filters/ui/radioInput.mjs +3 -3
  209. package/plugins/filters/ui/select.js +3 -3
  210. package/plugins/filters/ui/select.mjs +3 -3
  211. package/plugins/formulas/formulas.js +3 -3
  212. package/plugins/formulas/formulas.mjs +3 -3
  213. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
  214. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
  215. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +3 -3
  216. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +3 -3
  217. package/plugins/hiddenColumns/hiddenColumns.js +3 -3
  218. package/plugins/hiddenColumns/hiddenColumns.mjs +3 -3
  219. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
  220. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
  221. package/plugins/hiddenRows/contextMenuItem/showRow.js +3 -3
  222. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +3 -3
  223. package/plugins/hiddenRows/hiddenRows.js +3 -3
  224. package/plugins/hiddenRows/hiddenRows.mjs +3 -3
  225. package/plugins/manualColumnFreeze/manualColumnFreeze.js +46 -20
  226. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +41 -20
  227. package/plugins/manualColumnMove/manualColumnMove.js +7 -18
  228. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -18
  229. package/plugins/manualColumnMove/ui/backlight.js +3 -3
  230. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  231. package/plugins/manualColumnMove/ui/guideline.js +3 -3
  232. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  233. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  234. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  235. package/plugins/manualRowMove/manualRowMove.js +11 -29
  236. package/plugins/manualRowMove/manualRowMove.mjs +11 -29
  237. package/plugins/manualRowMove/ui/backlight.js +3 -3
  238. package/plugins/manualRowMove/ui/backlight.mjs +3 -3
  239. package/plugins/manualRowMove/ui/guideline.js +3 -3
  240. package/plugins/manualRowMove/ui/guideline.mjs +3 -3
  241. package/plugins/manualRowResize/manualRowResize.js +3 -3
  242. package/plugins/manualRowResize/manualRowResize.mjs +3 -3
  243. package/plugins/mergeCells/cellsCollection.js +3 -3
  244. package/plugins/mergeCells/cellsCollection.mjs +3 -3
  245. package/plugins/mergeCells/mergeCells.js +15 -15
  246. package/plugins/mergeCells/mergeCells.mjs +15 -15
  247. package/plugins/multiColumnSorting/multiColumnSorting.js +3 -3
  248. package/plugins/multiColumnSorting/multiColumnSorting.mjs +3 -3
  249. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +3 -3
  250. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +3 -3
  251. package/plugins/nestedHeaders/nestedHeaders.js +10 -6
  252. package/plugins/nestedHeaders/nestedHeaders.mjs +10 -6
  253. package/plugins/nestedHeaders/stateManager/utils.js +3 -4
  254. package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
  255. package/plugins/nestedHeaders/utils/ghostTable.js +94 -56
  256. package/plugins/nestedHeaders/utils/ghostTable.mjs +94 -56
  257. package/plugins/nestedRows/nestedRows.js +3 -3
  258. package/plugins/nestedRows/nestedRows.mjs +3 -3
  259. package/plugins/nestedRows/ui/collapsing.js +2 -2
  260. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  261. package/plugins/nestedRows/ui/contextMenu.js +2 -2
  262. package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
  263. package/plugins/nestedRows/ui/headers.js +2 -2
  264. package/plugins/nestedRows/ui/headers.mjs +2 -2
  265. package/plugins/persistentState/persistentState.js +3 -3
  266. package/plugins/persistentState/persistentState.mjs +3 -3
  267. package/plugins/search/search.js +3 -3
  268. package/plugins/search/search.mjs +3 -3
  269. package/plugins/touchScroll/touchScroll.js +3 -3
  270. package/plugins/touchScroll/touchScroll.mjs +3 -3
  271. package/plugins/trimRows/trimRows.js +3 -3
  272. package/plugins/trimRows/trimRows.mjs +3 -3
  273. package/plugins/undoRedo/undoRedo.js +2 -2
  274. package/plugins/undoRedo/undoRedo.mjs +2 -2
  275. package/selection/highlight/visualSelection.js +83 -210
  276. package/selection/highlight/visualSelection.mjs +79 -202
  277. package/selection/selection.js +9 -3
  278. package/selection/selection.mjs +9 -3
  279. package/shortcuts/context.js +1 -1
  280. package/shortcuts/context.mjs +1 -1
  281. package/shortcuts/manager.js +3 -1
  282. package/shortcuts/manager.mjs +3 -1
  283. package/shortcuts/recorder.js +11 -2
  284. package/shortcuts/recorder.mjs +11 -2
  285. package/tableView.js +27 -5
  286. package/tableView.mjs +27 -5
  287. package/translations/indexMapper.d.ts +3 -1
  288. package/translations/indexMapper.js +88 -10
  289. package/translations/indexMapper.mjs +90 -19
  290. package/translations/mapCollections/aggregatedCollection.js +2 -2
  291. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  292. package/translations/maps/hidingMap.js +2 -2
  293. package/translations/maps/hidingMap.mjs +2 -2
  294. package/translations/maps/indexesSequence.js +3 -3
  295. package/translations/maps/indexesSequence.mjs +3 -3
  296. package/translations/maps/linkedPhysicalIndexToValueMap.js +3 -3
  297. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +3 -3
  298. package/translations/maps/physicalIndexToValueMap.js +3 -3
  299. package/translations/maps/physicalIndexToValueMap.mjs +3 -3
  300. package/translations/maps/trimmingMap.js +2 -2
  301. package/translations/maps/trimmingMap.mjs +2 -2
package/tableView.js CHANGED
@@ -515,7 +515,7 @@ var TableView = /*#__PURE__*/function () {
515
515
  value: function countRenderableIndexes(indexMapper, maxElements) {
516
516
  var consideredElements = Math.min(indexMapper.getNotTrimmedIndexesLength(), maxElements); // Don't take hidden indexes into account. We are looking just for renderable indexes.
517
517
 
518
- var firstNotHiddenIndex = indexMapper.getFirstNotHiddenIndex(consideredElements - 1, -1); // There are no renderable indexes.
518
+ var firstNotHiddenIndex = indexMapper.getNearestNotHiddenIndex(consideredElements - 1, -1); // There are no renderable indexes.
519
519
 
520
520
  if (firstNotHiddenIndex === null) {
521
521
  return 0;
@@ -591,7 +591,7 @@ var TableView = /*#__PURE__*/function () {
591
591
  return 0;
592
592
  }
593
593
 
594
- var firstVisibleIndex = indexMapper.getFirstNotHiddenIndex(visualIndex, incrementBy);
594
+ var firstVisibleIndex = indexMapper.getNearestNotHiddenIndex(visualIndex, incrementBy);
595
595
  var renderableIndex = indexMapper.getRenderableFromVisualIndex(firstVisibleIndex);
596
596
 
597
597
  if (!Number.isInteger(renderableIndex)) {
@@ -974,7 +974,7 @@ var TableView = /*#__PURE__*/function () {
974
974
 
975
975
  var newVisualRow = _this2.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
976
976
 
977
- return rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(newVisualRow, 1));
977
+ return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
978
978
  },
979
979
  onBeforeHighlightingColumnHeader: function onBeforeHighlightingColumnHeader(renderableColumn, headerLevel, highlightMeta) {
980
980
  var columnMapper = _this2.instance.columnIndexMapper;
@@ -982,7 +982,7 @@ var TableView = /*#__PURE__*/function () {
982
982
 
983
983
  var newVisualColumn = _this2.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
984
984
 
985
- return columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(newVisualColumn, 1));
985
+ return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
986
986
  },
987
987
  onAfterDrawSelection: function onAfterDrawSelection(currentRow, currentColumn, layerLevel) {
988
988
  var cornersOfSelection;
@@ -1047,7 +1047,7 @@ var TableView = /*#__PURE__*/function () {
1047
1047
  visualColumnTo = _visualIndexes[3]; // Result of the hook is handled by the Walkontable (renderable indexes).
1048
1048
 
1049
1049
 
1050
- return [visualRowFrom >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(visualRowFrom, 1)) : visualRowFrom, visualColumnFrom >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(visualColumnFrom, 1)) : visualColumnFrom, visualRowTo >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(visualRowTo, -1)) : visualRowTo, visualColumnTo >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(visualColumnTo, -1)) : visualColumnTo];
1050
+ return [visualRowFrom >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRowFrom, 1)) : visualRowFrom, visualColumnFrom >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumnFrom, 1)) : visualColumnFrom, visualRowTo >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRowTo, -1)) : visualRowTo, visualColumnTo >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumnTo, -1)) : visualColumnTo];
1051
1051
  }
1052
1052
  },
1053
1053
  viewportRowCalculatorOverride: function viewportRowCalculatorOverride(calc) {
@@ -1435,6 +1435,28 @@ var TableView = /*#__PURE__*/function () {
1435
1435
  value: function getLastFullyVisibleRow() {
1436
1436
  return this.instance.rowIndexMapper.getVisualFromRenderableIndex(this.instance.view._wt.wtScroll.getLastVisibleRow());
1437
1437
  }
1438
+ /**
1439
+ * Returns the first fully visible column in the table viewport.
1440
+ *
1441
+ * @returns {number}
1442
+ */
1443
+
1444
+ }, {
1445
+ key: "getFirstFullyVisibleColumn",
1446
+ value: function getFirstFullyVisibleColumn() {
1447
+ return this.instance.columnIndexMapper.getVisualFromRenderableIndex(this.instance.view._wt.wtScroll.getFirstVisibleColumn());
1448
+ }
1449
+ /**
1450
+ * Returns the last fully visible column in the table viewport.
1451
+ *
1452
+ * @returns {number}
1453
+ */
1454
+
1455
+ }, {
1456
+ key: "getLastFullyVisibleColumn",
1457
+ value: function getLastFullyVisibleColumn() {
1458
+ return this.instance.columnIndexMapper.getVisualFromRenderableIndex(this.instance.view._wt.wtScroll.getLastVisibleColumn());
1459
+ }
1438
1460
  /**
1439
1461
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
1440
1462
  *
package/tableView.mjs CHANGED
@@ -488,7 +488,7 @@ var TableView = /*#__PURE__*/function () {
488
488
  value: function countRenderableIndexes(indexMapper, maxElements) {
489
489
  var consideredElements = Math.min(indexMapper.getNotTrimmedIndexesLength(), maxElements); // Don't take hidden indexes into account. We are looking just for renderable indexes.
490
490
 
491
- var firstNotHiddenIndex = indexMapper.getFirstNotHiddenIndex(consideredElements - 1, -1); // There are no renderable indexes.
491
+ var firstNotHiddenIndex = indexMapper.getNearestNotHiddenIndex(consideredElements - 1, -1); // There are no renderable indexes.
492
492
 
493
493
  if (firstNotHiddenIndex === null) {
494
494
  return 0;
@@ -564,7 +564,7 @@ var TableView = /*#__PURE__*/function () {
564
564
  return 0;
565
565
  }
566
566
 
567
- var firstVisibleIndex = indexMapper.getFirstNotHiddenIndex(visualIndex, incrementBy);
567
+ var firstVisibleIndex = indexMapper.getNearestNotHiddenIndex(visualIndex, incrementBy);
568
568
  var renderableIndex = indexMapper.getRenderableFromVisualIndex(firstVisibleIndex);
569
569
 
570
570
  if (!Number.isInteger(renderableIndex)) {
@@ -947,7 +947,7 @@ var TableView = /*#__PURE__*/function () {
947
947
 
948
948
  var newVisualRow = _this2.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
949
949
 
950
- return rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(newVisualRow, 1));
950
+ return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
951
951
  },
952
952
  onBeforeHighlightingColumnHeader: function onBeforeHighlightingColumnHeader(renderableColumn, headerLevel, highlightMeta) {
953
953
  var columnMapper = _this2.instance.columnIndexMapper;
@@ -955,7 +955,7 @@ var TableView = /*#__PURE__*/function () {
955
955
 
956
956
  var newVisualColumn = _this2.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
957
957
 
958
- return columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(newVisualColumn, 1));
958
+ return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
959
959
  },
960
960
  onAfterDrawSelection: function onAfterDrawSelection(currentRow, currentColumn, layerLevel) {
961
961
  var cornersOfSelection;
@@ -1020,7 +1020,7 @@ var TableView = /*#__PURE__*/function () {
1020
1020
  visualColumnTo = _visualIndexes[3]; // Result of the hook is handled by the Walkontable (renderable indexes).
1021
1021
 
1022
1022
 
1023
- return [visualRowFrom >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(visualRowFrom, 1)) : visualRowFrom, visualColumnFrom >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(visualColumnFrom, 1)) : visualColumnFrom, visualRowTo >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(visualRowTo, -1)) : visualRowTo, visualColumnTo >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(visualColumnTo, -1)) : visualColumnTo];
1023
+ return [visualRowFrom >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRowFrom, 1)) : visualRowFrom, visualColumnFrom >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumnFrom, 1)) : visualColumnFrom, visualRowTo >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRowTo, -1)) : visualRowTo, visualColumnTo >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumnTo, -1)) : visualColumnTo];
1024
1024
  }
1025
1025
  },
1026
1026
  viewportRowCalculatorOverride: function viewportRowCalculatorOverride(calc) {
@@ -1408,6 +1408,28 @@ var TableView = /*#__PURE__*/function () {
1408
1408
  value: function getLastFullyVisibleRow() {
1409
1409
  return this.instance.rowIndexMapper.getVisualFromRenderableIndex(this.instance.view._wt.wtScroll.getLastVisibleRow());
1410
1410
  }
1411
+ /**
1412
+ * Returns the first fully visible column in the table viewport.
1413
+ *
1414
+ * @returns {number}
1415
+ */
1416
+
1417
+ }, {
1418
+ key: "getFirstFullyVisibleColumn",
1419
+ value: function getFirstFullyVisibleColumn() {
1420
+ return this.instance.columnIndexMapper.getVisualFromRenderableIndex(this.instance.view._wt.wtScroll.getFirstVisibleColumn());
1421
+ }
1422
+ /**
1423
+ * Returns the last fully visible column in the table viewport.
1424
+ *
1425
+ * @returns {number}
1426
+ */
1427
+
1428
+ }, {
1429
+ key: "getLastFullyVisibleColumn",
1430
+ value: function getLastFullyVisibleColumn() {
1431
+ return this.instance.columnIndexMapper.getVisualFromRenderableIndex(this.instance.view._wt.wtScroll.getLastVisibleColumn());
1432
+ }
1411
1433
  /**
1412
1434
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
1413
1435
  *
@@ -29,7 +29,9 @@ export class IndexMapper {
29
29
  getVisualFromRenderableIndex(renderableIndex: number): number;
30
30
  getRenderableFromVisualIndex(visualIndex: number): number;
31
31
  getFirstNotHiddenIndex(fromVisualIndex: number, incrementBy: number,
32
- searchAlsoOtherWayAround?: boolean, indexForNextSearch?: number): number;
32
+ searchAlsoOtherWayAround?: boolean, indexForNextSearch?: number): number | null;
33
+ getNearestNotHiddenIndex(fromVisualIndex: number, searchDirection: 1|-1,
34
+ searchAlsoOtherWayAround?: boolean): number | null;
33
35
  initToLength(length?: number): void;
34
36
  getIndexesSequence(): number[];
35
37
  setIndexesSequence(indexes: number[]): void;
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.array.slice.js");
4
+
5
+ require("core-js/modules/es.object.freeze.js");
6
+
3
7
  require("core-js/modules/es.symbol.js");
4
8
 
5
9
  require("core-js/modules/es.symbol.description.js");
6
10
 
7
11
  require("core-js/modules/es.symbol.iterator.js");
8
12
 
9
- require("core-js/modules/es.array.from.js");
10
-
11
- require("core-js/modules/es.array.slice.js");
12
-
13
13
  require("core-js/modules/es.function.name.js");
14
14
 
15
15
  require("core-js/modules/es.regexp.exec.js");
@@ -17,16 +17,24 @@ require("core-js/modules/es.regexp.exec.js");
17
17
  exports.__esModule = true;
18
18
  exports.IndexMapper = void 0;
19
19
 
20
- require("core-js/modules/es.object.to-string.js");
21
-
22
20
  require("core-js/modules/es.array.iterator.js");
23
21
 
24
- require("core-js/modules/es.map.js");
22
+ require("core-js/modules/es.object.to-string.js");
23
+
24
+ require("core-js/modules/es.set.js");
25
25
 
26
26
  require("core-js/modules/es.string.iterator.js");
27
27
 
28
28
  require("core-js/modules/web.dom-collections.iterator.js");
29
29
 
30
+ require("core-js/modules/es.map.js");
31
+
32
+ require("core-js/modules/es.array.from.js");
33
+
34
+ require("core-js/modules/es.array.find-index.js");
35
+
36
+ require("core-js/modules/es.array.reverse.js");
37
+
30
38
  require("core-js/modules/es.array.map.js");
31
39
 
32
40
  require("core-js/modules/es.array.filter.js");
@@ -41,6 +49,10 @@ require("core-js/modules/es.array.fill.js");
41
49
 
42
50
  var _array = require("../helpers/array");
43
51
 
52
+ var _templateLiteralTag = require("../helpers/templateLiteralTag");
53
+
54
+ var _console = require("../helpers/console");
55
+
44
56
  var _maps = require("./maps");
45
57
 
46
58
  var _mapCollections = require("./mapCollections");
@@ -53,6 +65,8 @@ var _mixed = require("../helpers/mixed");
53
65
 
54
66
  var _observable = require("./changesObservable/observable");
55
67
 
68
+ var _templateObject;
69
+
56
70
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
57
71
 
58
72
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
@@ -67,12 +81,15 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
67
81
 
68
82
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
69
83
 
84
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
85
+
70
86
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
71
87
 
72
88
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
73
89
 
74
90
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
75
91
 
92
+ var deprecationWarns = new Set(['getFirstNotHiddenIndex']);
76
93
  /**
77
94
  * @class IndexMapper
78
95
  * @description
@@ -92,6 +109,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
92
109
  *
93
110
  * These are: {@link IndexesSequence}, {@link PhysicalIndexToValueMap}, {@link LinkedPhysicalIndexToValueMap}, {@link HidingMap}, and {@link TrimmingMap}.
94
111
  */
112
+
95
113
  var IndexMapper = /*#__PURE__*/function () {
96
114
  function IndexMapper() {
97
115
  var _this = this;
@@ -460,6 +478,10 @@ var IndexMapper = /*#__PURE__*/function () {
460
478
  /**
461
479
  * Search for the first visible, not hidden index (represented by a visual index).
462
480
  *
481
+ * This method is deprecated and will be removed in a next major version of Handsontable.
482
+ * Use the {@link IndexMapper#getNearestNotHiddenIndex} method instead.
483
+ *
484
+ * @deprecated
463
485
  * @param {number} fromVisualIndex Visual start index. Starting point for finding destination index. Start point may be destination
464
486
  * point when handled index is NOT hidden.
465
487
  * @param {number} incrementBy We are searching for a next visible indexes by increasing (to be precise, or decreasing) indexes.
@@ -480,6 +502,12 @@ var IndexMapper = /*#__PURE__*/function () {
480
502
  value: function getFirstNotHiddenIndex(fromVisualIndex, incrementBy) {
481
503
  var searchAlsoOtherWayAround = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
482
504
  var indexForNextSearch = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : fromVisualIndex - incrementBy;
505
+
506
+ if (deprecationWarns.has('getFirstNotHiddenIndex')) {
507
+ deprecationWarns.delete('getFirstNotHiddenIndex');
508
+ (0, _console.warn)((0, _templateLiteralTag.toSingleLine)(_templateObject || (_templateObject = _taggedTemplateLiteral(["The method \"getFirstNotHiddenIndex\" is deprecated and will be removed in the next \n major release. Please use \"getNearestNotHiddenIndex\" instead."], ["The method \"getFirstNotHiddenIndex\" is deprecated and will be removed in the next\\x20\n major release. Please use \"getNearestNotHiddenIndex\" instead."]))));
509
+ }
510
+
483
511
  var physicalIndex = this.getPhysicalFromVisualIndex(fromVisualIndex); // First or next (it may be end of the table) index is beyond the table boundaries.
484
512
 
485
513
  if (physicalIndex === null) {
@@ -499,6 +527,56 @@ var IndexMapper = /*#__PURE__*/function () {
499
527
 
500
528
  return this.getFirstNotHiddenIndex(fromVisualIndex + incrementBy, incrementBy, searchAlsoOtherWayAround, indexForNextSearch);
501
529
  }
530
+ /**
531
+ * Search for the nearest not-hidden row or column.
532
+ *
533
+ * @param {number} fromVisualIndex The visual index of the row or column from which the search starts.<br><br>
534
+ * If the row or column from which the search starts is not hidden, the method simply returns the `fromVisualIndex` number.
535
+ * @param {number} searchDirection The search direction.<br><br>`1`: search from `fromVisualIndex` to the end of the dataset.<br><br>
536
+ * `-1`: search from `fromVisualIndex` to the beginning of the dataset (i.e., to the row or column at visual index `0`).
537
+ * @param {boolean} searchAlsoOtherWayAround `true`: if a search in a first direction failed, try the opposite direction.<br><br>
538
+ * `false`: search in one direction only.
539
+ *
540
+ * @returns {number|null} A visual index of a row or column, or `null`.
541
+ */
542
+
543
+ }, {
544
+ key: "getNearestNotHiddenIndex",
545
+ value: function getNearestNotHiddenIndex(fromVisualIndex, searchDirection) {
546
+ var searchAlsoOtherWayAround = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
547
+ var physicalIndex = this.getPhysicalFromVisualIndex(fromVisualIndex);
548
+
549
+ if (physicalIndex === null) {
550
+ return null;
551
+ }
552
+
553
+ if (this.fromVisualToRenderableIndexesCache.has(fromVisualIndex)) {
554
+ return fromVisualIndex;
555
+ }
556
+
557
+ var visibleIndexes = Array.from(this.fromVisualToRenderableIndexesCache.keys());
558
+ var index = -1;
559
+
560
+ if (searchDirection > 0) {
561
+ index = visibleIndexes.findIndex(function (visualIndex) {
562
+ return visualIndex > fromVisualIndex;
563
+ });
564
+ } else {
565
+ index = visibleIndexes.reverse().findIndex(function (visualIndex) {
566
+ return visualIndex < fromVisualIndex;
567
+ });
568
+ }
569
+
570
+ if (index === -1) {
571
+ if (searchAlsoOtherWayAround) {
572
+ return this.getNearestNotHiddenIndex(fromVisualIndex, -searchDirection, false);
573
+ }
574
+
575
+ return null;
576
+ }
577
+
578
+ return visibleIndexes[index];
579
+ }
502
580
  /**
503
581
  * Set default values for all indexes in registered index maps.
504
582
  *
@@ -812,7 +890,7 @@ var IndexMapper = /*#__PURE__*/function () {
812
890
  this.notHiddenIndexesCache = this.getNotHiddenIndexes(false);
813
891
  this.renderablePhysicalIndexesCache = this.getRenderableIndexes(false);
814
892
  this.cacheFromPhysicalToVisualIndexes();
815
- this.cacheFromVisualToRenderabIendexes(); // Currently there's support only for the "hiding" map type.
893
+ this.cacheFromVisualToRenderableIndexes(); // Currently there's support only for the "hiding" map type.
816
894
 
817
895
  if (this.hiddenIndexesChanged) {
818
896
  this.hidingChangesObservable.emit(this.hidingMapsCollection.getMergedValues());
@@ -854,8 +932,8 @@ var IndexMapper = /*#__PURE__*/function () {
854
932
  */
855
933
 
856
934
  }, {
857
- key: "cacheFromVisualToRenderabIendexes",
858
- value: function cacheFromVisualToRenderabIendexes() {
935
+ key: "cacheFromVisualToRenderableIndexes",
936
+ value: function cacheFromVisualToRenderableIndexes() {
859
937
  var nrOfRenderableIndexes = this.getRenderableIndexesLength();
860
938
  this.fromVisualToRenderableIndexesCache.clear();
861
939
 
@@ -1,3 +1,13 @@
1
+ import "core-js/modules/es.array.slice.js";
2
+ import "core-js/modules/es.object.freeze.js";
3
+ import "core-js/modules/es.symbol.js";
4
+ import "core-js/modules/es.symbol.description.js";
5
+ import "core-js/modules/es.symbol.iterator.js";
6
+ import "core-js/modules/es.function.name.js";
7
+ import "core-js/modules/es.regexp.exec.js";
8
+
9
+ var _templateObject;
10
+
1
11
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
12
 
3
13
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -10,38 +20,39 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
10
20
 
11
21
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
22
 
13
- import "core-js/modules/es.object.to-string.js";
23
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
24
+
25
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
+
27
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
28
+
29
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
30
+
14
31
  import "core-js/modules/es.array.iterator.js";
15
- import "core-js/modules/es.map.js";
32
+ import "core-js/modules/es.object.to-string.js";
33
+ import "core-js/modules/es.set.js";
16
34
  import "core-js/modules/es.string.iterator.js";
17
35
  import "core-js/modules/web.dom-collections.iterator.js";
36
+ import "core-js/modules/es.map.js";
37
+ import "core-js/modules/es.array.from.js";
38
+ import "core-js/modules/es.array.find-index.js";
39
+ import "core-js/modules/es.array.reverse.js";
18
40
  import "core-js/modules/es.array.map.js";
19
41
  import "core-js/modules/es.array.filter.js";
20
42
  import "core-js/modules/es.array.index-of.js";
21
43
  import "core-js/modules/es.array.includes.js";
22
44
  import "core-js/modules/es.string.includes.js";
23
45
  import "core-js/modules/es.array.fill.js";
24
- import "core-js/modules/es.symbol.js";
25
- import "core-js/modules/es.symbol.description.js";
26
- import "core-js/modules/es.symbol.iterator.js";
27
- import "core-js/modules/es.array.from.js";
28
- import "core-js/modules/es.array.slice.js";
29
- import "core-js/modules/es.function.name.js";
30
- import "core-js/modules/es.regexp.exec.js";
31
-
32
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
33
-
34
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
35
-
36
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
37
-
38
46
  import { arrayMap } from "../helpers/array.mjs";
47
+ import { toSingleLine } from "../helpers/templateLiteralTag.mjs";
48
+ import { warn } from "../helpers/console.mjs";
39
49
  import { createIndexMap, getListWithInsertedItems, getListWithRemovedItems, HidingMap, IndexesSequence, TrimmingMap } from "./maps/index.mjs";
40
50
  import { AggregatedCollection, MapCollection } from "./mapCollections/index.mjs";
41
51
  import localHooks from "../mixins/localHooks.mjs";
42
52
  import { mixin } from "../helpers/object.mjs";
43
53
  import { isDefined } from "../helpers/mixed.mjs";
44
54
  import { ChangesObservable } from "./changesObservable/observable.mjs";
55
+ var deprecationWarns = new Set(['getFirstNotHiddenIndex']);
45
56
  /**
46
57
  * @class IndexMapper
47
58
  * @description
@@ -430,6 +441,10 @@ export var IndexMapper = /*#__PURE__*/function () {
430
441
  /**
431
442
  * Search for the first visible, not hidden index (represented by a visual index).
432
443
  *
444
+ * This method is deprecated and will be removed in a next major version of Handsontable.
445
+ * Use the {@link IndexMapper#getNearestNotHiddenIndex} method instead.
446
+ *
447
+ * @deprecated
433
448
  * @param {number} fromVisualIndex Visual start index. Starting point for finding destination index. Start point may be destination
434
449
  * point when handled index is NOT hidden.
435
450
  * @param {number} incrementBy We are searching for a next visible indexes by increasing (to be precise, or decreasing) indexes.
@@ -450,6 +465,12 @@ export var IndexMapper = /*#__PURE__*/function () {
450
465
  value: function getFirstNotHiddenIndex(fromVisualIndex, incrementBy) {
451
466
  var searchAlsoOtherWayAround = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
452
467
  var indexForNextSearch = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : fromVisualIndex - incrementBy;
468
+
469
+ if (deprecationWarns.has('getFirstNotHiddenIndex')) {
470
+ deprecationWarns.delete('getFirstNotHiddenIndex');
471
+ warn(toSingleLine(_templateObject || (_templateObject = _taggedTemplateLiteral(["The method \"getFirstNotHiddenIndex\" is deprecated and will be removed in the next \n major release. Please use \"getNearestNotHiddenIndex\" instead."], ["The method \"getFirstNotHiddenIndex\" is deprecated and will be removed in the next\\x20\n major release. Please use \"getNearestNotHiddenIndex\" instead."]))));
472
+ }
473
+
453
474
  var physicalIndex = this.getPhysicalFromVisualIndex(fromVisualIndex); // First or next (it may be end of the table) index is beyond the table boundaries.
454
475
 
455
476
  if (physicalIndex === null) {
@@ -469,6 +490,56 @@ export var IndexMapper = /*#__PURE__*/function () {
469
490
 
470
491
  return this.getFirstNotHiddenIndex(fromVisualIndex + incrementBy, incrementBy, searchAlsoOtherWayAround, indexForNextSearch);
471
492
  }
493
+ /**
494
+ * Search for the nearest not-hidden row or column.
495
+ *
496
+ * @param {number} fromVisualIndex The visual index of the row or column from which the search starts.<br><br>
497
+ * If the row or column from which the search starts is not hidden, the method simply returns the `fromVisualIndex` number.
498
+ * @param {number} searchDirection The search direction.<br><br>`1`: search from `fromVisualIndex` to the end of the dataset.<br><br>
499
+ * `-1`: search from `fromVisualIndex` to the beginning of the dataset (i.e., to the row or column at visual index `0`).
500
+ * @param {boolean} searchAlsoOtherWayAround `true`: if a search in a first direction failed, try the opposite direction.<br><br>
501
+ * `false`: search in one direction only.
502
+ *
503
+ * @returns {number|null} A visual index of a row or column, or `null`.
504
+ */
505
+
506
+ }, {
507
+ key: "getNearestNotHiddenIndex",
508
+ value: function getNearestNotHiddenIndex(fromVisualIndex, searchDirection) {
509
+ var searchAlsoOtherWayAround = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
510
+ var physicalIndex = this.getPhysicalFromVisualIndex(fromVisualIndex);
511
+
512
+ if (physicalIndex === null) {
513
+ return null;
514
+ }
515
+
516
+ if (this.fromVisualToRenderableIndexesCache.has(fromVisualIndex)) {
517
+ return fromVisualIndex;
518
+ }
519
+
520
+ var visibleIndexes = Array.from(this.fromVisualToRenderableIndexesCache.keys());
521
+ var index = -1;
522
+
523
+ if (searchDirection > 0) {
524
+ index = visibleIndexes.findIndex(function (visualIndex) {
525
+ return visualIndex > fromVisualIndex;
526
+ });
527
+ } else {
528
+ index = visibleIndexes.reverse().findIndex(function (visualIndex) {
529
+ return visualIndex < fromVisualIndex;
530
+ });
531
+ }
532
+
533
+ if (index === -1) {
534
+ if (searchAlsoOtherWayAround) {
535
+ return this.getNearestNotHiddenIndex(fromVisualIndex, -searchDirection, false);
536
+ }
537
+
538
+ return null;
539
+ }
540
+
541
+ return visibleIndexes[index];
542
+ }
472
543
  /**
473
544
  * Set default values for all indexes in registered index maps.
474
545
  *
@@ -782,7 +853,7 @@ export var IndexMapper = /*#__PURE__*/function () {
782
853
  this.notHiddenIndexesCache = this.getNotHiddenIndexes(false);
783
854
  this.renderablePhysicalIndexesCache = this.getRenderableIndexes(false);
784
855
  this.cacheFromPhysicalToVisualIndexes();
785
- this.cacheFromVisualToRenderabIendexes(); // Currently there's support only for the "hiding" map type.
856
+ this.cacheFromVisualToRenderableIndexes(); // Currently there's support only for the "hiding" map type.
786
857
 
787
858
  if (this.hiddenIndexesChanged) {
788
859
  this.hidingChangesObservable.emit(this.hidingMapsCollection.getMergedValues());
@@ -824,8 +895,8 @@ export var IndexMapper = /*#__PURE__*/function () {
824
895
  */
825
896
 
826
897
  }, {
827
- key: "cacheFromVisualToRenderabIendexes",
828
- value: function cacheFromVisualToRenderabIendexes() {
898
+ key: "cacheFromVisualToRenderableIndexes",
899
+ value: function cacheFromVisualToRenderableIndexes() {
829
900
  var nrOfRenderableIndexes = this.getRenderableIndexesLength();
830
901
  this.fromVisualToRenderableIndexesCache.clear();
831
902
 
@@ -39,7 +39,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
39
39
 
40
40
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
41
41
 
42
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
42
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
43
43
 
44
44
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
45
45
 
@@ -49,7 +49,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
49
49
 
50
50
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
51
51
 
52
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
52
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
53
53
 
54
54
  /**
55
55
  * Collection of maps. This collection aggregate maps with the same type of values. Values from the registered maps
@@ -19,7 +19,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
19
19
 
20
20
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
21
21
 
22
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23
23
 
24
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
25
25
 
@@ -29,7 +29,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
29
29
 
30
30
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
31
31
 
32
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
33
33
 
34
34
  import { MapCollection } from "./mapCollection.mjs";
35
35
  import { arrayMap } from "../../helpers/array.mjs";
@@ -37,7 +37,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
37
37
 
38
38
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
39
39
 
40
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
40
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
41
41
 
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
43
43
 
@@ -47,7 +47,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
47
47
 
48
48
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
49
49
 
50
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
50
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
51
51
 
52
52
  /**
53
53
  * Map for storing mappings from an physical index to a boolean value. It stores information whether physical index is
@@ -19,7 +19,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
19
19
 
20
20
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
21
21
 
22
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23
23
 
24
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
25
25
 
@@ -29,7 +29,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
29
29
 
30
30
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
31
31
 
32
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
33
33
 
34
34
  import { PhysicalIndexToValueMap } from "./physicalIndexToValueMap.mjs";
35
35
  import { arrayReduce } from "../../helpers/array.mjs";
@@ -41,13 +41,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
41
41
 
42
42
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
43
43
 
44
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
44
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
45
45
 
46
46
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
47
47
 
48
48
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
49
49
 
50
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
50
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
51
51
 
52
52
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
53
53
 
@@ -57,7 +57,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
57
57
 
58
58
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
59
59
 
60
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
60
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
61
61
 
62
62
  /**
63
63
  * Map for storing mappings from an index to a physical index.