handsontable 12.0.0 → 12.1.1

Sign up to get free protection for your applications and to get access to all the features.
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 +52 -0
  46. package/LICENSE.txt +1 -1
  47. package/base.js +2 -2
  48. package/base.mjs +2 -2
  49. package/core.js +39 -31
  50. package/core.mjs +39 -31
  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 +13863 -12941
  56. package/dist/handsontable.full.min.css +5 -5
  57. package/dist/handsontable.full.min.js +134 -135
  58. package/dist/handsontable.js +4136 -3926
  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 +6 -6
  156. package/plugins/autoColumnSize/autoColumnSize.mjs +6 -6
  157. package/plugins/autoRowSize/autoRowSize.js +4 -4
  158. package/plugins/autoRowSize/autoRowSize.mjs +4 -4
  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 +8 -7
  182. package/plugins/customBorders/customBorders.mjs +9 -8
  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 +10 -5
  212. package/plugins/formulas/formulas.mjs +10 -5
  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 +114 -75
  256. package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
  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.