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
@@ -17,20 +17,16 @@ require("core-js/modules/web.timers.js");
17
17
 
18
18
  require("core-js/modules/es.array.includes.js");
19
19
 
20
- var _element = require("./../../../helpers/dom/element");
20
+ var _element = require("../../../helpers/dom/element");
21
21
 
22
- var _function = require("./../../../helpers/function");
22
+ var _function = require("../../../helpers/function");
23
23
 
24
- var _feature = require("./../../../helpers/feature");
24
+ var _feature = require("../../../helpers/feature");
25
25
 
26
- var _browser = require("./../../../helpers/browser");
27
-
28
- var _eventManager = _interopRequireDefault(require("./../../../eventManager"));
26
+ var _browser = require("../../../helpers/browser");
29
27
 
30
28
  var _mixed = require("../../../helpers/mixed");
31
29
 
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
30
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
35
31
 
36
32
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -44,26 +40,44 @@ var privatePool = new WeakMap();
44
40
 
45
41
  var Event = /*#__PURE__*/function () {
46
42
  /**
47
- * @param {*} instance Walkontable instance.
43
+ * @param {FacadeGetter} facadeGetter Gets an instance facade.
44
+ * @param {DomBindings} domBindings Bindings into dom.
45
+ * @param {Settings} wtSettings The walkontable settings.
46
+ * @param {EventManager} eventManager The walkontable event manager.
47
+ * @param {Table} wtTable The table.
48
+ * @param {Selections} selections Selections.
49
+ * @param {Event} [parent=null] The main Event instance.
48
50
  */
49
- function Event(instance) {
51
+ function Event(facadeGetter, domBindings, wtSettings, eventManager, wtTable, selections) {
52
+ var parent = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
53
+
50
54
  _classCallCheck(this, Event);
51
55
 
56
+ this.wtSettings = wtSettings;
57
+ this.domBindings = domBindings;
58
+ this.wtTable = wtTable;
59
+ this.selections = selections;
60
+ this.parent = parent;
52
61
  /**
53
- * Instance of {@link Walkontable}.
62
+ * Instance of {@link EventManager}.
54
63
  *
55
64
  * @private
56
- * @type {Walkontable}
65
+ * @type {EventManager}
57
66
  */
58
- this.instance = instance;
67
+
68
+ this.eventManager = eventManager;
59
69
  /**
60
- * Instance of {@link EventManager}.
70
+ * Should be use only for passing face called external origin methods, like registered event listeners.
71
+ * It provides backward compatibility by getting instance facade.
61
72
  *
73
+ * @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular dependency).
74
+ * @todo Con. Maybe passing listener caller as an ioc from faced resolves this issue. To rethink later.
75
+ *
76
+ * @type {FacadeGetter}
62
77
  * @private
63
- * @type {EventManager}
64
78
  */
65
79
 
66
- this.eventManager = new _eventManager.default(instance);
80
+ this.facadeGetter = facadeGetter;
67
81
  privatePool.set(this, {
68
82
  selectedCellBeforeTouchEnd: void 0,
69
83
  dblClickTimeout: [null, null],
@@ -83,53 +97,53 @@ var Event = /*#__PURE__*/function () {
83
97
  value: function registerEvents() {
84
98
  var _this = this;
85
99
 
86
- this.eventManager.addEventListener(this.instance.wtTable.holder, 'contextmenu', function (event) {
100
+ this.eventManager.addEventListener(this.wtTable.holder, 'contextmenu', function (event) {
87
101
  return _this.onContextMenu(event);
88
102
  });
89
- this.eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseover', function (event) {
103
+ this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseover', function (event) {
90
104
  return _this.onMouseOver(event);
91
105
  });
92
- this.eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseout', function (event) {
106
+ this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseout', function (event) {
93
107
  return _this.onMouseOut(event);
94
108
  });
95
109
 
96
110
  var initTouchEvents = function initTouchEvents() {
97
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'touchstart', function (event) {
111
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'touchstart', function (event) {
98
112
  return _this.onTouchStart(event);
99
113
  });
100
114
 
101
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'touchend', function (event) {
115
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'touchend', function (event) {
102
116
  return _this.onTouchEnd(event);
103
117
  });
104
118
 
105
- if (!_this.instance.momentumScrolling) {
106
- _this.instance.momentumScrolling = {};
119
+ if (!_this.momentumScrolling) {
120
+ _this.momentumScrolling = {};
107
121
  }
108
122
 
109
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'scroll', function () {
110
- clearTimeout(_this.instance.momentumScrolling._timeout);
123
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'scroll', function () {
124
+ clearTimeout(_this.momentumScrolling._timeout);
111
125
 
112
- if (!_this.instance.momentumScrolling.ongoing) {
113
- _this.instance.getSetting('onBeforeTouchScroll');
126
+ if (!_this.momentumScrolling.ongoing) {
127
+ _this.wtSettings.getSetting('onBeforeTouchScroll');
114
128
  }
115
129
 
116
- _this.instance.momentumScrolling.ongoing = true;
117
- _this.instance.momentumScrolling._timeout = setTimeout(function () {
118
- if (!_this.instance.touchApplied) {
119
- _this.instance.momentumScrolling.ongoing = false;
130
+ _this.momentumScrolling.ongoing = true;
131
+ _this.momentumScrolling._timeout = setTimeout(function () {
132
+ if (!_this.touchApplied) {
133
+ _this.momentumScrolling.ongoing = false;
120
134
 
121
- _this.instance.getSetting('onAfterMomentumScroll');
135
+ _this.wtSettings.getSetting('onAfterMomentumScroll');
122
136
  }
123
137
  }, 200);
124
138
  });
125
139
  };
126
140
 
127
141
  var initMouseEvents = function initMouseEvents() {
128
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'mouseup', function (event) {
142
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'mouseup', function (event) {
129
143
  return _this.onMouseUp(event);
130
144
  });
131
145
 
132
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'mousedown', function (event) {
146
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'mousedown', function (event) {
133
147
  return _this.onMouseDown(event);
134
148
  });
135
149
  };
@@ -184,19 +198,19 @@ var Event = /*#__PURE__*/function () {
184
198
  key: "parentCell",
185
199
  value: function parentCell(elem) {
186
200
  var cell = {};
187
- var TABLE = this.instance.wtTable.TABLE;
201
+ var TABLE = this.wtTable.TABLE;
188
202
  var TD = (0, _element.closestDown)(elem, ['TD', 'TH'], TABLE);
189
203
 
190
204
  if (TD) {
191
- cell.coords = this.instance.wtTable.getCoords(TD);
205
+ cell.coords = this.wtTable.getCoords(TD);
192
206
  cell.TD = TD;
193
207
  } else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'current')) {
194
- cell.coords = this.instance.selections.getCell().cellRange.highlight;
195
- cell.TD = this.instance.wtTable.getCell(cell.coords);
208
+ cell.coords = this.selections.getCell().cellRange.highlight;
209
+ cell.TD = this.wtTable.getCell(cell.coords);
196
210
  } else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'area')) {
197
- if (this.instance.selections.createOrGetArea().cellRange) {
198
- cell.coords = this.instance.selections.createOrGetArea().cellRange.to;
199
- cell.TD = this.instance.wtTable.getCell(cell.coords);
211
+ if (this.selections.createOrGetArea().cellRange) {
212
+ cell.coords = this.selections.createOrGetArea().cellRange.to;
213
+ cell.TD = this.wtTable.getCell(cell.coords);
200
214
  }
201
215
  }
202
216
 
@@ -213,7 +227,7 @@ var Event = /*#__PURE__*/function () {
213
227
  key: "onMouseDown",
214
228
  value: function onMouseDown(event) {
215
229
  var priv = privatePool.get(this);
216
- var activeElement = this.instance.rootDocument.activeElement;
230
+ var activeElement = this.domBindings.rootDocument.activeElement;
217
231
  var getParentNode = (0, _function.partial)(_element.getParent, event.target);
218
232
  var realTarget = event.target; // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)
219
233
 
@@ -224,13 +238,13 @@ var Event = /*#__PURE__*/function () {
224
238
  var cell = this.parentCell(realTarget);
225
239
 
226
240
  if ((0, _element.hasClass)(realTarget, 'corner')) {
227
- this.instance.getSetting('onCellCornerMouseDown', event, realTarget);
228
- } else if (cell.TD && this.instance.hasSetting('onCellMouseDown')) {
229
- this.instance.getSetting('onCellMouseDown', event, cell.coords, cell.TD, this.instance);
241
+ this.wtSettings.getSetting('onCellCornerMouseDown', event, realTarget);
242
+ } else if (cell.TD && this.wtSettings.has('onCellMouseDown')) {
243
+ this.callListener('onCellMouseDown', event, cell.coords, cell.TD);
230
244
  } // doubleclick reacts only for left mouse button or from touch events
231
245
 
232
246
 
233
- if ((event.button === 0 || this.instance.touchApplied) && cell.TD) {
247
+ if ((event.button === 0 || this.touchApplied) && cell.TD) {
234
248
  priv.dblClickOrigin[0] = cell.TD;
235
249
  clearTimeout(priv.dblClickTimeout[0]);
236
250
  priv.dblClickTimeout[0] = setTimeout(function () {
@@ -248,11 +262,11 @@ var Event = /*#__PURE__*/function () {
248
262
  }, {
249
263
  key: "onContextMenu",
250
264
  value: function onContextMenu(event) {
251
- if (this.instance.hasSetting('onCellContextMenu')) {
265
+ if (this.wtSettings.has('onCellContextMenu')) {
252
266
  var cell = this.parentCell(event.target);
253
267
 
254
268
  if (cell.TD) {
255
- this.instance.getSetting('onCellContextMenu', event, cell.coords, cell.TD, this.instance);
269
+ this.callListener('onCellContextMenu', event, cell.coords, cell.TD);
256
270
  }
257
271
  }
258
272
  }
@@ -266,17 +280,17 @@ var Event = /*#__PURE__*/function () {
266
280
  }, {
267
281
  key: "onMouseOver",
268
282
  value: function onMouseOver(event) {
269
- if (!this.instance.hasSetting('onCellMouseOver')) {
283
+ if (!this.wtSettings.has('onCellMouseOver')) {
270
284
  return;
271
285
  }
272
286
 
273
- var table = this.instance.wtTable.TABLE;
287
+ var table = this.wtTable.TABLE;
274
288
  var td = (0, _element.closestDown)(event.target, ['TD', 'TH'], table);
275
- var mainWOT = this.instance.cloneSource || this.instance;
289
+ var parent = this.parent || this;
276
290
 
277
- if (td && td !== mainWOT.lastMouseOver && (0, _element.isChildOf)(td, table)) {
278
- mainWOT.lastMouseOver = td;
279
- this.instance.getSetting('onCellMouseOver', event, this.instance.wtTable.getCoords(td), td, this.instance);
291
+ if (td && td !== parent.lastMouseOver && (0, _element.isChildOf)(td, table)) {
292
+ parent.lastMouseOver = td;
293
+ this.callListener('onCellMouseOver', event, this.wtTable.getCoords(td), td);
280
294
  }
281
295
  }
282
296
  /**
@@ -289,16 +303,16 @@ var Event = /*#__PURE__*/function () {
289
303
  }, {
290
304
  key: "onMouseOut",
291
305
  value: function onMouseOut(event) {
292
- if (!this.instance.hasSetting('onCellMouseOut')) {
306
+ if (!this.wtSettings.has('onCellMouseOut')) {
293
307
  return;
294
308
  }
295
309
 
296
- var table = this.instance.wtTable.TABLE;
310
+ var table = this.wtTable.TABLE;
297
311
  var lastTD = (0, _element.closestDown)(event.target, ['TD', 'TH'], table);
298
312
  var nextTD = (0, _element.closestDown)(event.relatedTarget, ['TD', 'TH'], table);
299
313
 
300
314
  if (lastTD && lastTD !== nextTD && (0, _element.isChildOf)(lastTD, table)) {
301
- this.instance.getSetting('onCellMouseOut', event, this.instance.wtTable.getCoords(lastTD), lastTD, this.instance);
315
+ this.callListener('onCellMouseOut', event, this.wtTable.getCoords(lastTD), lastTD);
302
316
  }
303
317
  }
304
318
  /**
@@ -314,20 +328,20 @@ var Event = /*#__PURE__*/function () {
314
328
  var priv = privatePool.get(this);
315
329
  var cell = this.parentCell(event.target);
316
330
 
317
- if (cell.TD && this.instance.hasSetting('onCellMouseUp')) {
318
- this.instance.getSetting('onCellMouseUp', event, cell.coords, cell.TD, this.instance);
331
+ if (cell.TD && this.wtSettings.has('onCellMouseUp')) {
332
+ this.callListener('onCellMouseUp', event, cell.coords, cell.TD);
319
333
  } // if not left mouse button, and the origin event is not comes from touch
320
334
 
321
335
 
322
- if (event.button !== 0 && !this.instance.touchApplied) {
336
+ if (event.button !== 0 && !this.touchApplied) {
323
337
  return;
324
338
  }
325
339
 
326
340
  if (cell.TD === priv.dblClickOrigin[0] && cell.TD === priv.dblClickOrigin[1]) {
327
341
  if ((0, _element.hasClass)(event.target, 'corner')) {
328
- this.instance.getSetting('onCellCornerDblClick', event, cell.coords, cell.TD, this.instance);
342
+ this.callListener('onCellCornerDblClick', event, cell.coords, cell.TD);
329
343
  } else {
330
- this.instance.getSetting('onCellDblClick', event, cell.coords, cell.TD, this.instance);
344
+ this.callListener('onCellDblClick', event, cell.coords, cell.TD);
331
345
  }
332
346
 
333
347
  priv.dblClickOrigin[0] = null;
@@ -351,8 +365,8 @@ var Event = /*#__PURE__*/function () {
351
365
  key: "onTouchStart",
352
366
  value: function onTouchStart(event) {
353
367
  var priv = privatePool.get(this);
354
- priv.selectedCellBeforeTouchEnd = this.instance.selections.getCell().cellRange;
355
- this.instance.touchApplied = true;
368
+ priv.selectedCellBeforeTouchEnd = this.selections.getCell().cellRange;
369
+ this.touchApplied = true;
356
370
  this.onMouseDown(event);
357
371
  }
358
372
  /**
@@ -370,7 +384,7 @@ var Event = /*#__PURE__*/function () {
370
384
  var target = event.target;
371
385
  var parentCellCoords = (_this$parentCell = this.parentCell(target)) === null || _this$parentCell === void 0 ? void 0 : _this$parentCell.coords;
372
386
  var isCellsRange = (0, _mixed.isDefined)(parentCellCoords) && parentCellCoords.row >= 0 && parentCellCoords.col >= 0;
373
- var isEventCancelable = event.cancelable && isCellsRange && this.instance.getSetting('isDataViewInstance'); // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
387
+ var isEventCancelable = event.cancelable && isCellsRange && this.wtSettings.getSetting('isDataViewInstance'); // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
374
388
  // while the cell is highlighted, all touch events that are triggered on different cells are
375
389
  // "preventDefault"'ed. The user can interact with the element (e.q. click on the link that opens
376
390
  // a new page) only when the same cell was previously selected (see related PR #7980).
@@ -392,7 +406,26 @@ var Event = /*#__PURE__*/function () {
392
406
  }
393
407
 
394
408
  this.onMouseUp(event);
395
- this.instance.touchApplied = false;
409
+ this.touchApplied = false;
410
+ }
411
+ /**
412
+ * Call listener with backward compatibility.
413
+ *
414
+ * @private
415
+ * @param {string} name Name of listener.
416
+ * @param {MouseEvent} event The event object.
417
+ * @param {CellCoords} coords Coordinates.
418
+ * @param {HTMLElement} target Event target.
419
+ */
420
+
421
+ }, {
422
+ key: "callListener",
423
+ value: function callListener(name, event, coords, target) {
424
+ var listener = this.wtSettings.getSettingPure(name);
425
+
426
+ if (listener) {
427
+ listener(event, coords, target, this.facadeGetter());
428
+ }
396
429
  }
397
430
  /**
398
431
  * Clears double-click timeouts and destroys the internal eventManager instance.
@@ -11,11 +11,10 @@ import "core-js/modules/es.weak-map.js";
11
11
  import "core-js/modules/web.dom-collections.iterator.js";
12
12
  import "core-js/modules/web.timers.js";
13
13
  import "core-js/modules/es.array.includes.js";
14
- import { closestDown, hasClass, isChildOf, getParent } from "./../../../helpers/dom/element.mjs";
15
- import { partial } from "./../../../helpers/function.mjs";
16
- import { isTouchSupported } from "./../../../helpers/feature.mjs";
17
- import { isMobileBrowser, isChromeWebKit, isFirefoxWebKit, isIOS } from "./../../../helpers/browser.mjs";
18
- import EventManager from "./../../../eventManager.mjs";
14
+ import { closestDown, hasClass, isChildOf, getParent } from "../../../helpers/dom/element.mjs";
15
+ import { partial } from "../../../helpers/function.mjs";
16
+ import { isTouchSupported } from "../../../helpers/feature.mjs";
17
+ import { isMobileBrowser, isChromeWebKit, isFirefoxWebKit, isIOS } from "../../../helpers/browser.mjs";
19
18
  import { isDefined } from "../../../helpers/mixed.mjs";
20
19
  var privatePool = new WeakMap();
21
20
  /**
@@ -24,26 +23,44 @@ var privatePool = new WeakMap();
24
23
 
25
24
  var Event = /*#__PURE__*/function () {
26
25
  /**
27
- * @param {*} instance Walkontable instance.
26
+ * @param {FacadeGetter} facadeGetter Gets an instance facade.
27
+ * @param {DomBindings} domBindings Bindings into dom.
28
+ * @param {Settings} wtSettings The walkontable settings.
29
+ * @param {EventManager} eventManager The walkontable event manager.
30
+ * @param {Table} wtTable The table.
31
+ * @param {Selections} selections Selections.
32
+ * @param {Event} [parent=null] The main Event instance.
28
33
  */
29
- function Event(instance) {
34
+ function Event(facadeGetter, domBindings, wtSettings, eventManager, wtTable, selections) {
35
+ var parent = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
36
+
30
37
  _classCallCheck(this, Event);
31
38
 
39
+ this.wtSettings = wtSettings;
40
+ this.domBindings = domBindings;
41
+ this.wtTable = wtTable;
42
+ this.selections = selections;
43
+ this.parent = parent;
32
44
  /**
33
- * Instance of {@link Walkontable}.
45
+ * Instance of {@link EventManager}.
34
46
  *
35
47
  * @private
36
- * @type {Walkontable}
48
+ * @type {EventManager}
37
49
  */
38
- this.instance = instance;
50
+
51
+ this.eventManager = eventManager;
39
52
  /**
40
- * Instance of {@link EventManager}.
53
+ * Should be use only for passing face called external origin methods, like registered event listeners.
54
+ * It provides backward compatibility by getting instance facade.
55
+ *
56
+ * @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular dependency).
57
+ * @todo Con. Maybe passing listener caller as an ioc from faced resolves this issue. To rethink later.
41
58
  *
59
+ * @type {FacadeGetter}
42
60
  * @private
43
- * @type {EventManager}
44
61
  */
45
62
 
46
- this.eventManager = new EventManager(instance);
63
+ this.facadeGetter = facadeGetter;
47
64
  privatePool.set(this, {
48
65
  selectedCellBeforeTouchEnd: void 0,
49
66
  dblClickTimeout: [null, null],
@@ -63,53 +80,53 @@ var Event = /*#__PURE__*/function () {
63
80
  value: function registerEvents() {
64
81
  var _this = this;
65
82
 
66
- this.eventManager.addEventListener(this.instance.wtTable.holder, 'contextmenu', function (event) {
83
+ this.eventManager.addEventListener(this.wtTable.holder, 'contextmenu', function (event) {
67
84
  return _this.onContextMenu(event);
68
85
  });
69
- this.eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseover', function (event) {
86
+ this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseover', function (event) {
70
87
  return _this.onMouseOver(event);
71
88
  });
72
- this.eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseout', function (event) {
89
+ this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseout', function (event) {
73
90
  return _this.onMouseOut(event);
74
91
  });
75
92
 
76
93
  var initTouchEvents = function initTouchEvents() {
77
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'touchstart', function (event) {
94
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'touchstart', function (event) {
78
95
  return _this.onTouchStart(event);
79
96
  });
80
97
 
81
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'touchend', function (event) {
98
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'touchend', function (event) {
82
99
  return _this.onTouchEnd(event);
83
100
  });
84
101
 
85
- if (!_this.instance.momentumScrolling) {
86
- _this.instance.momentumScrolling = {};
102
+ if (!_this.momentumScrolling) {
103
+ _this.momentumScrolling = {};
87
104
  }
88
105
 
89
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'scroll', function () {
90
- clearTimeout(_this.instance.momentumScrolling._timeout);
106
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'scroll', function () {
107
+ clearTimeout(_this.momentumScrolling._timeout);
91
108
 
92
- if (!_this.instance.momentumScrolling.ongoing) {
93
- _this.instance.getSetting('onBeforeTouchScroll');
109
+ if (!_this.momentumScrolling.ongoing) {
110
+ _this.wtSettings.getSetting('onBeforeTouchScroll');
94
111
  }
95
112
 
96
- _this.instance.momentumScrolling.ongoing = true;
97
- _this.instance.momentumScrolling._timeout = setTimeout(function () {
98
- if (!_this.instance.touchApplied) {
99
- _this.instance.momentumScrolling.ongoing = false;
113
+ _this.momentumScrolling.ongoing = true;
114
+ _this.momentumScrolling._timeout = setTimeout(function () {
115
+ if (!_this.touchApplied) {
116
+ _this.momentumScrolling.ongoing = false;
100
117
 
101
- _this.instance.getSetting('onAfterMomentumScroll');
118
+ _this.wtSettings.getSetting('onAfterMomentumScroll');
102
119
  }
103
120
  }, 200);
104
121
  });
105
122
  };
106
123
 
107
124
  var initMouseEvents = function initMouseEvents() {
108
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'mouseup', function (event) {
125
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'mouseup', function (event) {
109
126
  return _this.onMouseUp(event);
110
127
  });
111
128
 
112
- _this.eventManager.addEventListener(_this.instance.wtTable.holder, 'mousedown', function (event) {
129
+ _this.eventManager.addEventListener(_this.wtTable.holder, 'mousedown', function (event) {
113
130
  return _this.onMouseDown(event);
114
131
  });
115
132
  };
@@ -164,19 +181,19 @@ var Event = /*#__PURE__*/function () {
164
181
  key: "parentCell",
165
182
  value: function parentCell(elem) {
166
183
  var cell = {};
167
- var TABLE = this.instance.wtTable.TABLE;
184
+ var TABLE = this.wtTable.TABLE;
168
185
  var TD = closestDown(elem, ['TD', 'TH'], TABLE);
169
186
 
170
187
  if (TD) {
171
- cell.coords = this.instance.wtTable.getCoords(TD);
188
+ cell.coords = this.wtTable.getCoords(TD);
172
189
  cell.TD = TD;
173
190
  } else if (hasClass(elem, 'wtBorder') && hasClass(elem, 'current')) {
174
- cell.coords = this.instance.selections.getCell().cellRange.highlight;
175
- cell.TD = this.instance.wtTable.getCell(cell.coords);
191
+ cell.coords = this.selections.getCell().cellRange.highlight;
192
+ cell.TD = this.wtTable.getCell(cell.coords);
176
193
  } else if (hasClass(elem, 'wtBorder') && hasClass(elem, 'area')) {
177
- if (this.instance.selections.createOrGetArea().cellRange) {
178
- cell.coords = this.instance.selections.createOrGetArea().cellRange.to;
179
- cell.TD = this.instance.wtTable.getCell(cell.coords);
194
+ if (this.selections.createOrGetArea().cellRange) {
195
+ cell.coords = this.selections.createOrGetArea().cellRange.to;
196
+ cell.TD = this.wtTable.getCell(cell.coords);
180
197
  }
181
198
  }
182
199
 
@@ -193,7 +210,7 @@ var Event = /*#__PURE__*/function () {
193
210
  key: "onMouseDown",
194
211
  value: function onMouseDown(event) {
195
212
  var priv = privatePool.get(this);
196
- var activeElement = this.instance.rootDocument.activeElement;
213
+ var activeElement = this.domBindings.rootDocument.activeElement;
197
214
  var getParentNode = partial(getParent, event.target);
198
215
  var realTarget = event.target; // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)
199
216
 
@@ -204,13 +221,13 @@ var Event = /*#__PURE__*/function () {
204
221
  var cell = this.parentCell(realTarget);
205
222
 
206
223
  if (hasClass(realTarget, 'corner')) {
207
- this.instance.getSetting('onCellCornerMouseDown', event, realTarget);
208
- } else if (cell.TD && this.instance.hasSetting('onCellMouseDown')) {
209
- this.instance.getSetting('onCellMouseDown', event, cell.coords, cell.TD, this.instance);
224
+ this.wtSettings.getSetting('onCellCornerMouseDown', event, realTarget);
225
+ } else if (cell.TD && this.wtSettings.has('onCellMouseDown')) {
226
+ this.callListener('onCellMouseDown', event, cell.coords, cell.TD);
210
227
  } // doubleclick reacts only for left mouse button or from touch events
211
228
 
212
229
 
213
- if ((event.button === 0 || this.instance.touchApplied) && cell.TD) {
230
+ if ((event.button === 0 || this.touchApplied) && cell.TD) {
214
231
  priv.dblClickOrigin[0] = cell.TD;
215
232
  clearTimeout(priv.dblClickTimeout[0]);
216
233
  priv.dblClickTimeout[0] = setTimeout(function () {
@@ -228,11 +245,11 @@ var Event = /*#__PURE__*/function () {
228
245
  }, {
229
246
  key: "onContextMenu",
230
247
  value: function onContextMenu(event) {
231
- if (this.instance.hasSetting('onCellContextMenu')) {
248
+ if (this.wtSettings.has('onCellContextMenu')) {
232
249
  var cell = this.parentCell(event.target);
233
250
 
234
251
  if (cell.TD) {
235
- this.instance.getSetting('onCellContextMenu', event, cell.coords, cell.TD, this.instance);
252
+ this.callListener('onCellContextMenu', event, cell.coords, cell.TD);
236
253
  }
237
254
  }
238
255
  }
@@ -246,17 +263,17 @@ var Event = /*#__PURE__*/function () {
246
263
  }, {
247
264
  key: "onMouseOver",
248
265
  value: function onMouseOver(event) {
249
- if (!this.instance.hasSetting('onCellMouseOver')) {
266
+ if (!this.wtSettings.has('onCellMouseOver')) {
250
267
  return;
251
268
  }
252
269
 
253
- var table = this.instance.wtTable.TABLE;
270
+ var table = this.wtTable.TABLE;
254
271
  var td = closestDown(event.target, ['TD', 'TH'], table);
255
- var mainWOT = this.instance.cloneSource || this.instance;
272
+ var parent = this.parent || this;
256
273
 
257
- if (td && td !== mainWOT.lastMouseOver && isChildOf(td, table)) {
258
- mainWOT.lastMouseOver = td;
259
- this.instance.getSetting('onCellMouseOver', event, this.instance.wtTable.getCoords(td), td, this.instance);
274
+ if (td && td !== parent.lastMouseOver && isChildOf(td, table)) {
275
+ parent.lastMouseOver = td;
276
+ this.callListener('onCellMouseOver', event, this.wtTable.getCoords(td), td);
260
277
  }
261
278
  }
262
279
  /**
@@ -269,16 +286,16 @@ var Event = /*#__PURE__*/function () {
269
286
  }, {
270
287
  key: "onMouseOut",
271
288
  value: function onMouseOut(event) {
272
- if (!this.instance.hasSetting('onCellMouseOut')) {
289
+ if (!this.wtSettings.has('onCellMouseOut')) {
273
290
  return;
274
291
  }
275
292
 
276
- var table = this.instance.wtTable.TABLE;
293
+ var table = this.wtTable.TABLE;
277
294
  var lastTD = closestDown(event.target, ['TD', 'TH'], table);
278
295
  var nextTD = closestDown(event.relatedTarget, ['TD', 'TH'], table);
279
296
 
280
297
  if (lastTD && lastTD !== nextTD && isChildOf(lastTD, table)) {
281
- this.instance.getSetting('onCellMouseOut', event, this.instance.wtTable.getCoords(lastTD), lastTD, this.instance);
298
+ this.callListener('onCellMouseOut', event, this.wtTable.getCoords(lastTD), lastTD);
282
299
  }
283
300
  }
284
301
  /**
@@ -294,20 +311,20 @@ var Event = /*#__PURE__*/function () {
294
311
  var priv = privatePool.get(this);
295
312
  var cell = this.parentCell(event.target);
296
313
 
297
- if (cell.TD && this.instance.hasSetting('onCellMouseUp')) {
298
- this.instance.getSetting('onCellMouseUp', event, cell.coords, cell.TD, this.instance);
314
+ if (cell.TD && this.wtSettings.has('onCellMouseUp')) {
315
+ this.callListener('onCellMouseUp', event, cell.coords, cell.TD);
299
316
  } // if not left mouse button, and the origin event is not comes from touch
300
317
 
301
318
 
302
- if (event.button !== 0 && !this.instance.touchApplied) {
319
+ if (event.button !== 0 && !this.touchApplied) {
303
320
  return;
304
321
  }
305
322
 
306
323
  if (cell.TD === priv.dblClickOrigin[0] && cell.TD === priv.dblClickOrigin[1]) {
307
324
  if (hasClass(event.target, 'corner')) {
308
- this.instance.getSetting('onCellCornerDblClick', event, cell.coords, cell.TD, this.instance);
325
+ this.callListener('onCellCornerDblClick', event, cell.coords, cell.TD);
309
326
  } else {
310
- this.instance.getSetting('onCellDblClick', event, cell.coords, cell.TD, this.instance);
327
+ this.callListener('onCellDblClick', event, cell.coords, cell.TD);
311
328
  }
312
329
 
313
330
  priv.dblClickOrigin[0] = null;
@@ -331,8 +348,8 @@ var Event = /*#__PURE__*/function () {
331
348
  key: "onTouchStart",
332
349
  value: function onTouchStart(event) {
333
350
  var priv = privatePool.get(this);
334
- priv.selectedCellBeforeTouchEnd = this.instance.selections.getCell().cellRange;
335
- this.instance.touchApplied = true;
351
+ priv.selectedCellBeforeTouchEnd = this.selections.getCell().cellRange;
352
+ this.touchApplied = true;
336
353
  this.onMouseDown(event);
337
354
  }
338
355
  /**
@@ -350,7 +367,7 @@ var Event = /*#__PURE__*/function () {
350
367
  var target = event.target;
351
368
  var parentCellCoords = (_this$parentCell = this.parentCell(target)) === null || _this$parentCell === void 0 ? void 0 : _this$parentCell.coords;
352
369
  var isCellsRange = isDefined(parentCellCoords) && parentCellCoords.row >= 0 && parentCellCoords.col >= 0;
353
- var isEventCancelable = event.cancelable && isCellsRange && this.instance.getSetting('isDataViewInstance'); // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
370
+ var isEventCancelable = event.cancelable && isCellsRange && this.wtSettings.getSetting('isDataViewInstance'); // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
354
371
  // while the cell is highlighted, all touch events that are triggered on different cells are
355
372
  // "preventDefault"'ed. The user can interact with the element (e.q. click on the link that opens
356
373
  // a new page) only when the same cell was previously selected (see related PR #7980).
@@ -372,7 +389,26 @@ var Event = /*#__PURE__*/function () {
372
389
  }
373
390
 
374
391
  this.onMouseUp(event);
375
- this.instance.touchApplied = false;
392
+ this.touchApplied = false;
393
+ }
394
+ /**
395
+ * Call listener with backward compatibility.
396
+ *
397
+ * @private
398
+ * @param {string} name Name of listener.
399
+ * @param {MouseEvent} event The event object.
400
+ * @param {CellCoords} coords Coordinates.
401
+ * @param {HTMLElement} target Event target.
402
+ */
403
+
404
+ }, {
405
+ key: "callListener",
406
+ value: function callListener(name, event, coords, target) {
407
+ var listener = this.wtSettings.getSettingPure(name);
408
+
409
+ if (listener) {
410
+ listener(event, coords, target, this.facadeGetter());
411
+ }
376
412
  }
377
413
  /**
378
414
  * Clears double-click timeouts and destroys the internal eventManager instance.