handsontable 11.1.0 → 12.1.0

Sign up to get free protection for your applications and to get access to all the features.
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.