handsontable 0.0.0-next-baf2fcf-20230809 → 0.0.0-next-08765b9-20230809

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 (299) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +26 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +6 -78
  50. package/3rdparty/walkontable/src/table.mjs +7 -79
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/common.d.ts +1 -1
  54. package/core/focusCatcher/focusDetector.js +58 -0
  55. package/core/focusCatcher/focusDetector.mjs +54 -0
  56. package/core/focusCatcher/index.js +142 -0
  57. package/core/focusCatcher/index.mjs +138 -0
  58. package/core/index.js +9 -0
  59. package/core/index.mjs +1 -0
  60. package/core.d.ts +6 -3
  61. package/core.js +173 -290
  62. package/core.mjs +173 -290
  63. package/dataMap/metaManager/metaSchema.js +41 -0
  64. package/dataMap/metaManager/metaSchema.mjs +41 -0
  65. package/dist/handsontable.css +24 -4
  66. package/dist/handsontable.full.css +24 -4
  67. package/dist/handsontable.full.js +8676 -5381
  68. package/dist/handsontable.full.min.css +3 -3
  69. package/dist/handsontable.full.min.js +25 -25
  70. package/dist/handsontable.js +10984 -7689
  71. package/dist/handsontable.min.css +3 -3
  72. package/dist/handsontable.min.js +19 -19
  73. package/editorManager.js +11 -75
  74. package/editorManager.mjs +11 -74
  75. package/editors/baseEditor/baseEditor.d.ts +0 -1
  76. package/editors/textEditor/textEditor.js +3 -11
  77. package/editors/textEditor/textEditor.mjs +4 -12
  78. package/helpers/mixed.js +1 -1
  79. package/helpers/mixed.mjs +1 -1
  80. package/helpers/number.d.ts +1 -0
  81. package/helpers/number.js +18 -0
  82. package/helpers/number.mjs +17 -0
  83. package/package.json +1 -1
  84. package/pluginHooks.d.ts +7 -1
  85. package/pluginHooks.js +106 -1
  86. package/pluginHooks.mjs +106 -1
  87. package/plugins/collapsibleColumns/collapsibleColumns.js +58 -4
  88. package/plugins/collapsibleColumns/collapsibleColumns.mjs +58 -4
  89. package/plugins/columnSorting/columnSorting.js +38 -0
  90. package/plugins/columnSorting/columnSorting.mjs +38 -2
  91. package/plugins/columnSorting/index.js +3 -1
  92. package/plugins/columnSorting/index.mjs +1 -1
  93. package/plugins/comments/commentEditor.js +1 -0
  94. package/plugins/comments/commentEditor.mjs +1 -0
  95. package/plugins/comments/comments.js +251 -189
  96. package/plugins/comments/comments.mjs +250 -190
  97. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  98. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  99. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  100. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  101. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  102. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  103. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  104. package/plugins/contextMenu/contextMenu.js +72 -30
  105. package/plugins/contextMenu/contextMenu.mjs +73 -31
  106. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  107. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  108. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  109. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  110. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  111. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  112. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  113. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  114. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  115. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  116. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  117. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  118. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  119. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  120. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  121. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  122. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  123. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  124. package/plugins/contextMenu/utils.js +28 -16
  125. package/plugins/contextMenu/utils.mjs +27 -15
  126. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  127. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  128. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  129. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  130. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  131. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  132. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  133. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  134. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  135. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  136. package/plugins/copyPaste/copyPaste.js +14 -10
  137. package/plugins/copyPaste/copyPaste.mjs +14 -10
  138. package/plugins/customBorders/customBorders.js +23 -20
  139. package/plugins/customBorders/customBorders.mjs +24 -21
  140. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  141. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  142. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  143. package/plugins/filters/filters.js +31 -14
  144. package/plugins/filters/filters.mjs +30 -13
  145. package/plugins/manualColumnResize/manualColumnResize.js +0 -6
  146. package/plugins/manualColumnResize/manualColumnResize.mjs +1 -7
  147. package/plugins/mergeCells/mergeCells.js +5 -17
  148. package/plugins/mergeCells/mergeCells.mjs +5 -17
  149. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  150. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  151. package/plugins/nestedHeaders/nestedHeaders.js +121 -8
  152. package/plugins/nestedHeaders/nestedHeaders.mjs +121 -8
  153. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  154. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  155. package/plugins/nestedRows/nestedRows.js +41 -0
  156. package/plugins/nestedRows/nestedRows.mjs +41 -0
  157. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  158. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  159. package/selection/highlight/highlight.js +256 -71
  160. package/selection/highlight/highlight.mjs +250 -71
  161. package/selection/highlight/types/activeHeader.js +10 -8
  162. package/selection/highlight/types/activeHeader.mjs +10 -8
  163. package/selection/highlight/types/area.js +6 -18
  164. package/selection/highlight/types/area.mjs +6 -18
  165. package/selection/highlight/types/areaLayered.js +31 -0
  166. package/selection/highlight/types/areaLayered.mjs +26 -0
  167. package/selection/highlight/types/column.js +27 -0
  168. package/selection/highlight/types/column.mjs +22 -0
  169. package/selection/highlight/types/customSelection.js +7 -9
  170. package/selection/highlight/types/customSelection.mjs +7 -9
  171. package/selection/highlight/types/fill.js +5 -7
  172. package/selection/highlight/types/fill.mjs +5 -7
  173. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  174. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  175. package/selection/highlight/types/header.js +9 -18
  176. package/selection/highlight/types/header.mjs +9 -18
  177. package/selection/highlight/types/row.js +27 -0
  178. package/selection/highlight/types/row.mjs +22 -0
  179. package/selection/highlight/visualSelection.js +31 -27
  180. package/selection/highlight/visualSelection.mjs +31 -27
  181. package/selection/index.js +4 -7
  182. package/selection/index.mjs +2 -3
  183. package/selection/mouseEventHandler.js +1 -1
  184. package/selection/mouseEventHandler.mjs +1 -1
  185. package/selection/range.js +8 -8
  186. package/selection/range.mjs +8 -8
  187. package/selection/selection.js +290 -154
  188. package/selection/selection.mjs +287 -153
  189. package/selection/transformation.js +232 -90
  190. package/selection/transformation.mjs +232 -90
  191. package/selection/utils.js +15 -21
  192. package/selection/utils.mjs +16 -21
  193. package/settings.d.ts +2 -0
  194. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  195. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  196. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  197. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  198. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  199. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  200. package/shortcutContexts/commands/editor/index.js +16 -0
  201. package/shortcutContexts/commands/editor/index.mjs +12 -0
  202. package/shortcutContexts/commands/editor/open.js +27 -0
  203. package/shortcutContexts/commands/editor/open.mjs +23 -0
  204. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  205. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  206. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  207. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  208. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  209. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  210. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  211. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  212. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  213. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  214. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  215. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  216. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  217. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  218. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  219. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  220. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  221. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  222. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  223. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  224. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  225. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  226. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  227. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  228. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  229. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  230. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  231. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  232. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  233. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  234. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  235. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  236. package/shortcutContexts/commands/index.js +35 -0
  237. package/shortcutContexts/commands/index.mjs +31 -0
  238. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  239. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  240. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  241. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  242. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  243. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  244. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  245. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  246. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  247. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  248. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  249. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  250. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  251. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  252. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  253. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  254. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  255. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  256. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  257. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  258. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  259. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  260. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  261. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  262. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  263. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  264. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  265. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  266. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  267. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  268. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  269. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  270. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  271. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  272. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  273. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  274. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  275. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  276. package/shortcutContexts/commands/selectAll.js +10 -0
  277. package/shortcutContexts/commands/selectAll.mjs +6 -0
  278. package/shortcutContexts/constants.js +13 -0
  279. package/shortcutContexts/constants.mjs +8 -0
  280. package/shortcutContexts/editor.js +25 -0
  281. package/shortcutContexts/editor.mjs +21 -0
  282. package/shortcutContexts/grid.js +163 -0
  283. package/shortcutContexts/grid.mjs +159 -0
  284. package/shortcutContexts/index.js +24 -0
  285. package/shortcutContexts/index.mjs +11 -0
  286. package/shortcuts/manager.js +2 -0
  287. package/shortcuts/manager.mjs +2 -0
  288. package/shortcuts/recorder.js +2 -2
  289. package/shortcuts/recorder.mjs +2 -2
  290. package/shortcuts/utils.js +19 -5
  291. package/shortcuts/utils.mjs +18 -4
  292. package/tableView.js +67 -13
  293. package/tableView.mjs +67 -13
  294. package/3rdparty/walkontable/src/selection.js +0 -295
  295. package/3rdparty/walkontable/src/selection.mjs +0 -290
  296. package/selection/highlight/constants.js +0 -15
  297. package/selection/highlight/constants.mjs +0 -6
  298. package/selection/highlight/types/index.js +0 -35
  299. package/selection/highlight/types/index.mjs +0 -31
@@ -1,156 +1,298 @@
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; } }
1
11
  import { mixin } from "../helpers/object.mjs";
2
12
  import localHooks from "./../mixins/localHooks.mjs";
3
13
  /**
4
14
  * The Transformation class implements algorithms for transforming coordinates based on current settings
5
- * passed to the Handsontable.
15
+ * passed to the Handsontable. The class performs the calculations based on the renderable indexes.
6
16
  *
7
17
  * Transformation is always applied relative to the current selection.
8
18
  *
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
+ *
9
25
  * @class Transformation
10
26
  * @util
11
27
  */
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();
12
36
  class Transformation {
13
37
  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);
14
73
  /**
15
74
  * Instance of the SelectionRange, holder for visual coordinates applied to the table.
16
75
  *
17
76
  * @type {SelectionRange}
18
77
  */
19
- this.range = range;
78
+ _classPrivateFieldInitSpec(this, _range, {
79
+ writable: true,
80
+ value: void 0
81
+ });
20
82
  /**
21
83
  * Additional options which define the state of the settings which can infer transformation and
22
84
  * give the possibility to translate indexes.
23
85
  *
24
86
  * @type {object}
25
87
  */
26
- this.options = options;
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);
27
107
  }
28
108
 
29
109
  /**
30
- * Selects cell relative to current cell (if possible).
110
+ * Selects cell relative to the current cell (if possible).
31
111
  *
32
112
  * @param {number} rowDelta Rows number to move, value can be passed as negative number.
33
113
  * @param {number} colDelta Columns number to move, value can be passed as negative number.
34
- * @param {boolean} [force=false] If `true` the new rows/columns will be created if necessary. Otherwise, row/column will
114
+ * @param {boolean} [createMissingRecords=false] If `true` the new rows/columns will be created if necessary. Otherwise, row/column will
35
115
  * be created according to `minSpareRows/minSpareCols` settings of Handsontable.
36
116
  * @returns {CellCoords} Visual coordinates after transformation.
37
117
  */
38
118
  transformStart(rowDelta, colDelta) {
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;
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);
47
127
  let rowTransformDir = 0;
48
128
  let colTransformDir = 0;
49
129
  this.runLocalHooks('beforeTransformStart', delta);
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();
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());
62
151
  } else if (autoWrapCol) {
63
- delta.row = 1 - totalRows;
64
- delta.col = renderableColumn + delta.col === totalCols - 1 ? 1 - totalCols : 1;
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;
65
161
  }
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;
69
162
  }
70
- if (renderableColumn + delta.col > totalCols - 1) {
71
- if (force && minSpareCols > 0) {
72
- this.runLocalHooks('insertColRequire', totalCols);
73
- totalCols = this.options.countCols();
163
+ if (rawCoords.col >= width) {
164
+ if (createMissingRecords && minSpareCols > 0) {
165
+ this.runLocalHooks('insertColRequire', _classPrivateFieldGet(this, _options).countRenderableColumns());
74
166
  } else if (autoWrapRow) {
75
- delta.row = renderableRow + delta.row === totalRows - 1 ? 1 - totalRows : 1;
76
- delta.col = 1 - totalCols;
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;
77
176
  }
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;
81
- }
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
177
  }
99
- visualCoords = this.options.renderableToVisualCoords(coords);
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);
100
186
  }
101
187
  this.runLocalHooks('afterTransformStart', visualCoords, rowTransformDir, colTransformDir);
102
188
  return visualCoords;
103
189
  }
104
190
 
105
191
  /**
106
- * Sets selection end cell relative to current selection end cell (if possible).
192
+ * Sets selection end cell relative to the current selection end cell (if possible).
107
193
  *
108
194
  * @param {number} rowDelta Rows number to move, value can be passed as negative number.
109
195
  * @param {number} colDelta Columns number to move, value can be passed as negative number.
110
196
  * @returns {CellCoords} Visual coordinates after transformation.
111
197
  */
112
198
  transformEnd(rowDelta, colDelta) {
113
- const delta = this.options.createCellCoords(rowDelta, colDelta);
114
- const cellRange = this.range.current();
115
- let visualCoords = cellRange.to;
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();
116
207
  let rowTransformDir = 0;
117
208
  let colTransformDir = 0;
118
209
  this.runLocalHooks('beforeTransformEnd', delta);
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();
210
+ if (highlightRenderableCoords.row !== null && highlightRenderableCoords.col !== null) {
128
211
  const {
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;
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);
220
+ 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;
148
234
  }
149
- visualCoords = this.options.renderableToVisualCoords(coords);
150
235
  }
151
236
  this.runLocalHooks('afterTransformEnd', visualCoords, rowTransformDir, colTransformDir);
152
237
  return visualCoords;
153
238
  }
154
239
  }
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
+ }
155
297
  mixin(Transformation, localHooks);
156
298
  export default Transformation;
@@ -2,7 +2,6 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.detectSelectionType = detectSelectionType;
5
- exports.isValidCoord = isValidCoord;
6
5
  exports.normalizeSelectionFactory = normalizeSelectionFactory;
7
6
  exports.transformSelectionToColumnDistance = transformSelectionToColumnDistance;
8
7
  exports.transformSelectionToRowDistance = transformSelectionToRowDistance;
@@ -111,7 +110,9 @@ function normalizeSelectionFactory(type) {
111
110
  rowEnd = Math.max(origRowStart, origRowEnd);
112
111
  columnEnd = Math.max(origColumnStart, origColumnEnd);
113
112
  }
114
- return [rowStart, columnStart, rowEnd, columnEnd];
113
+ const from = new _src.CellCoords(rowStart, columnStart);
114
+ const to = new _src.CellCoords(rowEnd, columnEnd);
115
+ return new _src.CellRange(from, from, to);
115
116
  };
116
117
  }
117
118
 
@@ -137,9 +138,12 @@ function transformSelectionToColumnDistance(selectionRanges) {
137
138
 
138
139
  // Iterate through all ranges and collect all column indexes which are not saved yet.
139
140
  (0, _array.arrayEach)(selectionRanges, selection => {
140
- const [, columnStart,, columnEnd] = selectionSchemaNormalizer(selection);
141
- const columnNonHeaderStart = Math.max(columnStart, 0);
142
- const amount = columnEnd - columnNonHeaderStart + 1;
141
+ const {
142
+ from,
143
+ to
144
+ } = selectionSchemaNormalizer(selection);
145
+ const columnNonHeaderStart = Math.max(from.col, 0);
146
+ const amount = to.col - columnNonHeaderStart + 1;
143
147
  (0, _array.arrayEach)(Array.from(new Array(amount), (_, i) => columnNonHeaderStart + i), index => {
144
148
  if (!unorderedIndexes.has(index)) {
145
149
  unorderedIndexes.add(index);
@@ -182,9 +186,12 @@ function transformSelectionToRowDistance(selectionRanges) {
182
186
 
183
187
  // Iterate through all ranges and collect all column indexes which are not saved yet.
184
188
  (0, _array.arrayEach)(selectionRanges, selection => {
185
- const [rowStart,, rowEnd] = selectionSchemaNormalizer(selection);
186
- const rowNonHeaderStart = Math.max(rowStart, 0);
187
- const amount = rowEnd - rowNonHeaderStart + 1;
189
+ const {
190
+ from,
191
+ to
192
+ } = selectionSchemaNormalizer(selection);
193
+ const rowNonHeaderStart = Math.max(from.row, 0);
194
+ const amount = to.row - rowNonHeaderStart + 1;
188
195
  (0, _array.arrayEach)(Array.from(new Array(amount), (_, i) => rowNonHeaderStart + i), index => {
189
196
  if (!unorderedIndexes.has(index)) {
190
197
  unorderedIndexes.add(index);
@@ -203,17 +210,4 @@ function transformSelectionToRowDistance(selectionRanges) {
203
210
  return acc;
204
211
  }, []);
205
212
  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;
219
213
  }
@@ -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 } from "./../3rdparty/walkontable/src/index.mjs";
3
+ import { CellRange, CellCoords } 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,7 +98,9 @@ export function normalizeSelectionFactory(type) {
98
98
  rowEnd = Math.max(origRowStart, origRowEnd);
99
99
  columnEnd = Math.max(origColumnStart, origColumnEnd);
100
100
  }
101
- return [rowStart, columnStart, rowEnd, columnEnd];
101
+ const from = new CellCoords(rowStart, columnStart);
102
+ const to = new CellCoords(rowEnd, columnEnd);
103
+ return new CellRange(from, from, to);
102
104
  };
103
105
  }
104
106
 
@@ -124,9 +126,12 @@ export function transformSelectionToColumnDistance(selectionRanges) {
124
126
 
125
127
  // Iterate through all ranges and collect all column indexes which are not saved yet.
126
128
  arrayEach(selectionRanges, selection => {
127
- const [, columnStart,, columnEnd] = selectionSchemaNormalizer(selection);
128
- const columnNonHeaderStart = Math.max(columnStart, 0);
129
- const amount = columnEnd - columnNonHeaderStart + 1;
129
+ const {
130
+ from,
131
+ to
132
+ } = selectionSchemaNormalizer(selection);
133
+ const columnNonHeaderStart = Math.max(from.col, 0);
134
+ const amount = to.col - columnNonHeaderStart + 1;
130
135
  arrayEach(Array.from(new Array(amount), (_, i) => columnNonHeaderStart + i), index => {
131
136
  if (!unorderedIndexes.has(index)) {
132
137
  unorderedIndexes.add(index);
@@ -169,9 +174,12 @@ export function transformSelectionToRowDistance(selectionRanges) {
169
174
 
170
175
  // Iterate through all ranges and collect all column indexes which are not saved yet.
171
176
  arrayEach(selectionRanges, selection => {
172
- const [rowStart,, rowEnd] = selectionSchemaNormalizer(selection);
173
- const rowNonHeaderStart = Math.max(rowStart, 0);
174
- const amount = rowEnd - rowNonHeaderStart + 1;
177
+ const {
178
+ from,
179
+ to
180
+ } = selectionSchemaNormalizer(selection);
181
+ const rowNonHeaderStart = Math.max(from.row, 0);
182
+ const amount = to.row - rowNonHeaderStart + 1;
175
183
  arrayEach(Array.from(new Array(amount), (_, i) => rowNonHeaderStart + i), index => {
176
184
  if (!unorderedIndexes.has(index)) {
177
185
  unorderedIndexes.add(index);
@@ -190,17 +198,4 @@ export function transformSelectionToRowDistance(selectionRanges) {
190
198
  return acc;
191
199
  }, []);
192
200
  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;
206
201
  }
package/settings.d.ts CHANGED
@@ -124,6 +124,7 @@ export interface GridSettings extends Events {
124
124
  dateFormat?: string;
125
125
  datePickerConfig?: PikadayOptions;
126
126
  defaultDate?: string;
127
+ disableTabNavigation?: boolean;
127
128
  disableVisualSelection?: boolean | 'current' | 'area' | 'header' | Array<'current' | 'area' | 'header'>;
128
129
  dragToScroll?: boolean;
129
130
  dropdownMenu?: DropdownMenuSettings;
@@ -164,6 +165,7 @@ export interface GridSettings extends Events {
164
165
  minSpareCols?: number;
165
166
  minSpareRows?: number;
166
167
  multiColumnSorting?: MultiColumnSortingSettings;
168
+ navigableHeaders?: boolean;
167
169
  nestedHeaders?: NestedHeadersSettings;
168
170
  nestedRows?: boolean;
169
171
  noWordWrapClassName?: string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ const command = {
5
+ name: 'editorCloseAndSave',
6
+ callback(hot, event, keys) {
7
+ const editorManager = hot._getEditorManager();
8
+ editorManager.closeEditorAndSaveChanges(hot.getShortcutManager().isCtrlPressed());
9
+ editorManager.moveSelectionAfterEnter(keys.includes('shift'));
10
+ }
11
+ };
12
+ exports.command = command;
@@ -0,0 +1,8 @@
1
+ export const command = {
2
+ name: 'editorCloseAndSave',
3
+ callback(hot, event, keys) {
4
+ const editorManager = hot._getEditorManager();
5
+ editorManager.closeEditorAndSaveChanges(hot.getShortcutManager().isCtrlPressed());
6
+ editorManager.moveSelectionAfterEnter(keys.includes('shift'));
7
+ }
8
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ const command = {
5
+ name: 'editorCloseWithoutSaving',
6
+ callback(hot) {
7
+ const editorManager = hot._getEditorManager();
8
+ editorManager.closeEditorAndRestoreOriginalValue(hot.getShortcutManager().isCtrlPressed());
9
+ editorManager.activeEditor.focus();
10
+ }
11
+ };
12
+ exports.command = command;
@@ -0,0 +1,8 @@
1
+ export const command = {
2
+ name: 'editorCloseWithoutSaving',
3
+ callback(hot) {
4
+ const editorManager = hot._getEditorManager();
5
+ editorManager.closeEditorAndRestoreOriginalValue(hot.getShortcutManager().isCtrlPressed());
6
+ editorManager.activeEditor.focus();
7
+ }
8
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ const command = {
5
+ name: 'editorFastOpen',
6
+ callback(hot, event) {
7
+ const {
8
+ highlight
9
+ } = hot.getSelectedRangeLast();
10
+ if (highlight.isHeader()) {
11
+ return;
12
+ }
13
+ hot._getEditorManager().openEditor(null, event, true);
14
+ }
15
+ };
16
+ exports.command = command;
@@ -0,0 +1,12 @@
1
+ export const command = {
2
+ name: 'editorFastOpen',
3
+ callback(hot, event) {
4
+ const {
5
+ highlight
6
+ } = hot.getSelectedRangeLast();
7
+ if (highlight.isHeader()) {
8
+ return;
9
+ }
10
+ hot._getEditorManager().openEditor(null, event, true);
11
+ }
12
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.getAllCommands = getAllCommands;
5
+ var _closeAndSave = require("./closeAndSave");
6
+ var _closeWithoutSaving = require("./closeWithoutSaving");
7
+ var _fastOpen = require("./fastOpen");
8
+ var _open = require("./open");
9
+ /**
10
+ * Returns complete list of the shortcut commands for the cells editing feature.
11
+ *
12
+ * @returns {Function[]}
13
+ */
14
+ function getAllCommands() {
15
+ return [_closeAndSave.command, _closeWithoutSaving.command, _fastOpen.command, _open.command];
16
+ }
@@ -0,0 +1,12 @@
1
+ import { command as closeAndSave } from "./closeAndSave.mjs";
2
+ import { command as closeWithoutSaving } from "./closeWithoutSaving.mjs";
3
+ import { command as fastOpen } from "./fastOpen.mjs";
4
+ import { command as open } from "./open.mjs";
5
+ /**
6
+ * Returns complete list of the shortcut commands for the cells editing feature.
7
+ *
8
+ * @returns {Function[]}
9
+ */
10
+ export function getAllCommands() {
11
+ return [closeAndSave, closeWithoutSaving, fastOpen, open];
12
+ }