handsontable 0.0.0-next-08765b9-20230714 → 0.0.0-next-f8ea07b-20230714

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (295) hide show
  1. package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
  4. package/3rdparty/walkontable/src/cell/coords.js +11 -50
  5. package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
  6. package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
  7. package/3rdparty/walkontable/src/cell/range.js +7 -38
  8. package/3rdparty/walkontable/src/cell/range.mjs +7 -38
  9. package/3rdparty/walkontable/src/core/_base.js +3 -9
  10. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  11. package/3rdparty/walkontable/src/core/clone.js +2 -2
  12. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  13. package/3rdparty/walkontable/src/core/core.js +2 -3
  14. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  15. package/3rdparty/walkontable/src/event.js +7 -7
  16. package/3rdparty/walkontable/src/event.mjs +7 -7
  17. package/3rdparty/walkontable/src/facade/core.js +2 -2
  18. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  19. package/3rdparty/walkontable/src/index.js +2 -10
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +6 -2
  26. package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
  27. package/3rdparty/walkontable/src/selection.js +295 -0
  28. package/3rdparty/walkontable/src/selection.mjs +290 -0
  29. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  30. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  31. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  32. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  33. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  34. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  35. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  36. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  37. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  38. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  39. package/3rdparty/walkontable/src/table.js +78 -6
  40. package/3rdparty/walkontable/src/table.mjs +79 -7
  41. package/base.js +2 -2
  42. package/base.mjs +2 -2
  43. package/core.d.ts +3 -6
  44. package/core.js +290 -173
  45. package/core.mjs +290 -173
  46. package/dataMap/metaManager/metaSchema.js +0 -41
  47. package/dataMap/metaManager/metaSchema.mjs +0 -41
  48. package/dist/handsontable.css +3 -19
  49. package/dist/handsontable.full.css +3 -19
  50. package/dist/handsontable.full.js +5369 -8671
  51. package/dist/handsontable.full.min.css +3 -3
  52. package/dist/handsontable.full.min.js +25 -25
  53. package/dist/handsontable.js +8117 -11419
  54. package/dist/handsontable.min.css +3 -3
  55. package/dist/handsontable.min.js +19 -19
  56. package/editorManager.js +75 -11
  57. package/editorManager.mjs +74 -11
  58. package/editors/textEditor/textEditor.js +11 -3
  59. package/editors/textEditor/textEditor.mjs +12 -4
  60. package/helpers/mixed.js +1 -1
  61. package/helpers/mixed.mjs +1 -1
  62. package/helpers/number.d.ts +0 -1
  63. package/helpers/number.js +0 -18
  64. package/helpers/number.mjs +0 -17
  65. package/package.json +1 -1
  66. package/pluginHooks.d.ts +1 -7
  67. package/pluginHooks.js +1 -106
  68. package/pluginHooks.mjs +1 -106
  69. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -58
  70. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -58
  71. package/plugins/columnSorting/columnSorting.js +0 -38
  72. package/plugins/columnSorting/columnSorting.mjs +2 -38
  73. package/plugins/columnSorting/index.js +1 -3
  74. package/plugins/columnSorting/index.mjs +1 -1
  75. package/plugins/comments/commentEditor.js +0 -1
  76. package/plugins/comments/commentEditor.mjs +0 -1
  77. package/plugins/comments/comments.js +189 -251
  78. package/plugins/comments/comments.mjs +190 -250
  79. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  80. package/plugins/contextMenu/contextMenu.js +30 -72
  81. package/plugins/contextMenu/contextMenu.mjs +31 -73
  82. package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
  83. package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
  84. package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
  85. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
  86. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
  87. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
  88. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
  89. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
  90. package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
  91. package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
  92. package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
  93. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
  94. package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
  95. package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
  96. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
  97. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
  98. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
  99. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
  100. package/plugins/contextMenu/utils.js +16 -28
  101. package/plugins/contextMenu/utils.mjs +15 -27
  102. package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
  103. package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
  104. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
  105. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
  106. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
  107. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
  108. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
  109. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
  110. package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
  111. package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
  112. package/plugins/copyPaste/copyPaste.js +2 -6
  113. package/plugins/copyPaste/copyPaste.mjs +2 -6
  114. package/plugins/customBorders/customBorders.js +20 -23
  115. package/plugins/customBorders/customBorders.mjs +21 -24
  116. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  117. package/plugins/dropdownMenu/dropdownMenu.js +32 -89
  118. package/plugins/dropdownMenu/dropdownMenu.mjs +32 -89
  119. package/plugins/filters/filters.js +14 -31
  120. package/plugins/filters/filters.mjs +13 -30
  121. package/plugins/mergeCells/mergeCells.js +16 -5
  122. package/plugins/mergeCells/mergeCells.mjs +16 -5
  123. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
  124. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
  125. package/plugins/nestedHeaders/nestedHeaders.js +8 -121
  126. package/plugins/nestedHeaders/nestedHeaders.mjs +8 -121
  127. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  128. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  129. package/plugins/nestedRows/nestedRows.js +0 -41
  130. package/plugins/nestedRows/nestedRows.mjs +0 -41
  131. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  132. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  133. package/selection/highlight/constants.js +15 -0
  134. package/selection/highlight/constants.mjs +6 -0
  135. package/selection/highlight/highlight.js +71 -256
  136. package/selection/highlight/highlight.mjs +71 -250
  137. package/selection/highlight/types/activeHeader.js +8 -10
  138. package/selection/highlight/types/activeHeader.mjs +8 -10
  139. package/selection/highlight/types/area.js +18 -6
  140. package/selection/highlight/types/area.mjs +18 -6
  141. package/selection/highlight/types/{focus.js → cell.js} +7 -5
  142. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  143. package/selection/highlight/types/customSelection.js +9 -7
  144. package/selection/highlight/types/customSelection.mjs +9 -7
  145. package/selection/highlight/types/fill.js +7 -5
  146. package/selection/highlight/types/fill.mjs +7 -5
  147. package/selection/highlight/types/header.js +18 -9
  148. package/selection/highlight/types/header.mjs +18 -9
  149. package/selection/highlight/types/index.js +35 -0
  150. package/selection/highlight/types/index.mjs +31 -0
  151. package/selection/highlight/visualSelection.js +27 -31
  152. package/selection/highlight/visualSelection.mjs +27 -31
  153. package/selection/index.js +7 -4
  154. package/selection/index.mjs +3 -2
  155. package/selection/mouseEventHandler.js +1 -1
  156. package/selection/mouseEventHandler.mjs +1 -1
  157. package/selection/range.js +8 -8
  158. package/selection/range.mjs +8 -8
  159. package/selection/selection.js +154 -290
  160. package/selection/selection.mjs +153 -287
  161. package/selection/transformation.js +90 -232
  162. package/selection/transformation.mjs +90 -232
  163. package/selection/utils.js +21 -15
  164. package/selection/utils.mjs +21 -16
  165. package/settings.d.ts +0 -2
  166. package/shortcuts/manager.js +0 -2
  167. package/shortcuts/manager.mjs +0 -2
  168. package/shortcuts/recorder.js +2 -2
  169. package/shortcuts/recorder.mjs +2 -2
  170. package/shortcuts/utils.js +5 -19
  171. package/shortcuts/utils.mjs +4 -18
  172. package/tableView.js +13 -67
  173. package/tableView.mjs +13 -67
  174. package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
  175. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  176. package/3rdparty/walkontable/src/selection/constants.js +0 -62
  177. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  178. package/3rdparty/walkontable/src/selection/index.js +0 -26
  179. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  180. package/3rdparty/walkontable/src/selection/manager.js +0 -259
  181. package/3rdparty/walkontable/src/selection/manager.mjs +0 -254
  182. package/3rdparty/walkontable/src/selection/scanner.js +0 -270
  183. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
  184. package/3rdparty/walkontable/src/selection/selection.js +0 -101
  185. package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
  186. package/core/focusCatcher/focusDetector.js +0 -58
  187. package/core/focusCatcher/focusDetector.mjs +0 -54
  188. package/core/focusCatcher/index.js +0 -142
  189. package/core/focusCatcher/index.mjs +0 -138
  190. package/core/index.js +0 -9
  191. package/core/index.mjs +0 -1
  192. package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
  193. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
  194. package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
  195. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
  196. package/plugins/comments/contextMenuItem/removeComment.js +0 -38
  197. package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
  198. package/selection/highlight/types/areaLayered.js +0 -31
  199. package/selection/highlight/types/areaLayered.mjs +0 -26
  200. package/selection/highlight/types/column.js +0 -27
  201. package/selection/highlight/types/column.mjs +0 -22
  202. package/selection/highlight/types/row.js +0 -27
  203. package/selection/highlight/types/row.mjs +0 -22
  204. package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
  205. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
  206. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
  207. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  208. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  209. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
  210. package/shortcutContexts/commands/editor/index.js +0 -16
  211. package/shortcutContexts/commands/editor/index.mjs +0 -12
  212. package/shortcutContexts/commands/editor/open.js +0 -27
  213. package/shortcutContexts/commands/editor/open.mjs +0 -23
  214. package/shortcutContexts/commands/emptySelectedCells.js +0 -11
  215. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  216. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  217. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
  218. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  219. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -17
  220. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  221. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  222. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  223. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
  224. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  225. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
  226. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  227. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
  228. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
  229. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
  230. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
  231. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
  232. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
  233. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
  234. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
  235. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
  236. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
  237. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
  238. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
  239. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
  240. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  241. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
  242. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  243. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
  244. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  245. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -17
  246. package/shortcutContexts/commands/index.js +0 -35
  247. package/shortcutContexts/commands/index.mjs +0 -31
  248. package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
  249. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
  250. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -31
  251. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -27
  252. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  253. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  254. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
  255. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  256. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
  257. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  258. package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
  259. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  260. package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
  261. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  262. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
  263. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
  264. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
  265. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
  266. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
  267. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
  268. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
  269. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
  270. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
  271. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
  272. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
  273. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
  274. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
  275. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
  276. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
  277. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
  278. package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
  279. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
  280. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -31
  281. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -27
  282. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
  283. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
  284. package/shortcutContexts/commands/scrollToFocusedCell.js +0 -36
  285. package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -32
  286. package/shortcutContexts/commands/selectAll.js +0 -10
  287. package/shortcutContexts/commands/selectAll.mjs +0 -6
  288. package/shortcutContexts/constants.js +0 -13
  289. package/shortcutContexts/constants.mjs +0 -8
  290. package/shortcutContexts/editor.js +0 -25
  291. package/shortcutContexts/editor.mjs +0 -21
  292. package/shortcutContexts/grid.js +0 -163
  293. package/shortcutContexts/grid.mjs +0 -159
  294. package/shortcutContexts/index.js +0 -24
  295. package/shortcutContexts/index.mjs +0 -11
@@ -1,298 +1,156 @@
1
- import "core-js/modules/es.error.cause.js";
2
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
6
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
7
- function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
8
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
9
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
10
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
11
1
  import { mixin } from "../helpers/object.mjs";
12
2
  import localHooks from "./../mixins/localHooks.mjs";
13
3
  /**
14
4
  * The Transformation class implements algorithms for transforming coordinates based on current settings
15
- * passed to the Handsontable. The class performs the calculations based on the renderable indexes.
5
+ * passed to the Handsontable.
16
6
  *
17
7
  * Transformation is always applied relative to the current selection.
18
8
  *
19
- * The class operates on a table size defined by the renderable indexes. If the `navigableHeaders`
20
- * option is enabled, the table size is increased by the number of row and/or column headers.
21
- * Because the headers are treated as cells as part of the table size (indexes always go from 0 to N),
22
- * the algorithm can be written as simply as possible (without new if's that distinguish the headers
23
- * logic).
24
- *
25
9
  * @class Transformation
26
10
  * @util
27
11
  */
28
- var _range = /*#__PURE__*/new WeakMap();
29
- var _options = /*#__PURE__*/new WeakMap();
30
- var _offset = /*#__PURE__*/new WeakMap();
31
- var _setOffsetSize = /*#__PURE__*/new WeakSet();
32
- var _clampCoords = /*#__PURE__*/new WeakSet();
33
- var _getTableSize = /*#__PURE__*/new WeakSet();
34
- var _visualToZeroBasedCoords = /*#__PURE__*/new WeakSet();
35
- var _zeroBasedToVisualCoords = /*#__PURE__*/new WeakSet();
36
12
  class Transformation {
37
13
  constructor(range, options) {
38
- /**
39
- * Translates the zero-based coordinates to visual ones.
40
- *
41
- * @param {CellCoords} zeroBasedCoords The coordinates to process.
42
- * @returns {CellCoords}
43
- */
44
- _classPrivateMethodInitSpec(this, _zeroBasedToVisualCoords);
45
- /**
46
- * Translates the visual coordinates to zero-based ones.
47
- *
48
- * @param {CellCoords} visualCoords The visual coords to process.
49
- * @returns {{x: number, y: number}}
50
- */
51
- _classPrivateMethodInitSpec(this, _visualToZeroBasedCoords);
52
- /**
53
- * Gets the table size in number of rows with headers as "height" and number of columns with
54
- * headers as "width".
55
- *
56
- * @returns {{width: number, height: number}}
57
- */
58
- _classPrivateMethodInitSpec(this, _getTableSize);
59
- /**
60
- * Clamps the coords to make sure they points to the cell (or header) in the table range.
61
- *
62
- * @param {CellCoords} zeroBasedCoords The coords object to clamp.
63
- * @returns {{rowDir: 1|0|-1, colDir: 1|0|-1}}
64
- */
65
- _classPrivateMethodInitSpec(this, _clampCoords);
66
- /**
67
- * Sets the additional offset in table size that may occur when the `navigableHeaders` option
68
- * is enabled.
69
- *
70
- * @param {{x: number, y: number}} offset Offset as x and y properties.
71
- */
72
- _classPrivateMethodInitSpec(this, _setOffsetSize);
73
14
  /**
74
15
  * Instance of the SelectionRange, holder for visual coordinates applied to the table.
75
16
  *
76
17
  * @type {SelectionRange}
77
18
  */
78
- _classPrivateFieldInitSpec(this, _range, {
79
- writable: true,
80
- value: void 0
81
- });
19
+ this.range = range;
82
20
  /**
83
21
  * Additional options which define the state of the settings which can infer transformation and
84
22
  * give the possibility to translate indexes.
85
23
  *
86
24
  * @type {object}
87
25
  */
88
- _classPrivateFieldInitSpec(this, _options, {
89
- writable: true,
90
- value: void 0
91
- });
92
- /**
93
- * Increases the table size by applying the offsets. The option is used by the `navigableHeaders`
94
- * option.
95
- *
96
- * @type {{ x: number, y: number }}
97
- */
98
- _classPrivateFieldInitSpec(this, _offset, {
99
- writable: true,
100
- value: {
101
- x: 0,
102
- y: 0
103
- }
104
- });
105
- _classPrivateFieldSet(this, _range, range);
106
- _classPrivateFieldSet(this, _options, options);
26
+ this.options = options;
107
27
  }
108
28
 
109
29
  /**
110
- * Selects cell relative to the current cell (if possible).
30
+ * Selects cell relative to current cell (if possible).
111
31
  *
112
32
  * @param {number} rowDelta Rows number to move, value can be passed as negative number.
113
33
  * @param {number} colDelta Columns number to move, value can be passed as negative number.
114
- * @param {boolean} [createMissingRecords=false] If `true` the new rows/columns will be created if necessary. Otherwise, row/column will
34
+ * @param {boolean} [force=false] If `true` the new rows/columns will be created if necessary. Otherwise, row/column will
115
35
  * be created according to `minSpareRows/minSpareCols` settings of Handsontable.
116
36
  * @returns {CellCoords} Visual coordinates after transformation.
117
37
  */
118
38
  transformStart(rowDelta, colDelta) {
119
- let createMissingRecords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
120
- _classPrivateMethodGet(this, _setOffsetSize, _setOffsetSize2).call(this, {
121
- x: _classPrivateFieldGet(this, _options).navigableHeaders() ? _classPrivateFieldGet(this, _options).countRowHeaders() : 0,
122
- y: _classPrivateFieldGet(this, _options).navigableHeaders() ? _classPrivateFieldGet(this, _options).countColHeaders() : 0
123
- });
124
- const delta = _classPrivateFieldGet(this, _options).createCellCoords(rowDelta, colDelta);
125
- let visualCoords = _classPrivateFieldGet(this, _range).current().highlight;
126
- const highlightRenderableCoords = _classPrivateFieldGet(this, _options).visualToRenderableCoords(visualCoords);
39
+ let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
40
+ const delta = this.options.createCellCoords(rowDelta, colDelta);
41
+ const highlightCoords = this.range.current().highlight;
42
+ const {
43
+ row: renderableRow,
44
+ col: renderableColumn
45
+ } = this.options.visualToRenderableCoords(highlightCoords);
46
+ let visualCoords = highlightCoords;
127
47
  let rowTransformDir = 0;
128
48
  let colTransformDir = 0;
129
49
  this.runLocalHooks('beforeTransformStart', delta);
130
- if (highlightRenderableCoords.row !== null && highlightRenderableCoords.col !== null) {
131
- const {
132
- width,
133
- height
134
- } = _classPrivateMethodGet(this, _getTableSize, _getTableSize2).call(this);
135
- const {
136
- x,
137
- y
138
- } = _classPrivateMethodGet(this, _visualToZeroBasedCoords, _visualToZeroBasedCoords2).call(this, visualCoords);
139
- const fixedRowsBottom = _classPrivateFieldGet(this, _options).fixedRowsBottom();
140
- const minSpareRows = _classPrivateFieldGet(this, _options).minSpareRows();
141
- const minSpareCols = _classPrivateFieldGet(this, _options).minSpareCols();
142
- const autoWrapRow = _classPrivateFieldGet(this, _options).autoWrapRow();
143
- const autoWrapCol = _classPrivateFieldGet(this, _options).autoWrapCol();
144
- const rawCoords = {
145
- row: y + delta.row,
146
- col: x + delta.col
147
- };
148
- if (rawCoords.row >= height) {
149
- if (createMissingRecords && minSpareRows > 0 && fixedRowsBottom === 0) {
150
- this.runLocalHooks('insertRowRequire', _classPrivateFieldGet(this, _options).countRenderableRows());
50
+ if (renderableRow !== null && renderableColumn !== null) {
51
+ let totalRows = this.options.countRows();
52
+ let totalCols = this.options.countCols();
53
+ const fixedRowsBottom = this.options.fixedRowsBottom();
54
+ const minSpareRows = this.options.minSpareRows();
55
+ const minSpareCols = this.options.minSpareCols();
56
+ const autoWrapRow = this.options.autoWrapRow();
57
+ const autoWrapCol = this.options.autoWrapCol();
58
+ if (renderableRow + rowDelta > totalRows - 1) {
59
+ if (force && minSpareRows > 0 && !(fixedRowsBottom && renderableRow >= totalRows - fixedRowsBottom - 1)) {
60
+ this.runLocalHooks('insertRowRequire', totalRows);
61
+ totalRows = this.options.countRows();
151
62
  } else if (autoWrapCol) {
152
- const nextColumn = rawCoords.col + 1;
153
- rawCoords.row = rawCoords.row - height;
154
- rawCoords.col = nextColumn >= width ? nextColumn - width : nextColumn;
155
- }
156
- } else if (rawCoords.row < 0) {
157
- if (autoWrapCol) {
158
- const previousColumn = rawCoords.col - 1;
159
- rawCoords.row = height + rawCoords.row;
160
- rawCoords.col = previousColumn < 0 ? width + previousColumn : previousColumn;
63
+ delta.row = 1 - totalRows;
64
+ delta.col = renderableColumn + delta.col === totalCols - 1 ? 1 - totalCols : 1;
161
65
  }
66
+ } else if (autoWrapCol && renderableRow + delta.row < 0 && renderableColumn + delta.col >= 0) {
67
+ delta.row = totalRows - 1;
68
+ delta.col = renderableColumn + delta.col === 0 ? totalCols - 1 : -1;
162
69
  }
163
- if (rawCoords.col >= width) {
164
- if (createMissingRecords && minSpareCols > 0) {
165
- this.runLocalHooks('insertColRequire', _classPrivateFieldGet(this, _options).countRenderableColumns());
70
+ if (renderableColumn + delta.col > totalCols - 1) {
71
+ if (force && minSpareCols > 0) {
72
+ this.runLocalHooks('insertColRequire', totalCols);
73
+ totalCols = this.options.countCols();
166
74
  } else if (autoWrapRow) {
167
- const nextRow = rawCoords.row + 1;
168
- rawCoords.row = nextRow >= height ? nextRow - height : nextRow;
169
- rawCoords.col = rawCoords.col - width;
170
- }
171
- } else if (rawCoords.col < 0) {
172
- if (autoWrapRow) {
173
- const previousRow = rawCoords.row - 1;
174
- rawCoords.row = previousRow < 0 ? height + previousRow : previousRow;
175
- rawCoords.col = width + rawCoords.col;
75
+ delta.row = renderableRow + delta.row === totalRows - 1 ? 1 - totalRows : 1;
76
+ delta.col = 1 - totalCols;
176
77
  }
78
+ } else if (autoWrapRow && renderableColumn + delta.col < 0 && renderableRow + delta.row >= 0) {
79
+ delta.row = renderableRow + delta.row === 0 ? totalRows - 1 : -1;
80
+ delta.col = totalCols - 1;
177
81
  }
178
- const coords = _classPrivateFieldGet(this, _options).createCellCoords(rawCoords.row, rawCoords.col);
179
- const {
180
- rowDir,
181
- colDir
182
- } = _classPrivateMethodGet(this, _clampCoords, _clampCoords2).call(this, coords);
183
- rowTransformDir = rowDir;
184
- colTransformDir = colDir;
185
- visualCoords = _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, coords);
82
+ const coords = this.options.createCellCoords(renderableRow + delta.row, renderableColumn + delta.col);
83
+ rowTransformDir = 0;
84
+ colTransformDir = 0;
85
+ if (coords.row < 0) {
86
+ rowTransformDir = -1;
87
+ coords.row = 0;
88
+ } else if (coords.row > 0 && coords.row >= totalRows) {
89
+ rowTransformDir = 1;
90
+ coords.row = totalRows - 1;
91
+ }
92
+ if (coords.col < 0) {
93
+ colTransformDir = -1;
94
+ coords.col = 0;
95
+ } else if (coords.col > 0 && coords.col >= totalCols) {
96
+ colTransformDir = 1;
97
+ coords.col = totalCols - 1;
98
+ }
99
+ visualCoords = this.options.renderableToVisualCoords(coords);
186
100
  }
187
101
  this.runLocalHooks('afterTransformStart', visualCoords, rowTransformDir, colTransformDir);
188
102
  return visualCoords;
189
103
  }
190
104
 
191
105
  /**
192
- * Sets selection end cell relative to the current selection end cell (if possible).
106
+ * Sets selection end cell relative to current selection end cell (if possible).
193
107
  *
194
108
  * @param {number} rowDelta Rows number to move, value can be passed as negative number.
195
109
  * @param {number} colDelta Columns number to move, value can be passed as negative number.
196
110
  * @returns {CellCoords} Visual coordinates after transformation.
197
111
  */
198
112
  transformEnd(rowDelta, colDelta) {
199
- _classPrivateMethodGet(this, _setOffsetSize, _setOffsetSize2).call(this, {
200
- x: _classPrivateFieldGet(this, _options).navigableHeaders() ? _classPrivateFieldGet(this, _options).countRowHeaders() : 0,
201
- y: _classPrivateFieldGet(this, _options).navigableHeaders() ? _classPrivateFieldGet(this, _options).countColHeaders() : 0
202
- });
203
- const delta = _classPrivateFieldGet(this, _options).createCellCoords(rowDelta, colDelta);
204
- const cellRange = _classPrivateFieldGet(this, _range).current();
205
- const highlightRenderableCoords = _classPrivateFieldGet(this, _options).visualToRenderableCoords(cellRange.highlight);
206
- const visualCoords = cellRange.to.clone();
113
+ const delta = this.options.createCellCoords(rowDelta, colDelta);
114
+ const cellRange = this.range.current();
115
+ let visualCoords = cellRange.to;
207
116
  let rowTransformDir = 0;
208
117
  let colTransformDir = 0;
209
118
  this.runLocalHooks('beforeTransformEnd', delta);
210
- if (highlightRenderableCoords.row !== null && highlightRenderableCoords.col !== null) {
211
- const {
212
- x,
213
- y
214
- } = _classPrivateMethodGet(this, _visualToZeroBasedCoords, _visualToZeroBasedCoords2).call(this, cellRange.to);
215
- const rawCoords = {
216
- row: y + delta.row,
217
- col: x + delta.col
218
- };
219
- const coords = _classPrivateFieldGet(this, _options).createCellCoords(rawCoords.row, rawCoords.col);
119
+ const {
120
+ row: rowHighlight,
121
+ col: colHighlight
122
+ } = this.options.visualToRenderableCoords(cellRange.highlight);
123
+
124
+ // We have highlight (start point for the selection).
125
+ if (rowHighlight !== null && colHighlight !== null) {
126
+ const totalRows = this.options.countRows();
127
+ const totalCols = this.options.countCols();
220
128
  const {
221
- rowDir,
222
- colDir
223
- } = _classPrivateMethodGet(this, _clampCoords, _clampCoords2).call(this, coords);
224
- rowTransformDir = rowDir;
225
- colTransformDir = colDir;
226
- const newVisualCoords = _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, coords);
227
- if (delta.row === 0 && delta.col !== 0) {
228
- visualCoords.col = newVisualCoords.col;
229
- } else if (delta.row !== 0 && delta.col === 0) {
230
- visualCoords.row = newVisualCoords.row;
231
- } else {
232
- visualCoords.row = newVisualCoords.row;
233
- visualCoords.col = newVisualCoords.col;
129
+ row: rowTo,
130
+ col: colTo
131
+ } = this.options.visualToRenderableCoords(cellRange.to);
132
+ const coords = this.options.createCellCoords(rowTo + delta.row, colTo + delta.col);
133
+ rowTransformDir = 0;
134
+ colTransformDir = 0;
135
+ if (coords.row < 0) {
136
+ rowTransformDir = -1;
137
+ coords.row = 0;
138
+ } else if (coords.row > 0 && coords.row >= totalRows) {
139
+ rowTransformDir = 1;
140
+ coords.row = totalRows - 1;
141
+ }
142
+ if (coords.col < 0) {
143
+ colTransformDir = -1;
144
+ coords.col = 0;
145
+ } else if (coords.col > 0 && coords.col >= totalCols) {
146
+ colTransformDir = 1;
147
+ coords.col = totalCols - 1;
234
148
  }
149
+ visualCoords = this.options.renderableToVisualCoords(coords);
235
150
  }
236
151
  this.runLocalHooks('afterTransformEnd', visualCoords, rowTransformDir, colTransformDir);
237
152
  return visualCoords;
238
153
  }
239
154
  }
240
- function _setOffsetSize2(_ref) {
241
- let {
242
- x,
243
- y
244
- } = _ref;
245
- _classPrivateFieldSet(this, _offset, {
246
- x,
247
- y
248
- });
249
- }
250
- function _clampCoords2(zeroBasedCoords) {
251
- const {
252
- width,
253
- height
254
- } = _classPrivateMethodGet(this, _getTableSize, _getTableSize2).call(this);
255
- let rowDir = 0;
256
- let colDir = 0;
257
- if (zeroBasedCoords.row < 0) {
258
- rowDir = -1;
259
- zeroBasedCoords.row = 0;
260
- } else if (zeroBasedCoords.row > 0 && zeroBasedCoords.row >= height) {
261
- rowDir = 1;
262
- zeroBasedCoords.row = height - 1;
263
- }
264
- if (zeroBasedCoords.col < 0) {
265
- colDir = -1;
266
- zeroBasedCoords.col = 0;
267
- } else if (zeroBasedCoords.col > 0 && zeroBasedCoords.col >= width) {
268
- colDir = 1;
269
- zeroBasedCoords.col = width - 1;
270
- }
271
- return {
272
- rowDir,
273
- colDir
274
- };
275
- }
276
- function _getTableSize2() {
277
- return {
278
- width: _classPrivateFieldGet(this, _offset).x + _classPrivateFieldGet(this, _options).countRenderableColumns(),
279
- height: _classPrivateFieldGet(this, _offset).y + _classPrivateFieldGet(this, _options).countRenderableRows()
280
- };
281
- }
282
- function _visualToZeroBasedCoords2(visualCoords) {
283
- const {
284
- row,
285
- col
286
- } = _classPrivateFieldGet(this, _options).visualToRenderableCoords(visualCoords);
287
- return {
288
- x: _classPrivateFieldGet(this, _offset).x + col,
289
- y: _classPrivateFieldGet(this, _offset).y + row
290
- };
291
- }
292
- function _zeroBasedToVisualCoords2(zeroBasedCoords) {
293
- zeroBasedCoords.col = zeroBasedCoords.col - _classPrivateFieldGet(this, _offset).x;
294
- zeroBasedCoords.row = zeroBasedCoords.row - _classPrivateFieldGet(this, _offset).y;
295
- return _classPrivateFieldGet(this, _options).renderableToVisualCoords(zeroBasedCoords);
296
- }
297
155
  mixin(Transformation, localHooks);
298
156
  export default Transformation;
@@ -2,6 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.detectSelectionType = detectSelectionType;
5
+ exports.isValidCoord = isValidCoord;
5
6
  exports.normalizeSelectionFactory = normalizeSelectionFactory;
6
7
  exports.transformSelectionToColumnDistance = transformSelectionToColumnDistance;
7
8
  exports.transformSelectionToRowDistance = transformSelectionToRowDistance;
@@ -110,9 +111,7 @@ function normalizeSelectionFactory(type) {
110
111
  rowEnd = Math.max(origRowStart, origRowEnd);
111
112
  columnEnd = Math.max(origColumnStart, origColumnEnd);
112
113
  }
113
- const from = new _src.CellCoords(rowStart, columnStart);
114
- const to = new _src.CellCoords(rowEnd, columnEnd);
115
- return new _src.CellRange(from, from, to);
114
+ return [rowStart, columnStart, rowEnd, columnEnd];
116
115
  };
117
116
  }
118
117
 
@@ -138,12 +137,9 @@ function transformSelectionToColumnDistance(selectionRanges) {
138
137
 
139
138
  // Iterate through all ranges and collect all column indexes which are not saved yet.
140
139
  (0, _array.arrayEach)(selectionRanges, selection => {
141
- const {
142
- from,
143
- to
144
- } = selectionSchemaNormalizer(selection);
145
- const columnNonHeaderStart = Math.max(from.col, 0);
146
- const amount = to.col - columnNonHeaderStart + 1;
140
+ const [, columnStart,, columnEnd] = selectionSchemaNormalizer(selection);
141
+ const columnNonHeaderStart = Math.max(columnStart, 0);
142
+ const amount = columnEnd - columnNonHeaderStart + 1;
147
143
  (0, _array.arrayEach)(Array.from(new Array(amount), (_, i) => columnNonHeaderStart + i), index => {
148
144
  if (!unorderedIndexes.has(index)) {
149
145
  unorderedIndexes.add(index);
@@ -186,12 +182,9 @@ function transformSelectionToRowDistance(selectionRanges) {
186
182
 
187
183
  // Iterate through all ranges and collect all column indexes which are not saved yet.
188
184
  (0, _array.arrayEach)(selectionRanges, selection => {
189
- const {
190
- from,
191
- to
192
- } = selectionSchemaNormalizer(selection);
193
- const rowNonHeaderStart = Math.max(from.row, 0);
194
- const amount = to.row - rowNonHeaderStart + 1;
185
+ const [rowStart,, rowEnd] = selectionSchemaNormalizer(selection);
186
+ const rowNonHeaderStart = Math.max(rowStart, 0);
187
+ const amount = rowEnd - rowNonHeaderStart + 1;
195
188
  (0, _array.arrayEach)(Array.from(new Array(amount), (_, i) => rowNonHeaderStart + i), index => {
196
189
  if (!unorderedIndexes.has(index)) {
197
190
  unorderedIndexes.add(index);
@@ -210,4 +203,17 @@ function transformSelectionToRowDistance(selectionRanges) {
210
203
  return acc;
211
204
  }, []);
212
205
  return normalizedRowRanges;
206
+ }
207
+
208
+ /**
209
+ * Check if passed value can be treated as valid cell coordinate. The second argument is
210
+ * used to check if the value doesn't exceed the defined max table rows/columns count.
211
+ *
212
+ * @param {number} coord The coordinate to validate (row index or column index).
213
+ * @param {number} maxTableItemsCount The value that declares the maximum coordinate that is still validatable.
214
+ * @returns {boolean}
215
+ */
216
+ function isValidCoord(coord) {
217
+ let maxTableItemsCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
218
+ return typeof coord === 'number' && coord >= 0 && coord < maxTableItemsCount;
213
219
  }
@@ -1,6 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
- import { CellRange, CellCoords } from "./../3rdparty/walkontable/src/index.mjs";
3
+ import { CellRange } from "./../3rdparty/walkontable/src/index.mjs";
4
4
  import { arrayEach, arrayReduce } from "./../helpers/array.mjs";
5
5
  import { isUndefined } from "./../helpers/mixed.mjs";
6
6
  export const SELECTION_TYPE_UNRECOGNIZED = 0;
@@ -98,9 +98,7 @@ export function normalizeSelectionFactory(type) {
98
98
  rowEnd = Math.max(origRowStart, origRowEnd);
99
99
  columnEnd = Math.max(origColumnStart, origColumnEnd);
100
100
  }
101
- const from = new CellCoords(rowStart, columnStart);
102
- const to = new CellCoords(rowEnd, columnEnd);
103
- return new CellRange(from, from, to);
101
+ return [rowStart, columnStart, rowEnd, columnEnd];
104
102
  };
105
103
  }
106
104
 
@@ -126,12 +124,9 @@ export function transformSelectionToColumnDistance(selectionRanges) {
126
124
 
127
125
  // Iterate through all ranges and collect all column indexes which are not saved yet.
128
126
  arrayEach(selectionRanges, selection => {
129
- const {
130
- from,
131
- to
132
- } = selectionSchemaNormalizer(selection);
133
- const columnNonHeaderStart = Math.max(from.col, 0);
134
- const amount = to.col - columnNonHeaderStart + 1;
127
+ const [, columnStart,, columnEnd] = selectionSchemaNormalizer(selection);
128
+ const columnNonHeaderStart = Math.max(columnStart, 0);
129
+ const amount = columnEnd - columnNonHeaderStart + 1;
135
130
  arrayEach(Array.from(new Array(amount), (_, i) => columnNonHeaderStart + i), index => {
136
131
  if (!unorderedIndexes.has(index)) {
137
132
  unorderedIndexes.add(index);
@@ -174,12 +169,9 @@ export function transformSelectionToRowDistance(selectionRanges) {
174
169
 
175
170
  // Iterate through all ranges and collect all column indexes which are not saved yet.
176
171
  arrayEach(selectionRanges, selection => {
177
- const {
178
- from,
179
- to
180
- } = selectionSchemaNormalizer(selection);
181
- const rowNonHeaderStart = Math.max(from.row, 0);
182
- const amount = to.row - rowNonHeaderStart + 1;
172
+ const [rowStart,, rowEnd] = selectionSchemaNormalizer(selection);
173
+ const rowNonHeaderStart = Math.max(rowStart, 0);
174
+ const amount = rowEnd - rowNonHeaderStart + 1;
183
175
  arrayEach(Array.from(new Array(amount), (_, i) => rowNonHeaderStart + i), index => {
184
176
  if (!unorderedIndexes.has(index)) {
185
177
  unorderedIndexes.add(index);
@@ -198,4 +190,17 @@ export function transformSelectionToRowDistance(selectionRanges) {
198
190
  return acc;
199
191
  }, []);
200
192
  return normalizedRowRanges;
193
+ }
194
+
195
+ /**
196
+ * Check if passed value can be treated as valid cell coordinate. The second argument is
197
+ * used to check if the value doesn't exceed the defined max table rows/columns count.
198
+ *
199
+ * @param {number} coord The coordinate to validate (row index or column index).
200
+ * @param {number} maxTableItemsCount The value that declares the maximum coordinate that is still validatable.
201
+ * @returns {boolean}
202
+ */
203
+ export function isValidCoord(coord) {
204
+ let maxTableItemsCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
205
+ return typeof coord === 'number' && coord >= 0 && coord < maxTableItemsCount;
201
206
  }
package/settings.d.ts CHANGED
@@ -124,7 +124,6 @@ export interface GridSettings extends Events {
124
124
  dateFormat?: string;
125
125
  datePickerConfig?: PikadayOptions;
126
126
  defaultDate?: string;
127
- disableTabNavigation?: boolean;
128
127
  disableVisualSelection?: boolean | 'current' | 'area' | 'header' | Array<'current' | 'area' | 'header'>;
129
128
  dragToScroll?: boolean;
130
129
  dropdownMenu?: DropdownMenuSettings;
@@ -165,7 +164,6 @@ export interface GridSettings extends Events {
165
164
  minSpareCols?: number;
166
165
  minSpareRows?: number;
167
166
  multiColumnSorting?: MultiColumnSortingSettings;
168
- navigableHeaders?: boolean;
169
167
  nestedHeaders?: NestedHeadersSettings;
170
168
  nestedRows?: boolean;
171
169
  noWordWrapClassName?: string;
@@ -2,7 +2,6 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  var _uniqueMap = require("../utils/dataStructures/uniqueMap");
5
- var _event = require("../helpers/dom/event");
6
5
  var _context = require("./context");
7
6
  var _recorder = require("./recorder");
8
7
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -127,7 +126,6 @@ const createShortcutManager = _ref => {
127
126
  event.preventDefault();
128
127
  }
129
128
  if (stopPropagation) {
130
- (0, _event.stopImmediatePropagation)(event);
131
129
  event.stopPropagation();
132
130
  }
133
131
  if (isExecutionCancelled) {
@@ -1,5 +1,4 @@
1
1
  import { createUniqueMap } from "../utils/dataStructures/uniqueMap.mjs";
2
- import { stopImmediatePropagation } from "../helpers/dom/event.mjs";
3
2
  import { createContext } from "./context.mjs";
4
3
  import { useRecorder } from "./recorder.mjs";
5
4
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -123,7 +122,6 @@ export const createShortcutManager = _ref => {
123
122
  event.preventDefault();
124
123
  }
125
124
  if (stopPropagation) {
126
- stopImmediatePropagation(event);
127
125
  event.stopPropagation();
128
126
  }
129
127
  if (isExecutionCancelled) {
@@ -86,7 +86,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
86
86
  if (event.keyCode === 229 || result === false || (0, _event.isImmediatePropagationStopped)(event)) {
87
87
  return;
88
88
  }
89
- const pressedKey = (0, _utils.normalizeEventKey)(event);
89
+ const pressedKey = (0, _utils.normalizeEventKey)(event.key);
90
90
  let extraModifierKeys = [];
91
91
  if (isModifierKey(pressedKey)) {
92
92
  modifierKeysObserver.press(pressedKey);
@@ -112,7 +112,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
112
112
  if (handleEvent(event) === false) {
113
113
  return;
114
114
  }
115
- const pressedKey = (0, _utils.normalizeEventKey)(event);
115
+ const pressedKey = (0, _utils.normalizeEventKey)(event.key);
116
116
  if (isModifierKey(pressedKey) === false) {
117
117
  return;
118
118
  }
@@ -82,7 +82,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
82
82
  if (event.keyCode === 229 || result === false || isImmediatePropagationStopped(event)) {
83
83
  return;
84
84
  }
85
- const pressedKey = normalizeEventKey(event);
85
+ const pressedKey = normalizeEventKey(event.key);
86
86
  let extraModifierKeys = [];
87
87
  if (isModifierKey(pressedKey)) {
88
88
  modifierKeysObserver.press(pressedKey);
@@ -108,7 +108,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
108
108
  if (handleEvent(event) === false) {
109
109
  return;
110
110
  }
111
- const pressedKey = normalizeEventKey(event);
111
+ const pressedKey = normalizeEventKey(event.key);
112
112
  if (isModifierKey(pressedKey) === false) {
113
113
  return;
114
114
  }
@@ -37,27 +37,13 @@ const getKeysList = normalizedKeys => {
37
37
  };
38
38
 
39
39
  /**
40
- * The regex tests if the event.code matches to the pattern and it's used to extract letters and digits from
41
- * the string.
42
- */
43
- exports.getKeysList = getKeysList;
44
- const codeToKeyRegExp = new RegExp('^(?:Key|Digit)([A-Z0-9])$');
45
-
46
- /**
47
- * Normalizes a keyboard event key value to a key before its modification. When the keyboard event
48
- * is triggered with Alt, Control or Shift keys the `key` property contains modified key e.g. for Alt+L
49
- * it will be `ł`. But that value is only valid for polish keyboard layout. To fix that limitations, for
50
- * letters and digits the value is taken from the `code` property which holds original value before
51
- * transformation.
40
+ * Normalize a `KeyboardEvent.key` property, to use it for keyboard shortcuts.
52
41
  *
53
- * @param {Event} event The KeyboardEvent object.
42
+ * @param {string} key KeyboardEvent's key property.
54
43
  * @returns {string}
55
44
  */
56
- const normalizeEventKey = _ref => {
57
- let {
58
- key,
59
- code
60
- } = _ref;
61
- return (codeToKeyRegExp.test(code) ? code.replace(codeToKeyRegExp, '$1') : key).toLowerCase();
45
+ exports.getKeysList = getKeysList;
46
+ const normalizeEventKey = key => {
47
+ return key.toLowerCase();
62
48
  };
63
49
  exports.normalizeEventKey = normalizeEventKey;