handsontable 12.1.3 → 12.3.0-next-bb1a7c2-20221208

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 (948) hide show
  1. package/3rdparty/SheetClip/SheetClip.js +3 -32
  2. package/3rdparty/SheetClip/SheetClip.mjs +3 -23
  3. package/3rdparty/SheetClip/index.js +0 -2
  4. package/3rdparty/autoResize/autoResize.js +119 -145
  5. package/3rdparty/autoResize/autoResize.mjs +119 -143
  6. package/3rdparty/autoResize/index.js +0 -2
  7. package/3rdparty/walkontable/src/border.js +44 -154
  8. package/3rdparty/walkontable/src/border.mjs +41 -136
  9. package/3rdparty/walkontable/src/calculator/constants.js +0 -3
  10. package/3rdparty/walkontable/src/calculator/constants.mjs +0 -2
  11. package/3rdparty/walkontable/src/calculator/index.js +0 -10
  12. package/3rdparty/walkontable/src/calculator/viewportColumns.js +36 -77
  13. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +36 -70
  14. package/3rdparty/walkontable/src/calculator/viewportRows.js +30 -49
  15. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +30 -42
  16. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -1
  17. package/3rdparty/walkontable/src/cell/coords.js +73 -65
  18. package/3rdparty/walkontable/src/cell/coords.mjs +73 -60
  19. package/3rdparty/walkontable/src/cell/range.d.ts +19 -16
  20. package/3rdparty/walkontable/src/cell/range.js +251 -231
  21. package/3rdparty/walkontable/src/cell/range.mjs +251 -222
  22. package/3rdparty/walkontable/src/core/_base.js +30 -74
  23. package/3rdparty/walkontable/src/core/_base.mjs +30 -67
  24. package/3rdparty/walkontable/src/core/clone.js +11 -44
  25. package/3rdparty/walkontable/src/core/clone.mjs +11 -32
  26. package/3rdparty/walkontable/src/core/core.js +8 -56
  27. package/3rdparty/walkontable/src/core/core.mjs +8 -38
  28. package/3rdparty/walkontable/src/event.js +41 -79
  29. package/3rdparty/walkontable/src/event.mjs +41 -66
  30. package/3rdparty/walkontable/src/facade/core.js +14 -16
  31. package/3rdparty/walkontable/src/facade/core.mjs +14 -13
  32. package/3rdparty/walkontable/src/filter/column.js +22 -17
  33. package/3rdparty/walkontable/src/filter/column.mjs +22 -16
  34. package/3rdparty/walkontable/src/filter/row.js +22 -17
  35. package/3rdparty/walkontable/src/filter/row.mjs +22 -16
  36. package/3rdparty/walkontable/src/index.js +0 -31
  37. package/3rdparty/walkontable/src/overlay/_base.js +38 -69
  38. package/3rdparty/walkontable/src/overlay/_base.mjs +38 -61
  39. package/3rdparty/walkontable/src/overlay/bottom.js +38 -103
  40. package/3rdparty/walkontable/src/overlay/bottom.mjs +38 -88
  41. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +12 -52
  42. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.mjs +12 -37
  43. package/3rdparty/walkontable/src/overlay/constants.js +0 -6
  44. package/3rdparty/walkontable/src/overlay/constants.mjs +0 -1
  45. package/3rdparty/walkontable/src/overlay/index.js +0 -17
  46. package/3rdparty/walkontable/src/overlay/inlineStart.js +26 -90
  47. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +26 -75
  48. package/3rdparty/walkontable/src/overlay/top.js +37 -104
  49. package/3rdparty/walkontable/src/overlay/top.mjs +37 -89
  50. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +14 -55
  51. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +14 -40
  52. package/3rdparty/walkontable/src/overlays.js +124 -145
  53. package/3rdparty/walkontable/src/overlays.mjs +124 -135
  54. package/3rdparty/walkontable/src/renderer/_base.js +17 -19
  55. package/3rdparty/walkontable/src/renderer/_base.mjs +17 -17
  56. package/3rdparty/walkontable/src/renderer/cells.js +15 -53
  57. package/3rdparty/walkontable/src/renderer/cells.mjs +15 -39
  58. package/3rdparty/walkontable/src/renderer/colGroup.js +15 -46
  59. package/3rdparty/walkontable/src/renderer/colGroup.mjs +15 -34
  60. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -49
  61. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +13 -37
  62. package/3rdparty/walkontable/src/renderer/index.js +26 -35
  63. package/3rdparty/walkontable/src/renderer/index.mjs +26 -22
  64. package/3rdparty/walkontable/src/renderer/rowHeaders.js +13 -49
  65. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +13 -36
  66. package/3rdparty/walkontable/src/renderer/rows.js +11 -49
  67. package/3rdparty/walkontable/src/renderer/rows.mjs +11 -32
  68. package/3rdparty/walkontable/src/renderer/table.js +35 -48
  69. package/3rdparty/walkontable/src/renderer/table.mjs +35 -47
  70. package/3rdparty/walkontable/src/scroll.js +69 -86
  71. package/3rdparty/walkontable/src/scroll.mjs +69 -84
  72. package/3rdparty/walkontable/src/selection.js +28 -103
  73. package/3rdparty/walkontable/src/selection.mjs +26 -83
  74. package/3rdparty/walkontable/src/settings.js +25 -31
  75. package/3rdparty/walkontable/src/settings.mjs +25 -29
  76. package/3rdparty/walkontable/src/table/bottom.js +6 -34
  77. package/3rdparty/walkontable/src/table/bottom.mjs +6 -19
  78. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +6 -34
  79. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +6 -19
  80. package/3rdparty/walkontable/src/table/inlineStart.js +6 -34
  81. package/3rdparty/walkontable/src/table/inlineStart.mjs +6 -19
  82. package/3rdparty/walkontable/src/table/master.js +15 -54
  83. package/3rdparty/walkontable/src/table/master.mjs +15 -38
  84. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +1 -16
  85. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +1 -14
  86. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +1 -16
  87. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +1 -14
  88. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +1 -10
  89. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +1 -8
  90. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +1 -11
  91. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +1 -9
  92. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +1 -10
  93. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +1 -8
  94. package/3rdparty/walkontable/src/table/top.js +6 -34
  95. package/3rdparty/walkontable/src/table/top.mjs +6 -19
  96. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +6 -34
  97. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +6 -19
  98. package/3rdparty/walkontable/src/table.js +73 -233
  99. package/3rdparty/walkontable/src/table.mjs +71 -210
  100. package/3rdparty/walkontable/src/types.js +0 -5
  101. package/3rdparty/walkontable/src/types.mjs +0 -5
  102. package/3rdparty/walkontable/src/utils/column.js +18 -30
  103. package/3rdparty/walkontable/src/utils/column.mjs +18 -25
  104. package/3rdparty/walkontable/src/utils/nodesPool.js +16 -11
  105. package/3rdparty/walkontable/src/utils/nodesPool.mjs +16 -10
  106. package/3rdparty/walkontable/src/utils/orderView/constants.js +0 -3
  107. package/3rdparty/walkontable/src/utils/orderView/constants.mjs +0 -2
  108. package/3rdparty/walkontable/src/utils/orderView/index.js +0 -5
  109. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +7 -32
  110. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +7 -21
  111. package/3rdparty/walkontable/src/utils/orderView/view.js +27 -45
  112. package/3rdparty/walkontable/src/utils/orderView/view.mjs +27 -42
  113. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +16 -14
  114. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +16 -13
  115. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +21 -21
  116. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +21 -18
  117. package/3rdparty/walkontable/src/utils/row.js +15 -12
  118. package/3rdparty/walkontable/src/utils/row.mjs +15 -11
  119. package/3rdparty/walkontable/src/viewport.js +51 -99
  120. package/3rdparty/walkontable/src/viewport.mjs +51 -96
  121. package/CHANGELOG.md +99 -1
  122. package/base.d.ts +1 -0
  123. package/base.js +11 -17
  124. package/base.mjs +10 -11
  125. package/cellTypes/autocompleteType/autocompleteType.js +0 -4
  126. package/cellTypes/autocompleteType/index.js +0 -2
  127. package/cellTypes/checkboxType/checkboxType.js +0 -3
  128. package/cellTypes/checkboxType/index.js +0 -2
  129. package/cellTypes/dateType/dateType.js +0 -4
  130. package/cellTypes/dateType/index.js +0 -2
  131. package/cellTypes/dropdownType/dropdownType.js +0 -4
  132. package/cellTypes/dropdownType/index.js +0 -2
  133. package/cellTypes/handsontableType/handsontableType.js +0 -3
  134. package/cellTypes/handsontableType/index.js +0 -2
  135. package/cellTypes/index.js +0 -21
  136. package/cellTypes/index.mjs +0 -1
  137. package/cellTypes/numericType/index.js +0 -2
  138. package/cellTypes/numericType/numericType.js +0 -4
  139. package/cellTypes/passwordType/index.js +0 -2
  140. package/cellTypes/passwordType/passwordType.js +0 -3
  141. package/cellTypes/registry.js +10 -25
  142. package/cellTypes/registry.mjs +10 -20
  143. package/cellTypes/textType/index.js +0 -2
  144. package/cellTypes/textType/textType.js +0 -3
  145. package/cellTypes/timeType/index.js +0 -2
  146. package/cellTypes/timeType/timeType.js +0 -4
  147. package/core.d.ts +6 -2
  148. package/core.js +714 -1070
  149. package/core.mjs +717 -1015
  150. package/dataMap/dataMap.js +202 -236
  151. package/dataMap/dataMap.mjs +201 -209
  152. package/{dataSource.js → dataMap/dataSource.js} +29 -65
  153. package/{dataSource.mjs → dataMap/dataSource.mjs} +29 -57
  154. package/dataMap/index.js +0 -13
  155. package/dataMap/metaManager/index.js +33 -45
  156. package/dataMap/metaManager/index.mjs +33 -37
  157. package/dataMap/metaManager/lazyFactoryMap.js +17 -62
  158. package/dataMap/metaManager/lazyFactoryMap.mjs +17 -46
  159. package/dataMap/metaManager/metaLayers/cellMeta.js +26 -57
  160. package/dataMap/metaManager/metaLayers/cellMeta.mjs +25 -41
  161. package/dataMap/metaManager/metaLayers/columnMeta.js +23 -24
  162. package/dataMap/metaManager/metaLayers/columnMeta.mjs +24 -21
  163. package/dataMap/metaManager/metaLayers/globalMeta.js +30 -21
  164. package/dataMap/metaManager/metaLayers/globalMeta.mjs +31 -18
  165. package/dataMap/metaManager/metaLayers/tableMeta.js +18 -15
  166. package/dataMap/metaManager/metaLayers/tableMeta.mjs +19 -14
  167. package/dataMap/metaManager/metaSchema.js +173 -213
  168. package/dataMap/metaManager/metaSchema.mjs +173 -204
  169. package/dataMap/metaManager/mods/dynamicCellMeta.js +15 -35
  170. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +15 -24
  171. package/dataMap/metaManager/mods/extendMetaProperties.js +14 -27
  172. package/dataMap/metaManager/mods/extendMetaProperties.mjs +14 -19
  173. package/dataMap/metaManager/utils.js +49 -28
  174. package/dataMap/metaManager/utils.mjs +50 -21
  175. package/dataMap/replaceData.js +15 -35
  176. package/dataMap/replaceData.mjs +15 -23
  177. package/dist/handsontable.css +9 -9
  178. package/dist/handsontable.full.css +9 -9
  179. package/dist/handsontable.full.js +13065 -28165
  180. package/dist/handsontable.full.min.css +2 -2
  181. package/dist/handsontable.full.min.js +108 -114
  182. package/dist/handsontable.js +11528 -21792
  183. package/dist/handsontable.min.css +2 -2
  184. package/dist/handsontable.min.js +3 -3
  185. package/dist/languages/all.js +111 -240
  186. package/dist/languages/all.min.js +1 -1
  187. package/dist/languages/ar-AR.js +50 -14
  188. package/dist/languages/ar-AR.min.js +1 -1
  189. package/dist/languages/cs-CZ.js +52 -16
  190. package/dist/languages/cs-CZ.min.js +1 -1
  191. package/dist/languages/de-CH.js +52 -16
  192. package/dist/languages/de-CH.min.js +1 -1
  193. package/dist/languages/de-DE.js +53 -17
  194. package/dist/languages/de-DE.min.js +1 -1
  195. package/dist/languages/en-US.js +56 -20
  196. package/dist/languages/en-US.min.js +1 -1
  197. package/dist/languages/es-MX.js +56 -20
  198. package/dist/languages/es-MX.min.js +1 -1
  199. package/dist/languages/fr-FR.js +55 -19
  200. package/dist/languages/fr-FR.min.js +1 -1
  201. package/dist/languages/it-IT.js +55 -19
  202. package/dist/languages/it-IT.min.js +1 -1
  203. package/dist/languages/ja-JP.js +83 -43
  204. package/dist/languages/ja-JP.min.js +1 -1
  205. package/dist/languages/ko-KR.js +84 -43
  206. package/dist/languages/ko-KR.min.js +1 -1
  207. package/dist/languages/lv-LV.js +85 -43
  208. package/dist/languages/lv-LV.min.js +1 -1
  209. package/dist/languages/nb-NO.js +86 -43
  210. package/dist/languages/nb-NO.min.js +1 -1
  211. package/dist/languages/nl-NL.js +87 -43
  212. package/dist/languages/nl-NL.min.js +1 -1
  213. package/dist/languages/pl-PL.js +88 -43
  214. package/dist/languages/pl-PL.min.js +1 -1
  215. package/dist/languages/pt-BR.js +67 -28
  216. package/dist/languages/pt-BR.min.js +1 -1
  217. package/dist/languages/ru-RU.js +67 -28
  218. package/dist/languages/ru-RU.min.js +1 -1
  219. package/dist/languages/sr-SP.js +55 -16
  220. package/dist/languages/sr-SP.min.js +1 -1
  221. package/dist/languages/zh-CN.js +55 -16
  222. package/dist/languages/zh-CN.min.js +1 -1
  223. package/dist/languages/zh-TW.js +55 -16
  224. package/dist/languages/zh-TW.min.js +1 -1
  225. package/editorManager.js +53 -113
  226. package/editorManager.mjs +50 -90
  227. package/editors/autocompleteEditor/autocompleteEditor.js +36 -138
  228. package/editors/autocompleteEditor/autocompleteEditor.mjs +35 -108
  229. package/editors/autocompleteEditor/index.js +0 -2
  230. package/editors/baseEditor/baseEditor.js +55 -160
  231. package/editors/baseEditor/baseEditor.mjs +54 -133
  232. package/editors/baseEditor/index.js +0 -2
  233. package/editors/checkboxEditor/checkboxEditor.js +8 -34
  234. package/editors/checkboxEditor/checkboxEditor.mjs +8 -20
  235. package/editors/checkboxEditor/index.js +0 -2
  236. package/editors/dateEditor/dateEditor.js +26 -97
  237. package/editors/dateEditor/dateEditor.mjs +26 -76
  238. package/editors/dateEditor/index.js +0 -2
  239. package/editors/dropdownEditor/dropdownEditor.js +7 -42
  240. package/editors/dropdownEditor/dropdownEditor.mjs +7 -23
  241. package/editors/dropdownEditor/index.js +0 -2
  242. package/editors/handsontableEditor/handsontableEditor.js +19 -86
  243. package/editors/handsontableEditor/handsontableEditor.mjs +19 -67
  244. package/editors/handsontableEditor/index.js +0 -2
  245. package/editors/index.js +0 -25
  246. package/editors/index.mjs +0 -1
  247. package/editors/numericEditor/index.js +0 -2
  248. package/editors/numericEditor/numericEditor.js +7 -32
  249. package/editors/numericEditor/numericEditor.mjs +7 -19
  250. package/editors/passwordEditor/index.js +0 -2
  251. package/editors/passwordEditor/passwordEditor.js +7 -39
  252. package/editors/passwordEditor/passwordEditor.mjs +7 -23
  253. package/editors/registry.js +13 -36
  254. package/editors/registry.mjs +12 -26
  255. package/editors/selectEditor/index.js +0 -2
  256. package/editors/selectEditor/selectEditor.js +27 -74
  257. package/editors/selectEditor/selectEditor.mjs +27 -57
  258. package/editors/textEditor/caretPositioner.js +0 -8
  259. package/editors/textEditor/caretPositioner.mjs +0 -7
  260. package/editors/textEditor/index.js +0 -2
  261. package/editors/textEditor/textEditor.js +45 -139
  262. package/editors/textEditor/textEditor.mjs +45 -108
  263. package/editors/timeEditor/index.js +0 -2
  264. package/editors/timeEditor/timeEditor.js +7 -37
  265. package/editors/timeEditor/timeEditor.mjs +7 -22
  266. package/eventManager.js +26 -47
  267. package/eventManager.mjs +27 -45
  268. package/helpers/array.js +22 -88
  269. package/helpers/array.mjs +22 -58
  270. package/helpers/browser.js +25 -51
  271. package/helpers/browser.mjs +25 -32
  272. package/helpers/console.js +3 -13
  273. package/helpers/console.mjs +3 -10
  274. package/helpers/data.d.ts +0 -2
  275. package/helpers/data.js +8 -102
  276. package/helpers/data.mjs +9 -80
  277. package/helpers/date.js +2 -3
  278. package/helpers/date.mjs +2 -2
  279. package/helpers/dom/element.js +89 -256
  280. package/helpers/dom/element.mjs +88 -184
  281. package/helpers/dom/event.js +3 -7
  282. package/helpers/dom/event.mjs +3 -3
  283. package/helpers/feature.js +21 -82
  284. package/helpers/feature.mjs +15 -60
  285. package/helpers/function.js +14 -59
  286. package/helpers/function.mjs +14 -45
  287. package/helpers/mixed.js +9 -64
  288. package/helpers/mixed.mjs +9 -43
  289. package/helpers/number.js +4 -46
  290. package/helpers/number.mjs +4 -23
  291. package/helpers/object.js +30 -77
  292. package/helpers/object.mjs +25 -47
  293. package/helpers/string.js +6 -28
  294. package/helpers/string.mjs +6 -14
  295. package/helpers/templateLiteralTag.js +0 -6
  296. package/helpers/templateLiteralTag.mjs +0 -2
  297. package/helpers/unicode.js +17 -22
  298. package/helpers/unicode.mjs +17 -13
  299. package/helpers/wrappers/jquery.js +4 -14
  300. package/helpers/wrappers/jquery.mjs +4 -13
  301. package/i18n/constants.js +50 -45
  302. package/i18n/constants.mjs +46 -42
  303. package/i18n/index.js +0 -7
  304. package/i18n/languages/ar-AR.js +12 -23
  305. package/i18n/languages/ar-AR.mjs +14 -3
  306. package/i18n/languages/cs-CZ.js +12 -23
  307. package/i18n/languages/cs-CZ.mjs +14 -3
  308. package/i18n/languages/de-CH.js +12 -23
  309. package/i18n/languages/de-CH.mjs +14 -3
  310. package/i18n/languages/de-DE.js +12 -23
  311. package/i18n/languages/de-DE.mjs +14 -3
  312. package/i18n/languages/en-US.js +13 -24
  313. package/i18n/languages/en-US.mjs +15 -4
  314. package/i18n/languages/es-MX.js +13 -24
  315. package/i18n/languages/es-MX.mjs +17 -5
  316. package/i18n/languages/fr-FR.js +12 -23
  317. package/i18n/languages/fr-FR.mjs +14 -3
  318. package/i18n/languages/index.js +0 -39
  319. package/i18n/languages/it-IT.js +12 -23
  320. package/i18n/languages/it-IT.mjs +14 -3
  321. package/i18n/languages/ja-JP.js +12 -23
  322. package/i18n/languages/ja-JP.mjs +14 -3
  323. package/i18n/languages/ko-KR.js +12 -23
  324. package/i18n/languages/ko-KR.mjs +14 -3
  325. package/i18n/languages/lv-LV.js +13 -24
  326. package/i18n/languages/lv-LV.mjs +17 -6
  327. package/i18n/languages/nb-NO.js +12 -23
  328. package/i18n/languages/nb-NO.mjs +14 -3
  329. package/i18n/languages/nl-NL.js +13 -24
  330. package/i18n/languages/nl-NL.mjs +17 -6
  331. package/i18n/languages/pl-PL.js +13 -24
  332. package/i18n/languages/pl-PL.mjs +16 -5
  333. package/i18n/languages/pt-BR.js +12 -23
  334. package/i18n/languages/pt-BR.mjs +14 -3
  335. package/i18n/languages/ru-RU.js +12 -23
  336. package/i18n/languages/ru-RU.mjs +14 -3
  337. package/i18n/languages/sr-SP.js +12 -23
  338. package/i18n/languages/sr-SP.mjs +14 -3
  339. package/i18n/languages/zh-CN.js +12 -23
  340. package/i18n/languages/zh-CN.mjs +14 -3
  341. package/i18n/languages/zh-TW.js +12 -23
  342. package/i18n/languages/zh-TW.mjs +14 -3
  343. package/i18n/phraseFormatters/index.js +4 -11
  344. package/i18n/phraseFormatters/index.mjs +4 -6
  345. package/i18n/phraseFormatters/pluralize.js +0 -5
  346. package/i18n/phraseFormatters/pluralize.mjs +0 -3
  347. package/i18n/phraseFormatters/substituteVariables.js +0 -4
  348. package/i18n/phraseFormatters/substituteVariables.mjs +0 -2
  349. package/i18n/registry.js +18 -59
  350. package/i18n/registry.mjs +18 -30
  351. package/i18n/utils.js +4 -22
  352. package/i18n/utils.mjs +4 -11
  353. package/index.d.ts +9 -0
  354. package/index.js +23 -58
  355. package/index.mjs +21 -16
  356. package/languages/all.js +111 -240
  357. package/languages/ar-AR.js +50 -14
  358. package/languages/ar-AR.mjs +14 -3
  359. package/languages/cs-CZ.js +52 -16
  360. package/languages/cs-CZ.mjs +14 -3
  361. package/languages/de-CH.js +52 -16
  362. package/languages/de-CH.mjs +14 -3
  363. package/languages/de-DE.js +53 -17
  364. package/languages/de-DE.mjs +14 -3
  365. package/languages/en-US.js +56 -20
  366. package/languages/en-US.mjs +15 -4
  367. package/languages/es-MX.js +56 -20
  368. package/languages/es-MX.mjs +17 -5
  369. package/languages/fr-FR.js +55 -19
  370. package/languages/fr-FR.mjs +14 -3
  371. package/languages/index.js +111 -240
  372. package/languages/it-IT.js +55 -19
  373. package/languages/it-IT.mjs +14 -3
  374. package/languages/ja-JP.js +83 -43
  375. package/languages/ja-JP.mjs +14 -3
  376. package/languages/ko-KR.js +84 -43
  377. package/languages/ko-KR.mjs +14 -3
  378. package/languages/lv-LV.js +85 -43
  379. package/languages/lv-LV.mjs +17 -6
  380. package/languages/nb-NO.js +86 -43
  381. package/languages/nb-NO.mjs +14 -3
  382. package/languages/nl-NL.js +87 -43
  383. package/languages/nl-NL.mjs +17 -6
  384. package/languages/pl-PL.js +88 -43
  385. package/languages/pl-PL.mjs +16 -5
  386. package/languages/pt-BR.js +67 -28
  387. package/languages/pt-BR.mjs +14 -3
  388. package/languages/ru-RU.js +67 -28
  389. package/languages/ru-RU.mjs +14 -3
  390. package/languages/sr-SP.js +55 -16
  391. package/languages/sr-SP.mjs +14 -3
  392. package/languages/zh-CN.js +55 -16
  393. package/languages/zh-CN.mjs +14 -3
  394. package/languages/zh-TW.js +55 -16
  395. package/languages/zh-TW.mjs +14 -3
  396. package/mixins/hooksRefRegisterer.js +1 -12
  397. package/mixins/hooksRefRegisterer.mjs +1 -9
  398. package/mixins/localHooks.js +4 -11
  399. package/mixins/localHooks.mjs +4 -8
  400. package/package.json +2 -2
  401. package/pluginHooks.d.ts +10 -5
  402. package/pluginHooks.js +376 -116
  403. package/pluginHooks.mjs +375 -103
  404. package/plugins/autoColumnSize/autoColumnSize.js +81 -174
  405. package/plugins/autoColumnSize/autoColumnSize.mjs +81 -139
  406. package/plugins/autoColumnSize/index.js +0 -2
  407. package/plugins/autoRowSize/autoRowSize.js +89 -160
  408. package/plugins/autoRowSize/autoRowSize.mjs +89 -131
  409. package/plugins/autoRowSize/index.js +0 -2
  410. package/plugins/autofill/autofill.js +53 -165
  411. package/plugins/autofill/autofill.mjs +53 -133
  412. package/plugins/autofill/index.js +0 -2
  413. package/plugins/autofill/utils.js +4 -26
  414. package/plugins/autofill/utils.mjs +4 -18
  415. package/plugins/base/base.js +28 -91
  416. package/plugins/base/base.mjs +28 -63
  417. package/plugins/base/index.js +0 -2
  418. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +25 -53
  419. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +25 -34
  420. package/plugins/bindRowsWithHeaders/index.js +0 -2
  421. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +11 -42
  422. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +11 -30
  423. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +12 -54
  424. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +12 -38
  425. package/plugins/collapsibleColumns/collapsibleColumns.js +106 -193
  426. package/plugins/collapsibleColumns/collapsibleColumns.mjs +106 -162
  427. package/plugins/collapsibleColumns/index.js +0 -2
  428. package/plugins/columnSorting/columnSorting.js +58 -192
  429. package/plugins/columnSorting/columnSorting.mjs +58 -147
  430. package/plugins/columnSorting/columnStatesManager.js +27 -77
  431. package/plugins/columnSorting/columnStatesManager.mjs +24 -51
  432. package/plugins/columnSorting/domHelpers.js +2 -18
  433. package/plugins/columnSorting/domHelpers.mjs +2 -7
  434. package/plugins/columnSorting/index.js +0 -2
  435. package/plugins/columnSorting/rootComparator.js +5 -24
  436. package/plugins/columnSorting/rootComparator.mjs +5 -13
  437. package/plugins/columnSorting/sortFunction/checkbox.js +8 -16
  438. package/plugins/columnSorting/sortFunction/checkbox.mjs +8 -12
  439. package/plugins/columnSorting/sortFunction/date.js +2 -19
  440. package/plugins/columnSorting/sortFunction/date.mjs +2 -14
  441. package/plugins/columnSorting/sortFunction/default.js +2 -17
  442. package/plugins/columnSorting/sortFunction/default.mjs +2 -14
  443. package/plugins/columnSorting/sortFunction/numeric.js +2 -11
  444. package/plugins/columnSorting/sortFunction/numeric.mjs +2 -8
  445. package/plugins/columnSorting/sortService/engine.js +1 -7
  446. package/plugins/columnSorting/sortService/engine.mjs +1 -3
  447. package/plugins/columnSorting/sortService/index.js +0 -5
  448. package/plugins/columnSorting/sortService/registry.js +6 -18
  449. package/plugins/columnSorting/sortService/registry.mjs +6 -10
  450. package/plugins/columnSorting/utils.js +9 -34
  451. package/plugins/columnSorting/utils.mjs +9 -15
  452. package/plugins/columnSummary/columnSummary.js +65 -126
  453. package/plugins/columnSummary/columnSummary.mjs +65 -101
  454. package/plugins/columnSummary/endpoints.js +33 -109
  455. package/plugins/columnSummary/endpoints.mjs +33 -105
  456. package/plugins/columnSummary/index.js +0 -2
  457. package/plugins/columnSummary/utils.js +0 -1
  458. package/plugins/comments/commentEditor.js +29 -27
  459. package/plugins/comments/commentEditor.mjs +29 -26
  460. package/plugins/comments/comments.js +106 -178
  461. package/plugins/comments/comments.mjs +106 -152
  462. package/plugins/comments/displaySwitch.js +20 -24
  463. package/plugins/comments/displaySwitch.mjs +20 -19
  464. package/plugins/comments/index.js +0 -2
  465. package/plugins/contextMenu/commandExecutor.js +17 -29
  466. package/plugins/contextMenu/commandExecutor.mjs +17 -27
  467. package/plugins/contextMenu/contextMenu.d.ts +4 -3
  468. package/plugins/contextMenu/contextMenu.js +28 -121
  469. package/plugins/contextMenu/contextMenu.mjs +28 -91
  470. package/plugins/contextMenu/cursor.js +19 -19
  471. package/plugins/contextMenu/cursor.mjs +19 -18
  472. package/plugins/contextMenu/index.js +0 -2
  473. package/plugins/contextMenu/itemsFactory.js +21 -35
  474. package/plugins/contextMenu/itemsFactory.mjs +21 -31
  475. package/plugins/contextMenu/menu.js +71 -180
  476. package/plugins/contextMenu/menu.mjs +70 -151
  477. package/plugins/contextMenu/predefinedItems/alignment.js +1 -55
  478. package/plugins/contextMenu/predefinedItems/alignment.mjs +1 -37
  479. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -20
  480. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -4
  481. package/plugins/contextMenu/predefinedItems/columnLeft.js +6 -43
  482. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +6 -26
  483. package/plugins/contextMenu/predefinedItems/columnRight.js +4 -42
  484. package/plugins/contextMenu/predefinedItems/columnRight.mjs +4 -25
  485. package/plugins/contextMenu/predefinedItems/noItems.js +1 -4
  486. package/plugins/contextMenu/predefinedItems/noItems.mjs +1 -1
  487. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -25
  488. package/plugins/contextMenu/predefinedItems/readOnly.mjs +1 -8
  489. package/plugins/contextMenu/predefinedItems/redo.js +1 -16
  490. package/plugins/contextMenu/predefinedItems/redo.mjs +1 -1
  491. package/plugins/contextMenu/predefinedItems/removeColumn.js +4 -39
  492. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +4 -19
  493. package/plugins/contextMenu/predefinedItems/removeRow.js +4 -38
  494. package/plugins/contextMenu/predefinedItems/removeRow.mjs +4 -18
  495. package/plugins/contextMenu/predefinedItems/rowAbove.js +6 -35
  496. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +6 -19
  497. package/plugins/contextMenu/predefinedItems/rowBelow.js +4 -42
  498. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +4 -25
  499. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  500. package/plugins/contextMenu/predefinedItems/separator.mjs +1 -1
  501. package/plugins/contextMenu/predefinedItems/undo.js +1 -16
  502. package/plugins/contextMenu/predefinedItems/undo.mjs +1 -1
  503. package/plugins/contextMenu/predefinedItems.js +14 -55
  504. package/plugins/contextMenu/predefinedItems.mjs +16 -8
  505. package/plugins/contextMenu/utils.js +17 -57
  506. package/plugins/contextMenu/utils.mjs +17 -34
  507. package/plugins/copyPaste/clipboardData.js +14 -9
  508. package/plugins/copyPaste/clipboardData.mjs +14 -8
  509. package/plugins/copyPaste/contextMenuItem/copy.js +5 -32
  510. package/plugins/copyPaste/contextMenuItem/copy.mjs +5 -7
  511. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +35 -0
  512. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +31 -0
  513. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +35 -0
  514. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +31 -0
  515. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +35 -0
  516. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +31 -0
  517. package/plugins/copyPaste/contextMenuItem/cut.js +2 -17
  518. package/plugins/copyPaste/contextMenuItem/cut.mjs +2 -4
  519. package/plugins/copyPaste/copyPaste.d.ts +10 -2
  520. package/plugins/copyPaste/copyPaste.js +339 -372
  521. package/plugins/copyPaste/copyPaste.mjs +339 -331
  522. package/plugins/copyPaste/copyableRanges.js +269 -0
  523. package/plugins/copyPaste/copyableRanges.mjs +264 -0
  524. package/plugins/copyPaste/focusableElement.js +21 -55
  525. package/plugins/copyPaste/focusableElement.mjs +21 -45
  526. package/plugins/copyPaste/index.js +0 -2
  527. package/plugins/copyPaste/pasteEvent.js +14 -9
  528. package/plugins/copyPaste/pasteEvent.mjs +14 -7
  529. package/plugins/customBorders/contextMenuItem/bottom.js +0 -17
  530. package/plugins/customBorders/contextMenuItem/bottom.mjs +0 -3
  531. package/plugins/customBorders/contextMenuItem/index.js +0 -11
  532. package/plugins/customBorders/contextMenuItem/left.js +0 -17
  533. package/plugins/customBorders/contextMenuItem/left.mjs +0 -3
  534. package/plugins/customBorders/contextMenuItem/noBorders.js +0 -15
  535. package/plugins/customBorders/contextMenuItem/noBorders.mjs +0 -1
  536. package/plugins/customBorders/contextMenuItem/right.js +0 -17
  537. package/plugins/customBorders/contextMenuItem/right.mjs +0 -3
  538. package/plugins/customBorders/contextMenuItem/top.js +0 -17
  539. package/plugins/customBorders/contextMenuItem/top.mjs +0 -3
  540. package/plugins/customBorders/customBorders.js +64 -188
  541. package/plugins/customBorders/customBorders.mjs +63 -153
  542. package/plugins/customBorders/index.js +0 -2
  543. package/plugins/customBorders/utils.js +13 -52
  544. package/plugins/customBorders/utils.mjs +13 -31
  545. package/plugins/dragToScroll/dragToScroll.js +23 -75
  546. package/plugins/dragToScroll/dragToScroll.mjs +23 -56
  547. package/plugins/dragToScroll/index.js +0 -2
  548. package/plugins/dropdownMenu/dropdownMenu.js +49 -127
  549. package/plugins/dropdownMenu/dropdownMenu.mjs +49 -96
  550. package/plugins/dropdownMenu/index.js +0 -2
  551. package/plugins/exportFile/dataProvider.js +34 -72
  552. package/plugins/exportFile/dataProvider.mjs +31 -58
  553. package/plugins/exportFile/exportFile.js +56 -61
  554. package/plugins/exportFile/exportFile.mjs +54 -37
  555. package/plugins/exportFile/index.js +0 -2
  556. package/plugins/exportFile/typeFactory.js +15 -12
  557. package/plugins/exportFile/typeFactory.mjs +15 -5
  558. package/plugins/exportFile/types/_base.js +15 -15
  559. package/plugins/exportFile/types/_base.mjs +15 -13
  560. package/plugins/exportFile/types/csv.js +8 -51
  561. package/plugins/exportFile/types/csv.mjs +8 -30
  562. package/plugins/filters/component/_base.js +25 -31
  563. package/plugins/filters/component/_base.mjs +25 -26
  564. package/plugins/filters/component/actionBar.js +13 -56
  565. package/plugins/filters/component/actionBar.mjs +11 -34
  566. package/plugins/filters/component/condition.js +22 -95
  567. package/plugins/filters/component/condition.mjs +20 -63
  568. package/plugins/filters/component/operators.js +18 -71
  569. package/plugins/filters/component/operators.mjs +18 -48
  570. package/plugins/filters/component/value.js +22 -97
  571. package/plugins/filters/component/value.mjs +22 -67
  572. package/plugins/filters/condition/beginsWith.js +3 -33
  573. package/plugins/filters/condition/beginsWith.mjs +3 -11
  574. package/plugins/filters/condition/between.js +4 -38
  575. package/plugins/filters/condition/between.mjs +4 -16
  576. package/plugins/filters/condition/byValue.js +4 -28
  577. package/plugins/filters/condition/byValue.mjs +4 -13
  578. package/plugins/filters/condition/contains.js +3 -33
  579. package/plugins/filters/condition/contains.mjs +3 -11
  580. package/plugins/filters/condition/date/after.js +3 -35
  581. package/plugins/filters/condition/date/after.mjs +3 -13
  582. package/plugins/filters/condition/date/before.js +3 -35
  583. package/plugins/filters/condition/date/before.mjs +3 -13
  584. package/plugins/filters/condition/date/today.js +1 -22
  585. package/plugins/filters/condition/date/today.mjs +1 -3
  586. package/plugins/filters/condition/date/tomorrow.js +1 -22
  587. package/plugins/filters/condition/date/tomorrow.mjs +1 -3
  588. package/plugins/filters/condition/date/yesterday.js +1 -22
  589. package/plugins/filters/condition/date/yesterday.mjs +1 -3
  590. package/plugins/filters/condition/empty.js +1 -19
  591. package/plugins/filters/condition/empty.mjs +1 -1
  592. package/plugins/filters/condition/endsWith.js +3 -33
  593. package/plugins/filters/condition/endsWith.mjs +3 -11
  594. package/plugins/filters/condition/equal.js +3 -32
  595. package/plugins/filters/condition/equal.mjs +3 -11
  596. package/plugins/filters/condition/false.js +1 -5
  597. package/plugins/filters/condition/false.mjs +1 -1
  598. package/plugins/filters/condition/greaterThan.js +3 -33
  599. package/plugins/filters/condition/greaterThan.mjs +3 -13
  600. package/plugins/filters/condition/greaterThanOrEqual.js +3 -33
  601. package/plugins/filters/condition/greaterThanOrEqual.mjs +3 -13
  602. package/plugins/filters/condition/lessThan.js +3 -33
  603. package/plugins/filters/condition/lessThan.mjs +3 -13
  604. package/plugins/filters/condition/lessThanOrEqual.js +3 -33
  605. package/plugins/filters/condition/lessThanOrEqual.mjs +3 -13
  606. package/plugins/filters/condition/none.js +1 -18
  607. package/plugins/filters/condition/none.mjs +1 -1
  608. package/plugins/filters/condition/notBetween.js +1 -19
  609. package/plugins/filters/condition/notBetween.mjs +1 -1
  610. package/plugins/filters/condition/notContains.js +1 -19
  611. package/plugins/filters/condition/notContains.mjs +1 -1
  612. package/plugins/filters/condition/notEmpty.js +1 -19
  613. package/plugins/filters/condition/notEmpty.mjs +1 -1
  614. package/plugins/filters/condition/notEqual.js +1 -19
  615. package/plugins/filters/condition/notEqual.mjs +1 -1
  616. package/plugins/filters/condition/true.js +1 -5
  617. package/plugins/filters/condition/true.mjs +1 -1
  618. package/plugins/filters/conditionCollection.js +31 -84
  619. package/plugins/filters/conditionCollection.mjs +39 -69
  620. package/plugins/filters/conditionRegisterer.js +5 -14
  621. package/plugins/filters/conditionRegisterer.mjs +5 -9
  622. package/plugins/filters/conditionUpdateObserver.js +29 -56
  623. package/plugins/filters/conditionUpdateObserver.mjs +29 -44
  624. package/plugins/filters/constants.js +15 -67
  625. package/plugins/filters/constants.mjs +15 -9
  626. package/plugins/filters/dataFilter.js +17 -20
  627. package/plugins/filters/dataFilter.mjs +17 -19
  628. package/plugins/filters/filters.js +110 -210
  629. package/plugins/filters/filters.mjs +110 -165
  630. package/plugins/filters/index.js +0 -2
  631. package/plugins/filters/logicalOperationRegisterer.js +3 -9
  632. package/plugins/filters/logicalOperationRegisterer.mjs +3 -4
  633. package/plugins/filters/logicalOperations/conjunction.js +2 -19
  634. package/plugins/filters/logicalOperations/conjunction.mjs +2 -2
  635. package/plugins/filters/logicalOperations/disjunction.js +2 -19
  636. package/plugins/filters/logicalOperations/disjunction.mjs +2 -2
  637. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -21
  638. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -3
  639. package/plugins/filters/ui/_base.js +24 -62
  640. package/plugins/filters/ui/_base.mjs +26 -36
  641. package/plugins/filters/ui/input.js +13 -53
  642. package/plugins/filters/ui/input.mjs +13 -35
  643. package/plugins/filters/ui/link.js +9 -44
  644. package/plugins/filters/ui/link.mjs +9 -26
  645. package/plugins/filters/ui/multipleSelect.js +25 -113
  646. package/plugins/filters/ui/multipleSelect.mjs +26 -77
  647. package/plugins/filters/ui/radioInput.js +12 -48
  648. package/plugins/filters/ui/radioInput.mjs +12 -31
  649. package/plugins/filters/ui/select.js +20 -77
  650. package/plugins/filters/ui/select.mjs +20 -53
  651. package/plugins/filters/utils.js +6 -39
  652. package/plugins/filters/utils.mjs +6 -23
  653. package/plugins/formulas/engine/register.js +24 -74
  654. package/plugins/formulas/engine/register.mjs +24 -45
  655. package/plugins/formulas/engine/settings.js +16 -25
  656. package/plugins/formulas/engine/settings.mjs +16 -13
  657. package/plugins/formulas/formulas.js +127 -306
  658. package/plugins/formulas/formulas.mjs +128 -259
  659. package/plugins/formulas/index.js +0 -2
  660. package/plugins/formulas/utils.js +1 -3
  661. package/plugins/formulas/utils.mjs +1 -1
  662. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +5 -39
  663. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +5 -21
  664. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +17 -45
  665. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +17 -24
  666. package/plugins/hiddenColumns/hiddenColumns.js +77 -150
  667. package/plugins/hiddenColumns/hiddenColumns.mjs +77 -109
  668. package/plugins/hiddenColumns/index.js +0 -2
  669. package/plugins/hiddenRows/contextMenuItem/hideRow.js +5 -39
  670. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +5 -21
  671. package/plugins/hiddenRows/contextMenuItem/showRow.js +17 -45
  672. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +17 -24
  673. package/plugins/hiddenRows/hiddenRows.js +75 -149
  674. package/plugins/hiddenRows/hiddenRows.mjs +75 -108
  675. package/plugins/hiddenRows/index.js +0 -2
  676. package/plugins/index.js +0 -71
  677. package/plugins/index.mjs +0 -1
  678. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -29
  679. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +2 -13
  680. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -29
  681. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +2 -13
  682. package/plugins/manualColumnFreeze/index.js +0 -2
  683. package/plugins/manualColumnFreeze/manualColumnFreeze.js +27 -79
  684. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +27 -55
  685. package/plugins/manualColumnMove/index.js +0 -2
  686. package/plugins/manualColumnMove/manualColumnMove.js +51 -135
  687. package/plugins/manualColumnMove/manualColumnMove.mjs +51 -107
  688. package/plugins/manualColumnMove/ui/_base.js +26 -31
  689. package/plugins/manualColumnMove/ui/_base.mjs +26 -28
  690. package/plugins/manualColumnMove/ui/backlight.js +7 -38
  691. package/plugins/manualColumnMove/ui/backlight.mjs +7 -23
  692. package/plugins/manualColumnMove/ui/guideline.js +7 -38
  693. package/plugins/manualColumnMove/ui/guideline.mjs +7 -23
  694. package/plugins/manualColumnResize/index.js +0 -2
  695. package/plugins/manualColumnResize/manualColumnResize.js +50 -144
  696. package/plugins/manualColumnResize/manualColumnResize.mjs +49 -119
  697. package/plugins/manualRowMove/index.js +0 -2
  698. package/plugins/manualRowMove/manualRowMove.js +51 -138
  699. package/plugins/manualRowMove/manualRowMove.mjs +51 -110
  700. package/plugins/manualRowMove/ui/_base.js +26 -28
  701. package/plugins/manualRowMove/ui/_base.mjs +26 -27
  702. package/plugins/manualRowMove/ui/backlight.js +7 -38
  703. package/plugins/manualRowMove/ui/backlight.mjs +7 -23
  704. package/plugins/manualRowMove/ui/guideline.js +7 -38
  705. package/plugins/manualRowMove/ui/guideline.mjs +7 -23
  706. package/plugins/manualRowResize/index.js +0 -2
  707. package/plugins/manualRowResize/manualRowResize.js +48 -139
  708. package/plugins/manualRowResize/manualRowResize.mjs +47 -113
  709. package/plugins/mergeCells/calculations/autofill.js +49 -133
  710. package/plugins/mergeCells/calculations/autofill.mjs +46 -117
  711. package/plugins/mergeCells/calculations/selection.js +22 -39
  712. package/plugins/mergeCells/calculations/selection.mjs +22 -36
  713. package/plugins/mergeCells/cellCoords.js +43 -50
  714. package/plugins/mergeCells/cellCoords.mjs +43 -48
  715. package/plugins/mergeCells/cellsCollection.js +22 -86
  716. package/plugins/mergeCells/cellsCollection.mjs +19 -63
  717. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +0 -22
  718. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +0 -6
  719. package/plugins/mergeCells/index.js +0 -2
  720. package/plugins/mergeCells/mergeCells.js +136 -334
  721. package/plugins/mergeCells/mergeCells.mjs +136 -293
  722. package/plugins/mergeCells/utils.js +0 -3
  723. package/plugins/mergeCells/utils.mjs +0 -1
  724. package/plugins/multiColumnSorting/domHelpers.js +2 -12
  725. package/plugins/multiColumnSorting/domHelpers.mjs +2 -5
  726. package/plugins/multiColumnSorting/index.js +0 -2
  727. package/plugins/multiColumnSorting/multiColumnSorting.js +20 -67
  728. package/plugins/multiColumnSorting/multiColumnSorting.mjs +20 -45
  729. package/plugins/multiColumnSorting/rootComparator.js +2 -26
  730. package/plugins/multiColumnSorting/rootComparator.mjs +2 -15
  731. package/plugins/multiColumnSorting/utils.js +0 -7
  732. package/plugins/multiColumnSorting/utils.mjs +0 -4
  733. package/plugins/multipleSelectionHandles/index.js +0 -2
  734. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +12 -110
  735. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +12 -88
  736. package/plugins/nestedHeaders/index.js +0 -2
  737. package/plugins/nestedHeaders/nestedHeaders.js +198 -211
  738. package/plugins/nestedHeaders/nestedHeaders.mjs +206 -191
  739. package/plugins/nestedHeaders/stateManager/headersTree.js +26 -96
  740. package/plugins/nestedHeaders/stateManager/headersTree.mjs +26 -76
  741. package/plugins/nestedHeaders/stateManager/index.js +55 -118
  742. package/plugins/nestedHeaders/stateManager/index.mjs +61 -105
  743. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +7 -25
  744. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +7 -18
  745. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +12 -27
  746. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +12 -17
  747. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +10 -25
  748. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +10 -15
  749. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.js +3 -19
  750. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.mjs +3 -13
  751. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.js +2 -12
  752. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.mjs +1 -3
  753. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.js +3 -22
  754. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.mjs +3 -14
  755. package/plugins/nestedHeaders/stateManager/nodeModifiers/utils/tree.js +3 -10
  756. package/plugins/nestedHeaders/stateManager/nodeModifiers/utils/tree.mjs +3 -7
  757. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -36
  758. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -20
  759. package/plugins/nestedHeaders/stateManager/sourceSettings.js +27 -81
  760. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +33 -71
  761. package/plugins/nestedHeaders/stateManager/utils.js +19 -22
  762. package/plugins/nestedHeaders/stateManager/utils.mjs +19 -20
  763. package/plugins/nestedHeaders/utils/ghostTable.js +23 -37
  764. package/plugins/nestedHeaders/utils/ghostTable.mjs +23 -36
  765. package/plugins/nestedRows/data/dataManager.js +47 -162
  766. package/plugins/nestedRows/data/dataManager.mjs +45 -143
  767. package/plugins/nestedRows/index.js +0 -2
  768. package/plugins/nestedRows/nestedRows.js +46 -119
  769. package/plugins/nestedRows/nestedRows.mjs +46 -86
  770. package/plugins/nestedRows/ui/_base.js +14 -8
  771. package/plugins/nestedRows/ui/_base.mjs +14 -7
  772. package/plugins/nestedRows/ui/collapsing.js +33 -133
  773. package/plugins/nestedRows/ui/collapsing.mjs +33 -111
  774. package/plugins/nestedRows/ui/contextMenu.js +9 -55
  775. package/plugins/nestedRows/ui/contextMenu.mjs +8 -33
  776. package/plugins/nestedRows/ui/headers.js +10 -49
  777. package/plugins/nestedRows/ui/headers.mjs +10 -34
  778. package/plugins/nestedRows/utils/rowMoveController.js +36 -79
  779. package/plugins/nestedRows/utils/rowMoveController.mjs +45 -71
  780. package/plugins/persistentState/index.js +0 -2
  781. package/plugins/persistentState/persistentState.js +16 -59
  782. package/plugins/persistentState/persistentState.mjs +16 -38
  783. package/plugins/persistentState/storage.js +22 -24
  784. package/plugins/persistentState/storage.mjs +22 -22
  785. package/plugins/registry.js +8 -52
  786. package/plugins/registry.mjs +8 -33
  787. package/plugins/search/index.js +0 -2
  788. package/plugins/search/search.js +22 -97
  789. package/plugins/search/search.mjs +22 -68
  790. package/plugins/touchScroll/index.js +0 -2
  791. package/plugins/touchScroll/touchScroll.js +21 -77
  792. package/plugins/touchScroll/touchScroll.mjs +21 -59
  793. package/plugins/trimRows/index.js +0 -2
  794. package/plugins/trimRows/trimRows.js +64 -86
  795. package/plugins/trimRows/trimRows.mjs +64 -63
  796. package/plugins/undoRedo/index.js +0 -14
  797. package/plugins/undoRedo/undoRedo.js +98 -250
  798. package/plugins/undoRedo/undoRedo.mjs +98 -220
  799. package/registry.js +0 -11
  800. package/registry.mjs +1 -2
  801. package/renderers/autocompleteRenderer/autocompleteRenderer.js +5 -14
  802. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +5 -6
  803. package/renderers/autocompleteRenderer/index.js +0 -2
  804. package/renderers/baseRenderer/baseRenderer.js +2 -11
  805. package/renderers/baseRenderer/baseRenderer.mjs +1 -7
  806. package/renderers/baseRenderer/index.js +0 -2
  807. package/renderers/checkboxRenderer/checkboxRenderer.js +22 -103
  808. package/renderers/checkboxRenderer/checkboxRenderer.mjs +22 -81
  809. package/renderers/checkboxRenderer/index.js +0 -2
  810. package/renderers/htmlRenderer/htmlRenderer.js +1 -7
  811. package/renderers/htmlRenderer/htmlRenderer.mjs +1 -1
  812. package/renderers/htmlRenderer/index.js +0 -2
  813. package/renderers/index.js +0 -19
  814. package/renderers/index.mjs +0 -1
  815. package/renderers/numericRenderer/index.js +0 -2
  816. package/renderers/numericRenderer/numericRenderer.js +1 -21
  817. package/renderers/numericRenderer/numericRenderer.mjs +1 -9
  818. package/renderers/passwordRenderer/index.js +0 -2
  819. package/renderers/passwordRenderer/passwordRenderer.js +1 -8
  820. package/renderers/passwordRenderer/passwordRenderer.mjs +1 -1
  821. package/renderers/registry.js +7 -16
  822. package/renderers/registry.mjs +7 -14
  823. package/renderers/textRenderer/index.js +0 -2
  824. package/renderers/textRenderer/textRenderer.js +1 -13
  825. package/renderers/textRenderer/textRenderer.mjs +1 -5
  826. package/renderers/timeRenderer/index.js +0 -2
  827. package/renderers/timeRenderer/timeRenderer.js +1 -6
  828. package/renderers/timeRenderer/timeRenderer.mjs +1 -1
  829. package/selection/highlight/highlight.js +24 -73
  830. package/selection/highlight/highlight.mjs +24 -50
  831. package/selection/highlight/types/activeHeader.js +14 -23
  832. package/selection/highlight/types/activeHeader.mjs +14 -12
  833. package/selection/highlight/types/area.js +15 -24
  834. package/selection/highlight/types/area.mjs +15 -13
  835. package/selection/highlight/types/cell.js +14 -23
  836. package/selection/highlight/types/cell.mjs +14 -12
  837. package/selection/highlight/types/customSelection.js +15 -24
  838. package/selection/highlight/types/customSelection.mjs +15 -13
  839. package/selection/highlight/types/fill.js +16 -20
  840. package/selection/highlight/types/fill.mjs +16 -9
  841. package/selection/highlight/types/header.js +16 -25
  842. package/selection/highlight/types/header.mjs +16 -14
  843. package/selection/highlight/types/index.js +17 -27
  844. package/selection/highlight/types/index.mjs +17 -13
  845. package/selection/highlight/visualSelection.js +35 -80
  846. package/selection/highlight/visualSelection.mjs +35 -68
  847. package/selection/index.js +0 -14
  848. package/selection/mouseEventHandler.js +19 -30
  849. package/selection/mouseEventHandler.mjs +19 -22
  850. package/selection/range.js +17 -30
  851. package/selection/range.mjs +17 -21
  852. package/selection/selection.js +72 -160
  853. package/selection/selection.mjs +77 -137
  854. package/selection/transformation.js +23 -39
  855. package/selection/transformation.mjs +23 -36
  856. package/selection/utils.js +23 -71
  857. package/selection/utils.mjs +23 -48
  858. package/shortcuts/context.js +24 -79
  859. package/shortcuts/context.mjs +24 -56
  860. package/shortcuts/index.js +0 -2
  861. package/shortcuts/keyObserver.js +0 -9
  862. package/shortcuts/keyObserver.mjs +0 -4
  863. package/shortcuts/manager.js +17 -37
  864. package/shortcuts/manager.mjs +17 -34
  865. package/shortcuts/recorder.js +9 -40
  866. package/shortcuts/recorder.mjs +9 -31
  867. package/shortcuts/utils.js +5 -20
  868. package/shortcuts/utils.mjs +5 -6
  869. package/tableView.js +239 -330
  870. package/tableView.mjs +239 -308
  871. package/translations/changesObservable/observable.js +14 -53
  872. package/translations/changesObservable/observable.mjs +14 -43
  873. package/translations/changesObservable/observer.js +13 -31
  874. package/translations/changesObservable/observer.mjs +13 -23
  875. package/translations/changesObservable/utils.js +1 -5
  876. package/translations/changesObservable/utils.mjs +1 -4
  877. package/translations/index.js +0 -11
  878. package/translations/indexMapper.js +80 -162
  879. package/translations/indexMapper.mjs +85 -134
  880. package/translations/mapCollections/aggregatedCollection.js +14 -50
  881. package/translations/mapCollections/aggregatedCollection.mjs +14 -37
  882. package/translations/mapCollections/index.js +0 -7
  883. package/translations/mapCollections/mapCollection.js +20 -34
  884. package/translations/mapCollections/mapCollection.mjs +20 -23
  885. package/translations/maps/hidingMap.js +7 -34
  886. package/translations/maps/hidingMap.mjs +7 -22
  887. package/translations/maps/index.js +1 -24
  888. package/translations/maps/index.mjs +1 -3
  889. package/translations/maps/indexMap.js +25 -33
  890. package/translations/maps/indexMap.mjs +25 -27
  891. package/translations/maps/indexesSequence.js +8 -40
  892. package/translations/maps/indexesSequence.mjs +8 -25
  893. package/translations/maps/linkedPhysicalIndexToValueMap.js +18 -81
  894. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +17 -54
  895. package/translations/maps/physicalIndexToValueMap.js +7 -38
  896. package/translations/maps/physicalIndexToValueMap.mjs +7 -24
  897. package/translations/maps/trimmingMap.js +7 -34
  898. package/translations/maps/trimmingMap.mjs +7 -22
  899. package/translations/maps/utils/actionsOnIndexes.js +1 -7
  900. package/translations/maps/utils/actionsOnIndexes.mjs +1 -3
  901. package/translations/maps/utils/index.js +0 -13
  902. package/translations/maps/utils/index.mjs +0 -3
  903. package/translations/maps/utils/indexesSequence.js +1 -24
  904. package/translations/maps/utils/indexesSequence.mjs +1 -9
  905. package/translations/maps/utils/physicallyIndexed.js +1 -27
  906. package/translations/maps/utils/physicallyIndexed.mjs +1 -10
  907. package/utils/dataStructures/linkedList.js +23 -50
  908. package/utils/dataStructures/linkedList.mjs +23 -48
  909. package/utils/dataStructures/priorityMap.js +9 -47
  910. package/utils/dataStructures/priorityMap.mjs +9 -30
  911. package/utils/dataStructures/queue.js +19 -16
  912. package/utils/dataStructures/queue.mjs +19 -15
  913. package/utils/dataStructures/stack.js +19 -16
  914. package/utils/dataStructures/stack.mjs +19 -15
  915. package/utils/dataStructures/tree.js +19 -77
  916. package/utils/dataStructures/tree.mjs +19 -56
  917. package/utils/dataStructures/uniqueMap.js +18 -57
  918. package/utils/dataStructures/uniqueMap.mjs +18 -43
  919. package/utils/dataStructures/uniqueSet.js +5 -32
  920. package/utils/dataStructures/uniqueSet.mjs +5 -19
  921. package/utils/ghostTable.js +42 -106
  922. package/utils/ghostTable.mjs +40 -90
  923. package/utils/interval.js +17 -29
  924. package/utils/interval.mjs +18 -26
  925. package/utils/parseTable.js +11 -92
  926. package/utils/parseTable.mjs +11 -62
  927. package/utils/rootInstance.js +3 -14
  928. package/utils/rootInstance.mjs +3 -3
  929. package/utils/samplesGenerator.js +25 -51
  930. package/utils/samplesGenerator.mjs +25 -42
  931. package/utils/staticRegister.js +6 -33
  932. package/utils/staticRegister.mjs +6 -19
  933. package/validators/autocompleteValidator/autocompleteValidator.js +2 -10
  934. package/validators/autocompleteValidator/autocompleteValidator.mjs +2 -8
  935. package/validators/autocompleteValidator/index.js +0 -2
  936. package/validators/dateValidator/dateValidator.js +2 -21
  937. package/validators/dateValidator/dateValidator.mjs +2 -11
  938. package/validators/dateValidator/index.js +0 -2
  939. package/validators/index.js +0 -11
  940. package/validators/index.mjs +0 -1
  941. package/validators/numericValidator/index.js +0 -2
  942. package/validators/numericValidator/numericValidator.js +1 -7
  943. package/validators/numericValidator/numericValidator.mjs +1 -3
  944. package/validators/registry.js +7 -16
  945. package/validators/registry.mjs +7 -14
  946. package/validators/timeValidator/index.js +0 -2
  947. package/validators/timeValidator/timeValidator.js +6 -18
  948. package/validators/timeValidator/timeValidator.mjs +8 -13
@@ -1,72 +1,74 @@
1
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
2
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
3
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
4
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
5
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
7
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
14
-
15
8
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16
-
17
- 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); } }
18
-
9
+ 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, _toPropertyKey(descriptor.key), descriptor); } }
19
10
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
20
-
21
11
  function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
22
-
23
12
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
24
-
25
13
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
26
-
27
14
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
28
-
29
15
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
30
-
31
16
  function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
32
-
33
17
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
34
-
35
18
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
36
-
37
19
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
38
-
20
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
21
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
22
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
23
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
25
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
26
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
27
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
28
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
29
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
30
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
31
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
32
+ import "core-js/modules/es.array.join.js";
33
+ import "core-js/modules/es.array.concat.js";
39
34
  import "core-js/modules/es.array.iterator.js";
35
+ import "core-js/modules/es.map.js";
40
36
  import "core-js/modules/es.object.to-string.js";
41
37
  import "core-js/modules/es.string.iterator.js";
42
- import "core-js/modules/es.weak-map.js";
43
38
  import "core-js/modules/web.dom-collections.iterator.js";
44
- import "core-js/modules/es.array.join.js";
45
- import "core-js/modules/es.array.index-of.js";
39
+ import "core-js/modules/es.array.map.js";
40
+ import "core-js/modules/es.array.filter.js";
41
+ import "core-js/modules/es.array.from.js";
46
42
  import "core-js/modules/es.regexp.exec.js";
47
- import "core-js/modules/es.array.concat.js";
43
+ import "core-js/modules/es.weak-map.js";
44
+ import "core-js/modules/es.weak-set.js";
45
+ import "core-js/modules/es.symbol.to-primitive.js";
46
+ import "core-js/modules/es.date.to-primitive.js";
47
+ import "core-js/modules/es.symbol.js";
48
+ import "core-js/modules/es.symbol.description.js";
49
+ import "core-js/modules/es.number.constructor.js";
48
50
  import "core-js/modules/es.object.set-prototype-of.js";
49
51
  import "core-js/modules/es.object.get-prototype-of.js";
50
52
  import "core-js/modules/es.reflect.construct.js";
51
53
  import "core-js/modules/es.reflect.get.js";
52
54
  import "core-js/modules/es.object.get-own-property-descriptor.js";
53
- import "core-js/modules/es.symbol.js";
54
- import "core-js/modules/es.symbol.description.js";
55
55
  import "core-js/modules/es.symbol.iterator.js";
56
56
  import "core-js/modules/es.array.slice.js";
57
57
  import "core-js/modules/es.function.name.js";
58
- import "core-js/modules/es.array.from.js";
59
58
  import { BasePlugin } from "../base/index.mjs";
60
59
  import Hooks from "../../pluginHooks.mjs";
61
60
  import { stringify, parse } from "../../3rdparty/SheetClip/index.mjs";
62
61
  import { arrayEach } from "../../helpers/array.mjs";
63
- import { rangeEach } from "../../helpers/number.mjs";
64
62
  import { sanitize } from "../../helpers/string.mjs";
65
63
  import { getSelectionText } from "../../helpers/dom/element.mjs";
66
64
  import copyItem from "./contextMenuItem/copy.mjs";
65
+ import copyColumnHeadersOnlyItem from "./contextMenuItem/copyColumnHeadersOnly.mjs";
66
+ import copyWithColumnGroupHeadersItem from "./contextMenuItem/copyWithColumnGroupHeaders.mjs";
67
+ import copyWithColumnHeadersItem from "./contextMenuItem/copyWithColumnHeaders.mjs";
67
68
  import cutItem from "./contextMenuItem/cut.mjs";
68
69
  import PasteEvent from "./pasteEvent.mjs";
69
70
  import { createElement, destroyElement } from "./focusableElement.mjs";
71
+ import { CopyableRangesFactory, normalizeRanges } from "./copyableRanges.mjs";
70
72
  import { _dataToHTML, htmlToGridSettings } from "../../utils/parseTable.mjs";
71
73
  Hooks.getSingleton().register('afterCopyLimit');
72
74
  Hooks.getSingleton().register('modifyCopyableRange');
@@ -79,153 +81,151 @@ Hooks.getSingleton().register('afterCopy');
79
81
  export var PLUGIN_KEY = 'copyPaste';
80
82
  export var PLUGIN_PRIORITY = 80;
81
83
  var SETTING_KEYS = ['fragmentSelection'];
82
- var ROWS_LIMIT = Infinity;
83
- var COLUMNS_LIMIT = Infinity;
84
- var privatePool = new WeakMap();
85
84
  var META_HEAD = ['<meta name="generator" content="Handsontable"/>', '<style type="text/css">td{white-space:normal}br{mso-data-placement:same-cell}</style>'].join('');
86
- /* eslint-disable jsdoc/require-description-complete-sentence */
87
85
 
86
+ /* eslint-disable jsdoc/require-description-complete-sentence */
88
87
  /**
89
88
  * @description
90
- * This plugin enables the copy/paste functionality in the Handsontable. The functionality works for API, Context Menu,
91
- * using keyboard shortcuts and menu bar from the browser.
92
- * Possible values:
93
- * * `true` (to enable default options),
94
- * * `false` (to disable completely).
89
+ * Copy, cut, and paste data by using the `CopyPaste` plugin.
90
+ *
91
+ * Control the `CopyPaste` plugin programmatically through its [API methods](#methods).
95
92
  *
96
- * or an object with values:
97
- * * `'columnsLimit'` (see {@link CopyPaste#columnsLimit})
98
- * * `'rowsLimit'` (see {@link CopyPaste#rowsLimit})
99
- * * `'pasteMode'` (see {@link CopyPaste#pasteMode})
100
- * * `'uiContainer'` (see {@link CopyPaste#uiContainer}).
93
+ * The user can access the copy-paste features through:
94
+ * - The [context menu](@/guides/cell-features/clipboard.md#context-menu).
95
+ * - The [keyboard shortcuts](@/guides/cell-features/clipboard.md#related-keyboard-shortcuts).
96
+ * - The browser's menu bar.
101
97
  *
102
- * See [the copy/paste demo](@/guides/cell-features/clipboard.md) for examples.
98
+ * Read more:
99
+ * - [Guides: Clipboard](@/guides/cell-features/clipboard.md)
100
+ * - [Configuration options: `copyPaste`](@/api/options.md#copypaste)
103
101
  *
104
102
  * @example
105
103
  * ```js
106
- * // Enables the plugin with default values
104
+ * // enable the plugin with the default configuration
107
105
  * copyPaste: true,
108
- * // Enables the plugin with custom values
106
+ *
107
+ * // or, enable the plugin with a custom configuration
109
108
  * copyPaste: {
110
109
  * columnsLimit: 25,
111
110
  * rowsLimit: 50,
112
111
  * pasteMode: 'shift_down',
112
+ * copyColumnHeaders: true,
113
+ * copyColumnGroupHeaders: true,
114
+ * copyColumnHeadersOnly: true,
113
115
  * uiContainer: document.body,
114
116
  * },
115
117
  * ```
116
118
  * @class CopyPaste
117
119
  * @plugin CopyPaste
118
120
  */
119
-
121
+ var _enableCopyColumnHeaders = /*#__PURE__*/new WeakMap();
122
+ var _enableCopyColumnGroupHeaders = /*#__PURE__*/new WeakMap();
123
+ var _enableCopyColumnHeadersOnly = /*#__PURE__*/new WeakMap();
124
+ var _copyMode = /*#__PURE__*/new WeakMap();
125
+ var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
126
+ var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
127
+ var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
128
+ var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
120
129
  export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
121
130
  _inherits(CopyPaste, _BasePlugin);
122
-
123
131
  var _super = _createSuper(CopyPaste);
124
-
125
- function CopyPaste(hotInstance) {
132
+ function CopyPaste() {
126
133
  var _this;
127
-
128
134
  _classCallCheck(this, CopyPaste);
129
-
130
- _this = _super.call(this, hotInstance);
131
- /**
132
- * Maximum number of columns than can be copied to clipboard using <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>.
133
- *
134
- * @type {number}
135
- * @default Infinity
136
- */
137
-
138
- _this.columnsLimit = COLUMNS_LIMIT;
139
- /**
140
- * Ranges of the cells coordinates, which should be used to copy/cut/paste actions.
141
- *
142
- * @private
143
- * @type {Array}
144
- */
145
-
146
- _this.copyableRanges = [];
147
- /**
148
- * Provides focusable element to support IME and copy/paste/cut actions.
149
- *
150
- * @private
151
- * @type {FocusableWrapper}
152
- */
153
-
154
- _this.focusableElement = void 0;
155
- /**
156
- * Defines paste (<kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**V**</kbd>) behavior.
157
- * * Default value `"overwrite"` will paste clipboard value over current selection.
158
- * * When set to `"shift_down"`, clipboard data will be pasted in place of current selection, while all selected cells are moved down.
159
- * * When set to `"shift_right"`, clipboard data will be pasted in place of current selection, while all selected cells are moved right.
160
- *
161
- * @type {string}
162
- * @default 'overwrite'
163
- */
164
-
165
- _this.pasteMode = 'overwrite';
166
- /**
167
- * Maximum number of rows than can be copied to clipboard using <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>.
168
- *
169
- * @type {number}
170
- * @default Infinity
171
- */
172
-
173
- _this.rowsLimit = ROWS_LIMIT;
174
- /**
175
- * UI container for the secondary focusable element.
176
- *
177
- * @type {HTMLElement}
178
- */
179
-
180
- _this.uiContainer = _this.hot.rootDocument.body;
181
- privatePool.set(_assertThisInitialized(_this), {
182
- isTriggeredByCopy: false,
183
- isTriggeredByCut: false,
184
- isBeginEditing: false,
185
- isFragmentSelectionEnabled: false
135
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
136
+ args[_key] = arguments[_key];
137
+ }
138
+ _this = _super.call.apply(_super, [this].concat(args));
139
+ _classPrivateMethodInitSpec(_assertThisInitialized(_this), _countCopiedHeaders);
140
+ _defineProperty(_assertThisInitialized(_this), "columnsLimit", Infinity);
141
+ _defineProperty(_assertThisInitialized(_this), "rowsLimit", Infinity);
142
+ _defineProperty(_assertThisInitialized(_this), "pasteMode", 'overwrite');
143
+ _defineProperty(_assertThisInitialized(_this), "uiContainer", _this.hot.rootDocument.body);
144
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _enableCopyColumnHeaders, {
145
+ writable: true,
146
+ value: false
147
+ });
148
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _enableCopyColumnGroupHeaders, {
149
+ writable: true,
150
+ value: false
186
151
  });
152
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _enableCopyColumnHeadersOnly, {
153
+ writable: true,
154
+ value: false
155
+ });
156
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _copyMode, {
157
+ writable: true,
158
+ value: 'cells-only'
159
+ });
160
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _isTriggeredByCopy, {
161
+ writable: true,
162
+ value: false
163
+ });
164
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _isTriggeredByCut, {
165
+ writable: true,
166
+ value: false
167
+ });
168
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _copyableRangesFactory, {
169
+ writable: true,
170
+ value: new CopyableRangesFactory({
171
+ countRows: function countRows() {
172
+ return _this.hot.countRows();
173
+ },
174
+ countColumns: function countColumns() {
175
+ return _this.hot.countCols();
176
+ },
177
+ rowsLimit: function rowsLimit() {
178
+ return _this.rowsLimit;
179
+ },
180
+ columnsLimit: function columnsLimit() {
181
+ return _this.columnsLimit;
182
+ },
183
+ countColumnHeaders: function countColumnHeaders() {
184
+ return _this.hot.view.getColumnHeadersCount();
185
+ }
186
+ })
187
+ });
188
+ _defineProperty(_assertThisInitialized(_this), "copyableRanges", []);
189
+ _defineProperty(_assertThisInitialized(_this), "focusableElement", void 0);
187
190
  return _this;
188
191
  }
189
- /**
190
- * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
191
- * hook and if it returns `true` than the {@link CopyPaste#enablePlugin} method is called.
192
- *
193
- * @returns {boolean}
194
- */
195
-
196
-
197
192
  _createClass(CopyPaste, [{
198
193
  key: "isEnabled",
199
- value: function isEnabled() {
194
+ value:
195
+ /**
196
+ * Checks if the [`CopyPaste`](#copypaste) plugin is enabled.
197
+ *
198
+ * This method gets called by Handsontable's [`beforeInit`](@/api/hooks.md#beforeinit) hook.
199
+ * If it returns `true`, the [`enablePlugin()`](#enableplugin) method gets called.
200
+ *
201
+ * @returns {boolean}
202
+ */
203
+ function isEnabled() {
200
204
  return !!this.hot.getSettings()[PLUGIN_KEY];
201
205
  }
206
+
202
207
  /**
203
- * Enables the plugin functionality for this Handsontable instance.
208
+ * Enables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
204
209
  */
205
-
206
210
  }, {
207
211
  key: "enablePlugin",
208
212
  value: function enablePlugin() {
209
213
  var _this2 = this;
210
-
211
214
  if (this.enabled) {
212
215
  return;
213
216
  }
214
-
215
217
  var _this$hot$getSettings = this.hot.getSettings(),
216
- settings = _this$hot$getSettings[PLUGIN_KEY],
217
- fragmentSelection = _this$hot$getSettings.fragmentSelection;
218
-
219
- var priv = privatePool.get(this);
220
- priv.isFragmentSelectionEnabled = !!fragmentSelection;
221
-
218
+ settings = _this$hot$getSettings[PLUGIN_KEY];
222
219
  if (_typeof(settings) === 'object') {
223
- this.pasteMode = settings.pasteMode || this.pasteMode;
220
+ var _settings$pasteMode, _settings$uiContainer;
221
+ this.pasteMode = (_settings$pasteMode = settings.pasteMode) !== null && _settings$pasteMode !== void 0 ? _settings$pasteMode : this.pasteMode;
224
222
  this.rowsLimit = isNaN(settings.rowsLimit) ? this.rowsLimit : settings.rowsLimit;
225
223
  this.columnsLimit = isNaN(settings.columnsLimit) ? this.columnsLimit : settings.columnsLimit;
226
- this.uiContainer = settings.uiContainer || this.uiContainer;
224
+ _classPrivateFieldSet(this, _enableCopyColumnHeaders, !!settings.copyColumnHeaders);
225
+ _classPrivateFieldSet(this, _enableCopyColumnGroupHeaders, !!settings.copyColumnGroupHeaders);
226
+ _classPrivateFieldSet(this, _enableCopyColumnHeadersOnly, !!settings.copyColumnHeadersOnly);
227
+ this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
227
228
  }
228
-
229
229
  this.addHook('afterContextMenuDefaultOptions', function (options) {
230
230
  return _this2.onAfterContextMenuDefaultOptions(options);
231
231
  });
@@ -246,238 +246,266 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
246
246
  }).addLocalHook('paste', function (event) {
247
247
  return _this2.onPaste(event);
248
248
  });
249
-
250
249
  _get(_getPrototypeOf(CopyPaste.prototype), "enablePlugin", this).call(this);
251
250
  }
251
+
252
252
  /**
253
- * Updates the plugin's state.
253
+ * Updates the state of the [`CopyPaste`](#copypaste) plugin.
254
254
  *
255
- * This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
255
+ * Gets called when [`updateSettings()`](@/api/core.md#updatesettings)
256
+ * is invoked with any of the following configuration options:
256
257
  * - [`copyPaste`](@/api/options.md#copypaste)
257
258
  * - [`fragmentSelection`](@/api/options.md#fragmentselection)
258
259
  */
259
-
260
260
  }, {
261
261
  key: "updatePlugin",
262
262
  value: function updatePlugin() {
263
263
  this.disablePlugin();
264
264
  this.enablePlugin();
265
265
  this.getOrCreateFocusableElement();
266
-
267
266
  _get(_getPrototypeOf(CopyPaste.prototype), "updatePlugin", this).call(this);
268
267
  }
268
+
269
269
  /**
270
- * Disables the plugin functionality for this Handsontable instance.
270
+ * Disables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
271
271
  */
272
-
273
272
  }, {
274
273
  key: "disablePlugin",
275
274
  value: function disablePlugin() {
276
275
  if (this.focusableElement) {
277
276
  destroyElement(this.focusableElement);
278
277
  }
279
-
280
278
  _get(_getPrototypeOf(CopyPaste.prototype), "disablePlugin", this).call(this);
281
279
  }
280
+
282
281
  /**
283
- * Copies the selected cell into the clipboard.
282
+ * Copies the contents of the selected cells (and/or their related column headers) to the system clipboard.
283
+ *
284
+ * Takes an optional parameter (`copyMode`) that defines the scope of copying:
285
+ *
286
+ * | `copyMode` value | Description |
287
+ * | --------------------------- | --------------------------------------------------------------- |
288
+ * | `'cells-only'` (default) | Copy the selected cells |
289
+ * | `'with-column-headers'` | - Copy the selected cells<br>- Copy the nearest column headers |
290
+ * | `'with-all-column-headers'` | - Copy the selected cells<br>- Copy all related columns headers |
291
+ * | `'column-headers-only'` | Copy the nearest column headers (without copying cells) |
292
+ *
293
+ * @param {string} [copyMode='cells-only'] Copy mode.
284
294
  */
285
-
286
295
  }, {
287
296
  key: "copy",
288
297
  value: function copy() {
289
- var priv = privatePool.get(this);
290
- priv.isTriggeredByCopy = true;
298
+ var copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
299
+ _classPrivateFieldSet(this, _copyMode, copyMode);
300
+ _classPrivateFieldSet(this, _isTriggeredByCopy, true);
291
301
  this.getOrCreateFocusableElement();
292
302
  this.focusableElement.focus();
293
303
  this.hot.rootDocument.execCommand('copy');
294
304
  }
305
+
306
+ /**
307
+ * Copies the contents of the selected cells.
308
+ */
309
+ }, {
310
+ key: "copyCellsOnly",
311
+ value: function copyCellsOnly() {
312
+ this.copy('cells-only');
313
+ }
295
314
  /**
296
- * Cuts the selected cell into the clipboard.
315
+ * Copies the contents of column headers that are nearest to the selected cells.
297
316
  */
317
+ }, {
318
+ key: "copyColumnHeadersOnly",
319
+ value: function copyColumnHeadersOnly() {
320
+ this.copy('column-headers-only');
321
+ }
322
+ /**
323
+ * Copies the contents of the selected cells and all their related column headers.
324
+ */
325
+ }, {
326
+ key: "copyWithAllColumnHeaders",
327
+ value: function copyWithAllColumnHeaders() {
328
+ this.copy('with-column-group-headers');
329
+ }
330
+ /**
331
+ * Copies the contents of the selected cells and their nearest column headers.
332
+ */
333
+ }, {
334
+ key: "copyWithColumnHeaders",
335
+ value: function copyWithColumnHeaders() {
336
+ this.copy('with-column-headers');
337
+ }
298
338
 
339
+ /**
340
+ * Cuts the contents of the selected cells to the system clipboard.
341
+ */
299
342
  }, {
300
343
  key: "cut",
301
344
  value: function cut() {
302
- var priv = privatePool.get(this);
303
- priv.isTriggeredByCut = true;
345
+ _classPrivateFieldSet(this, _isTriggeredByCut, true);
304
346
  this.getOrCreateFocusableElement();
305
347
  this.focusableElement.focus();
306
348
  this.hot.rootDocument.execCommand('cut');
307
349
  }
350
+
308
351
  /**
309
- * Creates copyable text releated to range objects.
352
+ * Converts the contents of multiple ranges (`ranges`) into a single string.
310
353
  *
311
- * @param {object[]} ranges Array of objects with properties `startRow`, `endRow`, `startCol` and `endCol`.
312
- * @returns {string} Returns string which will be copied into clipboard.
354
+ * @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `endRow`, `startCol` and `endCol`.
355
+ * @returns {string} A string that will be copied to the clipboard.
313
356
  */
314
-
315
357
  }, {
316
358
  key: "getRangedCopyableData",
317
359
  value: function getRangedCopyableData(ranges) {
318
- var _this3 = this;
319
-
320
- var dataSet = [];
321
- var copyableRows = [];
322
- var copyableColumns = []; // Count all copyable rows and columns
323
-
324
- arrayEach(ranges, function (range) {
325
- rangeEach(range.startRow, range.endRow, function (row) {
326
- if (copyableRows.indexOf(row) === -1) {
327
- copyableRows.push(row);
328
- }
329
- });
330
- rangeEach(range.startCol, range.endCol, function (column) {
331
- if (copyableColumns.indexOf(column) === -1) {
332
- copyableColumns.push(column);
333
- }
334
- });
335
- }); // Concat all rows and columns data defined in ranges into one copyable string
336
-
337
- arrayEach(copyableRows, function (row) {
338
- var rowSet = [];
339
- arrayEach(copyableColumns, function (column) {
340
- rowSet.push(_this3.hot.getCopyableData(row, column));
341
- });
342
- dataSet.push(rowSet);
343
- });
344
- return stringify(dataSet);
360
+ return stringify(this.getRangedData(ranges));
345
361
  }
362
+
346
363
  /**
347
- * Creates copyable text releated to range objects.
364
+ * Converts the contents of multiple ranges (`ranges`) into an array of arrays.
348
365
  *
349
- * @param {object[]} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
350
- * @returns {Array[]} Returns array of arrays which will be copied into clipboard.
366
+ * @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
367
+ * @returns {Array[]} An array of arrays that will be copied to the clipboard.
351
368
  */
352
-
353
369
  }, {
354
370
  key: "getRangedData",
355
371
  value: function getRangedData(ranges) {
356
- var _this4 = this;
357
-
358
- var dataSet = [];
359
- var copyableRows = [];
360
- var copyableColumns = []; // Count all copyable rows and columns
361
-
362
- arrayEach(ranges, function (range) {
363
- rangeEach(range.startRow, range.endRow, function (row) {
364
- if (copyableRows.indexOf(row) === -1) {
365
- copyableRows.push(row);
366
- }
367
- });
368
- rangeEach(range.startCol, range.endCol, function (column) {
369
- if (copyableColumns.indexOf(column) === -1) {
370
- copyableColumns.push(column);
371
- }
372
- });
373
- }); // Concat all rows and columns data defined in ranges into one copyable string
372
+ var _this3 = this;
373
+ var data = [];
374
+ var _normalizeRanges = normalizeRanges(ranges),
375
+ rows = _normalizeRanges.rows,
376
+ columns = _normalizeRanges.columns;
374
377
 
375
- arrayEach(copyableRows, function (row) {
378
+ // concatenate all rows and columns data defined in ranges into one copyable string
379
+ arrayEach(rows, function (row) {
376
380
  var rowSet = [];
377
- arrayEach(copyableColumns, function (column) {
378
- rowSet.push(_this4.hot.getCopyableData(row, column));
381
+ arrayEach(columns, function (column) {
382
+ if (row < 0) {
383
+ // `row` as the second argument acts here as the `headerLevel` argument
384
+ rowSet.push(_this3.hot.getColHeader(column, row));
385
+ } else {
386
+ rowSet.push(_this3.hot.getCopyableData(row, column));
387
+ }
379
388
  });
380
- dataSet.push(rowSet);
389
+ data.push(rowSet);
381
390
  });
382
- return dataSet;
391
+ return data;
383
392
  }
393
+
384
394
  /**
385
395
  * Simulates the paste action.
386
396
  *
387
- * Due to security reasons, modern browsers disallow reading from the system clipboard.
397
+ * For security reasons, modern browsers don't allow reading from the system clipboard.
388
398
  *
389
- * @param {string} pastableText Value as raw string to paste.
390
- * @param {string} [pastableHtml=''] Value as HTML to paste.
399
+ * @param {string} pastableText The value to paste, as a raw string.
400
+ * @param {string} [pastableHtml=''] The value to paste, as HTML.
391
401
  */
392
-
393
402
  }, {
394
403
  key: "paste",
395
404
  value: function paste() {
396
405
  var pastableText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
397
406
  var pastableHtml = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : pastableText;
398
-
399
407
  if (!pastableText && !pastableHtml) {
400
408
  return;
401
409
  }
402
-
403
410
  var pasteData = new PasteEvent();
404
-
405
411
  if (pastableText) {
406
412
  pasteData.clipboardData.setData('text/plain', pastableText);
407
413
  }
408
-
409
414
  if (pastableHtml) {
410
415
  pasteData.clipboardData.setData('text/html', pastableHtml);
411
416
  }
412
-
413
417
  this.getOrCreateFocusableElement();
414
418
  this.onPaste(pasteData);
415
419
  }
420
+
416
421
  /**
417
422
  * Prepares copyable text from the cells selection in the invisible textarea.
418
423
  */
419
-
420
424
  }, {
421
425
  key: "setCopyableText",
422
426
  value: function setCopyableText() {
423
- var selRange = this.hot.getSelectedRangeLast();
424
-
425
- if (!selRange) {
427
+ var selectionRange = this.hot.getSelectedRangeLast();
428
+ if (!selectionRange) {
426
429
  return;
427
430
  }
428
-
429
- var topStart = selRange.getTopStartCorner();
430
- var bottomEnd = selRange.getBottomEndCorner();
431
- var startRow = topStart.row;
432
- var startCol = topStart.col;
433
- var endRow = bottomEnd.row;
434
- var endCol = bottomEnd.col;
435
- var finalEndRow = Math.min(endRow, startRow + this.rowsLimit - 1);
436
- var finalEndCol = Math.min(endCol, startCol + this.columnsLimit - 1);
437
- this.copyableRanges.length = 0;
438
- this.copyableRanges.push({
439
- startRow: startRow,
440
- startCol: startCol,
441
- endRow: finalEndRow,
442
- endCol: finalEndCol
431
+ _classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
432
+ var groupedRanges = new Map([['headers', null], ['cells', null]]);
433
+ if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
434
+ groupedRanges.set('headers', _classPrivateFieldGet(this, _copyableRangesFactory).getMostBottomColumnHeadersRange());
435
+ } else {
436
+ if (_classPrivateFieldGet(this, _copyMode) === 'with-column-headers') {
437
+ groupedRanges.set('headers', _classPrivateFieldGet(this, _copyableRangesFactory).getMostBottomColumnHeadersRange());
438
+ } else if (_classPrivateFieldGet(this, _copyMode) === 'with-column-group-headers') {
439
+ groupedRanges.set('headers', _classPrivateFieldGet(this, _copyableRangesFactory).getAllColumnHeadersRange());
440
+ }
441
+ groupedRanges.set('cells', _classPrivateFieldGet(this, _copyableRangesFactory).getCellsRange());
442
+ }
443
+ this.copyableRanges = Array.from(groupedRanges.values()).filter(function (range) {
444
+ return range !== null;
445
+ }).map(function (_ref) {
446
+ var startRow = _ref.startRow,
447
+ startCol = _ref.startCol,
448
+ endRow = _ref.endRow,
449
+ endCol = _ref.endCol;
450
+ return {
451
+ startRow: startRow,
452
+ startCol: startCol,
453
+ endRow: endRow,
454
+ endCol: endCol
455
+ };
443
456
  });
444
457
  this.copyableRanges = this.hot.runHooks('modifyCopyableRange', this.copyableRanges);
445
-
446
- if (endRow !== finalEndRow || endCol !== finalEndCol) {
458
+ var cellsRange = groupedRanges.get('cells');
459
+ if (cellsRange !== null && cellsRange.isRangeTrimmed) {
460
+ var startRow = cellsRange.startRow,
461
+ startCol = cellsRange.startCol,
462
+ endRow = cellsRange.endRow,
463
+ endCol = cellsRange.endCol;
447
464
  this.hot.runHooks('afterCopyLimit', endRow - startRow + 1, endCol - startCol + 1, this.rowsLimit, this.columnsLimit);
448
465
  }
449
466
  }
467
+
450
468
  /**
451
469
  * Force focus on editable element.
452
470
  *
453
471
  * @private
454
472
  */
455
-
456
473
  }, {
457
474
  key: "getOrCreateFocusableElement",
458
475
  value: function getOrCreateFocusableElement() {
459
- var editor = this.hot.getActiveEditor();
460
- var editableElement = editor ? editor.TEXTAREA : void 0;
461
-
476
+ var _this$hot$getActiveEd;
477
+ var editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
462
478
  if (editableElement) {
463
479
  this.focusableElement.setFocusableElement(editableElement);
464
480
  } else {
465
481
  this.focusableElement.useSecondaryElement();
466
482
  }
467
483
  }
484
+
468
485
  /**
469
486
  * Verifies if editor exists and is open.
470
487
  *
471
488
  * @private
472
489
  * @returns {boolean}
473
490
  */
474
-
475
491
  }, {
476
492
  key: "isEditorOpened",
477
493
  value: function isEditorOpened() {
478
- var editor = this.hot.getActiveEditor();
479
- return editor && editor.isOpened();
494
+ var _this$hot$getActiveEd2;
495
+ return (_this$hot$getActiveEd2 = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd2 === void 0 ? void 0 : _this$hot$getActiveEd2.isOpened();
480
496
  }
497
+
498
+ /**
499
+ * Counts how many column headers will be copied based on the passed range.
500
+ *
501
+ * @private
502
+ * @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
503
+ * @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
504
+ * information with the number of copied headers.
505
+ */
506
+ }, {
507
+ key: "populateValues",
508
+ value:
481
509
  /**
482
510
  * Prepares new values to populate them into datasource.
483
511
  *
@@ -486,179 +514,145 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
486
514
  * @param {Array} [selection] The selection which indicates from what position the data will be populated.
487
515
  * @returns {Array} Range coordinates after populate data.
488
516
  */
489
-
490
- }, {
491
- key: "populateValues",
492
- value: function populateValues(inputArray) {
517
+ function populateValues(inputArray) {
493
518
  var selection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.hot.getSelectedRangeLast();
494
-
495
519
  if (!inputArray.length) {
496
520
  return;
497
521
  }
498
-
499
522
  var populatedRowsLength = inputArray.length;
500
523
  var populatedColumnsLength = inputArray[0].length;
501
524
  var newRows = [];
502
-
503
525
  var _selection$getTopStar = selection.getTopStartCorner(),
504
- startRow = _selection$getTopStar.row,
505
- startColumn = _selection$getTopStar.col;
506
-
526
+ startRow = _selection$getTopStar.row,
527
+ startColumn = _selection$getTopStar.col;
507
528
  var _selection$getBottomE = selection.getBottomEndCorner(),
508
- endRowFromSelection = _selection$getBottomE.row,
509
- endColumnFromSelection = _selection$getBottomE.col;
510
-
529
+ endRowFromSelection = _selection$getBottomE.row,
530
+ endColumnFromSelection = _selection$getBottomE.col;
511
531
  var visualRowForPopulatedData = startRow;
512
532
  var visualColumnForPopulatedData = startColumn;
513
533
  var lastVisualRow = startRow;
514
- var lastVisualColumn = startColumn; // We try to populate just all copied data or repeat copied data within a selection. Please keep in mind that we
534
+ var lastVisualColumn = startColumn;
535
+
536
+ // We try to populate just all copied data or repeat copied data within a selection. Please keep in mind that we
515
537
  // don't know whether populated data is bigger than selection on start as there are some cells for which values
516
538
  // should be not inserted (it's known right after getting cell meta).
517
-
518
539
  while (newRows.length < populatedRowsLength || visualRowForPopulatedData <= endRowFromSelection) {
519
540
  var _this$hot$getCellMeta = this.hot.getCellMeta(visualRowForPopulatedData, startColumn),
520
- skipRowOnPaste = _this$hot$getCellMeta.skipRowOnPaste,
521
- visualRow = _this$hot$getCellMeta.visualRow;
522
-
541
+ skipRowOnPaste = _this$hot$getCellMeta.skipRowOnPaste,
542
+ visualRow = _this$hot$getCellMeta.visualRow;
523
543
  visualRowForPopulatedData = visualRow + 1;
524
-
525
544
  if (skipRowOnPaste === true) {
526
545
  /* eslint-disable no-continue */
527
546
  continue;
528
547
  }
529
-
530
548
  lastVisualRow = visualRow;
531
549
  visualColumnForPopulatedData = startColumn;
532
550
  var newRow = [];
533
551
  var insertedRow = newRows.length % populatedRowsLength;
534
-
535
552
  while (newRow.length < populatedColumnsLength || visualColumnForPopulatedData <= endColumnFromSelection) {
536
553
  var _this$hot$getCellMeta2 = this.hot.getCellMeta(startRow, visualColumnForPopulatedData),
537
- skipColumnOnPaste = _this$hot$getCellMeta2.skipColumnOnPaste,
538
- visualCol = _this$hot$getCellMeta2.visualCol;
539
-
554
+ skipColumnOnPaste = _this$hot$getCellMeta2.skipColumnOnPaste,
555
+ visualCol = _this$hot$getCellMeta2.visualCol;
540
556
  visualColumnForPopulatedData = visualCol + 1;
541
-
542
557
  if (skipColumnOnPaste === true) {
543
558
  /* eslint-disable no-continue */
544
559
  continue;
545
560
  }
546
-
547
561
  lastVisualColumn = visualCol;
548
562
  var insertedColumn = newRow.length % populatedColumnsLength;
549
563
  newRow.push(inputArray[insertedRow][insertedColumn]);
550
564
  }
551
-
552
565
  newRows.push(newRow);
553
566
  }
554
-
555
567
  this.hot.populateFromArray(startRow, startColumn, newRows, void 0, void 0, 'CopyPaste.paste', this.pasteMode);
556
568
  return [startRow, startColumn, lastVisualRow, lastVisualColumn];
557
569
  }
570
+
558
571
  /**
559
572
  * `copy` event callback on textarea element.
560
573
  *
561
574
  * @param {Event} event ClipboardEvent.
562
575
  * @private
563
576
  */
564
-
565
577
  }, {
566
578
  key: "onCopy",
567
579
  value: function onCopy(event) {
568
- var priv = privatePool.get(this);
569
-
570
- if (!this.hot.isListening() && !priv.isTriggeredByCopy || this.isEditorOpened()) {
580
+ if (!this.hot.isListening() && !_classPrivateFieldGet(this, _isTriggeredByCopy) || this.isEditorOpened()) {
571
581
  return;
572
582
  }
573
-
574
583
  this.setCopyableText();
575
- priv.isTriggeredByCopy = false;
576
- var rangedData = this.getRangedData(this.copyableRanges);
577
- var allowCopying = !!this.hot.runHooks('beforeCopy', rangedData, this.copyableRanges);
578
-
584
+ _classPrivateFieldSet(this, _isTriggeredByCopy, false);
585
+ var data = this.getRangedData(this.copyableRanges);
586
+ var copiedHeadersCount = _classPrivateMethodGet(this, _countCopiedHeaders, _countCopiedHeaders2).call(this, this.copyableRanges);
587
+ var allowCopying = !!this.hot.runHooks('beforeCopy', data, this.copyableRanges, copiedHeadersCount);
579
588
  if (allowCopying) {
580
- var textPlain = stringify(rangedData);
581
-
589
+ var textPlain = stringify(data);
582
590
  if (event && event.clipboardData) {
583
- var textHTML = _dataToHTML(rangedData, this.hot.rootDocument);
584
-
591
+ var textHTML = _dataToHTML(data, this.hot.rootDocument);
585
592
  event.clipboardData.setData('text/plain', textPlain);
586
593
  event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
587
594
  } else if (typeof ClipboardEvent === 'undefined') {
588
595
  this.hot.rootWindow.clipboardData.setData('Text', textPlain);
589
596
  }
590
-
591
- this.hot.runHooks('afterCopy', rangedData, this.copyableRanges);
597
+ this.hot.runHooks('afterCopy', data, this.copyableRanges, copiedHeadersCount);
592
598
  }
593
-
599
+ _classPrivateFieldSet(this, _copyMode, 'cells-only');
594
600
  event.preventDefault();
595
601
  }
602
+
596
603
  /**
597
604
  * `cut` event callback on textarea element.
598
605
  *
599
606
  * @param {Event} event ClipboardEvent.
600
607
  * @private
601
608
  */
602
-
603
609
  }, {
604
610
  key: "onCut",
605
611
  value: function onCut(event) {
606
- var priv = privatePool.get(this);
607
-
608
- if (!this.hot.isListening() && !priv.isTriggeredByCut || this.isEditorOpened()) {
612
+ if (!this.hot.isListening() && !_classPrivateFieldGet(this, _isTriggeredByCut) || this.isEditorOpened()) {
609
613
  return;
610
614
  }
611
-
612
615
  this.setCopyableText();
613
- priv.isTriggeredByCut = false;
616
+ _classPrivateFieldSet(this, _isTriggeredByCut, false);
614
617
  var rangedData = this.getRangedData(this.copyableRanges);
615
618
  var allowCuttingOut = !!this.hot.runHooks('beforeCut', rangedData, this.copyableRanges);
616
-
617
619
  if (allowCuttingOut) {
618
620
  var textPlain = stringify(rangedData);
619
-
620
621
  if (event && event.clipboardData) {
621
622
  var textHTML = _dataToHTML(rangedData, this.hot.rootDocument);
622
-
623
623
  event.clipboardData.setData('text/plain', textPlain);
624
624
  event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
625
625
  } else if (typeof ClipboardEvent === 'undefined') {
626
626
  this.hot.rootWindow.clipboardData.setData('Text', textPlain);
627
627
  }
628
-
629
628
  this.hot.emptySelectedCells('CopyPaste.cut');
630
629
  this.hot.runHooks('afterCut', rangedData, this.copyableRanges);
631
630
  }
632
-
633
631
  event.preventDefault();
634
632
  }
633
+
635
634
  /**
636
635
  * `paste` event callback on textarea element.
637
636
  *
638
637
  * @param {Event} event ClipboardEvent or pseudo ClipboardEvent, if paste was called manually.
639
638
  * @private
640
639
  */
641
-
642
640
  }, {
643
641
  key: "onPaste",
644
642
  value: function onPaste(event) {
645
643
  if (!this.hot.isListening() || this.isEditorOpened()) {
646
644
  return;
647
645
  }
648
-
649
646
  if (event && event.preventDefault) {
650
647
  event.preventDefault();
651
648
  }
652
-
653
649
  var pastedData;
654
-
655
650
  if (event && typeof event.clipboardData !== 'undefined') {
656
651
  var textHTML = sanitize(event.clipboardData.getData('text/html'), {
657
652
  ADD_TAGS: ['meta'],
658
653
  ADD_ATTR: ['content'],
659
654
  FORCE_BODY: true
660
655
  });
661
-
662
656
  if (textHTML && /(<table)|(<TABLE)/g.test(textHTML)) {
663
657
  var parsedConfig = htmlToGridSettings(textHTML, this.hot.rootDocument);
664
658
  pastedData = parsedConfig.data;
@@ -668,49 +662,54 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
668
662
  } else if (typeof ClipboardEvent === 'undefined' && typeof this.hot.rootWindow.clipboardData !== 'undefined') {
669
663
  pastedData = this.hot.rootWindow.clipboardData.getData('Text');
670
664
  }
671
-
672
665
  if (typeof pastedData === 'string') {
673
666
  pastedData = parse(pastedData);
674
667
  }
675
-
676
668
  if (pastedData && pastedData.length === 0) {
677
669
  return;
678
670
  }
679
-
680
671
  if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
681
672
  return;
682
673
  }
683
-
684
674
  var _this$populateValues = this.populateValues(pastedData),
685
- _this$populateValues2 = _slicedToArray(_this$populateValues, 4),
686
- startRow = _this$populateValues2[0],
687
- startColumn = _this$populateValues2[1],
688
- endRow = _this$populateValues2[2],
689
- endColumn = _this$populateValues2[3];
690
-
675
+ _this$populateValues2 = _slicedToArray(_this$populateValues, 4),
676
+ startRow = _this$populateValues2[0],
677
+ startColumn = _this$populateValues2[1],
678
+ endRow = _this$populateValues2[2],
679
+ endColumn = _this$populateValues2[3];
691
680
  this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
692
681
  this.hot.runHooks('afterPaste', pastedData, this.copyableRanges);
693
682
  }
683
+
694
684
  /**
695
685
  * Add copy and cut options to the Context Menu.
696
686
  *
697
687
  * @private
698
688
  * @param {object} options Contains default added options of the Context Menu.
699
689
  */
700
-
701
690
  }, {
702
691
  key: "onAfterContextMenuDefaultOptions",
703
692
  value: function onAfterContextMenuDefaultOptions(options) {
704
693
  options.items.push({
705
694
  name: '---------'
706
- }, copyItem(this), cutItem(this));
695
+ }, copyItem(this));
696
+ if (_classPrivateFieldGet(this, _enableCopyColumnHeaders)) {
697
+ options.items.push(copyWithColumnHeadersItem(this));
698
+ }
699
+ if (_classPrivateFieldGet(this, _enableCopyColumnGroupHeaders)) {
700
+ options.items.push(copyWithColumnGroupHeadersItem(this));
701
+ }
702
+ if (_classPrivateFieldGet(this, _enableCopyColumnHeadersOnly)) {
703
+ options.items.push(copyColumnHeadersOnlyItem(this));
704
+ }
705
+ options.items.push(cutItem(this));
707
706
  }
707
+
708
708
  /**
709
709
  * Force focus on focusableElement.
710
710
  *
711
711
  * @private
712
712
  */
713
-
714
713
  }, {
715
714
  key: "onAfterOnCellMouseUp",
716
715
  value: function onAfterOnCellMouseUp() {
@@ -719,62 +718,52 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
719
718
  if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
720
719
  return;
721
720
  }
722
-
723
721
  this.getOrCreateFocusableElement();
724
722
  this.focusableElement.focus();
725
723
  }
724
+
726
725
  /**
727
726
  * Force focus on focusableElement after end of the selection.
728
727
  *
729
728
  * @private
730
729
  */
731
-
732
730
  }, {
733
731
  key: "onAfterSelectionEnd",
734
732
  value: function onAfterSelectionEnd() {
735
- var _privatePool$get = privatePool.get(this),
736
- isFragmentSelectionEnabled = _privatePool$get.isFragmentSelectionEnabled;
737
-
738
733
  if (this.isEditorOpened()) {
739
734
  return;
740
735
  }
741
-
742
736
  this.getOrCreateFocusableElement();
743
-
744
- if (isFragmentSelectionEnabled && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && getSelectionText()) {
737
+ if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && getSelectionText()) {
745
738
  return;
746
739
  }
747
-
748
740
  this.setCopyableText();
749
741
  this.focusableElement.focus();
750
742
  }
743
+
751
744
  /**
752
745
  * `beforeKeyDown` listener to force focus of focusableElement.
753
746
  *
754
747
  * @private
755
748
  */
756
-
757
749
  }, {
758
750
  key: "onBeforeKeyDown",
759
751
  value: function onBeforeKeyDown() {
760
752
  if (!this.hot.isListening() || this.isEditorOpened()) {
761
753
  return;
762
754
  }
763
-
764
755
  var activeElement = this.hot.rootDocument.activeElement;
765
756
  var activeEditor = this.hot.getActiveEditor();
766
-
767
757
  if (!activeEditor || activeElement !== this.focusableElement.getFocusableElement() && activeElement !== activeEditor.select) {
768
758
  return;
769
759
  }
770
-
771
760
  this.getOrCreateFocusableElement();
772
761
  this.focusableElement.focus();
773
762
  }
763
+
774
764
  /**
775
- * Destroys the plugin instance.
765
+ * Destroys the `CopyPaste` plugin instance.
776
766
  */
777
-
778
767
  }, {
779
768
  key: "destroy",
780
769
  value: function destroy() {
@@ -782,7 +771,6 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
782
771
  destroyElement(this.focusableElement);
783
772
  this.focusableElement = null;
784
773
  }
785
-
786
774
  _get(_getPrototypeOf(CopyPaste.prototype), "destroy", this).call(this);
787
775
  }
788
776
  }], [{
@@ -800,7 +788,27 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
800
788
  get: function get() {
801
789
  return PLUGIN_PRIORITY;
802
790
  }
803
- }]);
804
791
 
792
+ /**
793
+ * The maximum number of columns than can be copied to the clipboard.
794
+ *
795
+ * @type {number}
796
+ * @default Infinity
797
+ */
798
+ }]);
805
799
  return CopyPaste;
806
- }(BasePlugin);
800
+ }(BasePlugin);
801
+ function _countCopiedHeaders2(ranges) {
802
+ var _normalizeRanges2 = normalizeRanges(ranges),
803
+ rows = _normalizeRanges2.rows;
804
+ var columnHeadersCount = 0;
805
+ for (var row = 0; row < rows.length; row++) {
806
+ if (rows[row] >= 0) {
807
+ break;
808
+ }
809
+ columnHeadersCount += 1;
810
+ }
811
+ return {
812
+ columnHeadersCount: columnHeadersCount
813
+ };
814
+ }