handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707

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 (456) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -28
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +69 -36
  6. package/3rdparty/walkontable/src/cell/range.mjs +68 -35
  7. package/3rdparty/walkontable/src/event.js +3 -5
  8. package/3rdparty/walkontable/src/event.mjs +3 -5
  9. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  14. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  15. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  16. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  17. package/3rdparty/walkontable/src/overlays.js +55 -64
  18. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  19. package/3rdparty/walkontable/src/renderer/table.js +0 -2
  20. package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
  21. package/3rdparty/walkontable/src/scroll.js +20 -23
  22. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  23. package/3rdparty/walkontable/src/selection/border/border.js +1 -0
  24. package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
  25. package/3rdparty/walkontable/src/selection/manager.js +40 -45
  26. package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
  27. package/3rdparty/walkontable/src/selection/scanner.js +5 -4
  28. package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
  29. package/3rdparty/walkontable/src/settings.js +13 -15
  30. package/3rdparty/walkontable/src/settings.mjs +13 -15
  31. package/3rdparty/walkontable/src/table.js +23 -26
  32. package/3rdparty/walkontable/src/table.mjs +23 -26
  33. package/CHANGELOG.md +56 -0
  34. package/base.js +2 -4
  35. package/base.mjs +2 -2
  36. package/common.d.ts +1 -1
  37. package/core.d.ts +7 -9
  38. package/core.js +241 -439
  39. package/core.mjs +245 -443
  40. package/dataMap/dataMap.js +1 -0
  41. package/dataMap/dataMap.mjs +1 -0
  42. package/dataMap/dataSource.js +5 -5
  43. package/dataMap/dataSource.mjs +5 -5
  44. package/dataMap/metaManager/lazyFactoryMap.js +1 -0
  45. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
  46. package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
  47. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
  48. package/dataMap/metaManager/metaSchema.js +33 -24
  49. package/dataMap/metaManager/metaSchema.mjs +33 -24
  50. package/dist/handsontable.css +25 -3
  51. package/dist/handsontable.full.css +25 -3
  52. package/dist/handsontable.full.js +14539 -11358
  53. package/dist/handsontable.full.min.css +5 -5
  54. package/dist/handsontable.full.min.js +137 -125
  55. package/dist/handsontable.js +31414 -28455
  56. package/dist/handsontable.min.css +5 -5
  57. package/dist/handsontable.min.js +11 -3
  58. package/dist/languages/all.js +133 -0
  59. package/dist/languages/ar-AR.js +7 -0
  60. package/dist/languages/cs-CZ.js +7 -0
  61. package/dist/languages/de-CH.js +7 -0
  62. package/dist/languages/de-DE.js +7 -0
  63. package/dist/languages/en-US.js +7 -0
  64. package/dist/languages/es-MX.js +7 -0
  65. package/dist/languages/fr-FR.js +7 -0
  66. package/dist/languages/it-IT.js +7 -0
  67. package/dist/languages/ja-JP.js +7 -0
  68. package/dist/languages/ko-KR.js +7 -0
  69. package/dist/languages/lv-LV.js +7 -0
  70. package/dist/languages/nb-NO.js +7 -0
  71. package/dist/languages/nl-NL.js +7 -0
  72. package/dist/languages/pl-PL.js +7 -0
  73. package/dist/languages/pt-BR.js +7 -0
  74. package/dist/languages/ru-RU.js +7 -0
  75. package/dist/languages/sr-SP.js +7 -0
  76. package/dist/languages/zh-CN.js +7 -0
  77. package/dist/languages/zh-TW.js +7 -0
  78. package/editorManager.js +19 -89
  79. package/editorManager.mjs +24 -93
  80. package/editors/baseEditor/baseEditor.js +1 -0
  81. package/editors/baseEditor/baseEditor.mjs +1 -0
  82. package/editors/textEditor/textEditor.js +14 -20
  83. package/editors/textEditor/textEditor.mjs +16 -22
  84. package/helpers/dom/element.js +0 -11
  85. package/helpers/dom/element.mjs +0 -10
  86. package/helpers/mixed.js +2 -2
  87. package/helpers/mixed.mjs +2 -2
  88. package/helpers/number.d.ts +1 -0
  89. package/helpers/number.js +18 -0
  90. package/helpers/number.mjs +17 -0
  91. package/helpers/object.js +2 -0
  92. package/helpers/object.mjs +2 -0
  93. package/i18n/languages/ar-AR.js +7 -1
  94. package/i18n/languages/cs-CZ.js +7 -1
  95. package/i18n/languages/de-CH.js +7 -1
  96. package/i18n/languages/de-DE.js +7 -1
  97. package/i18n/languages/en-US.js +7 -1
  98. package/i18n/languages/es-MX.js +7 -1
  99. package/i18n/languages/fr-FR.js +7 -1
  100. package/i18n/languages/it-IT.js +7 -1
  101. package/i18n/languages/ja-JP.js +7 -1
  102. package/i18n/languages/ko-KR.js +7 -1
  103. package/i18n/languages/lv-LV.js +7 -1
  104. package/i18n/languages/nb-NO.js +7 -1
  105. package/i18n/languages/nl-NL.js +7 -1
  106. package/i18n/languages/pl-PL.js +7 -1
  107. package/i18n/languages/pt-BR.js +7 -1
  108. package/i18n/languages/ru-RU.js +7 -1
  109. package/i18n/languages/sr-SP.js +7 -1
  110. package/i18n/languages/zh-CN.js +7 -1
  111. package/i18n/languages/zh-TW.js +7 -1
  112. package/languages/all.js +133 -0
  113. package/languages/ar-AR.js +7 -0
  114. package/languages/cs-CZ.js +7 -0
  115. package/languages/de-CH.js +7 -0
  116. package/languages/de-DE.js +7 -0
  117. package/languages/en-US.js +7 -0
  118. package/languages/es-MX.js +7 -0
  119. package/languages/fr-FR.js +7 -0
  120. package/languages/index.js +133 -0
  121. package/languages/it-IT.js +7 -0
  122. package/languages/ja-JP.js +7 -0
  123. package/languages/ko-KR.js +7 -0
  124. package/languages/lv-LV.js +7 -0
  125. package/languages/nb-NO.js +7 -0
  126. package/languages/nl-NL.js +7 -0
  127. package/languages/pl-PL.js +7 -0
  128. package/languages/pt-BR.js +7 -0
  129. package/languages/ru-RU.js +7 -0
  130. package/languages/sr-SP.js +7 -0
  131. package/languages/zh-CN.js +7 -0
  132. package/languages/zh-TW.js +7 -0
  133. package/package.json +3 -2
  134. package/pluginHooks.d.ts +8 -2
  135. package/pluginHooks.js +116 -18
  136. package/pluginHooks.mjs +115 -15
  137. package/plugins/autoColumnSize/autoColumnSize.js +1 -0
  138. package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
  139. package/plugins/autoRowSize/autoRowSize.js +3 -2
  140. package/plugins/autoRowSize/autoRowSize.mjs +3 -2
  141. package/plugins/autofill/autofill.js +2 -2
  142. package/plugins/autofill/autofill.mjs +3 -3
  143. package/plugins/autofill/utils.js +1 -39
  144. package/plugins/autofill/utils.mjs +0 -37
  145. package/plugins/base/base.js +1 -0
  146. package/plugins/base/base.mjs +1 -0
  147. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
  148. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
  151. package/plugins/columnSorting/columnSorting.js +51 -8
  152. package/plugins/columnSorting/columnSorting.mjs +50 -9
  153. package/plugins/columnSorting/columnStatesManager.js +1 -0
  154. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  155. package/plugins/columnSorting/index.js +4 -2
  156. package/plugins/columnSorting/index.mjs +1 -1
  157. package/plugins/columnSorting/rootComparator.js +1 -0
  158. package/plugins/columnSorting/rootComparator.mjs +1 -0
  159. package/plugins/comments/commentEditor.js +1 -0
  160. package/plugins/comments/commentEditor.mjs +1 -0
  161. package/plugins/comments/comments.js +289 -224
  162. package/plugins/comments/comments.mjs +297 -234
  163. package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
  164. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  165. package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
  166. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
  167. package/plugins/comments/contextMenuItem/removeComment.js +48 -0
  168. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  169. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  170. package/plugins/contextMenu/contextMenu.js +81 -29
  171. package/plugins/contextMenu/contextMenu.mjs +82 -30
  172. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  173. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  174. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  175. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  176. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  177. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  178. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  179. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  180. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  181. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  182. package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
  183. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
  184. package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
  185. package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
  186. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  187. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  188. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  189. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  190. package/plugins/contextMenu/utils.js +25 -16
  191. package/plugins/contextMenu/utils.mjs +24 -15
  192. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  193. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  194. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  195. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  196. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  197. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  198. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  199. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  200. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  201. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  202. package/plugins/copyPaste/copyPaste.js +100 -14
  203. package/plugins/copyPaste/copyPaste.mjs +100 -14
  204. package/plugins/copyPaste/copyableRanges.js +25 -31
  205. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  206. package/plugins/copyPaste/focusableElement.js +219 -0
  207. package/plugins/copyPaste/focusableElement.mjs +213 -0
  208. package/plugins/customBorders/customBorders.d.ts +2 -0
  209. package/plugins/customBorders/customBorders.js +19 -50
  210. package/plugins/customBorders/customBorders.mjs +19 -50
  211. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  212. package/plugins/dropdownMenu/dropdownMenu.js +94 -30
  213. package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
  214. package/plugins/exportFile/dataProvider.js +1 -0
  215. package/plugins/exportFile/dataProvider.mjs +1 -0
  216. package/plugins/filters/component/value.js +1 -0
  217. package/plugins/filters/component/value.mjs +1 -0
  218. package/plugins/filters/condition/beginsWith.js +1 -0
  219. package/plugins/filters/condition/beginsWith.mjs +1 -0
  220. package/plugins/filters/condition/between.js +1 -0
  221. package/plugins/filters/condition/between.mjs +1 -0
  222. package/plugins/filters/condition/byValue.js +1 -0
  223. package/plugins/filters/condition/byValue.mjs +1 -0
  224. package/plugins/filters/condition/contains.js +1 -0
  225. package/plugins/filters/condition/contains.mjs +1 -0
  226. package/plugins/filters/condition/date/after.js +1 -0
  227. package/plugins/filters/condition/date/after.mjs +1 -0
  228. package/plugins/filters/condition/date/before.js +1 -0
  229. package/plugins/filters/condition/date/before.mjs +1 -0
  230. package/plugins/filters/condition/endsWith.js +1 -0
  231. package/plugins/filters/condition/endsWith.mjs +1 -0
  232. package/plugins/filters/condition/equal.js +1 -0
  233. package/plugins/filters/condition/equal.mjs +1 -0
  234. package/plugins/filters/condition/greaterThan.js +1 -0
  235. package/plugins/filters/condition/greaterThan.mjs +1 -0
  236. package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
  237. package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
  238. package/plugins/filters/condition/lessThan.js +1 -0
  239. package/plugins/filters/condition/lessThan.mjs +1 -0
  240. package/plugins/filters/condition/lessThanOrEqual.js +1 -0
  241. package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
  242. package/plugins/filters/conditionCollection.js +1 -0
  243. package/plugins/filters/conditionCollection.mjs +1 -0
  244. package/plugins/filters/filters.js +68 -42
  245. package/plugins/filters/filters.mjs +67 -41
  246. package/plugins/filters/ui/multipleSelect.js +1 -0
  247. package/plugins/filters/ui/multipleSelect.mjs +1 -0
  248. package/plugins/formulas/formulas.js +191 -168
  249. package/plugins/formulas/formulas.mjs +191 -168
  250. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  251. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  252. package/plugins/formulas/indexSyncer/index.js +225 -0
  253. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  254. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
  255. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
  256. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
  257. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
  258. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
  259. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
  260. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
  261. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
  262. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
  263. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
  264. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
  265. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
  266. package/plugins/manualColumnResize/manualColumnResize.js +36 -5
  267. package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
  268. package/plugins/manualRowMove/manualRowMove.js +31 -12
  269. package/plugins/manualRowMove/manualRowMove.mjs +32 -13
  270. package/plugins/manualRowResize/manualRowResize.js +40 -9
  271. package/plugins/manualRowResize/manualRowResize.mjs +40 -9
  272. package/plugins/mergeCells/calculations/autofill.js +1 -0
  273. package/plugins/mergeCells/calculations/autofill.mjs +1 -0
  274. package/plugins/mergeCells/cellsCollection.js +1 -0
  275. package/plugins/mergeCells/cellsCollection.mjs +1 -0
  276. package/plugins/mergeCells/mergeCells.js +6 -2
  277. package/plugins/mergeCells/mergeCells.mjs +6 -2
  278. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  279. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  280. package/plugins/multiColumnSorting/rootComparator.js +1 -0
  281. package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
  282. package/plugins/nestedHeaders/nestedHeaders.js +129 -6
  283. package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
  284. package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
  285. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
  286. package/plugins/nestedHeaders/stateManager/index.js +40 -3
  287. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  288. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  289. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
  290. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
  291. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  292. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  293. package/plugins/nestedRows/data/dataManager.js +1 -0
  294. package/plugins/nestedRows/data/dataManager.mjs +1 -0
  295. package/plugins/nestedRows/nestedRows.js +53 -7
  296. package/plugins/nestedRows/nestedRows.mjs +53 -7
  297. package/plugins/nestedRows/ui/collapsing.js +1 -0
  298. package/plugins/nestedRows/ui/collapsing.mjs +1 -0
  299. package/plugins/nestedRows/utils/rowMoveController.js +1 -0
  300. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
  301. package/plugins/persistentState/storage.js +1 -0
  302. package/plugins/persistentState/storage.mjs +1 -0
  303. package/plugins/registry.js +4 -1
  304. package/plugins/registry.mjs +1 -0
  305. package/plugins/undoRedo/undoRedo.js +1 -1
  306. package/plugins/undoRedo/undoRedo.mjs +1 -1
  307. package/renderers/baseRenderer/baseRenderer.js +0 -3
  308. package/renderers/baseRenderer/baseRenderer.mjs +0 -3
  309. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  310. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  311. package/selection/highlight/highlight.js +120 -98
  312. package/selection/highlight/highlight.mjs +118 -96
  313. package/selection/highlight/visualSelection.js +30 -17
  314. package/selection/highlight/visualSelection.mjs +30 -17
  315. package/selection/mouseEventHandler.js +1 -1
  316. package/selection/mouseEventHandler.mjs +1 -1
  317. package/selection/range.js +8 -8
  318. package/selection/range.mjs +8 -8
  319. package/selection/selection.js +246 -153
  320. package/selection/selection.mjs +247 -154
  321. package/selection/transformation.js +233 -96
  322. package/selection/transformation.mjs +230 -93
  323. package/selection/utils.js +12 -35
  324. package/selection/utils.mjs +13 -35
  325. package/settings.d.ts +2 -1
  326. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  327. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  328. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  329. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  330. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  331. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  332. package/shortcutContexts/commands/editor/index.js +16 -0
  333. package/shortcutContexts/commands/editor/index.mjs +12 -0
  334. package/shortcutContexts/commands/editor/open.js +29 -0
  335. package/shortcutContexts/commands/editor/open.mjs +24 -0
  336. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  337. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  338. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  339. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  342. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  343. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  344. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  345. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  346. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  348. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  349. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  350. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  351. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  352. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  353. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  354. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  355. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  364. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  365. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  366. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  367. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  368. package/shortcutContexts/commands/index.js +53 -0
  369. package/shortcutContexts/commands/index.mjs +49 -0
  370. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  371. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  372. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  373. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  374. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  375. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  376. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  377. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  378. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  380. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  381. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  382. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  383. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  384. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  385. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  386. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  387. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  388. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  389. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  390. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  391. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  401. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  402. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  403. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  404. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  405. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  406. package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
  407. package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
  408. package/shortcutContexts/commands/selectAll.js +11 -0
  409. package/shortcutContexts/commands/selectAll.mjs +6 -0
  410. package/shortcutContexts/constants.js +19 -0
  411. package/shortcutContexts/constants.mjs +12 -0
  412. package/shortcutContexts/editor.js +29 -0
  413. package/shortcutContexts/editor.mjs +25 -0
  414. package/shortcutContexts/grid.js +252 -0
  415. package/shortcutContexts/grid.mjs +248 -0
  416. package/shortcutContexts/index.js +29 -0
  417. package/shortcutContexts/index.mjs +15 -0
  418. package/shortcuts/context.js +1 -0
  419. package/shortcuts/context.mjs +1 -0
  420. package/shortcuts/manager.js +2 -0
  421. package/shortcuts/manager.mjs +2 -0
  422. package/shortcuts/recorder.js +2 -2
  423. package/shortcuts/recorder.mjs +2 -2
  424. package/shortcuts/utils.js +21 -5
  425. package/shortcuts/utils.mjs +20 -4
  426. package/tableView.js +112 -82
  427. package/tableView.mjs +112 -82
  428. package/translations/changesObservable/observable.js +41 -46
  429. package/translations/changesObservable/observable.mjs +36 -41
  430. package/translations/changesObservable/observer.js +1 -1
  431. package/translations/indexMapper.d.ts +0 -2
  432. package/translations/indexMapper.js +38 -64
  433. package/translations/indexMapper.mjs +39 -64
  434. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  435. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  436. package/translations/maps/utils/indexesSequence.js +1 -0
  437. package/translations/maps/utils/indexesSequence.mjs +1 -0
  438. package/translations/maps/utils/physicallyIndexed.js +1 -0
  439. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  440. package/utils/dataStructures/priorityMap.js +1 -0
  441. package/utils/dataStructures/priorityMap.mjs +1 -0
  442. package/utils/dataStructures/tree.js +16 -18
  443. package/utils/dataStructures/tree.mjs +16 -18
  444. package/utils/dataStructures/uniqueMap.js +1 -0
  445. package/utils/dataStructures/uniqueMap.mjs +1 -0
  446. package/utils/dataStructures/uniqueSet.js +1 -0
  447. package/utils/dataStructures/uniqueSet.mjs +1 -0
  448. package/utils/ghostTable.js +1 -0
  449. package/utils/ghostTable.mjs +1 -0
  450. package/utils/parseTable.js +5 -1
  451. package/utils/parseTable.mjs +5 -1
  452. package/utils/staticRegister.js +1 -0
  453. package/utils/staticRegister.mjs +1 -0
  454. package/focusManager.d.ts +0 -12
  455. package/focusManager.js +0 -275
  456. package/focusManager.mjs +0 -270
@@ -4,7 +4,12 @@ export default class CellCoords {
4
4
  row: number;
5
5
  col: number;
6
6
 
7
- isValid(wot: any): boolean;
7
+ isValid(tableParams: {
8
+ countRows?: number;
9
+ countCols?: number;
10
+ countRowHeaders?: number;
11
+ countColHeaders?: number;
12
+ }): boolean;
8
13
  isEqual(cellCoords: CellCoords): boolean;
9
14
  isSouthEastOf(testedCoords: any): boolean;
10
15
  isNorthWestOf(testedCoords: any): boolean;
@@ -4,16 +4,24 @@ require("core-js/modules/es.symbol.to-primitive.js");
4
4
  require("core-js/modules/es.date.to-primitive.js");
5
5
  require("core-js/modules/es.symbol.js");
6
6
  require("core-js/modules/es.symbol.description.js");
7
- require("core-js/modules/es.number.constructor.js");
7
+ require("core-js/modules/es.object.keys.js");
8
+ require("core-js/modules/es.array.filter.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/web.dom-collections.for-each.js");
11
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
8
12
  require("core-js/modules/es.symbol.iterator.js");
9
13
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
14
  exports.__esModule = true;
11
15
  exports.default = void 0;
16
+ require("core-js/modules/es.number.is-integer.js");
17
+ require("core-js/modules/es.number.constructor.js");
12
18
  require("core-js/modules/es.array.iterator.js");
13
19
  require("core-js/modules/es.object.to-string.js");
14
20
  require("core-js/modules/es.string.iterator.js");
15
21
  require("core-js/modules/es.weak-map.js");
16
22
  require("core-js/modules/web.dom-collections.iterator.js");
23
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
25
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18
26
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
19
27
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -47,27 +55,24 @@ var _isRtl = /*#__PURE__*/new WeakMap();
47
55
  * ```
48
56
  */
49
57
  var CellCoords = /*#__PURE__*/function () {
50
- /**
51
- * A visual row index.
52
- *
53
- * @type {number}
54
- */
55
-
56
- /**
57
- * A visual column index.
58
- *
59
- * @type {number}
60
- */
61
-
62
- /**
63
- * @type {boolean}
64
- */
65
-
66
58
  function CellCoords(row, column) {
67
59
  var isRtl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
68
60
  _classCallCheck(this, CellCoords);
61
+ /**
62
+ * A visual row index.
63
+ *
64
+ * @type {number}
65
+ */
69
66
  _defineProperty(this, "row", null);
67
+ /**
68
+ * A visual column index.
69
+ *
70
+ * @type {number}
71
+ */
70
72
  _defineProperty(this, "col", null);
73
+ /**
74
+ * @type {boolean}
75
+ */
71
76
  _classPrivateFieldInitSpec(this, _isRtl, {
72
77
  writable: true,
73
78
  value: false
@@ -81,28 +86,45 @@ var CellCoords = /*#__PURE__*/function () {
81
86
 
82
87
  /**
83
88
  * Checks if the coordinates in your `CellCoords` instance are valid
84
- * in the context of a given Walkontable instance.
89
+ * in the context of given table parameters.
85
90
  *
86
91
  * The `row` index:
87
- * - Can't be negative.
88
- * - Can't be higher than the total number of rows in the Walkontable instance.
92
+ * - Must be an integer.
93
+ * - Must be higher than the number of column headers in the table.
94
+ * - Must be lower than the total number of rows in the table.
89
95
  *
90
96
  * The `col` index:
91
- * - Can't be negative.
92
- * - Can't be higher than the total number of columns in the Walkontable instance.
97
+ * - Must be an integer.
98
+ * - Must be higher than the number of row headers in the table.
99
+ * - Must be lower than the total number of columns in the table.
93
100
  *
94
- * @param {Walkontable} wot A Walkontable instance.
101
+ * @param {object} [tableParams] An object with a defined table size.
102
+ * @param {number} [tableParams.countRows=0] The total number of rows.
103
+ * @param {number} [tableParams.countCols=0] The total number of columns.
104
+ * @param {number} [tableParams.countRowHeaders=0] A number of row headers.
105
+ * @param {number} [tableParams.countColHeaders=0] A number of column headers.
95
106
  * @returns {boolean} `true`: The coordinates are valid.
96
107
  */
97
108
  _createClass(CellCoords, [{
98
109
  key: "isValid",
99
- value: function isValid(wot) {
100
- // check if the row and column indexes are valid (0 or higher)
101
- if (this.row < 0 || this.col < 0) {
110
+ value: function isValid(tableParams) {
111
+ var _countRows$countCols$ = _objectSpread({
112
+ countRows: 0,
113
+ countCols: 0,
114
+ countRowHeaders: 0,
115
+ countColHeaders: 0
116
+ }, tableParams),
117
+ countRows = _countRows$countCols$.countRows,
118
+ countCols = _countRows$countCols$.countCols,
119
+ countRowHeaders = _countRows$countCols$.countRowHeaders,
120
+ countColHeaders = _countRows$countCols$.countColHeaders;
121
+ if (!Number.isInteger(this.row) || !Number.isInteger(this.col)) {
122
+ return false;
123
+ }
124
+ if (this.row < -countColHeaders || this.col < -countRowHeaders) {
102
125
  return false;
103
126
  }
104
- // check if the selection fits in the total of rows and columns
105
- if (this.row >= wot.getSetting('totalRows') || this.col >= wot.getSetting('totalColumns')) {
127
+ if (this.row >= countRows || this.col >= countCols) {
106
128
  return false;
107
129
  }
108
130
  return true;
@@ -1,4 +1,6 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ import "core-js/modules/es.number.is-integer.js";
3
+ import "core-js/modules/es.number.constructor.js";
2
4
  import "core-js/modules/es.array.iterator.js";
3
5
  import "core-js/modules/es.object.to-string.js";
4
6
  import "core-js/modules/es.string.iterator.js";
@@ -8,8 +10,14 @@ import "core-js/modules/es.symbol.to-primitive.js";
8
10
  import "core-js/modules/es.date.to-primitive.js";
9
11
  import "core-js/modules/es.symbol.js";
10
12
  import "core-js/modules/es.symbol.description.js";
11
- import "core-js/modules/es.number.constructor.js";
13
+ import "core-js/modules/es.object.keys.js";
14
+ import "core-js/modules/es.array.filter.js";
15
+ import "core-js/modules/es.object.get-own-property-descriptor.js";
16
+ import "core-js/modules/web.dom-collections.for-each.js";
17
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
12
18
  import "core-js/modules/es.symbol.iterator.js";
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
21
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
22
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
15
23
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -43,27 +51,24 @@ var _isRtl = /*#__PURE__*/new WeakMap();
43
51
  * ```
44
52
  */
45
53
  var CellCoords = /*#__PURE__*/function () {
46
- /**
47
- * A visual row index.
48
- *
49
- * @type {number}
50
- */
51
-
52
- /**
53
- * A visual column index.
54
- *
55
- * @type {number}
56
- */
57
-
58
- /**
59
- * @type {boolean}
60
- */
61
-
62
54
  function CellCoords(row, column) {
63
55
  var isRtl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
64
56
  _classCallCheck(this, CellCoords);
57
+ /**
58
+ * A visual row index.
59
+ *
60
+ * @type {number}
61
+ */
65
62
  _defineProperty(this, "row", null);
63
+ /**
64
+ * A visual column index.
65
+ *
66
+ * @type {number}
67
+ */
66
68
  _defineProperty(this, "col", null);
69
+ /**
70
+ * @type {boolean}
71
+ */
67
72
  _classPrivateFieldInitSpec(this, _isRtl, {
68
73
  writable: true,
69
74
  value: false
@@ -77,28 +82,45 @@ var CellCoords = /*#__PURE__*/function () {
77
82
 
78
83
  /**
79
84
  * Checks if the coordinates in your `CellCoords` instance are valid
80
- * in the context of a given Walkontable instance.
85
+ * in the context of given table parameters.
81
86
  *
82
87
  * The `row` index:
83
- * - Can't be negative.
84
- * - Can't be higher than the total number of rows in the Walkontable instance.
88
+ * - Must be an integer.
89
+ * - Must be higher than the number of column headers in the table.
90
+ * - Must be lower than the total number of rows in the table.
85
91
  *
86
92
  * The `col` index:
87
- * - Can't be negative.
88
- * - Can't be higher than the total number of columns in the Walkontable instance.
93
+ * - Must be an integer.
94
+ * - Must be higher than the number of row headers in the table.
95
+ * - Must be lower than the total number of columns in the table.
89
96
  *
90
- * @param {Walkontable} wot A Walkontable instance.
97
+ * @param {object} [tableParams] An object with a defined table size.
98
+ * @param {number} [tableParams.countRows=0] The total number of rows.
99
+ * @param {number} [tableParams.countCols=0] The total number of columns.
100
+ * @param {number} [tableParams.countRowHeaders=0] A number of row headers.
101
+ * @param {number} [tableParams.countColHeaders=0] A number of column headers.
91
102
  * @returns {boolean} `true`: The coordinates are valid.
92
103
  */
93
104
  _createClass(CellCoords, [{
94
105
  key: "isValid",
95
- value: function isValid(wot) {
96
- // check if the row and column indexes are valid (0 or higher)
97
- if (this.row < 0 || this.col < 0) {
106
+ value: function isValid(tableParams) {
107
+ var _countRows$countCols$ = _objectSpread({
108
+ countRows: 0,
109
+ countCols: 0,
110
+ countRowHeaders: 0,
111
+ countColHeaders: 0
112
+ }, tableParams),
113
+ countRows = _countRows$countCols$.countRows,
114
+ countCols = _countRows$countCols$.countCols,
115
+ countRowHeaders = _countRows$countCols$.countRowHeaders,
116
+ countColHeaders = _countRows$countCols$.countColHeaders;
117
+ if (!Number.isInteger(this.row) || !Number.isInteger(this.col)) {
118
+ return false;
119
+ }
120
+ if (this.row < -countColHeaders || this.col < -countRowHeaders) {
98
121
  return false;
99
122
  }
100
- // check if the selection fits in the total of rows and columns
101
- if (this.row >= wot.getSetting('totalRows') || this.col >= wot.getSetting('totalColumns')) {
123
+ if (this.row >= countRows || this.col >= countCols) {
102
124
  return false;
103
125
  }
104
126
  return true;
@@ -12,8 +12,15 @@ export default class CellRange {
12
12
  setHighlight(coords: CellCoords): CellRange;
13
13
  setFrom(coords: CellCoords): CellRange;
14
14
  setTo(coords: CellCoords): CellRange;
15
- isValid(wot: any): boolean;
16
- isSingle(): boolean;
15
+ isValid(tableParams: {
16
+ countRows?: number;
17
+ countCols?: number;
18
+ countRowHeaders?: number;
19
+ countColHeaders?: number;
20
+ }): boolean;
21
+ isSingleCell(): boolean;
22
+ isSingleHeader(): boolean;
23
+ containsHeaders(): boolean;
17
24
  getOuterHeight(): number;
18
25
  getOuterWidth(): number;
19
26
  getHeight(): number;
@@ -32,7 +32,6 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
32
32
  function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
33
33
  function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
34
34
  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; } }
35
- var _isRtl = /*#__PURE__*/new WeakMap();
36
35
  /* eslint-disable jsdoc/require-description-complete-sentence */
37
36
  /**
38
37
  * @description
@@ -52,48 +51,45 @@ var _isRtl = /*#__PURE__*/new WeakMap();
52
51
  * import Handsontable, { CellRange } from '/handsontable/base';
53
52
  * ```
54
53
  */
54
+ var _isRtl = /*#__PURE__*/new WeakMap();
55
55
  var CellRange = /*#__PURE__*/function () {
56
- /**
57
- * Used to draw bold border around a cell where selection was started and to edit the cell
58
- * when you press Enter. The highlight cannot point to headers (negative values) so its
59
- * coordinates object is normalized while assigning.
60
- *
61
- * @private
62
- * @type {CellCoords}
63
- */
64
-
65
- /**
66
- * Usually the same as highlight, but in Excel there is distinction - one can change
67
- * highlight within a selection.
68
- *
69
- * @private
70
- * @type {CellCoords}
71
- */
72
-
73
- /**
74
- * End selection.
75
- *
76
- * @private
77
- * @type {CellCoords}
78
- */
79
-
80
- /**
81
- * @type {boolean}
82
- */
83
-
84
56
  function CellRange(highlight) {
85
57
  var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : highlight;
86
58
  var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : highlight;
87
59
  var isRtl = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
88
60
  _classCallCheck(this, CellRange);
61
+ /**
62
+ * Used to draw bold border around a cell where selection was started and to edit the cell
63
+ * when you press Enter. The highlight cannot point to headers (negative values) so its
64
+ * coordinates object is normalized while assigning.
65
+ *
66
+ * @private
67
+ * @type {CellCoords}
68
+ */
89
69
  _defineProperty(this, "highlight", null);
70
+ /**
71
+ * Usually the same as highlight, but in Excel there is distinction - one can change
72
+ * highlight within a selection.
73
+ *
74
+ * @private
75
+ * @type {CellCoords}
76
+ */
90
77
  _defineProperty(this, "from", null);
78
+ /**
79
+ * End selection.
80
+ *
81
+ * @private
82
+ * @type {CellCoords}
83
+ */
91
84
  _defineProperty(this, "to", null);
85
+ /**
86
+ * @type {boolean}
87
+ */
92
88
  _classPrivateFieldInitSpec(this, _isRtl, {
93
89
  writable: true,
94
90
  value: false
95
91
  });
96
- this.highlight = highlight.clone().normalize();
92
+ this.highlight = highlight.clone();
97
93
  this.from = from.clone();
98
94
  this.to = to.clone();
99
95
  _classPrivateFieldSet(this, _isRtl, isRtl);
@@ -108,7 +104,7 @@ var CellRange = /*#__PURE__*/function () {
108
104
  _createClass(CellRange, [{
109
105
  key: "setHighlight",
110
106
  value: function setHighlight(coords) {
111
- this.highlight = coords.clone().normalize();
107
+ this.highlight = coords.clone();
112
108
  return this;
113
109
  }
114
110
 
@@ -140,30 +136,67 @@ var CellRange = /*#__PURE__*/function () {
140
136
 
141
137
  /**
142
138
  * Checks if the coordinates in your `CellRange` instance are valid
143
- * in the context of a given Walkontable instance.
139
+ * in the context of given table parameters.
144
140
  *
145
141
  * See the [`isValid()`](@/api/cellCoords.md#isvalid) method of the [`CellCoords`](@/api/cellCoords.md) class.
146
142
  *
147
- * @param {Walkontable} wot A Walkontable instance.
143
+ * @param {object} tableParams An object with a defined table size.
144
+ * @param {number} tableParams.countRows The total number of rows.
145
+ * @param {number} tableParams.countCols The total number of columns.
146
+ * @param {number} tableParams.countRowHeaders A number of row headers.
147
+ * @param {number} tableParams.countColHeaders A number of column headers.
148
148
  * @returns {boolean}
149
149
  */
150
150
  }, {
151
151
  key: "isValid",
152
- value: function isValid(wot) {
153
- return this.from.isValid(wot) && this.to.isValid(wot);
152
+ value: function isValid(tableParams) {
153
+ return this.from.isValid(tableParams) && this.to.isValid(tableParams);
154
154
  }
155
155
 
156
156
  /**
157
- * Checks if your range is just a single cell.
157
+ * Checks if your range is just a single cell or header.
158
158
  *
159
159
  * @returns {boolean}
160
160
  */
161
161
  }, {
162
162
  key: "isSingle",
163
163
  value: function isSingle() {
164
+ return this.isSingleCell() || this.isSingleHeader();
165
+ }
166
+
167
+ /**
168
+ * Checks if your range is just a single cell.
169
+ *
170
+ * @returns {boolean}
171
+ */
172
+ }, {
173
+ key: "isSingleCell",
174
+ value: function isSingleCell() {
164
175
  return this.from.row >= 0 && this.from.row === this.to.row && this.from.col >= 0 && this.from.col === this.to.col;
165
176
  }
166
177
 
178
+ /**
179
+ * Checks if your range is just a single header.
180
+ *
181
+ * @returns {boolean}
182
+ */
183
+ }, {
184
+ key: "isSingleHeader",
185
+ value: function isSingleHeader() {
186
+ return (this.from.row < 0 || this.from.col < 0) && this.from.row === this.to.row && this.from.col === this.to.col;
187
+ }
188
+
189
+ /**
190
+ * Checks if your range overlaps headers range (negative coordinates).
191
+ *
192
+ * @returns {boolean}
193
+ */
194
+ }, {
195
+ key: "containsHeaders",
196
+ value: function containsHeaders() {
197
+ return this.from.isHeader() || this.to.isHeader();
198
+ }
199
+
167
200
  /**
168
201
  * Returns the height of your range (as a number of rows, including row headers).
169
202
  *
@@ -48,47 +48,43 @@ import CellCoords from "./../cell/coords.mjs";
48
48
  */
49
49
  var _isRtl = /*#__PURE__*/new WeakMap();
50
50
  var CellRange = /*#__PURE__*/function () {
51
- /**
52
- * Used to draw bold border around a cell where selection was started and to edit the cell
53
- * when you press Enter. The highlight cannot point to headers (negative values) so its
54
- * coordinates object is normalized while assigning.
55
- *
56
- * @private
57
- * @type {CellCoords}
58
- */
59
-
60
- /**
61
- * Usually the same as highlight, but in Excel there is distinction - one can change
62
- * highlight within a selection.
63
- *
64
- * @private
65
- * @type {CellCoords}
66
- */
67
-
68
- /**
69
- * End selection.
70
- *
71
- * @private
72
- * @type {CellCoords}
73
- */
74
-
75
- /**
76
- * @type {boolean}
77
- */
78
-
79
51
  function CellRange(highlight) {
80
52
  var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : highlight;
81
53
  var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : highlight;
82
54
  var isRtl = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
83
55
  _classCallCheck(this, CellRange);
56
+ /**
57
+ * Used to draw bold border around a cell where selection was started and to edit the cell
58
+ * when you press Enter. The highlight cannot point to headers (negative values) so its
59
+ * coordinates object is normalized while assigning.
60
+ *
61
+ * @private
62
+ * @type {CellCoords}
63
+ */
84
64
  _defineProperty(this, "highlight", null);
65
+ /**
66
+ * Usually the same as highlight, but in Excel there is distinction - one can change
67
+ * highlight within a selection.
68
+ *
69
+ * @private
70
+ * @type {CellCoords}
71
+ */
85
72
  _defineProperty(this, "from", null);
73
+ /**
74
+ * End selection.
75
+ *
76
+ * @private
77
+ * @type {CellCoords}
78
+ */
86
79
  _defineProperty(this, "to", null);
80
+ /**
81
+ * @type {boolean}
82
+ */
87
83
  _classPrivateFieldInitSpec(this, _isRtl, {
88
84
  writable: true,
89
85
  value: false
90
86
  });
91
- this.highlight = highlight.clone().normalize();
87
+ this.highlight = highlight.clone();
92
88
  this.from = from.clone();
93
89
  this.to = to.clone();
94
90
  _classPrivateFieldSet(this, _isRtl, isRtl);
@@ -103,7 +99,7 @@ var CellRange = /*#__PURE__*/function () {
103
99
  _createClass(CellRange, [{
104
100
  key: "setHighlight",
105
101
  value: function setHighlight(coords) {
106
- this.highlight = coords.clone().normalize();
102
+ this.highlight = coords.clone();
107
103
  return this;
108
104
  }
109
105
 
@@ -135,30 +131,67 @@ var CellRange = /*#__PURE__*/function () {
135
131
 
136
132
  /**
137
133
  * Checks if the coordinates in your `CellRange` instance are valid
138
- * in the context of a given Walkontable instance.
134
+ * in the context of given table parameters.
139
135
  *
140
136
  * See the [`isValid()`](@/api/cellCoords.md#isvalid) method of the [`CellCoords`](@/api/cellCoords.md) class.
141
137
  *
142
- * @param {Walkontable} wot A Walkontable instance.
138
+ * @param {object} tableParams An object with a defined table size.
139
+ * @param {number} tableParams.countRows The total number of rows.
140
+ * @param {number} tableParams.countCols The total number of columns.
141
+ * @param {number} tableParams.countRowHeaders A number of row headers.
142
+ * @param {number} tableParams.countColHeaders A number of column headers.
143
143
  * @returns {boolean}
144
144
  */
145
145
  }, {
146
146
  key: "isValid",
147
- value: function isValid(wot) {
148
- return this.from.isValid(wot) && this.to.isValid(wot);
147
+ value: function isValid(tableParams) {
148
+ return this.from.isValid(tableParams) && this.to.isValid(tableParams);
149
149
  }
150
150
 
151
151
  /**
152
- * Checks if your range is just a single cell.
152
+ * Checks if your range is just a single cell or header.
153
153
  *
154
154
  * @returns {boolean}
155
155
  */
156
156
  }, {
157
157
  key: "isSingle",
158
158
  value: function isSingle() {
159
+ return this.isSingleCell() || this.isSingleHeader();
160
+ }
161
+
162
+ /**
163
+ * Checks if your range is just a single cell.
164
+ *
165
+ * @returns {boolean}
166
+ */
167
+ }, {
168
+ key: "isSingleCell",
169
+ value: function isSingleCell() {
159
170
  return this.from.row >= 0 && this.from.row === this.to.row && this.from.col >= 0 && this.from.col === this.to.col;
160
171
  }
161
172
 
173
+ /**
174
+ * Checks if your range is just a single header.
175
+ *
176
+ * @returns {boolean}
177
+ */
178
+ }, {
179
+ key: "isSingleHeader",
180
+ value: function isSingleHeader() {
181
+ return (this.from.row < 0 || this.from.col < 0) && this.from.row === this.to.row && this.from.col === this.to.col;
182
+ }
183
+
184
+ /**
185
+ * Checks if your range overlaps headers range (negative coordinates).
186
+ *
187
+ * @returns {boolean}
188
+ */
189
+ }, {
190
+ key: "containsHeaders",
191
+ value: function containsHeaders() {
192
+ return this.from.isHeader() || this.to.isHeader();
193
+ }
194
+
162
195
  /**
163
196
  * Returns the height of your range (as a number of rows, including row headers).
164
197
  *
@@ -62,8 +62,7 @@ var Event = /*#__PURE__*/function () {
62
62
  * Should be use only for passing face called external origin methods, like registered event listeners.
63
63
  * It provides backward compatibility by getting instance facade.
64
64
  *
65
- * @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular
66
- * dependency).
65
+ * @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular dependency).
67
66
  * @todo Con. Maybe passing listener caller as an ioc from faced resolves this issue. To rethink later.
68
67
  *
69
68
  * @type {FacadeGetter}
@@ -206,9 +205,8 @@ var Event = /*#__PURE__*/function () {
206
205
  var getParentNode = (0, _function.partial)(_element.getParent, event.target);
207
206
  var realTarget = event.target;
208
207
 
209
- // ignore non-TD focusable elements from mouse down processing
210
- // (https://github.com/handsontable/handsontable/issues/3555)
211
- if (!['TD', 'TH'].includes(activeElement.nodeName) && (realTarget === activeElement || getParentNode(0) === activeElement || getParentNode(1) === activeElement)) {
208
+ // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)
209
+ if (realTarget === activeElement || getParentNode(0) === activeElement || getParentNode(1) === activeElement) {
212
210
  return;
213
211
  }
214
212
  var cell = this.parentCell(realTarget);
@@ -58,8 +58,7 @@ var Event = /*#__PURE__*/function () {
58
58
  * Should be use only for passing face called external origin methods, like registered event listeners.
59
59
  * It provides backward compatibility by getting instance facade.
60
60
  *
61
- * @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular
62
- * dependency).
61
+ * @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular dependency).
63
62
  * @todo Con. Maybe passing listener caller as an ioc from faced resolves this issue. To rethink later.
64
63
  *
65
64
  * @type {FacadeGetter}
@@ -202,9 +201,8 @@ var Event = /*#__PURE__*/function () {
202
201
  var getParentNode = partial(getParent, event.target);
203
202
  var realTarget = event.target;
204
203
 
205
- // ignore non-TD focusable elements from mouse down processing
206
- // (https://github.com/handsontable/handsontable/issues/3555)
207
- if (!['TD', 'TH'].includes(activeElement.nodeName) && (realTarget === activeElement || getParentNode(0) === activeElement || getParentNode(1) === activeElement)) {
204
+ // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)
205
+ if (realTarget === activeElement || getParentNode(0) === activeElement || getParentNode(1) === activeElement) {
208
206
  return;
209
207
  }
210
208
  var cell = this.parentCell(realTarget);
@@ -36,13 +36,6 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
36
36
  * @property {Walkontable} wot The Walkontable instance.
37
37
  */
38
38
  var Overlay = /*#__PURE__*/function () {
39
- /**
40
- * The Walkontable settings.
41
- *
42
- * @private
43
- * @type {Settings}
44
- */
45
-
46
39
  /**
47
40
  * @param {Walkontable} wotInstance The Walkontable instance. @TODO refactoring: check if can be deleted.
48
41
  * @param {FacadeGetter} facadeGetter Function which return proper facade.
@@ -52,6 +45,12 @@ var Overlay = /*#__PURE__*/function () {
52
45
  */
53
46
  function Overlay(wotInstance, facadeGetter, type, wtSettings, domBindings) {
54
47
  _classCallCheck(this, Overlay);
48
+ /**
49
+ * The Walkontable settings.
50
+ *
51
+ * @private
52
+ * @type {Settings}
53
+ */
55
54
  _defineProperty(this, "wtSettings", null);
56
55
  (0, _object.defineGetter)(this, 'wot', wotInstance, {
57
56
  writable: false