handsontable 11.1.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/3rdparty/walkontable/src/border.js +120 -98
  2. package/3rdparty/walkontable/src/border.mjs +120 -94
  3. package/3rdparty/walkontable/src/cell/coords.js +59 -17
  4. package/3rdparty/walkontable/src/cell/coords.mjs +55 -17
  5. package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
  6. package/3rdparty/walkontable/src/cell/range.js +278 -99
  7. package/3rdparty/walkontable/src/cell/range.mjs +273 -99
  8. package/3rdparty/walkontable/src/core/_base.js +452 -0
  9. package/3rdparty/walkontable/src/core/_base.mjs +440 -0
  10. package/3rdparty/walkontable/src/core/clone.js +97 -0
  11. package/3rdparty/walkontable/src/core/clone.mjs +80 -0
  12. package/3rdparty/walkontable/src/core/core.js +183 -0
  13. package/3rdparty/walkontable/src/core/core.mjs +160 -0
  14. package/3rdparty/walkontable/src/event.js +99 -66
  15. package/3rdparty/walkontable/src/event.mjs +99 -63
  16. package/3rdparty/walkontable/src/facade/core.js +251 -0
  17. package/3rdparty/walkontable/src/facade/core.mjs +243 -0
  18. package/3rdparty/walkontable/src/index.js +2 -46
  19. package/3rdparty/walkontable/src/index.mjs +3 -13
  20. package/3rdparty/walkontable/src/overlay/_base.js +124 -57
  21. package/3rdparty/walkontable/src/overlay/_base.mjs +124 -57
  22. package/3rdparty/walkontable/src/overlay/bottom.js +96 -80
  23. package/3rdparty/walkontable/src/overlay/bottom.mjs +96 -80
  24. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +45 -62
  25. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +44 -61
  26. package/3rdparty/walkontable/src/overlay/constants.js +25 -9
  27. package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
  28. package/3rdparty/walkontable/src/overlay/index.js +10 -19
  29. package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
  30. package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +113 -82
  31. package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +112 -81
  32. package/3rdparty/walkontable/src/overlay/top.js +93 -68
  33. package/3rdparty/walkontable/src/overlay/top.mjs +93 -68
  34. package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
  35. package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
  36. package/3rdparty/walkontable/src/overlays.js +225 -156
  37. package/3rdparty/walkontable/src/overlays.mjs +224 -154
  38. package/3rdparty/walkontable/src/renderer/cells.js +4 -3
  39. package/3rdparty/walkontable/src/renderer/cells.mjs +4 -3
  40. package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
  41. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  42. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  43. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  44. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  45. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
  46. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  47. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  48. package/3rdparty/walkontable/src/scroll.js +125 -104
  49. package/3rdparty/walkontable/src/scroll.mjs +124 -104
  50. package/3rdparty/walkontable/src/selection.js +10 -14
  51. package/3rdparty/walkontable/src/selection.mjs +10 -12
  52. package/3rdparty/walkontable/src/settings.js +235 -126
  53. package/3rdparty/walkontable/src/settings.mjs +235 -125
  54. package/3rdparty/walkontable/src/table/bottom.js +16 -5
  55. package/3rdparty/walkontable/src/table/bottom.mjs +15 -5
  56. package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +27 -15
  57. package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +26 -15
  58. package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +23 -15
  59. package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +22 -15
  60. package/3rdparty/walkontable/src/table/master.js +22 -12
  61. package/3rdparty/walkontable/src/table/master.mjs +22 -12
  62. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
  63. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
  64. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
  65. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
  66. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
  67. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
  68. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
  69. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
  70. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
  72. package/3rdparty/walkontable/src/table/top.js +16 -5
  73. package/3rdparty/walkontable/src/table/top.mjs +15 -5
  74. package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +27 -15
  75. package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +26 -15
  76. package/3rdparty/walkontable/src/table.js +235 -140
  77. package/3rdparty/walkontable/src/table.mjs +231 -134
  78. package/3rdparty/walkontable/src/types.js +103 -0
  79. package/3rdparty/walkontable/src/types.mjs +102 -0
  80. package/3rdparty/walkontable/src/utils/column.js +22 -33
  81. package/3rdparty/walkontable/src/utils/column.mjs +22 -30
  82. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
  83. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  84. package/3rdparty/walkontable/src/utils/row.js +9 -4
  85. package/3rdparty/walkontable/src/utils/row.mjs +9 -4
  86. package/3rdparty/walkontable/src/viewport.js +89 -100
  87. package/3rdparty/walkontable/src/viewport.mjs +89 -97
  88. package/CHANGELOG.md +92 -0
  89. package/LICENSE.txt +1 -1
  90. package/README.md +0 -1
  91. package/base.js +2 -2
  92. package/base.mjs +2 -2
  93. package/cellTypes/timeType/timeType.d.ts +6 -6
  94. package/cellTypes/timeType/timeType.js +4 -5
  95. package/cellTypes/timeType/timeType.mjs +4 -5
  96. package/core.d.ts +6 -1
  97. package/core.js +508 -80
  98. package/core.mjs +517 -92
  99. package/dataMap/index.js +4 -0
  100. package/dataMap/index.mjs +2 -1
  101. package/dataMap/metaManager/index.js +2 -2
  102. package/dataMap/metaManager/index.mjs +2 -2
  103. package/dataMap/metaManager/metaLayers/globalMeta.js +4 -0
  104. package/dataMap/metaManager/metaLayers/globalMeta.mjs +4 -0
  105. package/dataMap/metaManager/metaLayers/tableMeta.js +2 -2
  106. package/dataMap/metaManager/metaLayers/tableMeta.mjs +2 -2
  107. package/dataMap/metaManager/metaSchema.js +282 -187
  108. package/dataMap/metaManager/metaSchema.mjs +282 -187
  109. package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
  110. package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
  111. package/dataMap/replaceData.js +3 -17
  112. package/dataMap/replaceData.mjs +3 -17
  113. package/dist/handsontable.css +268 -92
  114. package/dist/handsontable.full.css +269 -103
  115. package/dist/handsontable.full.js +41990 -35658
  116. package/dist/handsontable.full.min.css +9 -9
  117. package/dist/handsontable.full.min.js +144 -144
  118. package/dist/handsontable.js +29561 -25597
  119. package/dist/handsontable.min.css +8 -8
  120. package/dist/handsontable.min.js +4 -4
  121. package/dist/languages/all.js +131 -34
  122. package/dist/languages/all.min.js +1 -1
  123. package/dist/languages/ar-AR.js +167 -0
  124. package/dist/languages/ar-AR.min.js +1 -0
  125. package/dist/languages/cs-CZ.js +167 -0
  126. package/dist/languages/cs-CZ.min.js +1 -0
  127. package/dist/languages/de-CH.js +31 -29
  128. package/dist/languages/de-CH.min.js +1 -1
  129. package/dist/languages/de-DE.js +4 -2
  130. package/dist/languages/de-DE.min.js +1 -1
  131. package/dist/languages/en-US.js +4 -2
  132. package/dist/languages/en-US.min.js +1 -1
  133. package/dist/languages/es-MX.js +4 -2
  134. package/dist/languages/es-MX.min.js +1 -1
  135. package/dist/languages/fr-FR.js +4 -2
  136. package/dist/languages/fr-FR.min.js +1 -1
  137. package/dist/languages/it-IT.js +4 -2
  138. package/dist/languages/it-IT.min.js +1 -1
  139. package/dist/languages/ja-JP.js +36 -38
  140. package/dist/languages/ja-JP.min.js +1 -1
  141. package/dist/languages/ko-KR.js +36 -39
  142. package/dist/languages/ko-KR.min.js +1 -1
  143. package/dist/languages/lv-LV.js +2 -2
  144. package/dist/languages/lv-LV.min.js +1 -1
  145. package/dist/languages/nb-NO.js +2 -2
  146. package/dist/languages/nb-NO.min.js +1 -1
  147. package/dist/languages/nl-NL.js +2 -2
  148. package/dist/languages/nl-NL.min.js +1 -1
  149. package/dist/languages/pl-PL.js +2 -2
  150. package/dist/languages/pl-PL.min.js +1 -1
  151. package/dist/languages/pt-BR.js +2 -2
  152. package/dist/languages/pt-BR.min.js +1 -1
  153. package/dist/languages/ru-RU.js +2 -2
  154. package/dist/languages/ru-RU.min.js +1 -1
  155. package/dist/languages/sr-SP.js +171 -0
  156. package/dist/languages/sr-SP.min.js +1 -0
  157. package/dist/languages/zh-CN.js +24 -24
  158. package/dist/languages/zh-CN.min.js +1 -1
  159. package/dist/languages/zh-TW.js +24 -24
  160. package/dist/languages/zh-TW.min.js +1 -1
  161. package/editorManager.js +120 -267
  162. package/editorManager.mjs +128 -278
  163. package/editors/autocompleteEditor/autocompleteEditor.js +22 -25
  164. package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -25
  165. package/editors/baseEditor/baseEditor.js +205 -34
  166. package/editors/baseEditor/baseEditor.mjs +200 -32
  167. package/editors/checkboxEditor/checkboxEditor.js +2 -2
  168. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  169. package/editors/dateEditor/dateEditor.js +21 -8
  170. package/editors/dateEditor/dateEditor.mjs +22 -9
  171. package/editors/dropdownEditor/dropdownEditor.js +3 -3
  172. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  173. package/editors/handsontableEditor/handsontableEditor.js +106 -55
  174. package/editors/handsontableEditor/handsontableEditor.mjs +106 -55
  175. package/editors/index.d.ts +3 -0
  176. package/editors/index.js +6 -0
  177. package/editors/index.mjs +3 -1
  178. package/editors/numericEditor/numericEditor.js +2 -2
  179. package/editors/numericEditor/numericEditor.mjs +2 -2
  180. package/editors/passwordEditor/passwordEditor.js +3 -3
  181. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  182. package/editors/selectEditor/selectEditor.js +65 -110
  183. package/editors/selectEditor/selectEditor.mjs +66 -109
  184. package/editors/textEditor/caretPositioner.js +49 -0
  185. package/editors/textEditor/caretPositioner.mjs +42 -0
  186. package/editors/textEditor/textEditor.js +205 -181
  187. package/editors/textEditor/textEditor.mjs +199 -179
  188. package/editors/timeEditor/index.d.ts +1 -0
  189. package/editors/timeEditor/index.js +9 -0
  190. package/editors/timeEditor/index.mjs +1 -0
  191. package/editors/timeEditor/timeEditor.d.ts +7 -0
  192. package/editors/timeEditor/timeEditor.js +105 -0
  193. package/editors/timeEditor/timeEditor.mjs +84 -0
  194. package/eventManager.js +4 -2
  195. package/eventManager.mjs +4 -2
  196. package/helpers/mixed.js +2 -2
  197. package/helpers/mixed.mjs +2 -2
  198. package/i18n/languages/ar-AR.js +41 -0
  199. package/i18n/languages/ar-AR.mjs +17 -0
  200. package/i18n/languages/cs-CZ.js +40 -0
  201. package/i18n/languages/cs-CZ.mjs +16 -0
  202. package/i18n/languages/index.js +12 -0
  203. package/i18n/languages/index.mjs +4 -1
  204. package/i18n/languages/sr-SP.js +40 -0
  205. package/i18n/languages/sr-SP.mjs +16 -0
  206. package/index.d.ts +4 -0
  207. package/languages/all.js +131 -34
  208. package/languages/ar-AR.js +167 -0
  209. package/languages/ar-AR.mjs +19 -0
  210. package/languages/cs-CZ.js +167 -0
  211. package/languages/cs-CZ.mjs +18 -0
  212. package/languages/de-CH.js +31 -29
  213. package/languages/de-DE.js +4 -2
  214. package/languages/en-US.js +4 -2
  215. package/languages/es-MX.js +4 -2
  216. package/languages/fr-FR.js +4 -2
  217. package/languages/index.js +131 -34
  218. package/languages/index.mjs +4 -1
  219. package/languages/it-IT.js +4 -2
  220. package/languages/ja-JP.js +36 -38
  221. package/languages/ko-KR.js +36 -39
  222. package/languages/lv-LV.js +2 -2
  223. package/languages/nb-NO.js +2 -2
  224. package/languages/nl-NL.js +2 -2
  225. package/languages/pl-PL.js +2 -2
  226. package/languages/pt-BR.js +2 -2
  227. package/languages/ru-RU.js +2 -2
  228. package/languages/sr-SP.js +171 -0
  229. package/languages/sr-SP.mjs +18 -0
  230. package/languages/zh-CN.js +24 -24
  231. package/languages/zh-TW.js +24 -24
  232. package/package.json +44 -4
  233. package/pluginHooks.js +49 -13
  234. package/pluginHooks.mjs +49 -13
  235. package/plugins/autoColumnSize/autoColumnSize.js +15 -10
  236. package/plugins/autoColumnSize/autoColumnSize.mjs +15 -10
  237. package/plugins/autoRowSize/autoRowSize.js +14 -9
  238. package/plugins/autoRowSize/autoRowSize.mjs +14 -9
  239. package/plugins/autofill/autofill.js +49 -33
  240. package/plugins/autofill/autofill.mjs +49 -32
  241. package/plugins/autofill/utils.js +10 -11
  242. package/plugins/autofill/utils.mjs +10 -10
  243. package/plugins/base/base.d.ts +8 -2
  244. package/plugins/base/base.js +67 -4
  245. package/plugins/base/base.mjs +66 -4
  246. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
  247. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  248. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
  249. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  250. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
  251. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
  252. package/plugins/collapsibleColumns/collapsibleColumns.js +27 -9
  253. package/plugins/collapsibleColumns/collapsibleColumns.mjs +27 -9
  254. package/plugins/columnSorting/columnSorting.js +5 -7
  255. package/plugins/columnSorting/columnSorting.mjs +5 -6
  256. package/plugins/columnSummary/columnSummary.js +3 -3
  257. package/plugins/columnSummary/columnSummary.mjs +3 -3
  258. package/plugins/comments/commentEditor.js +18 -2
  259. package/plugins/comments/commentEditor.mjs +19 -3
  260. package/plugins/comments/comments.js +57 -46
  261. package/plugins/comments/comments.mjs +58 -46
  262. package/plugins/contextMenu/contextMenu.js +10 -6
  263. package/plugins/contextMenu/contextMenu.mjs +10 -6
  264. package/plugins/contextMenu/menu.js +222 -110
  265. package/plugins/contextMenu/menu.mjs +219 -111
  266. package/plugins/contextMenu/predefinedItems/columnLeft.js +12 -4
  267. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
  268. package/plugins/contextMenu/predefinedItems/columnRight.js +9 -9
  269. package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
  270. package/plugins/contextMenu/utils.js +2 -2
  271. package/plugins/contextMenu/utils.mjs +2 -2
  272. package/plugins/copyPaste/copyPaste.js +31 -21
  273. package/plugins/copyPaste/copyPaste.mjs +30 -21
  274. package/plugins/customBorders/contextMenuItem/left.js +4 -3
  275. package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
  276. package/plugins/customBorders/contextMenuItem/right.js +4 -3
  277. package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
  278. package/plugins/customBorders/customBorders.js +144 -87
  279. package/plugins/customBorders/customBorders.mjs +143 -85
  280. package/plugins/customBorders/utils.js +131 -27
  281. package/plugins/customBorders/utils.mjs +115 -27
  282. package/plugins/dragToScroll/dragToScroll.js +10 -5
  283. package/plugins/dragToScroll/dragToScroll.mjs +10 -5
  284. package/plugins/dropdownMenu/dropdownMenu.js +9 -7
  285. package/plugins/dropdownMenu/dropdownMenu.mjs +9 -7
  286. package/plugins/exportFile/exportFile.js +2 -2
  287. package/plugins/exportFile/exportFile.mjs +2 -2
  288. package/plugins/exportFile/types/csv.js +2 -2
  289. package/plugins/exportFile/types/csv.mjs +2 -2
  290. package/plugins/filters/component/actionBar.js +2 -2
  291. package/plugins/filters/component/actionBar.mjs +2 -2
  292. package/plugins/filters/component/condition.js +3 -3
  293. package/plugins/filters/component/condition.mjs +3 -3
  294. package/plugins/filters/component/operators.js +2 -2
  295. package/plugins/filters/component/operators.mjs +2 -2
  296. package/plugins/filters/component/value.js +3 -3
  297. package/plugins/filters/component/value.mjs +3 -3
  298. package/plugins/filters/filters.js +11 -8
  299. package/plugins/filters/filters.mjs +11 -8
  300. package/plugins/filters/ui/input.js +3 -3
  301. package/plugins/filters/ui/input.mjs +3 -3
  302. package/plugins/filters/ui/link.js +3 -3
  303. package/plugins/filters/ui/link.mjs +3 -3
  304. package/plugins/filters/ui/multipleSelect.js +18 -31
  305. package/plugins/filters/ui/multipleSelect.mjs +18 -31
  306. package/plugins/filters/ui/radioInput.js +3 -3
  307. package/plugins/filters/ui/radioInput.mjs +3 -3
  308. package/plugins/filters/ui/select.js +4 -4
  309. package/plugins/filters/ui/select.mjs +4 -4
  310. package/plugins/formulas/formulas.js +14 -9
  311. package/plugins/formulas/formulas.mjs +14 -9
  312. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
  313. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
  314. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -5
  315. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -5
  316. package/plugins/hiddenColumns/hiddenColumns.js +9 -4
  317. package/plugins/hiddenColumns/hiddenColumns.mjs +9 -4
  318. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
  319. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
  320. package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -5
  321. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -5
  322. package/plugins/hiddenRows/hiddenRows.js +9 -4
  323. package/plugins/hiddenRows/hiddenRows.mjs +9 -4
  324. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  325. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  326. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  327. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  328. package/plugins/manualColumnFreeze/manualColumnFreeze.js +54 -15
  329. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +49 -15
  330. package/plugins/manualColumnMove/manualColumnMove.js +70 -70
  331. package/plugins/manualColumnMove/manualColumnMove.mjs +71 -71
  332. package/plugins/manualColumnMove/ui/_base.js +25 -12
  333. package/plugins/manualColumnMove/ui/_base.mjs +24 -12
  334. package/plugins/manualColumnMove/ui/backlight.js +3 -3
  335. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  336. package/plugins/manualColumnMove/ui/guideline.js +3 -3
  337. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  338. package/plugins/manualColumnResize/manualColumnResize.js +37 -21
  339. package/plugins/manualColumnResize/manualColumnResize.mjs +37 -21
  340. package/plugins/manualRowMove/manualRowMove.js +26 -34
  341. package/plugins/manualRowMove/manualRowMove.mjs +26 -34
  342. package/plugins/manualRowMove/ui/backlight.js +3 -3
  343. package/plugins/manualRowMove/ui/backlight.mjs +3 -3
  344. package/plugins/manualRowMove/ui/guideline.js +3 -3
  345. package/plugins/manualRowMove/ui/guideline.mjs +3 -3
  346. package/plugins/manualRowResize/manualRowResize.js +34 -19
  347. package/plugins/manualRowResize/manualRowResize.mjs +34 -19
  348. package/plugins/mergeCells/calculations/autofill.js +6 -5
  349. package/plugins/mergeCells/calculations/autofill.mjs +6 -4
  350. package/plugins/mergeCells/calculations/selection.js +9 -4
  351. package/plugins/mergeCells/calculations/selection.mjs +9 -4
  352. package/plugins/mergeCells/cellCoords.js +16 -4
  353. package/plugins/mergeCells/cellCoords.mjs +16 -3
  354. package/plugins/mergeCells/cellsCollection.js +30 -23
  355. package/plugins/mergeCells/cellsCollection.mjs +30 -22
  356. package/plugins/mergeCells/mergeCells.js +94 -61
  357. package/plugins/mergeCells/mergeCells.mjs +94 -59
  358. package/plugins/multiColumnSorting/multiColumnSorting.js +4 -6
  359. package/plugins/multiColumnSorting/multiColumnSorting.mjs +4 -5
  360. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +51 -57
  361. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +52 -57
  362. package/plugins/nestedHeaders/nestedHeaders.js +31 -20
  363. package/plugins/nestedHeaders/nestedHeaders.mjs +31 -20
  364. package/plugins/nestedHeaders/stateManager/utils.js +3 -4
  365. package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
  366. package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
  367. package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
  368. package/plugins/nestedRows/nestedRows.js +9 -4
  369. package/plugins/nestedRows/nestedRows.mjs +9 -4
  370. package/plugins/nestedRows/ui/collapsing.js +2 -2
  371. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  372. package/plugins/nestedRows/ui/contextMenu.js +2 -2
  373. package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
  374. package/plugins/nestedRows/ui/headers.js +2 -2
  375. package/plugins/nestedRows/ui/headers.mjs +2 -2
  376. package/plugins/nestedRows/utils/rowMoveController.js +2 -4
  377. package/plugins/nestedRows/utils/rowMoveController.mjs +2 -3
  378. package/plugins/persistentState/persistentState.js +9 -4
  379. package/plugins/persistentState/persistentState.mjs +9 -4
  380. package/plugins/search/search.js +9 -4
  381. package/plugins/search/search.mjs +9 -4
  382. package/plugins/touchScroll/touchScroll.js +27 -21
  383. package/plugins/touchScroll/touchScroll.mjs +27 -21
  384. package/plugins/trimRows/trimRows.js +9 -4
  385. package/plugins/trimRows/trimRows.mjs +9 -4
  386. package/plugins/undoRedo/undoRedo.js +53 -47
  387. package/plugins/undoRedo/undoRedo.mjs +53 -46
  388. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
  389. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
  390. package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
  391. package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
  392. package/renderers/index.d.ts +4 -1
  393. package/renderers/index.js +6 -0
  394. package/renderers/index.mjs +3 -1
  395. package/renderers/numericRenderer/numericRenderer.js +1 -0
  396. package/renderers/numericRenderer/numericRenderer.mjs +1 -0
  397. package/renderers/timeRenderer/index.d.ts +1 -0
  398. package/renderers/timeRenderer/index.js +9 -0
  399. package/renderers/timeRenderer/index.mjs +1 -0
  400. package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
  401. package/renderers/timeRenderer/timeRenderer.js +31 -0
  402. package/renderers/timeRenderer/timeRenderer.mjs +20 -0
  403. package/selection/highlight/visualSelection.js +94 -220
  404. package/selection/highlight/visualSelection.mjs +91 -213
  405. package/selection/mouseEventHandler.js +15 -10
  406. package/selection/mouseEventHandler.mjs +15 -9
  407. package/selection/range.js +4 -5
  408. package/selection/range.mjs +4 -5
  409. package/selection/selection.js +35 -22
  410. package/selection/selection.mjs +35 -20
  411. package/selection/transformation.js +4 -6
  412. package/selection/transformation.mjs +4 -5
  413. package/settings.d.ts +3 -1
  414. package/shortcuts/context.d.ts +20 -0
  415. package/shortcuts/context.js +296 -0
  416. package/shortcuts/context.mjs +268 -0
  417. package/shortcuts/index.d.ts +1 -0
  418. package/shortcuts/index.js +8 -0
  419. package/shortcuts/index.mjs +1 -0
  420. package/shortcuts/keyObserver.js +67 -0
  421. package/shortcuts/keyObserver.mjs +58 -0
  422. package/shortcuts/manager.d.ts +10 -0
  423. package/shortcuts/manager.js +185 -0
  424. package/shortcuts/manager.mjs +176 -0
  425. package/shortcuts/recorder.js +192 -0
  426. package/shortcuts/recorder.mjs +180 -0
  427. package/shortcuts/utils.js +77 -0
  428. package/shortcuts/utils.mjs +54 -0
  429. package/tableView.js +164 -84
  430. package/tableView.mjs +164 -74
  431. package/translations/changesObservable/observer.js +0 -1
  432. package/translations/changesObservable/observer.mjs +0 -1
  433. package/translations/indexMapper.d.ts +3 -1
  434. package/translations/indexMapper.js +89 -11
  435. package/translations/indexMapper.mjs +91 -20
  436. package/translations/mapCollections/aggregatedCollection.js +2 -2
  437. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  438. package/translations/maps/hidingMap.js +4 -2
  439. package/translations/maps/hidingMap.mjs +4 -2
  440. package/translations/maps/indexMap.js +2 -0
  441. package/translations/maps/indexMap.mjs +2 -0
  442. package/translations/maps/indexesSequence.js +5 -3
  443. package/translations/maps/indexesSequence.mjs +5 -3
  444. package/translations/maps/linkedPhysicalIndexToValueMap.js +5 -3
  445. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +5 -3
  446. package/translations/maps/physicalIndexToValueMap.js +5 -3
  447. package/translations/maps/physicalIndexToValueMap.mjs +5 -3
  448. package/translations/maps/trimmingMap.js +4 -2
  449. package/translations/maps/trimmingMap.mjs +4 -2
  450. package/utils/dataStructures/uniqueMap.js +14 -1
  451. package/utils/dataStructures/uniqueMap.mjs +14 -1
  452. package/utils/dataStructures/uniqueSet.js +9 -0
  453. package/utils/dataStructures/uniqueSet.mjs +9 -0
  454. package/utils/ghostTable.js +1 -1
  455. package/utils/ghostTable.mjs +1 -1
  456. package/3rdparty/walkontable/src/core.js +0 -309
  457. package/3rdparty/walkontable/src/core.mjs +0 -293
  458. package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
  459. package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
  460. package/utils/keyStateObserver.js +0 -121
  461. package/utils/keyStateObserver.mjs +0 -103
@@ -12,22 +12,6 @@ import "core-js/modules/es.symbol.iterator.js";
12
12
  import "core-js/modules/es.array.iterator.js";
13
13
  import "core-js/modules/es.string.iterator.js";
14
14
  import "core-js/modules/web.dom-collections.iterator.js";
15
- import "core-js/modules/es.array.slice.js";
16
- import "core-js/modules/es.function.name.js";
17
- import "core-js/modules/es.array.from.js";
18
- import "core-js/modules/es.regexp.exec.js";
19
-
20
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
21
-
22
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
-
24
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
-
26
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
27
-
28
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
29
-
30
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
31
15
 
32
16
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
33
17
 
@@ -35,13 +19,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
35
19
 
36
20
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
37
21
 
38
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
22
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
39
23
 
40
24
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
41
25
 
42
26
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
43
27
 
44
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
28
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
45
29
 
46
30
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
47
31
 
@@ -51,26 +35,30 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
51
35
 
52
36
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
53
37
 
54
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
38
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
39
+
40
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
55
41
 
56
- import { Selection, CellCoords, CellRange } from "./../../3rdparty/walkontable/src/index.mjs";
42
+ import { Selection } from "./../../3rdparty/walkontable/src/index.mjs";
57
43
 
58
44
  var VisualSelection = /*#__PURE__*/function (_Selection) {
59
45
  _inherits(VisualSelection, _Selection);
60
46
 
61
47
  var _super = _createSuper(VisualSelection);
62
48
 
49
+ /**
50
+ * Range of selection visually. Visual representation may have representation in a rendered selection.
51
+ *
52
+ * @type {null|CellRange}
53
+ */
63
54
  function VisualSelection(settings, visualCellRange) {
64
55
  var _this;
65
56
 
66
57
  _classCallCheck(this, VisualSelection);
67
58
 
68
59
  _this = _super.call(this, settings, null);
69
- /**
70
- * Range of selection visually. Visual representation may have representation in a rendered selection.
71
- *
72
- * @type {null|CellRange}
73
- */
60
+
61
+ _defineProperty(_assertThisInitialized(_this), "visualCellRange", null);
74
62
 
75
63
  _this.visualCellRange = visualCellRange || null;
76
64
 
@@ -90,7 +78,7 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
90
78
  key: "add",
91
79
  value: function add(coords) {
92
80
  if (this.visualCellRange === null) {
93
- this.visualCellRange = new CellRange(coords);
81
+ this.visualCellRange = this.settings.createCellRange(coords);
94
82
  } else {
95
83
  this.visualCellRange.expand(coords);
96
84
  }
@@ -110,146 +98,95 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
110
98
  return _get(_getPrototypeOf(VisualSelection.prototype), "clear", this).call(this);
111
99
  }
112
100
  /**
113
- * Search for the first visible coordinates in the range as range may start and/or end with the hidden index.
101
+ * Trims the passed cell range object by removing all coordinates that points to the hidden rows
102
+ * or columns. The result is a new cell range object that points only to the visible indexes or `null`.
114
103
  *
115
104
  * @private
116
- * @param {CellCoords} startCoords Visual start coordinates for the range. Starting point for finding destination coordinates
117
- * with visible coordinates (we are going from the starting coordinates to the end coordinates until the criteria are met).
118
- * @param {CellCoords} endCoords Visual end coordinates for the range.
119
- * @param {number} incrementByRow We are searching for a next visible rows by increasing (to be precise, or decreasing) indexes.
120
- * This variable represent indexes shift. We are looking for an index:
121
- * - for rows: from the left to the right (increasing indexes, then variable should have value 1) or
122
- * other way around (decreasing indexes, then variable should have the value -1)
123
- * - for columns: from the top to the bottom (increasing indexes, then variable should have value 1)
124
- * or other way around (decreasing indexes, then variable should have the value -1).
125
- * @param {number} incrementByColumn As above, just indexes shift for columns.
126
- * @returns {null|CellCoords} Visual cell coordinates.
105
+ * @param {CellRange} cellRange Cells range object to be trimmed.
106
+ * @returns {CellRange} Visual non-hidden cells range coordinates.
127
107
  */
128
108
 
129
109
  }, {
130
- key: "findVisibleCoordsInRange",
131
- value: function findVisibleCoordsInRange(startCoords, endCoords, incrementByRow) {
132
- var incrementByColumn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : incrementByRow;
133
- var nextVisibleRow = this.findVisibleCoordsInRowsRange(startCoords.row, endCoords.row, incrementByRow); // There are no more visual rows in the range.
134
-
135
- if (nextVisibleRow === null) {
110
+ key: "trimToVisibleCellsRangeOnly",
111
+ value: function trimToVisibleCellsRangeOnly(_ref) {
112
+ var from = _ref.from,
113
+ to = _ref.to;
114
+ var visibleFromCoords = this.getNearestNotHiddenCoords(from, 1);
115
+ var visibleToCoords = this.getNearestNotHiddenCoords(to, -1);
116
+
117
+ if (visibleFromCoords === null || visibleToCoords === null) {
136
118
  return null;
137
119
  }
138
120
 
139
- var nextVisibleColumn = this.findVisibleCoordsInColumnsRange(startCoords.col, endCoords.col, incrementByColumn); // There are no more visual columns in the range.
121
+ if (visibleFromCoords.row > visibleToCoords.row || visibleFromCoords.col > visibleToCoords.col) {
122
+ var isHeaderTypeSelection = this.settings.type === 'header' || this.settings.type === 'active-header';
140
123
 
141
- if (nextVisibleColumn === null) {
142
- return null;
124
+ if (!isHeaderTypeSelection) {
125
+ return null;
126
+ }
127
+
128
+ visibleFromCoords = from;
129
+ visibleToCoords = to;
143
130
  }
144
131
 
145
- return new CellCoords(nextVisibleRow, nextVisibleColumn);
132
+ return this.settings.createCellRange(visibleFromCoords, visibleFromCoords, visibleToCoords);
146
133
  }
147
134
  /**
148
- * Searches the nearest visible row index, which is not hidden (is renderable).
135
+ * Gets nearest coordinates that points to the visible row and column indexes. If there are no visible
136
+ * rows and/or columns the `null` value is returned.
149
137
  *
150
138
  * @private
151
- * @param {CellCoords} startVisibleRow Visual row index which starts the range. Starting point for finding
152
- * destination coordinates with visible coordinates (we are going from the starting coordinates to the end
153
- * coordinates until the criteria are met).
154
- * @param {CellCoords} endVisibleRow Visual row index which ends the range.
155
- * @param {number} incrementBy We are searching for a next visible rows by increasing (to be precise, or decreasing)
156
- * indexes. This variable represent indexes shift. From the left to the right (increasing indexes, then variable
157
- * should have value 1) or other way around (decreasing indexes, then variable should have the value -1).
158
- * @returns {number|null} The visual row index.
139
+ * @param {CellCoords} coords The coords object as starting point for finding the nearest visible coordinates.
140
+ * @param {1|-1} rowSearchDirection The search direction. For value 1, it means searching from top to bottom for
141
+ * rows and from left to right for columns. For -1, it is the other way around.
142
+ * @param {1|-1} columnSearchDirection The same as above but for rows.
143
+ * @returns {CellCoords|null} Visual cell coordinates.
159
144
  */
160
145
 
161
146
  }, {
162
- key: "findVisibleCoordsInRowsRange",
163
- value: function findVisibleCoordsInRowsRange(startVisibleRow, endVisibleRow, incrementBy) {
164
- var _this$settings$visual = this.settings.visualToRenderableCoords({
165
- row: startVisibleRow,
166
- col: -1
167
- }),
168
- startRowRenderable = _this$settings$visual.row; // There are no more visual rows in the range.
169
-
147
+ key: "getNearestNotHiddenCoords",
148
+ value: function getNearestNotHiddenCoords(coords, rowSearchDirection) {
149
+ var columnSearchDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rowSearchDirection;
150
+ var nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper(), coords.row, rowSearchDirection); // There are no more visual rows in the range.
170
151
 
171
- if (endVisibleRow === startVisibleRow && startRowRenderable === null) {
152
+ if (nextVisibleRow === null) {
172
153
  return null;
173
- } // We are looking for a next visible row in the range.
174
-
154
+ }
175
155
 
176
- if (startRowRenderable === null) {
177
- return this.findVisibleCoordsInRowsRange(startVisibleRow + incrementBy, endVisibleRow, incrementBy);
178
- } // We found visible row index in the range.
156
+ var nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper(), coords.col, columnSearchDirection); // There are no more visual columns in the range.
179
157
 
158
+ if (nextVisibleColumn === null) {
159
+ return null;
160
+ }
180
161
 
181
- return startVisibleRow;
162
+ return this.settings.createCellCoords(nextVisibleRow, nextVisibleColumn);
182
163
  }
183
164
  /**
184
- * Searches the nearest visible column index, which is not hidden (is renderable).
165
+ * Gets nearest visual index. If there are no visible rows or columns the `null` value is returned.
185
166
  *
186
167
  * @private
187
- * @param {CellCoords} startVisibleColumn Visual column index which starts the range. Starting point for finding
188
- * destination coordinates with visible coordinates (we are going from the starting coordinates to the end
189
- * coordinates until the criteria are met).
190
- * @param {CellCoords} endVisibleColumn Visual column index which ends the range.
191
- * @param {number} incrementBy We are searching for a next visible columns by increasing (to be precise, or decreasing)
192
- * indexes. This variable represent indexes shift. From the top to the bottom (increasing indexes, then variable
193
- * should have value 1) or other way around (decreasing indexes, then variable should have the value -1).
194
- * @returns {number|null} The visual column index.
168
+ * @param {IndexMapper} indexMapper The IndexMapper instance for specific axis.
169
+ * @param {number} visualIndex The index as starting point for finding the nearest visible index.
170
+ * @param {1|-1} searchDirection The search direction. For value 1, it means searching from top to bottom for
171
+ * rows and from left to right for columns. For -1, it is the other way around.
172
+ * @returns {number|null} Visual row/column index.
195
173
  */
196
174
 
197
175
  }, {
198
- key: "findVisibleCoordsInColumnsRange",
199
- value: function findVisibleCoordsInColumnsRange(startVisibleColumn, endVisibleColumn, incrementBy) {
200
- var _this$settings$visual2 = this.settings.visualToRenderableCoords({
201
- row: -1,
202
- col: startVisibleColumn
203
- }),
204
- startColumnRenderable = _this$settings$visual2.col; // There are no more visual columns in the range.
205
-
206
-
207
- if (endVisibleColumn === startVisibleColumn && startColumnRenderable === null) {
208
- return null;
209
- } // We are looking for a next visible column in the range.
210
-
211
-
212
- if (startColumnRenderable === null) {
213
- return this.findVisibleCoordsInColumnsRange(startVisibleColumn + incrementBy, endVisibleColumn, incrementBy);
214
- } // We found visible column index in the range.
215
-
176
+ key: "getNearestNotHiddenIndex",
177
+ value: function getNearestNotHiddenIndex(indexMapper, visualIndex, searchDirection) {
178
+ if (visualIndex < 0) {
179
+ return visualIndex;
180
+ }
216
181
 
217
- return startVisibleColumn;
218
- }
219
- /**
220
- * Searches the nearest visible column and row index, which is not hidden (is renderable). If one
221
- * of the axes' range is entirely hidden, then created CellCoords object will hold the `null` value
222
- * under a specific axis. For example, when we select the hidden column, then the calculated `col`
223
- * prop will be `null`. In that case, rows are calculated further (regardless of the column result)
224
- * to make rows header highlightable.
225
- *
226
- * @private
227
- * @param {CellCoords} visualFromCoords Visual start coordinates for the range. Starting point for finding destination coordinates
228
- * with visible coordinates (we are going from the starting coordinates to the end coordinates until the criteria are met).
229
- * @param {CellCoords} visualToCoords Visual end coordinates for the range.
230
- * @param {number} incrementByRow We are searching for a next visible rows by increasing (to be precise, or decreasing) indexes.
231
- * This variable represent indexes shift. We are looking for an index:
232
- * - for rows: from the left to the right (increasing indexes, then variable should have value 1) or
233
- * other way around (decreasing indexes, then variable should have the value -1)
234
- * - for columns: from the top to the bottom (increasing indexes, then variable should have value 1)
235
- * or other way around (decreasing indexes, then variable should have the value -1).
236
- * @param {number} incrementByColumn As above, just indexes shift for columns.
237
- * @returns {CellCoords[]|null} Visual cell coordinates.
238
- */
182
+ var nearestVisualIndex = indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
183
+ var isHeaderSelectionType = this.settings.type === 'header' || this.settings.type === 'active-header';
239
184
 
240
- }, {
241
- key: "findVisibleHeaderRange",
242
- value: function findVisibleHeaderRange(visualFromCoords, visualToCoords, incrementByRow, incrementByColumn) {
243
- var fromRangeVisualRow = this.findVisibleCoordsInRowsRange(visualFromCoords.row, visualToCoords.row, incrementByRow);
244
- var toRangeVisualRow = this.findVisibleCoordsInRowsRange(visualToCoords.row, visualFromCoords.row, -incrementByRow);
245
- var fromRangeVisualColumn = this.findVisibleCoordsInColumnsRange(visualFromCoords.col, visualToCoords.col, incrementByColumn);
246
- var toRangeVisualColumn = this.findVisibleCoordsInColumnsRange(visualToCoords.col, visualFromCoords.col, -incrementByColumn); // All rows and columns ranges are hidden.
247
-
248
- if (fromRangeVisualRow === null && toRangeVisualRow === null && fromRangeVisualColumn === null && toRangeVisualColumn === null) {
249
- return null;
185
+ if (isHeaderSelectionType && nearestVisualIndex === null) {
186
+ return -1;
250
187
  }
251
188
 
252
- return [new CellCoords(fromRangeVisualRow, fromRangeVisualColumn), new CellCoords(toRangeVisualRow, toRangeVisualColumn)];
189
+ return nearestVisualIndex;
253
190
  }
254
191
  /**
255
192
  * Override internally stored visual indexes added by the Selection's `add` function. It should be executed
@@ -266,39 +203,18 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
266
203
  return this;
267
204
  }
268
205
 
269
- var _this$visualCellRange = this.visualCellRange,
270
- visualFromCoords = _this$visualCellRange.from,
271
- visualToCoords = _this$visualCellRange.to; // We may move in two different directions while searching for visible rows and visible columns.
206
+ var trimmedCellRange = this.trimToVisibleCellsRangeOnly(this.visualCellRange); // There is no visual start point (and also visual end point) in the range.
272
207
 
273
- var incrementByRow = this.getRowSearchDirection(this.visualCellRange);
274
- var incrementByColumn = this.getColumnSearchDirection(this.visualCellRange);
275
- var fromRangeVisual = this.findVisibleCoordsInRange(visualFromCoords, visualToCoords, incrementByRow, incrementByColumn);
276
- var toRangeVisual = this.findVisibleCoordsInRange(visualToCoords, visualFromCoords, -incrementByRow, -incrementByColumn); // There is no visual start point (and also visual end point) in the range.
277
- // We are looking for the first visible cell in a broader range.
278
-
279
- if (fromRangeVisual === null || toRangeVisual === null) {
280
- var isHeaderSelectionType = this.settings.type === 'header';
281
- var cellRange = null; // For the "header" selection type, find rows and column indexes, which should be
282
- // highlighted, although one of the axes is completely hidden.
283
-
284
- if (isHeaderSelectionType) {
285
- var _this$findVisibleHead = this.findVisibleHeaderRange(visualFromCoords, visualToCoords, incrementByRow, incrementByColumn),
286
- _this$findVisibleHead2 = _slicedToArray(_this$findVisibleHead, 2),
287
- fromRangeVisualHeader = _this$findVisibleHead2[0],
288
- toRangeVisualHeader = _this$findVisibleHead2[1];
289
-
290
- cellRange = this.createRenderableCellRange(fromRangeVisualHeader, toRangeVisualHeader);
291
- }
292
-
293
- this.cellRange = cellRange;
208
+ if (trimmedCellRange === null) {
209
+ this.cellRange = null;
294
210
  } else {
295
- this.cellRange = this.createRenderableCellRange(fromRangeVisual, toRangeVisual);
211
+ this.cellRange = this.createRenderableCellRange(trimmedCellRange.from, trimmedCellRange.to);
296
212
  }
297
213
 
298
214
  return this;
299
215
  }
300
216
  /**
301
- * Some selection may be a part of broader cell range. This function adjusting coordinates of current selection
217
+ * Some selection may be a part of broader cell range. This function sync coordinates of current selection
302
218
  * and the broader cell range when needed (current selection can't be presented visually).
303
219
  *
304
220
  * @param {CellRange} broaderCellRange Visual range. Actual cell range may be contained in the broader cell range.
@@ -310,20 +226,17 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
310
226
  */
311
227
 
312
228
  }, {
313
- key: "adjustCoordinates",
314
- value: function adjustCoordinates(broaderCellRange) {
315
- // We may move in two different directions while searching for visible rows and visible columns.
316
- var incrementByRow = this.getRowSearchDirection(broaderCellRange);
317
- var incrementByColumn = this.getColumnSearchDirection(broaderCellRange);
318
- var normFromCoords = broaderCellRange.from.clone().normalize();
319
- var normToCoords = broaderCellRange.to.clone().normalize();
320
- var singleCellRangeVisual = this.findVisibleCoordsInRange(normFromCoords, normToCoords, incrementByRow, incrementByColumn);
321
-
322
- if (singleCellRangeVisual !== null) {
229
+ key: "syncWith",
230
+ value: function syncWith(broaderCellRange) {
231
+ var rowDirection = broaderCellRange.getVerticalDirection() === 'N-S' ? 1 : -1;
232
+ var columnDirection = broaderCellRange.getHorizontalDirection() === 'W-E' ? 1 : -1;
233
+ var singleCellRangeVisual = this.getNearestNotHiddenCoords(broaderCellRange.from.clone().normalize(), rowDirection, columnDirection);
234
+
235
+ if (singleCellRangeVisual !== null && broaderCellRange.overlaps(singleCellRangeVisual)) {
323
236
  // We can't show selection visually now, but we found fist visible range in the broader cell range.
324
237
  if (this.cellRange === null) {
325
238
  var singleCellRangeRenderable = this.settings.visualToRenderableCoords(singleCellRangeVisual);
326
- this.cellRange = new CellRange(singleCellRangeRenderable);
239
+ this.cellRange = this.settings.createCellRange(singleCellRangeRenderable);
327
240
  } // We set new highlight as it might change (for example, when showing/hiding some cells from the broader selection range)
328
241
  // TODO: It is also handled by the `MergeCells` plugin while adjusting already modified coordinates. Should it?
329
242
 
@@ -353,12 +266,13 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
353
266
  to = _this$cellRange.to;
354
267
  var isRowUndefined = from.row === null || to.row === null;
355
268
  var isColumnUndefined = from.col === null || to.col === null;
356
- var topLeftCorner = new CellCoords(isRowUndefined ? null : Math.min(from.row, to.row), isColumnUndefined ? null : Math.min(from.col, to.col));
357
- var bottomRightCorner = new CellCoords(isRowUndefined ? null : Math.max(from.row, to.row), isColumnUndefined ? null : Math.max(from.col, to.col));
269
+ var topLeftCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.min(from.row, to.row), isColumnUndefined ? null : Math.min(from.col, to.col));
270
+ var bottomRightCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.max(from.row, to.row), isColumnUndefined ? null : Math.max(from.col, to.col));
358
271
  return [topLeftCorner.row, topLeftCorner.col, bottomRightCorner.row, bottomRightCorner.col];
359
272
  }
360
273
  /**
361
- * Returns the top left (TL) and bottom right (BR) selection coordinates (visual indexes).
274
+ * Returns the top left (or top right in RTL) and bottom right (or bottom left in RTL) selection
275
+ * coordinates (visual indexes).
362
276
  *
363
277
  * @returns {Array} Returns array of coordinates for example `[1, 1, 5, 5]`.
364
278
  */
@@ -366,16 +280,16 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
366
280
  }, {
367
281
  key: "getVisualCorners",
368
282
  value: function getVisualCorners() {
369
- var topLeft = this.settings.renderableToVisualCoords(this.cellRange.getTopLeftCorner());
370
- var bottomRight = this.settings.renderableToVisualCoords(this.cellRange.getBottomRightCorner());
371
- return [topLeft.row, topLeft.col, bottomRight.row, bottomRight.col];
283
+ var topStart = this.settings.renderableToVisualCoords(this.cellRange.getTopStartCorner());
284
+ var bottomEnd = this.settings.renderableToVisualCoords(this.cellRange.getBottomEndCorner());
285
+ return [topStart.row, topStart.col, bottomEnd.row, bottomEnd.col];
372
286
  }
373
287
  /**
374
288
  * Creates a new CellRange object based on visual coordinates which before object creation are
375
289
  * translated to renderable indexes.
376
290
  *
377
291
  * @param {CellCoords} visualFromCoords The CellCoords object which contains coordinates that
378
- * points to the begining of the selection.
292
+ * points to the beginning of the selection.
379
293
  * @param {CellCoords} visualToCoords The CellCoords object which contains coordinates that
380
294
  * points to the end of the selection.
381
295
  * @returns {CellRange}
@@ -386,43 +300,7 @@ var VisualSelection = /*#__PURE__*/function (_Selection) {
386
300
  value: function createRenderableCellRange(visualFromCoords, visualToCoords) {
387
301
  var renderableFromCoords = this.settings.visualToRenderableCoords(visualFromCoords);
388
302
  var renderableToCoords = this.settings.visualToRenderableCoords(visualToCoords);
389
- return new CellRange(renderableFromCoords, renderableFromCoords, renderableToCoords);
390
- }
391
- /**
392
- * It returns rows shift needed for searching visual row.
393
- *
394
- * @private
395
- * @param {CellRange} cellRange Selection range.
396
- * @returns {number} Rows shift. It return 1 when we should increase indexes (moving from the top to the bottom) or
397
- * -1 when we should decrease indexes (moving other way around).
398
- */
399
-
400
- }, {
401
- key: "getRowSearchDirection",
402
- value: function getRowSearchDirection(cellRange) {
403
- if (cellRange.from.row < cellRange.to.row) {
404
- return 1; // Increasing row indexes.
405
- }
406
-
407
- return -1; // Decreasing row indexes.
408
- }
409
- /**
410
- * It returns columns shift needed for searching visual column.
411
- *
412
- * @private
413
- * @param {CellRange} cellRange Selection range.
414
- * @returns {number} Columns shift. It return 1 when we should increase indexes (moving from the left to the right) or
415
- * -1 when we should decrease indexes (moving other way around).
416
- */
417
-
418
- }, {
419
- key: "getColumnSearchDirection",
420
- value: function getColumnSearchDirection(cellRange) {
421
- if (cellRange.from.col < cellRange.to.col) {
422
- return 1; // Increasing column indexes.
423
- }
424
-
425
- return -1; // Decreasing column indexes.
303
+ return this.settings.createCellRange(renderableFromCoords, renderableFromCoords, renderableToCoords);
426
304
  }
427
305
  }]);
428
306
 
@@ -17,8 +17,6 @@ require("core-js/modules/web.dom-collections.iterator.js");
17
17
 
18
18
  var _event = require("./../helpers/dom/event");
19
19
 
20
- var _src = require("./../3rdparty/walkontable/src");
21
-
22
20
  /**
23
21
  * MouseDown handler.
24
22
  *
@@ -30,6 +28,7 @@ var _src = require("./../3rdparty/walkontable/src");
30
28
  * @param {Selection} options.selection The Selection class instance.
31
29
  * @param {object} options.controller An object with keys `row`, `column`, `cell` which indicate what
32
30
  * operation will be performed in later selection stages.
31
+ * @param {Function} options.cellCoordsFactory The function factory for CellCoords objects.
33
32
  */
34
33
  function mouseDown(_ref) {
35
34
  var isShiftKey = _ref.isShiftKey,
@@ -37,7 +36,8 @@ function mouseDown(_ref) {
37
36
  isRightClick = _ref.isRightClick,
38
37
  coords = _ref.coords,
39
38
  selection = _ref.selection,
40
- controller = _ref.controller;
39
+ controller = _ref.controller,
40
+ cellCoordsFactory = _ref.cellCoordsFactory;
41
41
  var currentSelection = selection.isSelected() ? selection.getSelectedRange().current() : null;
42
42
  var selectedCorner = selection.isSelectedByCorner();
43
43
  var selectedRow = selection.isSelectedByRowHeader();
@@ -46,11 +46,11 @@ function mouseDown(_ref) {
46
46
  if (coords.row >= 0 && coords.col >= 0 && !controller.cell) {
47
47
  selection.setRangeEnd(coords);
48
48
  } else if ((selectedCorner || selectedRow) && coords.row >= 0 && coords.col >= 0 && !controller.cell) {
49
- selection.setRangeEnd(new _src.CellCoords(coords.row, coords.col));
49
+ selection.setRangeEnd(cellCoordsFactory(coords.row, coords.col));
50
50
  } else if (selectedCorner && coords.row < 0 && !controller.column) {
51
- selection.setRangeEnd(new _src.CellCoords(currentSelection.to.row, coords.col));
51
+ selection.setRangeEnd(cellCoordsFactory(currentSelection.to.row, coords.col));
52
52
  } else if (selectedRow && coords.col < 0 && !controller.row) {
53
- selection.setRangeEnd(new _src.CellCoords(coords.row, currentSelection.to.col));
53
+ selection.setRangeEnd(cellCoordsFactory(coords.row, currentSelection.to.col));
54
54
  } else if ((!selectedCorner && !selectedRow && coords.col < 0 || selectedCorner && coords.col < 0) && !controller.row) {
55
55
  selection.selectRows(Math.max(currentSelection.from.row, 0), coords.row, coords.col);
56
56
  } else if ((!selectedCorner && !selectedRow && coords.row < 0 || selectedRow && coords.row < 0) && !controller.column) {
@@ -87,6 +87,7 @@ function mouseDown(_ref) {
87
87
  * @param {Selection} options.selection The Selection class instance.
88
88
  * @param {object} options.controller An object with keys `row`, `column`, `cell` which indicate what
89
89
  * operation will be performed in later selection stages.
90
+ * @param {Function} options.cellCoordsFactory The function factory for CellCoords objects.
90
91
  */
91
92
 
92
93
 
@@ -94,7 +95,8 @@ function mouseOver(_ref2) {
94
95
  var isLeftClick = _ref2.isLeftClick,
95
96
  coords = _ref2.coords,
96
97
  selection = _ref2.selection,
97
- controller = _ref2.controller;
98
+ controller = _ref2.controller,
99
+ cellCoordsFactory = _ref2.cellCoordsFactory;
98
100
 
99
101
  if (!isLeftClick) {
100
102
  return;
@@ -106,9 +108,9 @@ function mouseOver(_ref2) {
106
108
  var countRows = selection.tableProps.countRows();
107
109
 
108
110
  if (selectedColumn && !controller.column) {
109
- selection.setRangeEnd(new _src.CellCoords(countRows - 1, coords.col));
111
+ selection.setRangeEnd(cellCoordsFactory(countRows - 1, coords.col));
110
112
  } else if (selectedRow && !controller.row) {
111
- selection.setRangeEnd(new _src.CellCoords(coords.row, countCols - 1));
113
+ selection.setRangeEnd(cellCoordsFactory(coords.row, countCols - 1));
112
114
  } else if (!controller.cell) {
113
115
  selection.setRangeEnd(coords);
114
116
  }
@@ -124,16 +126,19 @@ var handlers = new Map([['mousedown', mouseDown], ['mouseover', mouseOver], ['to
124
126
  * @param {Selection} options.selection The Selection class instance.
125
127
  * @param {object} options.controller An object with keys `row`, `column`, `cell` which indicate what
126
128
  * operation will be performed in later selection stages.
129
+ * @param {Function} options.cellCoordsFactory The function factory for CellCoords objects.
127
130
  */
128
131
 
129
132
  function handleMouseEvent(event, _ref3) {
130
133
  var coords = _ref3.coords,
131
134
  selection = _ref3.selection,
132
- controller = _ref3.controller;
135
+ controller = _ref3.controller,
136
+ cellCoordsFactory = _ref3.cellCoordsFactory;
133
137
  handlers.get(event.type)({
134
138
  coords: coords,
135
139
  selection: selection,
136
140
  controller: controller,
141
+ cellCoordsFactory: cellCoordsFactory,
137
142
  isShiftKey: event.shiftKey,
138
143
  isLeftClick: (0, _event.isLeftClick)(event) || event.type === 'touchstart',
139
144
  isRightClick: (0, _event.isRightClick)(event)
@@ -4,7 +4,6 @@ import "core-js/modules/es.object.to-string.js";
4
4
  import "core-js/modules/es.string.iterator.js";
5
5
  import "core-js/modules/web.dom-collections.iterator.js";
6
6
  import { isRightClick as isRightClickEvent, isLeftClick as isLeftClickEvent } from "./../helpers/dom/event.mjs";
7
- import { CellCoords } from "./../3rdparty/walkontable/src/index.mjs";
8
7
  /**
9
8
  * MouseDown handler.
10
9
  *
@@ -16,6 +15,7 @@ import { CellCoords } from "./../3rdparty/walkontable/src/index.mjs";
16
15
  * @param {Selection} options.selection The Selection class instance.
17
16
  * @param {object} options.controller An object with keys `row`, `column`, `cell` which indicate what
18
17
  * operation will be performed in later selection stages.
18
+ * @param {Function} options.cellCoordsFactory The function factory for CellCoords objects.
19
19
  */
20
20
 
21
21
  export function mouseDown(_ref) {
@@ -24,7 +24,8 @@ export function mouseDown(_ref) {
24
24
  isRightClick = _ref.isRightClick,
25
25
  coords = _ref.coords,
26
26
  selection = _ref.selection,
27
- controller = _ref.controller;
27
+ controller = _ref.controller,
28
+ cellCoordsFactory = _ref.cellCoordsFactory;
28
29
  var currentSelection = selection.isSelected() ? selection.getSelectedRange().current() : null;
29
30
  var selectedCorner = selection.isSelectedByCorner();
30
31
  var selectedRow = selection.isSelectedByRowHeader();
@@ -33,11 +34,11 @@ export function mouseDown(_ref) {
33
34
  if (coords.row >= 0 && coords.col >= 0 && !controller.cell) {
34
35
  selection.setRangeEnd(coords);
35
36
  } else if ((selectedCorner || selectedRow) && coords.row >= 0 && coords.col >= 0 && !controller.cell) {
36
- selection.setRangeEnd(new CellCoords(coords.row, coords.col));
37
+ selection.setRangeEnd(cellCoordsFactory(coords.row, coords.col));
37
38
  } else if (selectedCorner && coords.row < 0 && !controller.column) {
38
- selection.setRangeEnd(new CellCoords(currentSelection.to.row, coords.col));
39
+ selection.setRangeEnd(cellCoordsFactory(currentSelection.to.row, coords.col));
39
40
  } else if (selectedRow && coords.col < 0 && !controller.row) {
40
- selection.setRangeEnd(new CellCoords(coords.row, currentSelection.to.col));
41
+ selection.setRangeEnd(cellCoordsFactory(coords.row, currentSelection.to.col));
41
42
  } else if ((!selectedCorner && !selectedRow && coords.col < 0 || selectedCorner && coords.col < 0) && !controller.row) {
42
43
  selection.selectRows(Math.max(currentSelection.from.row, 0), coords.row, coords.col);
43
44
  } else if ((!selectedCorner && !selectedRow && coords.row < 0 || selectedRow && coords.row < 0) && !controller.column) {
@@ -74,13 +75,15 @@ export function mouseDown(_ref) {
74
75
  * @param {Selection} options.selection The Selection class instance.
75
76
  * @param {object} options.controller An object with keys `row`, `column`, `cell` which indicate what
76
77
  * operation will be performed in later selection stages.
78
+ * @param {Function} options.cellCoordsFactory The function factory for CellCoords objects.
77
79
  */
78
80
 
79
81
  export function mouseOver(_ref2) {
80
82
  var isLeftClick = _ref2.isLeftClick,
81
83
  coords = _ref2.coords,
82
84
  selection = _ref2.selection,
83
- controller = _ref2.controller;
85
+ controller = _ref2.controller,
86
+ cellCoordsFactory = _ref2.cellCoordsFactory;
84
87
 
85
88
  if (!isLeftClick) {
86
89
  return;
@@ -92,9 +95,9 @@ export function mouseOver(_ref2) {
92
95
  var countRows = selection.tableProps.countRows();
93
96
 
94
97
  if (selectedColumn && !controller.column) {
95
- selection.setRangeEnd(new CellCoords(countRows - 1, coords.col));
98
+ selection.setRangeEnd(cellCoordsFactory(countRows - 1, coords.col));
96
99
  } else if (selectedRow && !controller.row) {
97
- selection.setRangeEnd(new CellCoords(coords.row, countCols - 1));
100
+ selection.setRangeEnd(cellCoordsFactory(coords.row, countCols - 1));
98
101
  } else if (!controller.cell) {
99
102
  selection.setRangeEnd(coords);
100
103
  }
@@ -109,16 +112,19 @@ var handlers = new Map([['mousedown', mouseDown], ['mouseover', mouseOver], ['to
109
112
  * @param {Selection} options.selection The Selection class instance.
110
113
  * @param {object} options.controller An object with keys `row`, `column`, `cell` which indicate what
111
114
  * operation will be performed in later selection stages.
115
+ * @param {Function} options.cellCoordsFactory The function factory for CellCoords objects.
112
116
  */
113
117
 
114
118
  export function handleMouseEvent(event, _ref3) {
115
119
  var coords = _ref3.coords,
116
120
  selection = _ref3.selection,
117
- controller = _ref3.controller;
121
+ controller = _ref3.controller,
122
+ cellCoordsFactory = _ref3.cellCoordsFactory;
118
123
  handlers.get(event.type)({
119
124
  coords: coords,
120
125
  selection: selection,
121
126
  controller: controller,
127
+ cellCoordsFactory: cellCoordsFactory,
122
128
  isShiftKey: event.shiftKey,
123
129
  isLeftClick: isLeftClickEvent(event) || event.type === 'touchstart',
124
130
  isRightClick: isRightClickEvent(event)