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
@@ -8,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
8
8
 
9
9
  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); }
10
10
 
11
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
11
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
12
 
13
13
  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); }; }
14
14
 
@@ -18,7 +18,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
18
18
 
19
19
  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; } }
20
20
 
21
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
21
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22
22
 
23
23
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
24
24
 
@@ -65,8 +65,8 @@ import Hooks from "../../pluginHooks.mjs";
65
65
  import { arrayMap, arrayEach } from "../../helpers/array.mjs";
66
66
  import { rangeEach } from "../../helpers/number.mjs";
67
67
  import { inherit, deepClone } from "../../helpers/object.mjs";
68
- import { stopImmediatePropagation, isImmediatePropagationStopped } from "../../helpers/dom/event.mjs";
69
68
  import { align } from "../contextMenu/utils.mjs";
69
+ var SHORTCUTS_GROUP = 'undoRedo';
70
70
  export var PLUGIN_KEY = 'undoRedo';
71
71
  /**
72
72
  * @description
@@ -172,7 +172,7 @@ function UndoRedo(instance) {
172
172
 
173
173
  var columnsMap = instance.columnIndexMapper.getIndexesSequence();
174
174
  var rowsMap = instance.rowIndexMapper.getIndexesSequence();
175
- return new UndoRedo.RemoveColumnAction(columnIndex, indexes, removedData, headers, columnsMap, rowsMap, instance.getSettings().fixedColumnsLeft);
175
+ return new UndoRedo.RemoveColumnAction(columnIndex, indexes, removedData, headers, columnsMap, rowsMap, instance.getSettings().fixedColumnsStart);
176
176
  };
177
177
 
178
178
  plugin.done(wrappedAction, source);
@@ -401,7 +401,7 @@ UndoRedo.prototype.enable = function () {
401
401
  var hot = this.instance;
402
402
  this.enabled = true;
403
403
  exposeUndoRedoMethods(hot);
404
- hot.addHook('beforeKeyDown', onBeforeKeyDown);
404
+ this.registerShortcuts();
405
405
  hot.addHook('afterChange', onAfterChange);
406
406
  };
407
407
  /**
@@ -420,7 +420,7 @@ UndoRedo.prototype.disable = function () {
420
420
  var hot = this.instance;
421
421
  this.enabled = false;
422
422
  removeExposedUndoRedoMethods(hot);
423
- hot.removeHook('beforeKeyDown', onBeforeKeyDown);
423
+ this.unregisterShortcuts();
424
424
  hot.removeHook('afterChange', onAfterChange);
425
425
  };
426
426
  /**
@@ -609,11 +609,12 @@ UndoRedo.CreateColumnAction.prototype.redo = function (instance, redoneCallback)
609
609
  * @param {Array} headers The header values.
610
610
  * @param {number[]} columnPositions The column position.
611
611
  * @param {number[]} rowPositions The row position.
612
- * @param {number} fixedColumnsLeft Number of fixed columns on the left. Remove column action change it sometimes.
612
+ * @param {number} fixedColumnsStart Number of fixed columns on the left. Remove column action change it sometimes.
613
613
  */
614
614
 
615
615
 
616
- UndoRedo.RemoveColumnAction = function (index, indexes, data, headers, columnPositions, rowPositions, fixedColumnsLeft) {
616
+ UndoRedo.RemoveColumnAction = function (index, indexes, data, headers, columnPositions, rowPositions, fixedColumnsStart) {
617
+ // eslint-disable-line max-len
617
618
  this.index = index;
618
619
  this.indexes = indexes;
619
620
  this.data = data;
@@ -622,7 +623,7 @@ UndoRedo.RemoveColumnAction = function (index, indexes, data, headers, columnPos
622
623
  this.columnPositions = columnPositions.slice(0);
623
624
  this.rowPositions = rowPositions.slice(0);
624
625
  this.actionType = 'remove_col';
625
- this.fixedColumnsLeft = fixedColumnsLeft;
626
+ this.fixedColumnsStart = fixedColumnsStart;
626
627
  };
627
628
 
628
629
  inherit(UndoRedo.RemoveColumnAction, UndoRedo.Action);
@@ -632,7 +633,7 @@ UndoRedo.RemoveColumnAction.prototype.undo = function (instance, undoneCallback)
632
633
 
633
634
  var settings = instance.getSettings(); // Changing by the reference as `updateSettings` doesn't work the best.
634
635
 
635
- settings.fixedColumnsLeft = this.fixedColumnsLeft;
636
+ settings.fixedColumnsStart = this.fixedColumnsStart;
636
637
  var ascendingIndexes = this.indexes.slice(0).sort();
637
638
 
638
639
  var sortByIndexes = function sortByIndexes(elem, j, arr) {
@@ -768,11 +769,11 @@ var MergeCellsAction = /*#__PURE__*/function (_UndoRedo$Action) {
768
769
  _this4 = _super.call(this);
769
770
  _this4.cellRange = cellRange;
770
771
 
771
- var topLeftCorner = _this4.cellRange.getTopLeftCorner();
772
+ var topStartCorner = _this4.cellRange.getTopStartCorner();
772
773
 
773
- var bottomRightCorner = _this4.cellRange.getBottomRightCorner();
774
+ var bottomEndCorner = _this4.cellRange.getBottomEndCorner();
774
775
 
775
- _this4.rangeData = instance.getData(topLeftCorner.row, topLeftCorner.col, bottomRightCorner.row, bottomRightCorner.col);
776
+ _this4.rangeData = instance.getData(topStartCorner.row, topStartCorner.col, bottomEndCorner.row, bottomEndCorner.col);
776
777
  return _this4;
777
778
  }
778
779
 
@@ -782,8 +783,8 @@ var MergeCellsAction = /*#__PURE__*/function (_UndoRedo$Action) {
782
783
  var mergeCellsPlugin = instance.getPlugin('mergeCells');
783
784
  instance.addHookOnce('afterViewRender', undoneCallback);
784
785
  mergeCellsPlugin.unmergeRange(this.cellRange, true);
785
- var topLeftCorner = this.cellRange.getTopLeftCorner();
786
- instance.populateFromArray(topLeftCorner.row, topLeftCorner.col, this.rangeData, void 0, void 0, 'MergeCells');
786
+ var topStartCorner = this.cellRange.getTopStartCorner();
787
+ instance.populateFromArray(topStartCorner.row, topStartCorner.col, this.rangeData, void 0, void 0, 'MergeCells');
787
788
  }
788
789
  }, {
789
790
  key: "redo",
@@ -916,45 +917,50 @@ UndoRedo.prototype.init = function () {
916
917
  }
917
918
  };
918
919
  /**
919
- * @param {Event} event The keyboard event object.
920
+ * Registers shortcuts responsible for performing undo/redo.
921
+ *
922
+ * @private
920
923
  */
921
924
 
922
925
 
923
- function onBeforeKeyDown(event) {
924
- if (isImmediatePropagationStopped(event)) {
925
- return;
926
- }
927
-
928
- var instance = this;
929
- var editor = instance.getActiveEditor();
926
+ UndoRedo.prototype.registerShortcuts = function () {
927
+ var _this7 = this;
930
928
 
931
- if (editor && editor.isOpened()) {
932
- return;
933
- }
929
+ var shortcutManager = this.instance.getShortcutManager();
930
+ var gridContext = shortcutManager.getContext('grid');
934
931
 
935
- var altKey = event.altKey,
936
- ctrlKey = event.ctrlKey,
937
- keyCode = event.keyCode,
938
- metaKey = event.metaKey,
939
- shiftKey = event.shiftKey;
940
- var isCtrlDown = (ctrlKey || metaKey) && !altKey;
932
+ var runOnlyIf = function runOnlyIf(event) {
933
+ return !event.altKey; // right ALT in some systems triggers ALT+CTR
934
+ };
941
935
 
942
- if (!isCtrlDown) {
943
- return;
944
- }
936
+ var config = {
937
+ runOnlyIf: runOnlyIf,
938
+ group: SHORTCUTS_GROUP
939
+ };
940
+ gridContext.addShortcuts([{
941
+ keys: [['Control/Meta', 'z']],
942
+ callback: function callback() {
943
+ _this7.undo();
944
+ }
945
+ }, {
946
+ keys: [['Control/Meta', 'y'], ['Control/Meta', 'Shift', 'z']],
947
+ callback: function callback() {
948
+ _this7.redo();
949
+ }
950
+ }], config);
951
+ };
952
+ /**
953
+ * Unregister shortcuts responsible for performing undo/redo.
954
+ *
955
+ * @private
956
+ */
945
957
 
946
- var isRedoHotkey = keyCode === 89 || shiftKey && keyCode === 90;
947
958
 
948
- if (isRedoHotkey) {
949
- // CTRL + Y or CTRL + SHIFT + Z
950
- instance.undoRedo.redo();
951
- stopImmediatePropagation(event);
952
- } else if (keyCode === 90) {
953
- // CTRL + Z
954
- instance.undoRedo.undo();
955
- stopImmediatePropagation(event);
956
- }
957
- }
959
+ UndoRedo.prototype.unregisterShortcuts = function () {
960
+ var shortcutManager = this.instance.getShortcutManager();
961
+ var gridContext = shortcutManager.getContext('grid');
962
+ gridContext.removeShortcutsByGroup(SHORTCUTS_GROUP);
963
+ };
958
964
  /**
959
965
  * @param {Array} changes 2D array containing information about each of the edited cells.
960
966
  * @param {string} source String that identifies source of hook call.
@@ -1058,4 +1064,5 @@ hook.register('afterUndo');
1058
1064
  hook.register('beforeRedo');
1059
1065
  hook.register('afterRedo');
1060
1066
  UndoRedo.PLUGIN_KEY = PLUGIN_KEY;
1067
+ UndoRedo.SETTING_KEYS = true;
1061
1068
  export default UndoRedo;
@@ -8,8 +8,6 @@ var _htmlRenderer = require("../htmlRenderer");
8
8
 
9
9
  var _textRenderer = require("../textRenderer");
10
10
 
11
- var _src = require("../../3rdparty/walkontable/src");
12
-
13
11
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
14
12
 
15
13
  var _element = require("../../helpers/dom/element");
@@ -55,7 +53,7 @@ function autocompleteRenderer(instance, TD, row, col, prop, value, cellPropertie
55
53
 
56
54
  instance.acArrowListener = function (event) {
57
55
  if ((0, _element.hasClass)(event.target, 'htAutocompleteArrow')) {
58
- instance.view.wt.getSetting('onCellDblClick', null, new _src.CellCoords(row, col), TD);
56
+ instance.view._wt.getSetting('onCellDblClick', null, instance._createCellCoords(row, col), TD);
59
57
  }
60
58
  };
61
59
 
@@ -1,6 +1,5 @@
1
1
  import { htmlRenderer } from "../htmlRenderer/index.mjs";
2
2
  import { textRenderer } from "../textRenderer/index.mjs";
3
- import { CellCoords } from "../../3rdparty/walkontable/src/index.mjs";
4
3
  import EventManager from "../../eventManager.mjs";
5
4
  import { addClass, hasClass } from "../../helpers/dom/element.mjs";
6
5
  export var RENDERER_TYPE = 'autocomplete';
@@ -40,7 +39,7 @@ export function autocompleteRenderer(instance, TD, row, col, prop, value, cellPr
40
39
 
41
40
  instance.acArrowListener = function (event) {
42
41
  if (hasClass(event.target, 'htAutocompleteArrow')) {
43
- instance.view.wt.getSetting('onCellDblClick', null, new CellCoords(row, col), TD);
42
+ instance.view._wt.getSetting('onCellDblClick', null, instance._createCellCoords(row, col), TD);
44
43
  }
45
44
  };
46
45
 
@@ -28,13 +28,9 @@ var _eventManager = _interopRequireDefault(require("../../eventManager"));
28
28
 
29
29
  var _element = require("../../helpers/dom/element");
30
30
 
31
- var _event = require("../../helpers/dom/event");
32
-
33
- var _function = require("../../helpers/function");
34
-
35
31
  var _mixed = require("../../helpers/mixed");
36
32
 
37
- var _unicode = require("../../helpers/unicode");
33
+ var _editorManager = require("../../editorManager");
38
34
 
39
35
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
40
36
 
@@ -45,6 +41,7 @@ var isCheckboxListenerAdded = new WeakMap();
45
41
  var BAD_VALUE_CLASS = 'htBadValue';
46
42
  var ATTR_ROW = 'data-row';
47
43
  var ATTR_COLUMN = 'data-col';
44
+ var SHORTCUTS_GROUP = 'checkboxRenderer';
48
45
  var RENDERER_TYPE = 'checkbox';
49
46
  exports.RENDERER_TYPE = RENDERER_TYPE;
50
47
 
@@ -167,39 +164,45 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
167
164
 
168
165
  if (!isListeningKeyDownEvent.has(instance)) {
169
166
  isListeningKeyDownEvent.set(instance, true);
170
- instance.addHook('beforeKeyDown', onBeforeKeyDown);
167
+ registerShortcuts();
171
168
  }
172
169
  /**
173
- * On before key down DOM listener.
170
+ * Register shortcuts responsible for toggling checkbox state.
174
171
  *
175
172
  * @private
176
- * @param {Event} event The keyboard event object.
177
173
  */
178
174
 
179
175
 
180
- function onBeforeKeyDown(event) {
181
- var toggleKeys = 'SPACE|ENTER';
182
- var switchOffKeys = 'DELETE|BACKSPACE';
183
- var isKeyCode = (0, _function.partial)(_unicode.isKey, event.keyCode);
184
-
185
- if (!instance.getSettings().enterBeginsEditing && isKeyCode('ENTER')) {
186
- return;
187
- }
188
-
189
- if (isKeyCode("".concat(toggleKeys, "|").concat(switchOffKeys)) && !(0, _event.isImmediatePropagationStopped)(event)) {
190
- eachSelectedCheckboxCell(function () {
191
- (0, _event.stopImmediatePropagation)(event);
192
- event.preventDefault();
193
- });
194
- }
195
-
196
- if (isKeyCode(toggleKeys)) {
197
- changeSelectedCheckboxesState();
198
- }
199
-
200
- if (isKeyCode(switchOffKeys)) {
201
- changeSelectedCheckboxesState(true);
202
- }
176
+ function registerShortcuts() {
177
+ var shortcutManager = instance.getShortcutManager();
178
+ var gridContext = shortcutManager.getContext('grid');
179
+ var config = {
180
+ group: SHORTCUTS_GROUP
181
+ };
182
+ gridContext.addShortcuts([{
183
+ keys: [['space']],
184
+ callback: function callback() {
185
+ changeSelectedCheckboxesState();
186
+ return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
187
+ }
188
+ }, {
189
+ keys: [['enter']],
190
+ callback: function callback() {
191
+ changeSelectedCheckboxesState();
192
+ return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
193
+ },
194
+ runOnlyIf: function runOnlyIf() {
195
+ return instance.getSettings().enterBeginsEditing;
196
+ }
197
+ }, {
198
+ keys: [['delete'], ['backspace']],
199
+ callback: function callback() {
200
+ changeSelectedCheckboxesState(true);
201
+ return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
202
+ },
203
+ relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
204
+ position: 'before'
205
+ }], config);
203
206
  }
204
207
  /**
205
208
  * Change checkbox checked property.
@@ -218,11 +221,11 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
218
221
  }
219
222
 
220
223
  for (var key = 0; key < selRange.length; key++) {
221
- var _selRange$key$getTopL = selRange[key].getTopLeftCorner(),
222
- startRow = _selRange$key$getTopL.row,
223
- startColumn = _selRange$key$getTopL.col;
224
+ var _selRange$key$getTopS = selRange[key].getTopStartCorner(),
225
+ startRow = _selRange$key$getTopS.row,
226
+ startColumn = _selRange$key$getTopS.col;
224
227
 
225
- var _selRange$key$getBott = selRange[key].getBottomRightCorner(),
228
+ var _selRange$key$getBott = selRange[key].getBottomEndCorner(),
226
229
  endRow = _selRange$key$getBott.row,
227
230
  endColumn = _selRange$key$getBott.col;
228
231
 
@@ -272,14 +275,14 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
272
275
  }
273
276
  }
274
277
  /**
275
- * Call callback for each found selected cell with checkbox type.
278
+ * Check whether all selected cells are with checkbox type.
276
279
  *
280
+ * @returns {boolean}
277
281
  * @private
278
- * @param {Function} callback The callback function.
279
282
  */
280
283
 
281
284
 
282
- function eachSelectedCheckboxCell(callback) {
285
+ function areSelectedCheckboxCells() {
283
286
  var selRange = instance.getSelectedRange();
284
287
 
285
288
  if (!selRange) {
@@ -287,31 +290,33 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
287
290
  }
288
291
 
289
292
  for (var key = 0; key < selRange.length; key++) {
290
- var topLeft = selRange[key].getTopLeftCorner();
291
- var bottomRight = selRange[key].getBottomRightCorner();
293
+ var topLeft = selRange[key].getTopStartCorner();
294
+ var bottomRight = selRange[key].getBottomEndCorner();
292
295
 
293
296
  for (var visualRow = topLeft.row; visualRow <= bottomRight.row; visualRow++) {
294
297
  for (var visualColumn = topLeft.col; visualColumn <= bottomRight.col; visualColumn++) {
295
298
  var cachedCellProperties = instance.getCellMeta(visualRow, visualColumn);
296
299
 
297
300
  if (cachedCellProperties.type !== 'checkbox') {
298
- return;
301
+ return false;
299
302
  }
300
303
 
301
304
  var cell = instance.getCell(visualRow, visualColumn);
302
305
 
303
306
  if (cell === null || cell === void 0) {
304
- callback(visualRow, visualColumn, cachedCellProperties);
307
+ return true;
305
308
  } else {
306
309
  var checkboxes = cell.querySelectorAll('input[type=checkbox]');
307
310
 
308
311
  if (checkboxes.length > 0 && !cachedCellProperties.readOnly) {
309
- callback(checkboxes);
312
+ return true;
310
313
  }
311
314
  }
312
315
  }
313
316
  }
314
317
  }
318
+
319
+ return false;
315
320
  }
316
321
  }
317
322
 
@@ -10,16 +10,15 @@ import "core-js/modules/web.timers.js";
10
10
  import { baseRenderer } from "../baseRenderer/index.mjs";
11
11
  import EventManager from "../../eventManager.mjs";
12
12
  import { empty, addClass } from "../../helpers/dom/element.mjs";
13
- import { stopImmediatePropagation, isImmediatePropagationStopped } from "../../helpers/dom/event.mjs";
14
- import { partial } from "../../helpers/function.mjs";
15
13
  import { isEmpty, stringify } from "../../helpers/mixed.mjs";
16
- import { isKey } from "../../helpers/unicode.mjs";
14
+ import { SHORTCUTS_GROUP_EDITOR } from "../../editorManager.mjs";
17
15
  import Hooks from "../../pluginHooks.mjs";
18
16
  var isListeningKeyDownEvent = new WeakMap();
19
17
  var isCheckboxListenerAdded = new WeakMap();
20
18
  var BAD_VALUE_CLASS = 'htBadValue';
21
19
  var ATTR_ROW = 'data-row';
22
20
  var ATTR_COLUMN = 'data-col';
21
+ var SHORTCUTS_GROUP = 'checkboxRenderer';
23
22
  export var RENDERER_TYPE = 'checkbox';
24
23
  Hooks.getSingleton().add('modifyAutoColumnSizeSeed', function (bundleSeed, cellMeta, cellValue) {
25
24
  var label = cellMeta.label,
@@ -137,39 +136,45 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
137
136
 
138
137
  if (!isListeningKeyDownEvent.has(instance)) {
139
138
  isListeningKeyDownEvent.set(instance, true);
140
- instance.addHook('beforeKeyDown', onBeforeKeyDown);
139
+ registerShortcuts();
141
140
  }
142
141
  /**
143
- * On before key down DOM listener.
142
+ * Register shortcuts responsible for toggling checkbox state.
144
143
  *
145
144
  * @private
146
- * @param {Event} event The keyboard event object.
147
145
  */
148
146
 
149
147
 
150
- function onBeforeKeyDown(event) {
151
- var toggleKeys = 'SPACE|ENTER';
152
- var switchOffKeys = 'DELETE|BACKSPACE';
153
- var isKeyCode = partial(isKey, event.keyCode);
154
-
155
- if (!instance.getSettings().enterBeginsEditing && isKeyCode('ENTER')) {
156
- return;
157
- }
158
-
159
- if (isKeyCode("".concat(toggleKeys, "|").concat(switchOffKeys)) && !isImmediatePropagationStopped(event)) {
160
- eachSelectedCheckboxCell(function () {
161
- stopImmediatePropagation(event);
162
- event.preventDefault();
163
- });
164
- }
165
-
166
- if (isKeyCode(toggleKeys)) {
167
- changeSelectedCheckboxesState();
168
- }
169
-
170
- if (isKeyCode(switchOffKeys)) {
171
- changeSelectedCheckboxesState(true);
172
- }
148
+ function registerShortcuts() {
149
+ var shortcutManager = instance.getShortcutManager();
150
+ var gridContext = shortcutManager.getContext('grid');
151
+ var config = {
152
+ group: SHORTCUTS_GROUP
153
+ };
154
+ gridContext.addShortcuts([{
155
+ keys: [['space']],
156
+ callback: function callback() {
157
+ changeSelectedCheckboxesState();
158
+ return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
159
+ }
160
+ }, {
161
+ keys: [['enter']],
162
+ callback: function callback() {
163
+ changeSelectedCheckboxesState();
164
+ return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
165
+ },
166
+ runOnlyIf: function runOnlyIf() {
167
+ return instance.getSettings().enterBeginsEditing;
168
+ }
169
+ }, {
170
+ keys: [['delete'], ['backspace']],
171
+ callback: function callback() {
172
+ changeSelectedCheckboxesState(true);
173
+ return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
174
+ },
175
+ relativeToGroup: SHORTCUTS_GROUP_EDITOR,
176
+ position: 'before'
177
+ }], config);
173
178
  }
174
179
  /**
175
180
  * Change checkbox checked property.
@@ -188,11 +193,11 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
188
193
  }
189
194
 
190
195
  for (var key = 0; key < selRange.length; key++) {
191
- var _selRange$key$getTopL = selRange[key].getTopLeftCorner(),
192
- startRow = _selRange$key$getTopL.row,
193
- startColumn = _selRange$key$getTopL.col;
196
+ var _selRange$key$getTopS = selRange[key].getTopStartCorner(),
197
+ startRow = _selRange$key$getTopS.row,
198
+ startColumn = _selRange$key$getTopS.col;
194
199
 
195
- var _selRange$key$getBott = selRange[key].getBottomRightCorner(),
200
+ var _selRange$key$getBott = selRange[key].getBottomEndCorner(),
196
201
  endRow = _selRange$key$getBott.row,
197
202
  endColumn = _selRange$key$getBott.col;
198
203
 
@@ -242,14 +247,14 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
242
247
  }
243
248
  }
244
249
  /**
245
- * Call callback for each found selected cell with checkbox type.
250
+ * Check whether all selected cells are with checkbox type.
246
251
  *
252
+ * @returns {boolean}
247
253
  * @private
248
- * @param {Function} callback The callback function.
249
254
  */
250
255
 
251
256
 
252
- function eachSelectedCheckboxCell(callback) {
257
+ function areSelectedCheckboxCells() {
253
258
  var selRange = instance.getSelectedRange();
254
259
 
255
260
  if (!selRange) {
@@ -257,31 +262,33 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
257
262
  }
258
263
 
259
264
  for (var key = 0; key < selRange.length; key++) {
260
- var topLeft = selRange[key].getTopLeftCorner();
261
- var bottomRight = selRange[key].getBottomRightCorner();
265
+ var topLeft = selRange[key].getTopStartCorner();
266
+ var bottomRight = selRange[key].getBottomEndCorner();
262
267
 
263
268
  for (var visualRow = topLeft.row; visualRow <= bottomRight.row; visualRow++) {
264
269
  for (var visualColumn = topLeft.col; visualColumn <= bottomRight.col; visualColumn++) {
265
270
  var cachedCellProperties = instance.getCellMeta(visualRow, visualColumn);
266
271
 
267
272
  if (cachedCellProperties.type !== 'checkbox') {
268
- return;
273
+ return false;
269
274
  }
270
275
 
271
276
  var cell = instance.getCell(visualRow, visualColumn);
272
277
 
273
278
  if (cell === null || cell === void 0) {
274
- callback(visualRow, visualColumn, cachedCellProperties);
279
+ return true;
275
280
  } else {
276
281
  var checkboxes = cell.querySelectorAll('input[type=checkbox]');
277
282
 
278
283
  if (checkboxes.length > 0 && !cachedCellProperties.readOnly) {
279
- callback(checkboxes);
284
+ return true;
280
285
  }
281
286
  }
282
287
  }
283
288
  }
284
289
  }
290
+
291
+ return false;
285
292
  }
286
293
  }
287
294
  checkboxRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -5,6 +5,7 @@ import { htmlRenderer, RENDERER_TYPE as HTML_RENDERER } from './htmlRenderer';
5
5
  import { numericRenderer, RENDERER_TYPE as NUMERIC_RENDERER } from './numericRenderer';
6
6
  import { passwordRenderer, RENDERER_TYPE as PASSWORD_RENDERER } from './passwordRenderer';
7
7
  import { textRenderer, RENDERER_TYPE as TEXT_RENDERER } from './textRenderer';
8
+ import { timeRenderer, RENDERER_TYPE as TIME_RENDERER } from './timeRenderer';
8
9
 
9
10
  export function registerAllRenderers(): void;
10
11
 
@@ -16,6 +17,7 @@ export interface Renderers {
16
17
  numeric: typeof numericRenderer;
17
18
  password: typeof passwordRenderer;
18
19
  text: typeof textRenderer;
20
+ time: typeof timeRenderer;
19
21
  }
20
22
 
21
23
  /**
@@ -30,7 +32,8 @@ export {
30
32
  htmlRenderer, HTML_RENDERER,
31
33
  numericRenderer, NUMERIC_RENDERER,
32
34
  passwordRenderer, PASSWORD_RENDERER,
33
- textRenderer, TEXT_RENDERER
35
+ textRenderer, TEXT_RENDERER,
36
+ timeRenderer, TIME_RENDERER
34
37
  };
35
38
  export {
36
39
  getRegisteredRendererNames,
@@ -39,6 +39,11 @@ var _textRenderer = require("./textRenderer");
39
39
  exports.textRenderer = _textRenderer.textRenderer;
40
40
  exports.TEXT_RENDERER = _textRenderer.RENDERER_TYPE;
41
41
 
42
+ var _timeRenderer = require("./timeRenderer");
43
+
44
+ exports.timeRenderer = _timeRenderer.timeRenderer;
45
+ exports.TIME_RENDERER = _timeRenderer.RENDERER_TYPE;
46
+
42
47
  var _registry = require("./registry");
43
48
 
44
49
  exports.registerRenderer = _registry.registerRenderer;
@@ -58,4 +63,5 @@ function registerAllRenderers() {
58
63
  (0, _registry.registerRenderer)(_numericRenderer.numericRenderer);
59
64
  (0, _registry.registerRenderer)(_passwordRenderer.passwordRenderer);
60
65
  (0, _registry.registerRenderer)(_textRenderer.textRenderer);
66
+ (0, _registry.registerRenderer)(_timeRenderer.timeRenderer);
61
67
  }
@@ -5,6 +5,7 @@ import { htmlRenderer, RENDERER_TYPE as HTML_RENDERER } from "./htmlRenderer/ind
5
5
  import { numericRenderer, RENDERER_TYPE as NUMERIC_RENDERER } from "./numericRenderer/index.mjs";
6
6
  import { passwordRenderer, RENDERER_TYPE as PASSWORD_RENDERER } from "./passwordRenderer/index.mjs";
7
7
  import { textRenderer, RENDERER_TYPE as TEXT_RENDERER } from "./textRenderer/index.mjs";
8
+ import { timeRenderer, RENDERER_TYPE as TIME_RENDERER } from "./timeRenderer/index.mjs";
8
9
  import { registerRenderer } from "./registry.mjs";
9
10
  /**
10
11
  * Registers all available renderers.
@@ -18,6 +19,7 @@ export function registerAllRenderers() {
18
19
  registerRenderer(numericRenderer);
19
20
  registerRenderer(passwordRenderer);
20
21
  registerRenderer(textRenderer);
22
+ registerRenderer(timeRenderer);
21
23
  }
22
- export { autocompleteRenderer, AUTOCOMPLETE_RENDERER, baseRenderer, BASE_RENDERER, checkboxRenderer, CHECKBOX_RENDERER, htmlRenderer, HTML_RENDERER, numericRenderer, NUMERIC_RENDERER, passwordRenderer, PASSWORD_RENDERER, textRenderer, TEXT_RENDERER };
24
+ export { autocompleteRenderer, AUTOCOMPLETE_RENDERER, baseRenderer, BASE_RENDERER, checkboxRenderer, CHECKBOX_RENDERER, htmlRenderer, HTML_RENDERER, numericRenderer, NUMERIC_RENDERER, passwordRenderer, PASSWORD_RENDERER, textRenderer, TEXT_RENDERER, timeRenderer, TIME_RENDERER };
23
25
  export { getRegisteredRendererNames, getRegisteredRenderers, getRenderer, hasRenderer, registerRenderer } from "./registry.mjs";
@@ -70,6 +70,7 @@ function numericRenderer(instance, TD, row, col, prop, value, cellProperties) {
70
70
  }
71
71
 
72
72
  cellProperties.className = classArr.join(' ');
73
+ TD.dir = 'ltr';
73
74
  }
74
75
 
75
76
  (0, _textRenderer.textRenderer)(instance, TD, row, col, prop, newValue, cellProperties);
@@ -51,6 +51,7 @@ export function numericRenderer(instance, TD, row, col, prop, value, cellPropert
51
51
  }
52
52
 
53
53
  cellProperties.className = classArr.join(' ');
54
+ TD.dir = 'ltr';
54
55
  }
55
56
 
56
57
  textRenderer(instance, TD, row, col, prop, newValue, cellProperties);
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, timeRenderer } from './timeRenderer';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.timeRenderer = exports.RENDERER_TYPE = void 0;
5
+
6
+ var _timeRenderer = require("./timeRenderer");
7
+
8
+ exports.RENDERER_TYPE = _timeRenderer.RENDERER_TYPE;
9
+ exports.timeRenderer = _timeRenderer.timeRenderer;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, timeRenderer } from "./timeRenderer.mjs";