handsontable 13.1.0 → 14.0.0-next-e8f87aa-20231030

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 (691) hide show
  1. package/3rdparty/walkontable/src/calculator/constants.js +3 -6
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
  4. package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
  5. package/3rdparty/walkontable/src/cell/coords.js +81 -13
  6. package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
  7. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  8. package/3rdparty/walkontable/src/cell/range.js +39 -9
  9. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  10. package/3rdparty/walkontable/src/core/_base.js +9 -3
  11. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  12. package/3rdparty/walkontable/src/core/clone.js +2 -2
  13. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  14. package/3rdparty/walkontable/src/core/core.js +3 -2
  15. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  16. package/3rdparty/walkontable/src/event.js +13 -12
  17. package/3rdparty/walkontable/src/event.mjs +12 -10
  18. package/3rdparty/walkontable/src/facade/core.js +2 -2
  19. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  20. package/3rdparty/walkontable/src/filter/column.js +1 -2
  21. package/3rdparty/walkontable/src/filter/row.js +1 -2
  22. package/3rdparty/walkontable/src/index.js +12 -4
  23. package/3rdparty/walkontable/src/index.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  25. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  26. package/3rdparty/walkontable/src/overlay/constants.js +7 -14
  27. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  28. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  29. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  30. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  31. package/3rdparty/walkontable/src/overlays.js +1 -2
  32. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  33. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  34. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -0
  35. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
  36. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
  37. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -0
  38. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  39. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  40. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  41. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  42. package/3rdparty/walkontable/src/scroll.js +3 -2
  43. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  44. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
  45. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  46. package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
  47. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  48. package/3rdparty/walkontable/src/selection/constants.js +54 -0
  49. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  50. package/3rdparty/walkontable/src/selection/index.js +26 -0
  51. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  52. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  53. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  54. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  55. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  56. package/3rdparty/walkontable/src/selection/selection.js +100 -0
  57. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  58. package/3rdparty/walkontable/src/settings.js +13 -4
  59. package/3rdparty/walkontable/src/settings.mjs +13 -4
  60. package/3rdparty/walkontable/src/table/bottom.js +1 -2
  61. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
  62. package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
  63. package/3rdparty/walkontable/src/table/master.js +3 -6
  64. package/3rdparty/walkontable/src/table/master.mjs +2 -4
  65. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
  66. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  67. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
  68. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  69. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
  70. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
  72. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  73. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
  74. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  75. package/3rdparty/walkontable/src/table/top.js +1 -2
  76. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
  77. package/3rdparty/walkontable/src/table.js +20 -80
  78. package/3rdparty/walkontable/src/table.mjs +20 -79
  79. package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
  80. package/3rdparty/walkontable/src/viewport.js +1 -2
  81. package/CHANGELOG.md +51 -0
  82. package/base.js +3 -4
  83. package/base.mjs +2 -2
  84. package/cellTypes/autocompleteType/autocompleteType.js +3 -5
  85. package/cellTypes/checkboxType/checkboxType.js +3 -5
  86. package/cellTypes/dateType/dateType.d.ts +3 -3
  87. package/cellTypes/dateType/dateType.js +5 -7
  88. package/cellTypes/dateType/dateType.mjs +2 -2
  89. package/cellTypes/dropdownType/dropdownType.js +3 -5
  90. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  91. package/cellTypes/handsontableType/handsontableType.js +5 -7
  92. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  93. package/cellTypes/index.d.ts +3 -0
  94. package/cellTypes/index.js +4 -0
  95. package/cellTypes/index.mjs +3 -1
  96. package/cellTypes/numericType/numericType.js +3 -5
  97. package/cellTypes/passwordType/passwordType.js +3 -5
  98. package/cellTypes/selectType/index.d.ts +1 -0
  99. package/cellTypes/selectType/index.js +6 -0
  100. package/cellTypes/selectType/index.mjs +1 -0
  101. package/cellTypes/selectType/selectType.d.ts +14 -0
  102. package/cellTypes/selectType/selectType.js +11 -0
  103. package/cellTypes/selectType/selectType.mjs +8 -0
  104. package/cellTypes/textType/textType.js +3 -5
  105. package/cellTypes/timeType/timeType.js +3 -5
  106. package/common.d.ts +1 -1
  107. package/core/focusCatcher/focusDetector.js +63 -0
  108. package/core/focusCatcher/focusDetector.mjs +59 -0
  109. package/core/focusCatcher/index.js +148 -0
  110. package/core/focusCatcher/index.mjs +144 -0
  111. package/core/index.js +9 -0
  112. package/core/index.mjs +1 -0
  113. package/core.d.ts +10 -5
  114. package/core.js +327 -359
  115. package/core.mjs +327 -359
  116. package/dataMap/dataMap.js +1 -2
  117. package/dataMap/dataSource.js +1 -2
  118. package/dataMap/metaManager/metaSchema.js +65 -0
  119. package/dataMap/metaManager/metaSchema.mjs +65 -0
  120. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  121. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  122. package/dataMap/replaceData.js +5 -0
  123. package/dataMap/replaceData.mjs +5 -0
  124. package/dist/handsontable.css +94 -76
  125. package/dist/handsontable.full.css +94 -76
  126. package/dist/handsontable.full.js +23133 -15992
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +21856 -15085
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +30 -22
  132. package/dist/languages/all.js +47 -40
  133. package/dist/languages/all.min.js +1 -1
  134. package/dist/languages/ar-AR.js +1 -2
  135. package/dist/languages/cs-CZ.js +1 -2
  136. package/dist/languages/de-CH.js +1 -2
  137. package/dist/languages/de-DE.js +1 -2
  138. package/dist/languages/en-US.js +15 -3
  139. package/dist/languages/en-US.min.js +1 -1
  140. package/dist/languages/es-MX.js +1 -2
  141. package/dist/languages/fr-FR.js +1 -2
  142. package/dist/languages/it-IT.js +1 -2
  143. package/dist/languages/ja-JP.js +1 -2
  144. package/dist/languages/ko-KR.js +1 -2
  145. package/dist/languages/lv-LV.js +1 -2
  146. package/dist/languages/nb-NO.js +1 -2
  147. package/dist/languages/nl-NL.js +1 -2
  148. package/dist/languages/pl-PL.js +15 -3
  149. package/dist/languages/pl-PL.min.js +1 -1
  150. package/dist/languages/pt-BR.js +1 -2
  151. package/dist/languages/ru-RU.js +1 -2
  152. package/dist/languages/sr-SP.js +1 -2
  153. package/dist/languages/zh-CN.js +1 -2
  154. package/dist/languages/zh-TW.js +1 -2
  155. package/editorManager.js +17 -91
  156. package/editorManager.mjs +16 -87
  157. package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
  158. package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
  159. package/editors/baseEditor/baseEditor.js +19 -13
  160. package/editors/baseEditor/baseEditor.mjs +16 -7
  161. package/editors/checkboxEditor/checkboxEditor.js +1 -2
  162. package/editors/dateEditor/dateEditor.js +27 -9
  163. package/editors/dateEditor/dateEditor.mjs +27 -8
  164. package/editors/dropdownEditor/dropdownEditor.js +1 -2
  165. package/editors/handsontableEditor/handsontableEditor.js +14 -7
  166. package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
  167. package/editors/numericEditor/numericEditor.js +1 -2
  168. package/editors/passwordEditor/passwordEditor.js +1 -2
  169. package/editors/selectEditor/selectEditor.js +1 -2
  170. package/editors/textEditor/textEditor.js +20 -29
  171. package/editors/textEditor/textEditor.mjs +22 -30
  172. package/editors/timeEditor/timeEditor.js +1 -2
  173. package/eventManager.js +1 -2
  174. package/focusManager.d.ts +12 -0
  175. package/focusManager.js +265 -0
  176. package/focusManager.mjs +261 -0
  177. package/helpers/a11y.js +81 -0
  178. package/helpers/a11y.mjs +39 -0
  179. package/helpers/dom/element.js +224 -12
  180. package/helpers/dom/element.mjs +216 -10
  181. package/helpers/dom/event.d.ts +1 -0
  182. package/helpers/dom/event.js +25 -0
  183. package/helpers/dom/event.mjs +24 -0
  184. package/helpers/mixed.js +2 -2
  185. package/helpers/mixed.mjs +2 -2
  186. package/helpers/number.d.ts +1 -0
  187. package/helpers/number.js +18 -0
  188. package/helpers/number.mjs +17 -0
  189. package/helpers/unicode.js +1 -2
  190. package/i18n/constants.js +97 -160
  191. package/i18n/constants.mjs +17 -1
  192. package/i18n/languages/ar-AR.js +3 -4
  193. package/i18n/languages/cs-CZ.js +3 -4
  194. package/i18n/languages/de-CH.js +3 -4
  195. package/i18n/languages/de-DE.js +3 -4
  196. package/i18n/languages/en-US.js +17 -5
  197. package/i18n/languages/en-US.mjs +14 -1
  198. package/i18n/languages/es-MX.js +3 -4
  199. package/i18n/languages/fr-FR.js +3 -4
  200. package/i18n/languages/it-IT.js +3 -4
  201. package/i18n/languages/ja-JP.js +3 -4
  202. package/i18n/languages/ko-KR.js +3 -4
  203. package/i18n/languages/lv-LV.js +3 -4
  204. package/i18n/languages/nb-NO.js +3 -4
  205. package/i18n/languages/nl-NL.js +3 -4
  206. package/i18n/languages/pl-PL.js +17 -5
  207. package/i18n/languages/pl-PL.mjs +14 -1
  208. package/i18n/languages/pt-BR.js +3 -4
  209. package/i18n/languages/ru-RU.js +3 -4
  210. package/i18n/languages/sr-SP.js +3 -4
  211. package/i18n/languages/zh-CN.js +3 -4
  212. package/i18n/languages/zh-TW.js +3 -4
  213. package/i18n/registry.js +4 -6
  214. package/index.js +3 -4
  215. package/languages/all.js +47 -40
  216. package/languages/ar-AR.js +1 -2
  217. package/languages/cs-CZ.js +1 -2
  218. package/languages/de-CH.js +1 -2
  219. package/languages/de-DE.js +1 -2
  220. package/languages/en-US.js +15 -3
  221. package/languages/en-US.mjs +14 -1
  222. package/languages/es-MX.js +1 -2
  223. package/languages/fr-FR.js +1 -2
  224. package/languages/index.js +47 -40
  225. package/languages/it-IT.js +1 -2
  226. package/languages/ja-JP.js +1 -2
  227. package/languages/ko-KR.js +1 -2
  228. package/languages/lv-LV.js +1 -2
  229. package/languages/nb-NO.js +1 -2
  230. package/languages/nl-NL.js +1 -2
  231. package/languages/pl-PL.js +15 -3
  232. package/languages/pl-PL.mjs +14 -1
  233. package/languages/pt-BR.js +1 -2
  234. package/languages/ru-RU.js +1 -2
  235. package/languages/sr-SP.js +1 -2
  236. package/languages/zh-CN.js +1 -2
  237. package/languages/zh-TW.js +1 -2
  238. package/mixins/hooksRefRegisterer.js +1 -2
  239. package/mixins/localHooks.js +1 -2
  240. package/package.json +119 -96
  241. package/pluginHooks.d.ts +42 -7
  242. package/pluginHooks.js +301 -65
  243. package/pluginHooks.mjs +300 -63
  244. package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
  245. package/plugins/autoColumnSize/autoColumnSize.js +2 -4
  246. package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
  247. package/plugins/autoRowSize/autoRowSize.js +15 -10
  248. package/plugins/autoRowSize/autoRowSize.mjs +13 -6
  249. package/plugins/autofill/autofill.js +2 -4
  250. package/plugins/autofill/utils.js +1 -2
  251. package/plugins/base/base.js +1 -2
  252. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
  253. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
  254. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
  255. package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
  256. package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
  257. package/plugins/columnSorting/columnSorting.js +71 -6
  258. package/plugins/columnSorting/columnSorting.mjs +70 -3
  259. package/plugins/columnSorting/index.js +3 -1
  260. package/plugins/columnSorting/index.mjs +1 -1
  261. package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
  262. package/plugins/columnSorting/sortFunction/date.js +1 -2
  263. package/plugins/columnSorting/sortFunction/default.js +1 -2
  264. package/plugins/columnSorting/sortFunction/numeric.js +1 -2
  265. package/plugins/columnSorting/sortService/engine.js +3 -6
  266. package/plugins/columnSorting/utils.js +3 -6
  267. package/plugins/columnSummary/columnSummary.js +2 -4
  268. package/plugins/columnSummary/endpoints.js +1 -2
  269. package/plugins/comments/commentEditor.js +2 -2
  270. package/plugins/comments/commentEditor.mjs +1 -0
  271. package/plugins/comments/comments.js +254 -197
  272. package/plugins/comments/comments.mjs +251 -190
  273. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  274. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  275. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  276. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  277. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  278. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  279. package/plugins/comments/displaySwitch.js +1 -2
  280. package/plugins/contextMenu/commandExecutor.js +2 -3
  281. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  282. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  283. package/plugins/contextMenu/contextMenu.js +77 -40
  284. package/plugins/contextMenu/contextMenu.mjs +74 -35
  285. package/plugins/contextMenu/itemsFactory.js +2 -3
  286. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  287. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  288. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  289. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  290. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  291. package/plugins/contextMenu/menu/index.js +9 -0
  292. package/plugins/contextMenu/menu/index.mjs +1 -0
  293. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  294. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  295. package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
  296. package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
  297. package/plugins/contextMenu/menu/navigator.js +27 -0
  298. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  299. package/plugins/contextMenu/menu/positioner.js +213 -0
  300. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  301. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  302. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  303. package/plugins/contextMenu/menu/utils.js +177 -0
  304. package/plugins/contextMenu/menu/utils.mjs +163 -0
  305. package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
  306. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  307. package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
  308. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  309. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
  310. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  311. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
  312. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  313. package/plugins/contextMenu/predefinedItems/index.js +75 -0
  314. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  315. package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
  316. package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
  317. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  318. package/plugins/contextMenu/predefinedItems/redo.js +3 -4
  319. package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
  320. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  321. package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
  322. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  323. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
  324. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  325. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
  326. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  327. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  328. package/plugins/contextMenu/predefinedItems/undo.js +3 -4
  329. package/plugins/contextMenu/utils.js +35 -151
  330. package/plugins/contextMenu/utils.mjs +35 -144
  331. package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
  332. package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
  333. package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
  334. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
  335. package/plugins/copyPaste/clipboardData/index.js +9 -0
  336. package/plugins/copyPaste/clipboardData/index.mjs +4 -0
  337. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
  338. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
  339. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  340. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  341. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  342. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  343. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  344. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  345. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  346. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  347. package/plugins/copyPaste/contextMenuItem/cut.js +9 -2
  348. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  349. package/plugins/copyPaste/copyPaste.js +160 -167
  350. package/plugins/copyPaste/copyPaste.mjs +161 -166
  351. package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
  352. package/plugins/customBorders/contextMenuItem/left.js +2 -2
  353. package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
  354. package/plugins/customBorders/contextMenuItem/right.js +2 -2
  355. package/plugins/customBorders/contextMenuItem/top.js +2 -2
  356. package/plugins/customBorders/customBorders.js +27 -26
  357. package/plugins/customBorders/customBorders.mjs +24 -21
  358. package/plugins/dragToScroll/dragToScroll.js +2 -4
  359. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  360. package/plugins/dropdownMenu/dropdownMenu.js +130 -44
  361. package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
  362. package/plugins/exportFile/dataProvider.js +1 -2
  363. package/plugins/exportFile/exportFile.js +4 -6
  364. package/plugins/exportFile/typeFactory.js +5 -8
  365. package/plugins/exportFile/types/_base.js +1 -2
  366. package/plugins/exportFile/types/csv.js +1 -2
  367. package/plugins/filters/component/_base.js +23 -8
  368. package/plugins/filters/component/_base.mjs +23 -8
  369. package/plugins/filters/component/actionBar.js +31 -29
  370. package/plugins/filters/component/actionBar.mjs +26 -23
  371. package/plugins/filters/component/condition.js +48 -61
  372. package/plugins/filters/component/condition.mjs +40 -52
  373. package/plugins/filters/component/operators.js +21 -22
  374. package/plugins/filters/component/operators.mjs +18 -18
  375. package/plugins/filters/component/value.js +37 -28
  376. package/plugins/filters/component/value.mjs +32 -22
  377. package/plugins/filters/condition/beginsWith.js +3 -4
  378. package/plugins/filters/condition/between.js +3 -4
  379. package/plugins/filters/condition/byValue.js +1 -2
  380. package/plugins/filters/condition/contains.js +3 -4
  381. package/plugins/filters/condition/date/after.js +3 -4
  382. package/plugins/filters/condition/date/before.js +3 -4
  383. package/plugins/filters/condition/date/today.js +3 -4
  384. package/plugins/filters/condition/date/tomorrow.js +3 -4
  385. package/plugins/filters/condition/date/yesterday.js +3 -4
  386. package/plugins/filters/condition/empty.js +3 -4
  387. package/plugins/filters/condition/endsWith.js +3 -4
  388. package/plugins/filters/condition/equal.js +3 -4
  389. package/plugins/filters/condition/false.js +1 -2
  390. package/plugins/filters/condition/greaterThan.js +3 -4
  391. package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
  392. package/plugins/filters/condition/lessThan.js +3 -4
  393. package/plugins/filters/condition/lessThanOrEqual.js +3 -4
  394. package/plugins/filters/condition/none.js +3 -4
  395. package/plugins/filters/condition/notBetween.js +3 -4
  396. package/plugins/filters/condition/notContains.js +3 -4
  397. package/plugins/filters/condition/notEmpty.js +3 -4
  398. package/plugins/filters/condition/notEqual.js +3 -4
  399. package/plugins/filters/condition/true.js +1 -2
  400. package/plugins/filters/conditionCollection.d.ts +3 -2
  401. package/plugins/filters/conditionCollection.js +1 -2
  402. package/plugins/filters/conditionRegisterer.js +1 -2
  403. package/plugins/filters/conditionUpdateObserver.js +1 -2
  404. package/plugins/filters/constants.js +4 -8
  405. package/plugins/filters/constants.mjs +1 -1
  406. package/plugins/filters/dataFilter.js +1 -2
  407. package/plugins/filters/filters.d.ts +3 -5
  408. package/plugins/filters/filters.js +118 -67
  409. package/plugins/filters/filters.mjs +109 -56
  410. package/plugins/filters/logicalOperationRegisterer.js +1 -2
  411. package/plugins/filters/logicalOperations/conjunction.js +4 -6
  412. package/plugins/filters/logicalOperations/disjunction.js +4 -6
  413. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
  414. package/plugins/filters/menu/focusController.js +123 -0
  415. package/plugins/filters/menu/focusController.mjs +119 -0
  416. package/plugins/filters/menu/focusNavigator.js +30 -0
  417. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  418. package/plugins/filters/ui/_base.js +37 -15
  419. package/plugins/filters/ui/_base.mjs +35 -13
  420. package/plugins/filters/ui/input.js +43 -35
  421. package/plugins/filters/ui/input.mjs +42 -33
  422. package/plugins/filters/ui/link.js +44 -12
  423. package/plugins/filters/ui/link.mjs +44 -11
  424. package/plugins/filters/ui/multipleSelect.js +237 -133
  425. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  426. package/plugins/filters/ui/radioInput.js +42 -18
  427. package/plugins/filters/ui/radioInput.mjs +42 -17
  428. package/plugins/filters/ui/select.js +152 -77
  429. package/plugins/filters/ui/select.mjs +148 -72
  430. package/plugins/formulas/engine/settings.js +2 -4
  431. package/plugins/formulas/formulas.js +3 -6
  432. package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
  433. package/plugins/formulas/indexSyncer/index.js +1 -2
  434. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
  435. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  436. package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
  437. package/plugins/hiddenColumns/hiddenColumns.js +49 -6
  438. package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
  439. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
  440. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  441. package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
  442. package/plugins/hiddenRows/hiddenRows.js +49 -6
  443. package/plugins/hiddenRows/hiddenRows.mjs +48 -3
  444. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
  445. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
  446. package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
  447. package/plugins/manualColumnMove/manualColumnMove.js +9 -17
  448. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
  449. package/plugins/manualColumnMove/ui/_base.js +1 -2
  450. package/plugins/manualColumnMove/ui/backlight.js +1 -2
  451. package/plugins/manualColumnMove/ui/guideline.js +1 -2
  452. package/plugins/manualColumnResize/manualColumnResize.js +2 -4
  453. package/plugins/manualRowMove/manualRowMove.js +6 -23
  454. package/plugins/manualRowMove/manualRowMove.mjs +4 -19
  455. package/plugins/manualRowMove/ui/_base.js +1 -2
  456. package/plugins/manualRowMove/ui/backlight.js +1 -2
  457. package/plugins/manualRowMove/ui/guideline.js +1 -2
  458. package/plugins/manualRowResize/manualRowResize.js +2 -4
  459. package/plugins/mergeCells/calculations/autofill.js +1 -2
  460. package/plugins/mergeCells/calculations/selection.js +1 -2
  461. package/plugins/mergeCells/cellCoords.js +1 -2
  462. package/plugins/mergeCells/cellsCollection.js +1 -2
  463. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
  464. package/plugins/mergeCells/mergeCells.js +7 -20
  465. package/plugins/mergeCells/mergeCells.mjs +5 -16
  466. package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
  467. package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
  468. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
  469. package/plugins/nestedHeaders/nestedHeaders.js +263 -36
  470. package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
  471. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  472. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  473. package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
  474. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  475. package/plugins/nestedRows/data/dataManager.js +1 -2
  476. package/plugins/nestedRows/nestedRows.js +47 -10
  477. package/plugins/nestedRows/nestedRows.mjs +45 -6
  478. package/plugins/nestedRows/ui/_base.js +1 -2
  479. package/plugins/nestedRows/ui/collapsing.js +1 -2
  480. package/plugins/nestedRows/ui/contextMenu.js +3 -4
  481. package/plugins/nestedRows/ui/headers.js +13 -3
  482. package/plugins/nestedRows/ui/headers.mjs +13 -2
  483. package/plugins/persistentState/persistentState.js +2 -4
  484. package/plugins/persistentState/storage.js +1 -2
  485. package/plugins/search/search.js +2 -4
  486. package/plugins/touchScroll/touchScroll.js +2 -4
  487. package/plugins/trimRows/trimRows.js +2 -4
  488. package/plugins/undoRedo/index.js +2 -2
  489. package/plugins/undoRedo/undoRedo.js +2 -4
  490. package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
  491. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  492. package/renderers/baseRenderer/baseRenderer.js +18 -2
  493. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  494. package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
  495. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  496. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  497. package/renderers/dateRenderer/dateRenderer.js +28 -0
  498. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  499. package/renderers/dateRenderer/index.d.ts +1 -0
  500. package/renderers/dateRenderer/index.js +6 -0
  501. package/renderers/dateRenderer/index.mjs +1 -0
  502. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  503. package/renderers/handsontableRenderer/handsontableRenderer.js +28 -0
  504. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  505. package/renderers/handsontableRenderer/index.d.ts +1 -0
  506. package/renderers/handsontableRenderer/index.js +6 -0
  507. package/renderers/handsontableRenderer/index.mjs +1 -0
  508. package/renderers/htmlRenderer/htmlRenderer.js +1 -2
  509. package/renderers/index.d.ts +9 -0
  510. package/renderers/numericRenderer/numericRenderer.js +1 -2
  511. package/renderers/passwordRenderer/passwordRenderer.js +1 -2
  512. package/renderers/selectRenderer/index.d.ts +1 -0
  513. package/renderers/selectRenderer/index.js +6 -0
  514. package/renderers/selectRenderer/index.mjs +1 -0
  515. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  516. package/renderers/selectRenderer/selectRenderer.js +26 -0
  517. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  518. package/renderers/textRenderer/textRenderer.js +1 -2
  519. package/renderers/timeRenderer/timeRenderer.js +1 -2
  520. package/selection/highlight/highlight.js +257 -73
  521. package/selection/highlight/highlight.mjs +250 -71
  522. package/selection/highlight/types/activeHeader.js +10 -8
  523. package/selection/highlight/types/activeHeader.mjs +10 -8
  524. package/selection/highlight/types/area.js +6 -18
  525. package/selection/highlight/types/area.mjs +6 -18
  526. package/selection/highlight/types/areaLayered.js +31 -0
  527. package/selection/highlight/types/areaLayered.mjs +26 -0
  528. package/selection/highlight/types/column.js +27 -0
  529. package/selection/highlight/types/column.mjs +22 -0
  530. package/selection/highlight/types/customSelection.js +7 -9
  531. package/selection/highlight/types/customSelection.mjs +7 -9
  532. package/selection/highlight/types/fill.js +5 -7
  533. package/selection/highlight/types/fill.mjs +5 -7
  534. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  535. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  536. package/selection/highlight/types/header.js +9 -18
  537. package/selection/highlight/types/header.mjs +9 -18
  538. package/selection/highlight/types/row.js +27 -0
  539. package/selection/highlight/types/row.mjs +22 -0
  540. package/selection/highlight/visualSelection.js +32 -29
  541. package/selection/highlight/visualSelection.mjs +31 -27
  542. package/selection/index.js +4 -7
  543. package/selection/index.mjs +2 -3
  544. package/selection/mouseEventHandler.js +7 -1
  545. package/selection/mouseEventHandler.mjs +7 -1
  546. package/selection/range.js +9 -10
  547. package/selection/range.mjs +8 -8
  548. package/selection/selection.js +334 -154
  549. package/selection/selection.mjs +330 -151
  550. package/selection/transformation.js +233 -94
  551. package/selection/transformation.mjs +232 -92
  552. package/selection/utils.js +20 -31
  553. package/selection/utils.mjs +16 -21
  554. package/settings.d.ts +4 -0
  555. package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
  556. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  557. package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
  558. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  559. package/shortcutContexts/commands/editor/fastOpen.js +15 -0
  560. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  561. package/shortcutContexts/commands/editor/index.js +16 -0
  562. package/shortcutContexts/commands/editor/index.mjs +12 -0
  563. package/shortcutContexts/commands/editor/open.js +26 -0
  564. package/shortcutContexts/commands/editor/open.mjs +23 -0
  565. package/shortcutContexts/commands/emptySelectedCells.js +10 -0
  566. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  567. package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
  568. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  569. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -0
  570. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  571. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  572. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  573. package/shortcutContexts/commands/extendCellsSelection/left.js +14 -0
  574. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  575. package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
  576. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  577. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
  578. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  579. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
  580. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  581. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
  582. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  583. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
  584. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  585. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
  586. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  587. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
  588. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  589. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
  590. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  591. package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
  592. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  593. package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
  594. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  595. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -0
  596. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  597. package/shortcutContexts/commands/index.js +35 -0
  598. package/shortcutContexts/commands/index.mjs +31 -0
  599. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  600. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  601. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -0
  602. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  603. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  604. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  605. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +11 -0
  606. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  607. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
  608. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  609. package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
  610. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  611. package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
  612. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  613. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  614. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  615. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  616. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  617. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  618. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  619. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  620. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  621. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
  622. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  623. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
  624. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  625. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  626. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  627. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  628. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  629. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  630. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  631. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
  632. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  633. package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
  634. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  635. package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
  636. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  637. package/shortcutContexts/commands/selectAll.js +11 -0
  638. package/shortcutContexts/commands/selectAll.mjs +8 -0
  639. package/shortcutContexts/constants.js +11 -0
  640. package/shortcutContexts/constants.mjs +8 -0
  641. package/shortcutContexts/editor.js +25 -0
  642. package/shortcutContexts/editor.mjs +21 -0
  643. package/shortcutContexts/grid.js +167 -0
  644. package/shortcutContexts/grid.mjs +163 -0
  645. package/shortcutContexts/index.js +24 -0
  646. package/shortcutContexts/index.mjs +11 -0
  647. package/shortcuts/context.d.ts +1 -0
  648. package/shortcuts/context.js +23 -4
  649. package/shortcuts/context.mjs +23 -5
  650. package/shortcuts/manager.js +31 -7
  651. package/shortcuts/manager.mjs +32 -7
  652. package/shortcuts/recorder.js +30 -14
  653. package/shortcuts/recorder.mjs +30 -14
  654. package/shortcuts/utils.js +19 -5
  655. package/shortcuts/utils.mjs +18 -4
  656. package/tableView.js +113 -16
  657. package/tableView.mjs +113 -15
  658. package/utils/dataStructures/linkedList.js +1 -2
  659. package/utils/dataStructures/priorityMap.js +2 -4
  660. package/utils/dataStructures/queue.js +1 -2
  661. package/utils/dataStructures/stack.js +1 -2
  662. package/utils/dataStructures/tree.js +3 -6
  663. package/utils/ghostTable.js +32 -17
  664. package/utils/ghostTable.mjs +31 -15
  665. package/utils/interval.js +1 -2
  666. package/utils/paginator.js +151 -0
  667. package/utils/paginator.mjs +147 -0
  668. package/utils/parseTable.js +527 -83
  669. package/utils/parseTable.mjs +523 -82
  670. package/utils/rootInstance.js +2 -4
  671. package/utils/samplesGenerator.js +21 -13
  672. package/utils/samplesGenerator.mjs +20 -11
  673. package/utils/staticRegister.js +1 -2
  674. package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
  675. package/validators/dateValidator/dateValidator.js +1 -2
  676. package/validators/numericValidator/numericValidator.js +1 -2
  677. package/validators/timeValidator/timeValidator.js +1 -2
  678. package/3rdparty/walkontable/src/selection.js +0 -295
  679. package/3rdparty/walkontable/src/selection.mjs +0 -290
  680. package/plugins/contextMenu/predefinedItems.js +0 -76
  681. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  682. package/plugins/copyPaste/clipboardData.js +0 -18
  683. package/plugins/copyPaste/clipboardData.mjs +0 -14
  684. package/plugins/copyPaste/focusableElement.js +0 -186
  685. package/plugins/copyPaste/focusableElement.mjs +0 -180
  686. package/plugins/copyPaste/pasteEvent.js +0 -14
  687. package/plugins/copyPaste/pasteEvent.mjs +0 -9
  688. package/selection/highlight/constants.js +0 -15
  689. package/selection/highlight/constants.mjs +0 -6
  690. package/selection/highlight/types/index.js +0 -35
  691. package/selection/highlight/types/index.mjs +0 -31
@@ -1,290 +0,0 @@
1
- import "core-js/modules/es.array.push.js";
2
- import { addClass, hasClass } from "./../../../helpers/dom/element.mjs";
3
- import Border from "./border.mjs";
4
- /**
5
- * @class Selection
6
- */
7
- class Selection {
8
- /**
9
- * @param {object} settings The selection settings object. @todo type.
10
- * @param {CellRange} cellRange The cell range instance.
11
- */
12
- constructor(settings, cellRange) {
13
- this.settings = settings;
14
- this.cellRange = cellRange || null;
15
- this.instanceBorders = {};
16
- this.classNames = [this.settings.className];
17
- this.classNameGenerator = this.linearClassNameGenerator(this.settings.className, this.settings.layerLevel);
18
- }
19
-
20
- /**
21
- * Each Walkontable clone requires it's own border for every selection. This method creates and returns selection
22
- * borders per instance.
23
- *
24
- * @param {WalkontableFacade} wotInstance The Walkontable instance.
25
- * @returns {Border}
26
- */
27
- getBorder(wotInstance) {
28
- if (!this.instanceBorders[wotInstance.guid]) {
29
- this.instanceBorders[wotInstance.guid] = new Border(wotInstance, this.settings);
30
- }
31
- return this.instanceBorders[wotInstance.guid];
32
- }
33
-
34
- /**
35
- * Checks if selection is empty.
36
- *
37
- * @returns {boolean}
38
- */
39
- isEmpty() {
40
- return this.cellRange === null;
41
- }
42
-
43
- /**
44
- * Adds a cell coords to the selection.
45
- *
46
- * @param {CellCoords} coords The cell coordinates to add.
47
- * @returns {Selection}
48
- */
49
- add(coords) {
50
- if (this.isEmpty()) {
51
- this.cellRange = this.settings.createCellRange(coords);
52
- } else {
53
- this.cellRange.expand(coords);
54
- }
55
- return this;
56
- }
57
-
58
- /**
59
- * If selection range from or to property equals oldCoords, replace it with newCoords. Return boolean
60
- * information about success.
61
- *
62
- * @param {CellCoords} oldCoords An old cell coordinates to replace.
63
- * @param {CellCoords} newCoords The new cell coordinates.
64
- * @returns {boolean}
65
- */
66
- replace(oldCoords, newCoords) {
67
- if (!this.isEmpty()) {
68
- if (this.cellRange.from.isEqual(oldCoords)) {
69
- this.cellRange.from = newCoords;
70
- return true;
71
- }
72
- if (this.cellRange.to.isEqual(oldCoords)) {
73
- this.cellRange.to = newCoords;
74
- return true;
75
- }
76
- }
77
- return false;
78
- }
79
-
80
- /**
81
- * Clears selection.
82
- *
83
- * @returns {Selection}
84
- */
85
- clear() {
86
- this.cellRange = null;
87
- return this;
88
- }
89
-
90
- /**
91
- * Returns the top left (or top right in RTL) and bottom right (or bottom left in RTL) selection coordinates.
92
- *
93
- * @returns {Array} Returns array of coordinates for example `[1, 1, 5, 5]`.
94
- */
95
- getCorners() {
96
- const topStart = this.cellRange.getOuterTopStartCorner();
97
- const bottomEnd = this.cellRange.getOuterBottomEndCorner();
98
- return [topStart.row, topStart.col, bottomEnd.row, bottomEnd.col];
99
- }
100
-
101
- /**
102
- * Adds class name to cell element at given coords.
103
- *
104
- * @param {WalkontableFacade} wotInstance Walkontable instance.
105
- * @param {number} sourceRow Cell row coord.
106
- * @param {number} sourceColumn Cell column coord.
107
- * @param {string} className Class name.
108
- * @param {boolean} [markIntersections=false] If `true`, linear className generator will be used to add CSS classes
109
- * in a continuous way.
110
- * @returns {Selection}
111
- */
112
- addClassAtCoords(wotInstance, sourceRow, sourceColumn, className) {
113
- let markIntersections = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
114
- const TD = wotInstance.wtTable.getCell(this.settings.createCellCoords(sourceRow, sourceColumn));
115
- if (typeof TD === 'object') {
116
- let cellClassName = className;
117
- if (markIntersections) {
118
- cellClassName = this.classNameGenerator(TD);
119
- if (!this.classNames.includes(cellClassName)) {
120
- this.classNames.push(cellClassName);
121
- }
122
- }
123
- addClass(TD, cellClassName);
124
- }
125
- return this;
126
- }
127
-
128
- /**
129
- * Generate helper for calculating classNames based on previously added base className.
130
- * The generated className is always generated as a continuation of the previous className. For example, when
131
- * the currently checked element has 'area-2' className the generated new className will be 'area-3'. When
132
- * the element doesn't have any classNames than the base className will be returned ('area');.
133
- *
134
- * @param {string} baseClassName Base className to be used.
135
- * @param {number} layerLevelOwner Layer level which the instance of the Selection belongs to.
136
- * @returns {Function}
137
- */
138
- linearClassNameGenerator(baseClassName, layerLevelOwner) {
139
- // TODO: Make this recursive function Proper Tail Calls (TCO/PTC) friendly.
140
- return function calcClassName(element) {
141
- let previousIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
142
- if (layerLevelOwner === 0 || previousIndex === 0) {
143
- return baseClassName;
144
- }
145
- let index = previousIndex >= 0 ? previousIndex : layerLevelOwner;
146
- let className = baseClassName;
147
- index -= 1;
148
- const previousClassName = index === 0 ? baseClassName : `${baseClassName}-${index}`;
149
- if (hasClass(element, previousClassName)) {
150
- const currentLayer = index + 1;
151
- className = `${baseClassName}-${currentLayer}`;
152
- } else {
153
- className = calcClassName(element, index);
154
- }
155
- return className;
156
- };
157
- }
158
-
159
- /**
160
- * @param {WalkontableFacade} wotInstance The Walkontable instance.
161
- */
162
- draw(wotInstance) {
163
- if (this.isEmpty()) {
164
- if (this.settings.border) {
165
- this.getBorder(wotInstance).disappear();
166
- }
167
- return;
168
- }
169
- const renderedRows = wotInstance.wtTable.getRenderedRowsCount();
170
- const renderedColumns = wotInstance.wtTable.getRenderedColumnsCount();
171
- const corners = this.getCorners();
172
- const [topRow, topColumn, bottomRow, bottomColumn] = corners;
173
- const {
174
- highlightHeaderClassName,
175
- highlightColumnClassName,
176
- highlightRowClassName,
177
- highlightOnlyClosestHeader,
178
- selectionType
179
- } = this.settings;
180
- const isHeaderSelectionType = selectionType === void 0 || ['active-header', 'header'].includes(selectionType);
181
- if (isHeaderSelectionType && topColumn !== null && bottomColumn !== null) {
182
- let selectionColumnCursor = 0;
183
- for (let column = 0; column < renderedColumns; column += 1) {
184
- const sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
185
- if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
186
- let THs = wotInstance.wtTable.getColumnHeaders(sourceCol);
187
- const closestHeaderLevel = THs.length - 1;
188
- if (highlightOnlyClosestHeader && THs.length > 1) {
189
- THs = [THs[closestHeaderLevel]];
190
- }
191
- for (let headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
192
- const newClasses = [];
193
- let TH = THs[headerLevel];
194
- if (highlightHeaderClassName) {
195
- newClasses.push(highlightHeaderClassName);
196
- }
197
- if (highlightColumnClassName) {
198
- newClasses.push(highlightColumnClassName);
199
- }
200
- headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
201
- const newSourceCol = wotInstance.getSetting('onBeforeHighlightingColumnHeader', sourceCol, headerLevel, {
202
- selectionType,
203
- columnCursor: selectionColumnCursor,
204
- selectionWidth: bottomColumn - topColumn + 1,
205
- classNames: newClasses
206
- });
207
- if (newSourceCol !== sourceCol) {
208
- TH = wotInstance.wtTable.getColumnHeader(newSourceCol, headerLevel);
209
- }
210
- addClass(TH, newClasses);
211
- }
212
- selectionColumnCursor += 1;
213
- }
214
- }
215
- }
216
- if (topRow !== null && bottomRow !== null) {
217
- let selectionRowCursor = 0;
218
- for (let row = 0; row < renderedRows; row += 1) {
219
- const sourceRow = wotInstance.wtTable.rowFilter.renderedToSource(row);
220
- if (isHeaderSelectionType && sourceRow >= topRow && sourceRow <= bottomRow) {
221
- let THs = wotInstance.wtTable.getRowHeaders(sourceRow);
222
- const closestHeaderLevel = THs.length - 1;
223
- if (highlightOnlyClosestHeader && THs.length > 1) {
224
- THs = [THs[closestHeaderLevel]];
225
- }
226
- for (let headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
227
- const newClasses = [];
228
- let TH = THs[headerLevel];
229
- if (highlightHeaderClassName) {
230
- newClasses.push(highlightHeaderClassName);
231
- }
232
- if (highlightRowClassName) {
233
- newClasses.push(highlightRowClassName);
234
- }
235
- headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
236
- const newSourceRow = wotInstance.getSetting('onBeforeHighlightingRowHeader', sourceRow, headerLevel, {
237
- selectionType,
238
- rowCursor: selectionRowCursor,
239
- selectionHeight: bottomRow - topRow + 1,
240
- classNames: newClasses
241
- });
242
- if (newSourceRow !== sourceRow) {
243
- TH = wotInstance.wtTable.getRowHeader(newSourceRow, headerLevel);
244
- }
245
- addClass(TH, newClasses);
246
- }
247
- selectionRowCursor += 1;
248
- }
249
- if (topColumn !== null && bottomColumn !== null) {
250
- for (let column = 0; column < renderedColumns; column += 1) {
251
- const sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
252
- if (sourceRow >= topRow && sourceRow <= bottomRow && sourceCol >= topColumn && sourceCol <= bottomColumn) {
253
- // selected cell
254
- if (this.settings.className) {
255
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, this.settings.className, this.settings.markIntersections);
256
- }
257
- } else if (sourceRow >= topRow && sourceRow <= bottomRow) {
258
- // selection is in this row
259
- if (highlightRowClassName) {
260
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, highlightRowClassName);
261
- }
262
- } else if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
263
- // selection is in this column
264
- if (highlightColumnClassName) {
265
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, highlightColumnClassName);
266
- }
267
- }
268
- const additionalSelectionClass = wotInstance.getSetting('onAfterDrawSelection', sourceRow, sourceCol, this.settings.layerLevel);
269
- if (typeof additionalSelectionClass === 'string') {
270
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, additionalSelectionClass);
271
- }
272
- }
273
- }
274
- }
275
- }
276
- wotInstance.getSetting('onBeforeDrawBorders', corners, this.settings.className);
277
- if (this.settings.border) {
278
- // warning! border.appear modifies corners!
279
- this.getBorder(wotInstance).appear(corners);
280
- }
281
- }
282
-
283
- /**
284
- * Cleans up all the DOM state related to a Selection instance. Call this prior to deleting a Selection instance.
285
- */
286
- destroy() {
287
- Object.values(this.instanceBorders).forEach(border => border.destroy());
288
- }
289
- }
290
- export default Selection;
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.addItem = addItem;
5
- exports.predefinedItems = predefinedItems;
6
- var _object = require("../../helpers/object");
7
- var _alignment = _interopRequireWildcard(require("./predefinedItems/alignment"));
8
- exports.ALIGNMENT = _alignment.KEY;
9
- var _clearColumn = _interopRequireWildcard(require("./predefinedItems/clearColumn"));
10
- exports.CLEAR_COLUMN = _clearColumn.KEY;
11
- var _columnLeft = _interopRequireWildcard(require("./predefinedItems/columnLeft"));
12
- exports.COLUMN_LEFT = _columnLeft.KEY;
13
- var _columnRight = _interopRequireWildcard(require("./predefinedItems/columnRight"));
14
- exports.COLUMN_RIGHT = _columnRight.KEY;
15
- var _readOnly = _interopRequireWildcard(require("./predefinedItems/readOnly"));
16
- exports.READ_ONLY = _readOnly.KEY;
17
- var _redo = _interopRequireWildcard(require("./predefinedItems/redo"));
18
- exports.REDO = _redo.KEY;
19
- var _removeColumn = _interopRequireWildcard(require("./predefinedItems/removeColumn"));
20
- exports.REMOVE_COLUMN = _removeColumn.KEY;
21
- var _removeRow = _interopRequireWildcard(require("./predefinedItems/removeRow"));
22
- exports.REMOVE_ROW = _removeRow.KEY;
23
- var _rowAbove = _interopRequireWildcard(require("./predefinedItems/rowAbove"));
24
- exports.ROW_ABOVE = _rowAbove.KEY;
25
- var _rowBelow = _interopRequireWildcard(require("./predefinedItems/rowBelow"));
26
- exports.ROW_BELOW = _rowBelow.KEY;
27
- var _separator = _interopRequireWildcard(require("./predefinedItems/separator"));
28
- exports.SEPARATOR = _separator.KEY;
29
- var _noItems = _interopRequireWildcard(require("./predefinedItems/noItems"));
30
- exports.NO_ITEMS = _noItems.KEY;
31
- var _undo = _interopRequireWildcard(require("./predefinedItems/undo"));
32
- exports.UNDO = _undo.KEY;
33
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
34
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
- const ITEMS = [_rowAbove.KEY, _rowBelow.KEY, _columnLeft.KEY, _columnRight.KEY, _clearColumn.KEY, _removeRow.KEY, _removeColumn.KEY, _undo.KEY, _redo.KEY, _readOnly.KEY, _alignment.KEY, _separator.KEY, _noItems.KEY];
36
- exports.ITEMS = ITEMS;
37
- const _predefinedItems = {
38
- [_separator.KEY]: _separator.default,
39
- [_noItems.KEY]: _noItems.default,
40
- [_rowAbove.KEY]: _rowAbove.default,
41
- [_rowBelow.KEY]: _rowBelow.default,
42
- [_columnLeft.KEY]: _columnLeft.default,
43
- [_columnRight.KEY]: _columnRight.default,
44
- [_clearColumn.KEY]: _clearColumn.default,
45
- [_removeRow.KEY]: _removeRow.default,
46
- [_removeColumn.KEY]: _removeColumn.default,
47
- [_undo.KEY]: _undo.default,
48
- [_redo.KEY]: _redo.default,
49
- [_readOnly.KEY]: _readOnly.default,
50
- [_alignment.KEY]: _alignment.default
51
- };
52
-
53
- /**
54
- * Gets new object with all predefined menu items.
55
- *
56
- * @returns {object}
57
- */
58
- function predefinedItems() {
59
- const items = {};
60
- (0, _object.objectEach)(_predefinedItems, (itemFactory, key) => {
61
- items[key] = itemFactory();
62
- });
63
- return items;
64
- }
65
-
66
- /**
67
- * Add new predefined menu item to the collection.
68
- *
69
- * @param {string} key Menu command id.
70
- * @param {object} item Object command descriptor.
71
- */
72
- function addItem(key, item) {
73
- if (ITEMS.indexOf(key) === -1) {
74
- _predefinedItems[key] = item;
75
- }
76
- }
@@ -1,68 +0,0 @@
1
- import { objectEach } from "../../helpers/object.mjs";
2
- import alignmentItem, { KEY as ALIGNMENT } from "./predefinedItems/alignment.mjs";
3
- import clearColumnItem, { KEY as CLEAR_COLUMN } from "./predefinedItems/clearColumn.mjs";
4
- import columnLeftItem, { KEY as COLUMN_LEFT } from "./predefinedItems/columnLeft.mjs";
5
- import columnRightItem, { KEY as COLUMN_RIGHT } from "./predefinedItems/columnRight.mjs";
6
- import readOnlyItem, { KEY as READ_ONLY } from "./predefinedItems/readOnly.mjs";
7
- import redoItem, { KEY as REDO } from "./predefinedItems/redo.mjs";
8
- import removeColumnItem, { KEY as REMOVE_COLUMN } from "./predefinedItems/removeColumn.mjs";
9
- import removeRowItem, { KEY as REMOVE_ROW } from "./predefinedItems/removeRow.mjs";
10
- import rowAboveItem, { KEY as ROW_ABOVE } from "./predefinedItems/rowAbove.mjs";
11
- import rowBelowItem, { KEY as ROW_BELOW } from "./predefinedItems/rowBelow.mjs";
12
- import separatorItem, { KEY as SEPARATOR } from "./predefinedItems/separator.mjs";
13
- import noItemsItem, { KEY as NO_ITEMS } from "./predefinedItems/noItems.mjs";
14
- import undoItem, { KEY as UNDO } from "./predefinedItems/undo.mjs";
15
- export { KEY as ALIGNMENT } from "./predefinedItems/alignment.mjs";
16
- export { KEY as CLEAR_COLUMN } from "./predefinedItems/clearColumn.mjs";
17
- export { KEY as COLUMN_LEFT } from "./predefinedItems/columnLeft.mjs";
18
- export { KEY as COLUMN_RIGHT } from "./predefinedItems/columnRight.mjs";
19
- export { KEY as READ_ONLY } from "./predefinedItems/readOnly.mjs";
20
- export { KEY as REDO } from "./predefinedItems/redo.mjs";
21
- export { KEY as REMOVE_COLUMN } from "./predefinedItems/removeColumn.mjs";
22
- export { KEY as REMOVE_ROW } from "./predefinedItems/removeRow.mjs";
23
- export { KEY as ROW_ABOVE } from "./predefinedItems/rowAbove.mjs";
24
- export { KEY as ROW_BELOW } from "./predefinedItems/rowBelow.mjs";
25
- export { KEY as SEPARATOR } from "./predefinedItems/separator.mjs";
26
- export { KEY as NO_ITEMS } from "./predefinedItems/noItems.mjs";
27
- export { KEY as UNDO } from "./predefinedItems/undo.mjs";
28
- export const ITEMS = [ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, CLEAR_COLUMN, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR, NO_ITEMS];
29
- const _predefinedItems = {
30
- [SEPARATOR]: separatorItem,
31
- [NO_ITEMS]: noItemsItem,
32
- [ROW_ABOVE]: rowAboveItem,
33
- [ROW_BELOW]: rowBelowItem,
34
- [COLUMN_LEFT]: columnLeftItem,
35
- [COLUMN_RIGHT]: columnRightItem,
36
- [CLEAR_COLUMN]: clearColumnItem,
37
- [REMOVE_ROW]: removeRowItem,
38
- [REMOVE_COLUMN]: removeColumnItem,
39
- [UNDO]: undoItem,
40
- [REDO]: redoItem,
41
- [READ_ONLY]: readOnlyItem,
42
- [ALIGNMENT]: alignmentItem
43
- };
44
-
45
- /**
46
- * Gets new object with all predefined menu items.
47
- *
48
- * @returns {object}
49
- */
50
- export function predefinedItems() {
51
- const items = {};
52
- objectEach(_predefinedItems, (itemFactory, key) => {
53
- items[key] = itemFactory();
54
- });
55
- return items;
56
- }
57
-
58
- /**
59
- * Add new predefined menu item to the collection.
60
- *
61
- * @param {string} key Menu command id.
62
- * @param {object} item Object command descriptor.
63
- */
64
- export function addItem(key, item) {
65
- if (ITEMS.indexOf(key) === -1) {
66
- _predefinedItems[key] = item;
67
- }
68
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- /**
5
- * @private
6
- */
7
- class ClipboardData {
8
- constructor() {
9
- this.data = {};
10
- }
11
- setData(type, value) {
12
- this.data[type] = value;
13
- }
14
- getData(type) {
15
- return this.data[type] || void 0;
16
- }
17
- }
18
- exports.default = ClipboardData;
@@ -1,14 +0,0 @@
1
- /**
2
- * @private
3
- */
4
- export default class ClipboardData {
5
- constructor() {
6
- this.data = {};
7
- }
8
- setData(type, value) {
9
- this.data[type] = value;
10
- }
11
- getData(type) {
12
- return this.data[type] || void 0;
13
- }
14
- }
@@ -1,186 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.createElement = createElement;
5
- exports.deactivateElement = deactivateElement;
6
- exports.destroyElement = destroyElement;
7
- var _eventManager = _interopRequireDefault(require("../../eventManager"));
8
- var _localHooks = _interopRequireDefault(require("../../mixins/localHooks"));
9
- var _object = require("../../helpers/object");
10
- var _browser = require("../../helpers/browser");
11
- var _element = require("../../helpers/dom/element");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- /**
14
- * @private
15
- * @class FocusableWrapper
16
- */
17
- class FocusableWrapper {
18
- constructor(container) {
19
- this.rootDocument = container.defaultView ? container : container.ownerDocument;
20
- /**
21
- * The main/operational focusable element.
22
- *
23
- * @type {HTMLElement}
24
- */
25
- this.mainElement = null;
26
- /**
27
- * Instance of EventManager.
28
- *
29
- * @type {EventManager}
30
- */
31
- this.eventManager = new _eventManager.default(this);
32
- /**
33
- * An object for tracking information about event listeners attached to the focusable element.
34
- *
35
- * @type {WeakSet}
36
- */
37
- this.listenersCount = new WeakSet();
38
- /**
39
- * Parent for an focusable element.
40
- *
41
- * @type {HTMLElement}
42
- */
43
- this.container = container;
44
- }
45
-
46
- /**
47
- * Switch to the secondary focusable element. Used when no any main focusable element is provided.
48
- */
49
- useSecondaryElement() {
50
- const el = createOrGetSecondaryElement(this.container);
51
- if (!this.listenersCount.has(el)) {
52
- this.listenersCount.add(el);
53
- forwardEventsToLocalHooks(this.eventManager, el, this);
54
- }
55
- this.mainElement = el;
56
- }
57
-
58
- /**
59
- * Switch to the main focusable element.
60
- *
61
- * @param {HTMLElement} element The DOM element.
62
- */
63
- setFocusableElement(element) {
64
- if (!this.listenersCount.has(element)) {
65
- this.listenersCount.add(element);
66
- forwardEventsToLocalHooks(this.eventManager, element, this);
67
- }
68
- this.mainElement = element;
69
- }
70
-
71
- /**
72
- * Get currently set focusable element.
73
- *
74
- * @returns {HTMLElement}
75
- */
76
- getFocusableElement() {
77
- return this.mainElement;
78
- }
79
-
80
- /**
81
- * Set focus to the focusable element.
82
- */
83
- focus() {
84
- // Add an empty space to texarea. It is necessary for safari to enable "copy" command from menu bar.
85
- this.mainElement.value = ' ';
86
- if (!(0, _browser.isMobileBrowser)()) {
87
- (0, _element.selectElementIfAllowed)(this.mainElement);
88
- }
89
- }
90
- }
91
- (0, _object.mixin)(FocusableWrapper, _localHooks.default);
92
- const refCounter = new WeakMap();
93
-
94
- /**
95
- * Create and return the FocusableWrapper instance.
96
- *
97
- * @param {HTMLElement} container The container element, holder for focusable elements.
98
- * @returns {FocusableWrapper}
99
- */
100
- function createElement(container) {
101
- const focusableWrapper = new FocusableWrapper(container);
102
- let counter = refCounter.get(container);
103
- counter = isNaN(counter) ? 0 : counter;
104
- refCounter.set(container, counter + 1);
105
- return focusableWrapper;
106
- }
107
-
108
- /**
109
- * Deactivate the FocusableWrapper instance.
110
- *
111
- * @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
112
- */
113
- function deactivateElement(wrapper) {
114
- wrapper.eventManager.clear();
115
- }
116
- const runLocalHooks = (eventName, subject) => event => subject.runLocalHooks(eventName, event);
117
-
118
- /**
119
- * Register copy/cut/paste events and forward their actions to the subject local hooks system.
120
- *
121
- * @param {EventManager} eventManager The instance of the EventManager class.
122
- * @param {HTMLElement} element The element on which the listeners are mounted.
123
- * @param {FocusableWrapper} subject The subject object for local hooks.
124
- */
125
- function forwardEventsToLocalHooks(eventManager, element, subject) {
126
- eventManager.addEventListener(element, 'copy', runLocalHooks('copy', subject));
127
- eventManager.addEventListener(element, 'cut', runLocalHooks('cut', subject));
128
- eventManager.addEventListener(element, 'paste', runLocalHooks('paste', subject));
129
- }
130
- const secondaryElements = new WeakMap();
131
-
132
- /**
133
- * Create and attach newly created focusable element to the DOM.
134
- *
135
- * @param {HTMLElement} container The container element, holder for focusable elements.
136
- * @returns {HTMLElement}
137
- */
138
- function createOrGetSecondaryElement(container) {
139
- const secondaryElement = secondaryElements.get(container);
140
- if (secondaryElement) {
141
- if (!secondaryElement.parentElement) {
142
- container.appendChild(secondaryElement);
143
- }
144
- return secondaryElement;
145
- }
146
- const doc = container.defaultView ? container : container.ownerDocument;
147
- const element = doc.createElement('textarea');
148
- secondaryElements.set(container, element);
149
- element.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
150
- element.className = 'HandsontableCopyPaste';
151
- element.tabIndex = -1;
152
- element.autocomplete = 'off';
153
- element.wrap = 'hard';
154
- element.value = ' ';
155
- container.appendChild(element);
156
- return element;
157
- }
158
-
159
- /**
160
- * Destroy the FocusableWrapper instance.
161
- *
162
- * @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
163
- */
164
- function destroyElement(wrapper) {
165
- if (!(wrapper instanceof FocusableWrapper)) {
166
- return;
167
- }
168
- let counter = refCounter.get(wrapper.container);
169
- counter = isNaN(counter) ? 0 : counter;
170
- if (counter > 0) {
171
- counter -= 1;
172
- }
173
- deactivateElement(wrapper);
174
- if (counter <= 0) {
175
- counter = 0;
176
-
177
- // Detach secondary element from the DOM.
178
- const secondaryElement = secondaryElements.get(wrapper.container);
179
- if (secondaryElement && secondaryElement.parentNode) {
180
- secondaryElement.parentNode.removeChild(secondaryElement);
181
- secondaryElements.delete(wrapper.container);
182
- }
183
- wrapper.mainElement = null;
184
- }
185
- refCounter.set(wrapper.container, counter);
186
- }