handsontable 0.0.0-next-b66c79f-20230713 → 0.0.0-next-08765b9-20230714

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

Potentially problematic release.


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

Files changed (373) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +87 -33
  3. package/3rdparty/walkontable/src/cell/coords.mjs +87 -33
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +92 -46
  6. package/3rdparty/walkontable/src/cell/range.mjs +92 -46
  7. package/3rdparty/walkontable/src/core/_base.js +41 -33
  8. package/3rdparty/walkontable/src/core/_base.mjs +41 -33
  9. package/3rdparty/walkontable/src/core/clone.js +8 -5
  10. package/3rdparty/walkontable/src/core/clone.mjs +8 -5
  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 +9 -8
  14. package/3rdparty/walkontable/src/event.mjs +9 -8
  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 +11 -9
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +11 -9
  21. package/3rdparty/walkontable/src/overlay/bottom.js +10 -8
  22. package/3rdparty/walkontable/src/overlay/bottom.mjs +10 -8
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  25. package/3rdparty/walkontable/src/overlay/top.js +12 -14
  26. package/3rdparty/walkontable/src/overlay/top.mjs +12 -14
  27. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +16 -13
  28. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +16 -13
  29. package/3rdparty/walkontable/src/overlays.js +75 -80
  30. package/3rdparty/walkontable/src/overlays.mjs +75 -80
  31. package/3rdparty/walkontable/src/scroll.js +27 -24
  32. package/3rdparty/walkontable/src/scroll.mjs +27 -24
  33. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  34. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  35. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  36. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  37. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  38. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  39. package/3rdparty/walkontable/src/selection/index.js +26 -0
  40. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  41. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  42. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  43. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  44. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  45. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  46. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  47. package/3rdparty/walkontable/src/settings.js +18 -17
  48. package/3rdparty/walkontable/src/settings.mjs +18 -17
  49. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  50. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  51. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  52. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  53. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  59. package/3rdparty/walkontable/src/table.js +48 -115
  60. package/3rdparty/walkontable/src/table.mjs +49 -116
  61. package/base.js +2 -2
  62. package/base.mjs +2 -2
  63. package/core/focusCatcher/focusDetector.js +58 -0
  64. package/core/focusCatcher/focusDetector.mjs +54 -0
  65. package/core/focusCatcher/index.js +142 -0
  66. package/core/focusCatcher/index.mjs +138 -0
  67. package/core/index.js +9 -0
  68. package/core/index.mjs +1 -0
  69. package/core.d.ts +6 -3
  70. package/core.js +181 -298
  71. package/core.mjs +181 -298
  72. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -1
  73. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
  74. package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
  75. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  76. package/dataMap/metaManager/metaSchema.js +41 -0
  77. package/dataMap/metaManager/metaSchema.mjs +41 -0
  78. package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
  79. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +3 -2
  80. package/dataMap/metaManager/utils.js +4 -2
  81. package/dataMap/metaManager/utils.mjs +4 -2
  82. package/dist/handsontable.css +19 -3
  83. package/dist/handsontable.full.css +19 -3
  84. package/dist/handsontable.full.js +10739 -7037
  85. package/dist/handsontable.full.min.css +3 -3
  86. package/dist/handsontable.full.min.js +25 -25
  87. package/dist/handsontable.js +24884 -21182
  88. package/dist/handsontable.min.css +3 -3
  89. package/dist/handsontable.min.js +19 -19
  90. package/editorManager.js +11 -75
  91. package/editorManager.mjs +11 -74
  92. package/editors/autocompleteEditor/autocompleteEditor.js +70 -67
  93. package/editors/autocompleteEditor/autocompleteEditor.mjs +70 -67
  94. package/editors/baseEditor/baseEditor.js +1 -1
  95. package/editors/baseEditor/baseEditor.mjs +1 -1
  96. package/editors/dateEditor/dateEditor.js +2 -1
  97. package/editors/dateEditor/dateEditor.mjs +2 -1
  98. package/editors/textEditor/textEditor.js +3 -11
  99. package/editors/textEditor/textEditor.mjs +4 -12
  100. package/helpers/mixed.js +1 -1
  101. package/helpers/mixed.mjs +1 -1
  102. package/helpers/number.d.ts +1 -0
  103. package/helpers/number.js +18 -0
  104. package/helpers/number.mjs +17 -0
  105. package/helpers/object.js +1 -0
  106. package/helpers/object.mjs +1 -0
  107. package/index.js +5 -5
  108. package/index.mjs +5 -5
  109. package/package.json +1 -1
  110. package/pluginHooks.d.ts +7 -1
  111. package/pluginHooks.js +106 -1
  112. package/pluginHooks.mjs +106 -1
  113. package/plugins/autoColumnSize/autoColumnSize.js +4 -1
  114. package/plugins/autoColumnSize/autoColumnSize.mjs +4 -1
  115. package/plugins/collapsibleColumns/collapsibleColumns.js +110 -40
  116. package/plugins/collapsibleColumns/collapsibleColumns.mjs +110 -40
  117. package/plugins/columnSorting/columnSorting.js +40 -1
  118. package/plugins/columnSorting/columnSorting.mjs +40 -3
  119. package/plugins/columnSorting/columnStatesManager.js +2 -1
  120. package/plugins/columnSorting/columnStatesManager.mjs +2 -1
  121. package/plugins/columnSorting/index.js +3 -1
  122. package/plugins/columnSorting/index.mjs +1 -1
  123. package/plugins/comments/commentEditor.js +1 -0
  124. package/plugins/comments/commentEditor.mjs +1 -0
  125. package/plugins/comments/comments.js +253 -191
  126. package/plugins/comments/comments.mjs +252 -192
  127. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  128. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  129. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  130. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  131. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  132. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  133. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  134. package/plugins/contextMenu/contextMenu.js +72 -30
  135. package/plugins/contextMenu/contextMenu.mjs +73 -31
  136. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  137. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  138. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  139. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  140. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  141. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  142. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  143. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  144. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  145. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  146. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  147. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  148. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  149. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  150. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  151. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  152. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  153. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  154. package/plugins/contextMenu/utils.js +28 -16
  155. package/plugins/contextMenu/utils.mjs +27 -15
  156. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  157. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  158. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  159. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  160. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  161. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  162. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  163. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  164. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  165. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  166. package/plugins/copyPaste/copyPaste.js +12 -6
  167. package/plugins/copyPaste/copyPaste.mjs +12 -6
  168. package/plugins/customBorders/customBorders.js +36 -29
  169. package/plugins/customBorders/customBorders.mjs +37 -30
  170. package/plugins/customBorders/utils.js +3 -3
  171. package/plugins/customBorders/utils.mjs +3 -3
  172. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  173. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  174. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  175. package/plugins/filters/conditionCollection.js +6 -5
  176. package/plugins/filters/conditionCollection.mjs +6 -5
  177. package/plugins/filters/filters.js +44 -21
  178. package/plugins/filters/filters.mjs +43 -20
  179. package/plugins/formulas/engine/register.js +3 -3
  180. package/plugins/formulas/engine/register.mjs +3 -3
  181. package/plugins/formulas/engine/settings.js +6 -3
  182. package/plugins/formulas/engine/settings.mjs +6 -3
  183. package/plugins/formulas/formulas.js +151 -143
  184. package/plugins/formulas/formulas.mjs +151 -143
  185. package/plugins/formulas/indexSyncer/axisSyncer.js +115 -79
  186. package/plugins/formulas/indexSyncer/axisSyncer.mjs +115 -79
  187. package/plugins/formulas/indexSyncer/index.js +100 -64
  188. package/plugins/formulas/indexSyncer/index.mjs +100 -64
  189. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  190. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
  191. package/plugins/hiddenColumns/hiddenColumns.js +51 -34
  192. package/plugins/hiddenColumns/hiddenColumns.mjs +51 -34
  193. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  194. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
  195. package/plugins/hiddenRows/hiddenRows.js +50 -33
  196. package/plugins/hiddenRows/hiddenRows.mjs +50 -33
  197. package/plugins/manualRowResize/manualRowResize.js +2 -1
  198. package/plugins/manualRowResize/manualRowResize.mjs +2 -1
  199. package/plugins/mergeCells/mergeCells.js +6 -17
  200. package/plugins/mergeCells/mergeCells.mjs +6 -17
  201. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  202. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  203. package/plugins/nestedHeaders/nestedHeaders.js +209 -75
  204. package/plugins/nestedHeaders/nestedHeaders.mjs +208 -74
  205. package/plugins/nestedHeaders/stateManager/headersTree.js +58 -38
  206. package/plugins/nestedHeaders/stateManager/headersTree.mjs +58 -38
  207. package/plugins/nestedHeaders/stateManager/index.js +107 -49
  208. package/plugins/nestedHeaders/stateManager/index.mjs +105 -47
  209. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +1 -1
  210. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +1 -1
  211. package/plugins/nestedHeaders/stateManager/sourceSettings.js +57 -37
  212. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +57 -37
  213. package/plugins/nestedHeaders/utils/ghostTable.js +39 -35
  214. package/plugins/nestedHeaders/utils/ghostTable.mjs +39 -35
  215. package/plugins/nestedRows/data/dataManager.js +4 -2
  216. package/plugins/nestedRows/data/dataManager.mjs +4 -2
  217. package/plugins/nestedRows/nestedRows.js +41 -0
  218. package/plugins/nestedRows/nestedRows.mjs +41 -0
  219. package/plugins/persistentState/storage.js +1 -0
  220. package/plugins/persistentState/storage.mjs +1 -0
  221. package/plugins/undoRedo/undoRedo.js +2 -1
  222. package/plugins/undoRedo/undoRedo.mjs +2 -1
  223. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  224. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  225. package/selection/highlight/highlight.js +256 -71
  226. package/selection/highlight/highlight.mjs +250 -71
  227. package/selection/highlight/types/activeHeader.js +10 -8
  228. package/selection/highlight/types/activeHeader.mjs +10 -8
  229. package/selection/highlight/types/area.js +6 -18
  230. package/selection/highlight/types/area.mjs +6 -18
  231. package/selection/highlight/types/areaLayered.js +31 -0
  232. package/selection/highlight/types/areaLayered.mjs +26 -0
  233. package/selection/highlight/types/column.js +27 -0
  234. package/selection/highlight/types/column.mjs +22 -0
  235. package/selection/highlight/types/customSelection.js +7 -9
  236. package/selection/highlight/types/customSelection.mjs +7 -9
  237. package/selection/highlight/types/fill.js +5 -7
  238. package/selection/highlight/types/fill.mjs +5 -7
  239. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  240. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  241. package/selection/highlight/types/header.js +9 -18
  242. package/selection/highlight/types/header.mjs +9 -18
  243. package/selection/highlight/types/row.js +27 -0
  244. package/selection/highlight/types/row.mjs +22 -0
  245. package/selection/highlight/visualSelection.js +41 -33
  246. package/selection/highlight/visualSelection.mjs +41 -33
  247. package/selection/index.js +4 -7
  248. package/selection/index.mjs +2 -3
  249. package/selection/mouseEventHandler.js +1 -1
  250. package/selection/mouseEventHandler.mjs +1 -1
  251. package/selection/range.js +8 -8
  252. package/selection/range.mjs +8 -8
  253. package/selection/selection.js +290 -154
  254. package/selection/selection.mjs +287 -153
  255. package/selection/transformation.js +232 -90
  256. package/selection/transformation.mjs +232 -90
  257. package/selection/utils.js +15 -21
  258. package/selection/utils.mjs +16 -21
  259. package/settings.d.ts +2 -0
  260. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  261. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  262. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  263. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  264. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  265. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  266. package/shortcutContexts/commands/editor/index.js +16 -0
  267. package/shortcutContexts/commands/editor/index.mjs +12 -0
  268. package/shortcutContexts/commands/editor/open.js +27 -0
  269. package/shortcutContexts/commands/editor/open.mjs +23 -0
  270. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  271. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  272. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  273. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  274. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  275. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  276. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  277. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  278. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  279. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  280. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  281. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  282. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  283. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  284. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  285. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  286. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  287. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  288. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  289. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  290. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  291. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  292. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  293. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  294. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  295. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  296. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  297. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  298. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  299. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  300. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  301. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  302. package/shortcutContexts/commands/index.js +35 -0
  303. package/shortcutContexts/commands/index.mjs +31 -0
  304. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  305. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  306. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  307. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  308. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  309. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  310. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  311. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  312. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  313. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  314. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  315. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  316. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  317. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  318. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  319. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  320. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  321. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  322. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  323. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  324. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  325. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  326. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  327. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  328. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  329. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  330. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  331. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  332. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  333. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  334. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  335. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  336. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  337. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  338. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  339. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  340. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  341. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  342. package/shortcutContexts/commands/selectAll.js +10 -0
  343. package/shortcutContexts/commands/selectAll.mjs +6 -0
  344. package/shortcutContexts/constants.js +13 -0
  345. package/shortcutContexts/constants.mjs +8 -0
  346. package/shortcutContexts/editor.js +25 -0
  347. package/shortcutContexts/editor.mjs +21 -0
  348. package/shortcutContexts/grid.js +163 -0
  349. package/shortcutContexts/grid.mjs +159 -0
  350. package/shortcutContexts/index.js +24 -0
  351. package/shortcutContexts/index.mjs +11 -0
  352. package/shortcuts/manager.js +2 -0
  353. package/shortcuts/manager.mjs +2 -0
  354. package/shortcuts/recorder.js +2 -2
  355. package/shortcuts/recorder.mjs +2 -2
  356. package/shortcuts/utils.js +19 -5
  357. package/shortcuts/utils.mjs +18 -4
  358. package/tableView.js +163 -91
  359. package/tableView.mjs +163 -91
  360. package/translations/changesObservable/observable.js +82 -54
  361. package/translations/changesObservable/observable.mjs +82 -54
  362. package/translations/changesObservable/observer.js +24 -11
  363. package/translations/changesObservable/observer.mjs +24 -11
  364. package/translations/maps/linkedPhysicalIndexToValueMap.js +14 -8
  365. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +14 -8
  366. package/utils/dataStructures/tree.js +21 -18
  367. package/utils/dataStructures/tree.mjs +21 -18
  368. package/3rdparty/walkontable/src/selection.js +0 -295
  369. package/3rdparty/walkontable/src/selection.mjs +0 -290
  370. package/selection/highlight/constants.js +0 -15
  371. package/selection/highlight/constants.mjs +0 -6
  372. package/selection/highlight/types/index.js +0 -35
  373. package/selection/highlight/types/index.mjs +0 -31
@@ -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;
@@ -1,6 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
5
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
6
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
9
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
11
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
12
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
13
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
14
+ 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; } }
15
+ var _isRtl = /*#__PURE__*/new WeakMap();
4
16
  /* eslint-disable jsdoc/require-description-complete-sentence */
5
17
  /**
6
18
  * @description
@@ -20,25 +32,28 @@ exports.__esModule = true;
20
32
  * ```
21
33
  */
22
34
  class CellCoords {
23
- /**
24
- * A visual row index.
25
- *
26
- * @type {number}
27
- */
28
- row = null;
29
- /**
30
- * A visual column index.
31
- *
32
- * @type {number}
33
- */
34
- col = null;
35
- /**
36
- * @type {boolean}
37
- */
38
- #isRtl = false;
39
35
  constructor(row, column) {
40
36
  let isRtl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
41
- this.#isRtl = isRtl;
37
+ /**
38
+ * A visual row index.
39
+ *
40
+ * @type {number}
41
+ */
42
+ _defineProperty(this, "row", null);
43
+ /**
44
+ * A visual column index.
45
+ *
46
+ * @type {number}
47
+ */
48
+ _defineProperty(this, "col", null);
49
+ /**
50
+ * @type {boolean}
51
+ */
52
+ _classPrivateFieldInitSpec(this, _isRtl, {
53
+ writable: true,
54
+ value: false
55
+ });
56
+ _classPrivateFieldSet(this, _isRtl, isRtl);
42
57
  if (typeof row !== 'undefined' && typeof column !== 'undefined') {
43
58
  this.row = row;
44
59
  this.col = column;
@@ -47,26 +62,45 @@ class CellCoords {
47
62
 
48
63
  /**
49
64
  * Checks if the coordinates in your `CellCoords` instance are valid
50
- * in the context of a given Walkontable instance.
65
+ * in the context of given table parameters.
51
66
  *
52
67
  * The `row` index:
53
- * - Can't be negative.
54
- * - Can't be higher than the total number of rows in the Walkontable instance.
68
+ * - Must be an integer.
69
+ * - Must be higher than the number of column headers in the table.
70
+ * - Must be lower than the total number of rows in the table.
55
71
  *
56
72
  * The `col` index:
57
- * - Can't be negative.
58
- * - Can't be higher than the total number of columns in the Walkontable instance.
73
+ * - Must be an integer.
74
+ * - Must be higher than the number of row headers in the table.
75
+ * - Must be lower than the total number of columns in the table.
59
76
  *
60
- * @param {Walkontable} wot A Walkontable instance.
77
+ * @param {object} [tableParams] An object with a defined table size.
78
+ * @param {number} [tableParams.countRows=0] The total number of rows.
79
+ * @param {number} [tableParams.countCols=0] The total number of columns.
80
+ * @param {number} [tableParams.countRowHeaders=0] A number of row headers.
81
+ * @param {number} [tableParams.countColHeaders=0] A number of column headers.
61
82
  * @returns {boolean} `true`: The coordinates are valid.
62
83
  */
63
- isValid(wot) {
64
- // check if the row and column indexes are valid (0 or higher)
65
- if (this.row < 0 || this.col < 0) {
84
+ isValid(tableParams) {
85
+ const {
86
+ countRows,
87
+ countCols,
88
+ countRowHeaders,
89
+ countColHeaders
90
+ } = {
91
+ countRows: 0,
92
+ countCols: 0,
93
+ countRowHeaders: 0,
94
+ countColHeaders: 0,
95
+ ...tableParams
96
+ };
97
+ if (!Number.isInteger(this.row) || !Number.isInteger(this.col)) {
66
98
  return false;
67
99
  }
68
- // check if the selection fits in the total of rows and columns
69
- if (this.row >= wot.getSetting('totalRows') || this.col >= wot.getSetting('totalColumns')) {
100
+ if (this.row < -countColHeaders || this.col < -countRowHeaders) {
101
+ return false;
102
+ }
103
+ if (this.row >= countRows || this.col >= countCols) {
70
104
  return false;
71
105
  }
72
106
  return true;
@@ -86,6 +120,26 @@ class CellCoords {
86
120
  return this.row === cellCoords.row && this.col === cellCoords.col;
87
121
  }
88
122
 
123
+ /**
124
+ * Checks if the coordinates point to the headers range. If one of the axis (row or col) point to
125
+ * the header (negative value) then method returns `true`.
126
+ *
127
+ * @returns {boolean}
128
+ */
129
+ isHeader() {
130
+ return !this.isCell();
131
+ }
132
+
133
+ /**
134
+ * Checks if the coordinates point to the cells range. If all axis (row and col) point to
135
+ * the cell (positive value) then method returns `true`.
136
+ *
137
+ * @returns {boolean}
138
+ */
139
+ isCell() {
140
+ return this.row >= 0 && this.col >= 0;
141
+ }
142
+
89
143
  /**
90
144
  * Checks if another set of coordinates (`testedCoords`)
91
145
  * is south-east of the coordinates in your `CellCoords` instance.
@@ -94,7 +148,7 @@ class CellCoords {
94
148
  * @returns {boolean}
95
149
  */
96
150
  isSouthEastOf(testedCoords) {
97
- return this.row >= testedCoords.row && (this.#isRtl ? this.col <= testedCoords.col : this.col >= testedCoords.col);
151
+ return this.row >= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col <= testedCoords.col : this.col >= testedCoords.col);
98
152
  }
99
153
 
100
154
  /**
@@ -105,7 +159,7 @@ class CellCoords {
105
159
  * @returns {boolean}
106
160
  */
107
161
  isNorthWestOf(testedCoords) {
108
- return this.row <= testedCoords.row && (this.#isRtl ? this.col >= testedCoords.col : this.col <= testedCoords.col);
162
+ return this.row <= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col >= testedCoords.col : this.col <= testedCoords.col);
109
163
  }
110
164
 
111
165
  /**
@@ -116,7 +170,7 @@ class CellCoords {
116
170
  * @returns {boolean}
117
171
  */
118
172
  isSouthWestOf(testedCoords) {
119
- return this.row >= testedCoords.row && (this.#isRtl ? this.col >= testedCoords.col : this.col <= testedCoords.col);
173
+ return this.row >= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col >= testedCoords.col : this.col <= testedCoords.col);
120
174
  }
121
175
 
122
176
  /**
@@ -127,7 +181,7 @@ class CellCoords {
127
181
  * @returns {boolean}
128
182
  */
129
183
  isNorthEastOf(testedCoords) {
130
- return this.row <= testedCoords.row && (this.#isRtl ? this.col <= testedCoords.col : this.col >= testedCoords.col);
184
+ return this.row <= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col <= testedCoords.col : this.col >= testedCoords.col);
131
185
  }
132
186
 
133
187
  /**
@@ -149,7 +203,7 @@ class CellCoords {
149
203
  * @returns {CellCoords}
150
204
  */
151
205
  clone() {
152
- return new CellCoords(this.row, this.col, this.#isRtl);
206
+ return new CellCoords(this.row, this.col, _classPrivateFieldGet(this, _isRtl));
153
207
  }
154
208
 
155
209
  /**
@@ -1,3 +1,15 @@
1
+ import "core-js/modules/es.error.cause.js";
2
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
3
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
8
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
9
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
10
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
11
+ 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; } }
12
+ var _isRtl = /*#__PURE__*/new WeakMap();
1
13
  /* eslint-disable jsdoc/require-description-complete-sentence */
2
14
  /**
3
15
  * @description
@@ -17,25 +29,28 @@
17
29
  * ```
18
30
  */
19
31
  class CellCoords {
20
- /**
21
- * A visual row index.
22
- *
23
- * @type {number}
24
- */
25
- row = null;
26
- /**
27
- * A visual column index.
28
- *
29
- * @type {number}
30
- */
31
- col = null;
32
- /**
33
- * @type {boolean}
34
- */
35
- #isRtl = false;
36
32
  constructor(row, column) {
37
33
  let isRtl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
38
- this.#isRtl = isRtl;
34
+ /**
35
+ * A visual row index.
36
+ *
37
+ * @type {number}
38
+ */
39
+ _defineProperty(this, "row", null);
40
+ /**
41
+ * A visual column index.
42
+ *
43
+ * @type {number}
44
+ */
45
+ _defineProperty(this, "col", null);
46
+ /**
47
+ * @type {boolean}
48
+ */
49
+ _classPrivateFieldInitSpec(this, _isRtl, {
50
+ writable: true,
51
+ value: false
52
+ });
53
+ _classPrivateFieldSet(this, _isRtl, isRtl);
39
54
  if (typeof row !== 'undefined' && typeof column !== 'undefined') {
40
55
  this.row = row;
41
56
  this.col = column;
@@ -44,26 +59,45 @@ class CellCoords {
44
59
 
45
60
  /**
46
61
  * Checks if the coordinates in your `CellCoords` instance are valid
47
- * in the context of a given Walkontable instance.
62
+ * in the context of given table parameters.
48
63
  *
49
64
  * The `row` index:
50
- * - Can't be negative.
51
- * - Can't be higher than the total number of rows in the Walkontable instance.
65
+ * - Must be an integer.
66
+ * - Must be higher than the number of column headers in the table.
67
+ * - Must be lower than the total number of rows in the table.
52
68
  *
53
69
  * The `col` index:
54
- * - Can't be negative.
55
- * - Can't be higher than the total number of columns in the Walkontable instance.
70
+ * - Must be an integer.
71
+ * - Must be higher than the number of row headers in the table.
72
+ * - Must be lower than the total number of columns in the table.
56
73
  *
57
- * @param {Walkontable} wot A Walkontable instance.
74
+ * @param {object} [tableParams] An object with a defined table size.
75
+ * @param {number} [tableParams.countRows=0] The total number of rows.
76
+ * @param {number} [tableParams.countCols=0] The total number of columns.
77
+ * @param {number} [tableParams.countRowHeaders=0] A number of row headers.
78
+ * @param {number} [tableParams.countColHeaders=0] A number of column headers.
58
79
  * @returns {boolean} `true`: The coordinates are valid.
59
80
  */
60
- isValid(wot) {
61
- // check if the row and column indexes are valid (0 or higher)
62
- if (this.row < 0 || this.col < 0) {
81
+ isValid(tableParams) {
82
+ const {
83
+ countRows,
84
+ countCols,
85
+ countRowHeaders,
86
+ countColHeaders
87
+ } = {
88
+ countRows: 0,
89
+ countCols: 0,
90
+ countRowHeaders: 0,
91
+ countColHeaders: 0,
92
+ ...tableParams
93
+ };
94
+ if (!Number.isInteger(this.row) || !Number.isInteger(this.col)) {
63
95
  return false;
64
96
  }
65
- // check if the selection fits in the total of rows and columns
66
- if (this.row >= wot.getSetting('totalRows') || this.col >= wot.getSetting('totalColumns')) {
97
+ if (this.row < -countColHeaders || this.col < -countRowHeaders) {
98
+ return false;
99
+ }
100
+ if (this.row >= countRows || this.col >= countCols) {
67
101
  return false;
68
102
  }
69
103
  return true;
@@ -83,6 +117,26 @@ class CellCoords {
83
117
  return this.row === cellCoords.row && this.col === cellCoords.col;
84
118
  }
85
119
 
120
+ /**
121
+ * Checks if the coordinates point to the headers range. If one of the axis (row or col) point to
122
+ * the header (negative value) then method returns `true`.
123
+ *
124
+ * @returns {boolean}
125
+ */
126
+ isHeader() {
127
+ return !this.isCell();
128
+ }
129
+
130
+ /**
131
+ * Checks if the coordinates point to the cells range. If all axis (row and col) point to
132
+ * the cell (positive value) then method returns `true`.
133
+ *
134
+ * @returns {boolean}
135
+ */
136
+ isCell() {
137
+ return this.row >= 0 && this.col >= 0;
138
+ }
139
+
86
140
  /**
87
141
  * Checks if another set of coordinates (`testedCoords`)
88
142
  * is south-east of the coordinates in your `CellCoords` instance.
@@ -91,7 +145,7 @@ class CellCoords {
91
145
  * @returns {boolean}
92
146
  */
93
147
  isSouthEastOf(testedCoords) {
94
- return this.row >= testedCoords.row && (this.#isRtl ? this.col <= testedCoords.col : this.col >= testedCoords.col);
148
+ return this.row >= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col <= testedCoords.col : this.col >= testedCoords.col);
95
149
  }
96
150
 
97
151
  /**
@@ -102,7 +156,7 @@ class CellCoords {
102
156
  * @returns {boolean}
103
157
  */
104
158
  isNorthWestOf(testedCoords) {
105
- return this.row <= testedCoords.row && (this.#isRtl ? this.col >= testedCoords.col : this.col <= testedCoords.col);
159
+ return this.row <= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col >= testedCoords.col : this.col <= testedCoords.col);
106
160
  }
107
161
 
108
162
  /**
@@ -113,7 +167,7 @@ class CellCoords {
113
167
  * @returns {boolean}
114
168
  */
115
169
  isSouthWestOf(testedCoords) {
116
- return this.row >= testedCoords.row && (this.#isRtl ? this.col >= testedCoords.col : this.col <= testedCoords.col);
170
+ return this.row >= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col >= testedCoords.col : this.col <= testedCoords.col);
117
171
  }
118
172
 
119
173
  /**
@@ -124,7 +178,7 @@ class CellCoords {
124
178
  * @returns {boolean}
125
179
  */
126
180
  isNorthEastOf(testedCoords) {
127
- return this.row <= testedCoords.row && (this.#isRtl ? this.col <= testedCoords.col : this.col >= testedCoords.col);
181
+ return this.row <= testedCoords.row && (_classPrivateFieldGet(this, _isRtl) ? this.col <= testedCoords.col : this.col >= testedCoords.col);
128
182
  }
129
183
 
130
184
  /**
@@ -146,7 +200,7 @@ class CellCoords {
146
200
  * @returns {CellCoords}
147
201
  */
148
202
  clone() {
149
- return new CellCoords(this.row, this.col, this.#isRtl);
203
+ return new CellCoords(this.row, this.col, _classPrivateFieldGet(this, _isRtl));
150
204
  }
151
205
 
152
206
  /**
@@ -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;
@@ -2,8 +2,19 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.array.push.js");
5
+ require("core-js/modules/es.error.cause.js");
5
6
  var _coords = _interopRequireDefault(require("./../cell/coords"));
6
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
9
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
10
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
14
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
15
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
16
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
17
+ 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; } }
7
18
  /* eslint-disable jsdoc/require-description-complete-sentence */
8
19
  /**
9
20
  * @description
@@ -23,43 +34,47 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
23
34
  * import Handsontable, { CellRange } from '/handsontable/base';
24
35
  * ```
25
36
  */
37
+ var _isRtl = /*#__PURE__*/new WeakMap();
26
38
  class CellRange {
27
- /**
28
- * Used to draw bold border around a cell where selection was started and to edit the cell
29
- * when you press Enter. The highlight cannot point to headers (negative values) so its
30
- * coordinates object is normalized while assigning.
31
- *
32
- * @private
33
- * @type {CellCoords}
34
- */
35
- highlight = null;
36
- /**
37
- * Usually the same as highlight, but in Excel there is distinction - one can change
38
- * highlight within a selection.
39
- *
40
- * @private
41
- * @type {CellCoords}
42
- */
43
- from = null;
44
- /**
45
- * End selection.
46
- *
47
- * @private
48
- * @type {CellCoords}
49
- */
50
- to = null;
51
- /**
52
- * @type {boolean}
53
- */
54
- #isRtl = false;
55
39
  constructor(highlight) {
56
40
  let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : highlight;
57
41
  let to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : highlight;
58
42
  let isRtl = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
59
- this.highlight = highlight.clone().normalize();
43
+ /**
44
+ * Used to draw bold border around a cell where selection was started and to edit the cell
45
+ * when you press Enter. The highlight cannot point to headers (negative values) so its
46
+ * coordinates object is normalized while assigning.
47
+ *
48
+ * @private
49
+ * @type {CellCoords}
50
+ */
51
+ _defineProperty(this, "highlight", null);
52
+ /**
53
+ * Usually the same as highlight, but in Excel there is distinction - one can change
54
+ * highlight within a selection.
55
+ *
56
+ * @private
57
+ * @type {CellCoords}
58
+ */
59
+ _defineProperty(this, "from", null);
60
+ /**
61
+ * End selection.
62
+ *
63
+ * @private
64
+ * @type {CellCoords}
65
+ */
66
+ _defineProperty(this, "to", null);
67
+ /**
68
+ * @type {boolean}
69
+ */
70
+ _classPrivateFieldInitSpec(this, _isRtl, {
71
+ writable: true,
72
+ value: false
73
+ });
74
+ this.highlight = highlight.clone();
60
75
  this.from = from.clone();
61
76
  this.to = to.clone();
62
- this.#isRtl = isRtl;
77
+ _classPrivateFieldSet(this, _isRtl, isRtl);
63
78
  }
64
79
 
65
80
  /**
@@ -69,7 +84,7 @@ class CellRange {
69
84
  * @returns {CellRange}
70
85
  */
71
86
  setHighlight(coords) {
72
- this.highlight = coords.clone().normalize();
87
+ this.highlight = coords.clone();
73
88
  return this;
74
89
  }
75
90
 
@@ -97,26 +112,57 @@ class CellRange {
97
112
 
98
113
  /**
99
114
  * Checks if the coordinates in your `CellRange` instance are valid
100
- * in the context of a given Walkontable instance.
115
+ * in the context of given table parameters.
101
116
  *
102
117
  * See the [`isValid()`](@/api/cellCoords.md#isvalid) method of the [`CellCoords`](@/api/cellCoords.md) class.
103
118
  *
104
- * @param {Walkontable} wot A Walkontable instance.
119
+ * @param {object} tableParams An object with a defined table size.
120
+ * @param {number} tableParams.countRows The total number of rows.
121
+ * @param {number} tableParams.countCols The total number of columns.
122
+ * @param {number} tableParams.countRowHeaders A number of row headers.
123
+ * @param {number} tableParams.countColHeaders A number of column headers.
105
124
  * @returns {boolean}
106
125
  */
107
- isValid(wot) {
108
- return this.from.isValid(wot) && this.to.isValid(wot);
126
+ isValid(tableParams) {
127
+ return this.from.isValid(tableParams) && this.to.isValid(tableParams);
109
128
  }
110
129
 
111
130
  /**
112
- * Checks if your range is just a single cell.
131
+ * Checks if your range is just a single cell or header.
113
132
  *
114
133
  * @returns {boolean}
115
134
  */
116
135
  isSingle() {
136
+ return this.isSingleCell() || this.isSingleHeader();
137
+ }
138
+
139
+ /**
140
+ * Checks if your range is just a single cell.
141
+ *
142
+ * @returns {boolean}
143
+ */
144
+ isSingleCell() {
117
145
  return this.from.row >= 0 && this.from.row === this.to.row && this.from.col >= 0 && this.from.col === this.to.col;
118
146
  }
119
147
 
148
+ /**
149
+ * Checks if your range is just a single header.
150
+ *
151
+ * @returns {boolean}
152
+ */
153
+ isSingleHeader() {
154
+ return (this.from.row < 0 || this.from.col < 0) && this.from.row === this.to.row && this.from.col === this.to.col;
155
+ }
156
+
157
+ /**
158
+ * Checks if your range overlaps headers range (negative coordinates).
159
+ *
160
+ * @returns {boolean}
161
+ */
162
+ containsHeaders() {
163
+ return this.from.isHeader() || this.to.isHeader();
164
+ }
165
+
120
166
  /**
121
167
  * Returns the height of your range (as a number of rows, including row headers).
122
168
  *
@@ -452,7 +498,7 @@ class CellRange {
452
498
  * @returns {CellCoords}
453
499
  */
454
500
  getTopLeftCorner() {
455
- return this.#isRtl ? this.getTopEndCorner() : this.getTopStartCorner();
501
+ return _classPrivateFieldGet(this, _isRtl) ? this.getTopEndCorner() : this.getTopStartCorner();
456
502
  }
457
503
 
458
504
  /**
@@ -477,7 +523,7 @@ class CellRange {
477
523
  * @returns {CellCoords}
478
524
  */
479
525
  getBottomRightCorner() {
480
- return this.#isRtl ? this.getBottomStartCorner() : this.getBottomEndCorner();
526
+ return _classPrivateFieldGet(this, _isRtl) ? this.getBottomStartCorner() : this.getBottomEndCorner();
481
527
  }
482
528
 
483
529
  /**
@@ -502,7 +548,7 @@ class CellRange {
502
548
  * @returns {CellCoords}
503
549
  */
504
550
  getTopRightCorner() {
505
- return this.#isRtl ? this.getTopStartCorner() : this.getTopEndCorner();
551
+ return _classPrivateFieldGet(this, _isRtl) ? this.getTopStartCorner() : this.getTopEndCorner();
506
552
  }
507
553
 
508
554
  /**
@@ -527,7 +573,7 @@ class CellRange {
527
573
  * @returns {CellCoords}
528
574
  */
529
575
  getBottomLeftCorner() {
530
- return this.#isRtl ? this.getBottomEndCorner() : this.getBottomStartCorner();
576
+ return _classPrivateFieldGet(this, _isRtl) ? this.getBottomEndCorner() : this.getBottomStartCorner();
531
577
  }
532
578
 
533
579
  /**
@@ -552,7 +598,7 @@ class CellRange {
552
598
  * @returns {CellCoords}
553
599
  */
554
600
  getOuterTopLeftCorner() {
555
- return this.#isRtl ? this.getOuterTopEndCorner() : this.getOuterTopStartCorner();
601
+ return _classPrivateFieldGet(this, _isRtl) ? this.getOuterTopEndCorner() : this.getOuterTopStartCorner();
556
602
  }
557
603
 
558
604
  /**
@@ -577,7 +623,7 @@ class CellRange {
577
623
  * @returns {CellCoords}
578
624
  */
579
625
  getOuterBottomRightCorner() {
580
- return this.#isRtl ? this.getOuterBottomStartCorner() : this.getOuterBottomEndCorner();
626
+ return _classPrivateFieldGet(this, _isRtl) ? this.getOuterBottomStartCorner() : this.getOuterBottomEndCorner();
581
627
  }
582
628
 
583
629
  /**
@@ -602,7 +648,7 @@ class CellRange {
602
648
  * @returns {CellCoords}
603
649
  */
604
650
  getOuterTopRightCorner() {
605
- return this.#isRtl ? this.getOuterTopStartCorner() : this.getOuterTopEndCorner();
651
+ return _classPrivateFieldGet(this, _isRtl) ? this.getOuterTopStartCorner() : this.getOuterTopEndCorner();
606
652
  }
607
653
 
608
654
  /**
@@ -627,7 +673,7 @@ class CellRange {
627
673
  * @returns {CellCoords}
628
674
  */
629
675
  getOuterBottomLeftCorner() {
630
- return this.#isRtl ? this.getOuterBottomEndCorner() : this.getOuterBottomStartCorner();
676
+ return _classPrivateFieldGet(this, _isRtl) ? this.getOuterBottomEndCorner() : this.getOuterBottomStartCorner();
631
677
  }
632
678
 
633
679
  /**
@@ -796,7 +842,7 @@ class CellRange {
796
842
  * @returns {CellRange}
797
843
  */
798
844
  clone() {
799
- return new CellRange(this.highlight, this.from, this.to, this.#isRtl);
845
+ return new CellRange(this.highlight, this.from, this.to, _classPrivateFieldGet(this, _isRtl));
800
846
  }
801
847
 
802
848
  /**
@@ -830,7 +876,7 @@ class CellRange {
830
876
  * @returns {CellCoords}
831
877
  */
832
878
  _createCellCoords(row, column) {
833
- return new _coords.default(row, column, this.#isRtl);
879
+ return new _coords.default(row, column, _classPrivateFieldGet(this, _isRtl));
834
880
  }
835
881
  }
836
882
  var _default = CellRange;