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,280 +1,238 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.to-primitive.js");
4
+ require("core-js/modules/es.date.to-primitive.js");
5
+ require("core-js/modules/es.symbol.js");
6
+ require("core-js/modules/es.symbol.description.js");
7
+ require("core-js/modules/es.number.constructor.js");
3
8
  require("core-js/modules/es.object.set-prototype-of.js");
4
-
5
9
  require("core-js/modules/es.object.get-prototype-of.js");
6
-
7
10
  require("core-js/modules/es.reflect.construct.js");
8
-
9
11
  require("core-js/modules/es.reflect.get.js");
10
-
11
12
  require("core-js/modules/es.object.get-own-property-descriptor.js");
12
-
13
- require("core-js/modules/es.symbol.js");
14
-
15
- require("core-js/modules/es.symbol.description.js");
16
-
17
13
  require("core-js/modules/es.symbol.iterator.js");
18
-
19
14
  require("core-js/modules/es.array.slice.js");
20
-
21
15
  require("core-js/modules/es.function.name.js");
22
-
23
- require("core-js/modules/es.array.from.js");
24
-
25
16
  exports.__esModule = true;
26
17
  exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.CopyPaste = void 0;
27
-
18
+ require("core-js/modules/es.array.join.js");
19
+ require("core-js/modules/es.array.concat.js");
28
20
  require("core-js/modules/es.array.iterator.js");
29
-
21
+ require("core-js/modules/es.map.js");
30
22
  require("core-js/modules/es.object.to-string.js");
31
-
32
23
  require("core-js/modules/es.string.iterator.js");
33
-
34
- require("core-js/modules/es.weak-map.js");
35
-
36
24
  require("core-js/modules/web.dom-collections.iterator.js");
37
-
38
- require("core-js/modules/es.array.join.js");
39
-
40
- require("core-js/modules/es.array.index-of.js");
41
-
25
+ require("core-js/modules/es.array.map.js");
26
+ require("core-js/modules/es.array.filter.js");
27
+ require("core-js/modules/es.array.from.js");
42
28
  require("core-js/modules/es.regexp.exec.js");
43
-
44
- require("core-js/modules/es.array.concat.js");
45
-
29
+ require("core-js/modules/es.weak-map.js");
30
+ require("core-js/modules/es.weak-set.js");
46
31
  var _base = require("../base");
47
-
48
32
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
49
-
50
33
  var _SheetClip = require("../../3rdparty/SheetClip");
51
-
52
34
  var _array = require("../../helpers/array");
53
-
54
- var _number = require("../../helpers/number");
55
-
56
35
  var _string = require("../../helpers/string");
57
-
58
36
  var _element = require("../../helpers/dom/element");
59
-
60
37
  var _copy = _interopRequireDefault(require("./contextMenuItem/copy"));
61
-
38
+ var _copyColumnHeadersOnly = _interopRequireDefault(require("./contextMenuItem/copyColumnHeadersOnly"));
39
+ var _copyWithColumnGroupHeaders = _interopRequireDefault(require("./contextMenuItem/copyWithColumnGroupHeaders"));
40
+ var _copyWithColumnHeaders = _interopRequireDefault(require("./contextMenuItem/copyWithColumnHeaders"));
62
41
  var _cut = _interopRequireDefault(require("./contextMenuItem/cut"));
63
-
64
42
  var _pasteEvent = _interopRequireDefault(require("./pasteEvent"));
65
-
66
43
  var _focusableElement = require("./focusableElement");
67
-
44
+ var _copyableRanges = require("./copyableRanges");
68
45
  var _parseTable = require("../../utils/parseTable");
69
-
70
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
71
-
72
47
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
73
-
74
48
  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."); }
75
-
76
49
  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); }
77
-
78
50
  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; }
79
-
80
- 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; }
81
-
51
+ 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; } }
82
52
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
83
-
84
53
  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); }
85
-
86
54
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
87
-
88
- 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); } }
89
-
55
+ 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); } }
90
56
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
91
-
92
57
  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); }
93
-
94
58
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
95
-
96
59
  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); }
97
-
98
60
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
99
-
100
61
  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); }; }
101
-
102
62
  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); }
103
-
104
63
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
105
-
106
64
  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; } }
107
-
108
65
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
109
-
66
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
67
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
68
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
69
+ 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; }
70
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
71
+ 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); }
72
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
73
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
74
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
75
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
76
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
77
+ 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; } }
110
78
  _pluginHooks.default.getSingleton().register('afterCopyLimit');
111
-
112
79
  _pluginHooks.default.getSingleton().register('modifyCopyableRange');
113
-
114
80
  _pluginHooks.default.getSingleton().register('beforeCut');
115
-
116
81
  _pluginHooks.default.getSingleton().register('afterCut');
117
-
118
82
  _pluginHooks.default.getSingleton().register('beforePaste');
119
-
120
83
  _pluginHooks.default.getSingleton().register('afterPaste');
121
-
122
84
  _pluginHooks.default.getSingleton().register('beforeCopy');
123
-
124
85
  _pluginHooks.default.getSingleton().register('afterCopy');
125
-
126
86
  var PLUGIN_KEY = 'copyPaste';
127
87
  exports.PLUGIN_KEY = PLUGIN_KEY;
128
88
  var PLUGIN_PRIORITY = 80;
129
89
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
130
90
  var SETTING_KEYS = ['fragmentSelection'];
131
- var ROWS_LIMIT = Infinity;
132
- var COLUMNS_LIMIT = Infinity;
133
- var privatePool = new WeakMap();
134
91
  var META_HEAD = ['<meta name="generator" content="Handsontable"/>', '<style type="text/css">td{white-space:normal}br{mso-data-placement:same-cell}</style>'].join('');
135
- /* eslint-disable jsdoc/require-description-complete-sentence */
136
92
 
93
+ /* eslint-disable jsdoc/require-description-complete-sentence */
137
94
  /**
138
95
  * @description
139
- * This plugin enables the copy/paste functionality in the Handsontable. The functionality works for API, Context Menu,
140
- * using keyboard shortcuts and menu bar from the browser.
141
- * Possible values:
142
- * * `true` (to enable default options),
143
- * * `false` (to disable completely).
96
+ * Copy, cut, and paste data by using the `CopyPaste` plugin.
97
+ *
98
+ * Control the `CopyPaste` plugin programmatically through its [API methods](#methods).
144
99
  *
145
- * or an object with values:
146
- * * `'columnsLimit'` (see {@link CopyPaste#columnsLimit})
147
- * * `'rowsLimit'` (see {@link CopyPaste#rowsLimit})
148
- * * `'pasteMode'` (see {@link CopyPaste#pasteMode})
149
- * * `'uiContainer'` (see {@link CopyPaste#uiContainer}).
100
+ * The user can access the copy-paste features through:
101
+ * - The [context menu](@/guides/cell-features/clipboard.md#context-menu).
102
+ * - The [keyboard shortcuts](@/guides/cell-features/clipboard.md#related-keyboard-shortcuts).
103
+ * - The browser's menu bar.
150
104
  *
151
- * See [the copy/paste demo](@/guides/cell-features/clipboard.md) for examples.
105
+ * Read more:
106
+ * - [Guides: Clipboard](@/guides/cell-features/clipboard.md)
107
+ * - [Configuration options: `copyPaste`](@/api/options.md#copypaste)
152
108
  *
153
109
  * @example
154
110
  * ```js
155
- * // Enables the plugin with default values
111
+ * // enable the plugin with the default configuration
156
112
  * copyPaste: true,
157
- * // Enables the plugin with custom values
113
+ *
114
+ * // or, enable the plugin with a custom configuration
158
115
  * copyPaste: {
159
116
  * columnsLimit: 25,
160
117
  * rowsLimit: 50,
161
118
  * pasteMode: 'shift_down',
119
+ * copyColumnHeaders: true,
120
+ * copyColumnGroupHeaders: true,
121
+ * copyColumnHeadersOnly: true,
162
122
  * uiContainer: document.body,
163
123
  * },
164
124
  * ```
165
125
  * @class CopyPaste
166
126
  * @plugin CopyPaste
167
127
  */
168
-
128
+ var _enableCopyColumnHeaders = /*#__PURE__*/new WeakMap();
129
+ var _enableCopyColumnGroupHeaders = /*#__PURE__*/new WeakMap();
130
+ var _enableCopyColumnHeadersOnly = /*#__PURE__*/new WeakMap();
131
+ var _copyMode = /*#__PURE__*/new WeakMap();
132
+ var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
133
+ var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
134
+ var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
135
+ var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
169
136
  var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
170
137
  _inherits(CopyPaste, _BasePlugin);
171
-
172
138
  var _super = _createSuper(CopyPaste);
173
-
174
- function CopyPaste(hotInstance) {
139
+ function CopyPaste() {
175
140
  var _this;
176
-
177
141
  _classCallCheck(this, CopyPaste);
178
-
179
- _this = _super.call(this, hotInstance);
180
- /**
181
- * Maximum number of columns than can be copied to clipboard using <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>.
182
- *
183
- * @type {number}
184
- * @default Infinity
185
- */
186
-
187
- _this.columnsLimit = COLUMNS_LIMIT;
188
- /**
189
- * Ranges of the cells coordinates, which should be used to copy/cut/paste actions.
190
- *
191
- * @private
192
- * @type {Array}
193
- */
194
-
195
- _this.copyableRanges = [];
196
- /**
197
- * Provides focusable element to support IME and copy/paste/cut actions.
198
- *
199
- * @private
200
- * @type {FocusableWrapper}
201
- */
202
-
203
- _this.focusableElement = void 0;
204
- /**
205
- * Defines paste (<kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**V**</kbd>) behavior.
206
- * * Default value `"overwrite"` will paste clipboard value over current selection.
207
- * * When set to `"shift_down"`, clipboard data will be pasted in place of current selection, while all selected cells are moved down.
208
- * * When set to `"shift_right"`, clipboard data will be pasted in place of current selection, while all selected cells are moved right.
209
- *
210
- * @type {string}
211
- * @default 'overwrite'
212
- */
213
-
214
- _this.pasteMode = 'overwrite';
215
- /**
216
- * Maximum number of rows than can be copied to clipboard using <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>.
217
- *
218
- * @type {number}
219
- * @default Infinity
220
- */
221
-
222
- _this.rowsLimit = ROWS_LIMIT;
223
- /**
224
- * UI container for the secondary focusable element.
225
- *
226
- * @type {HTMLElement}
227
- */
228
-
229
- _this.uiContainer = _this.hot.rootDocument.body;
230
- privatePool.set(_assertThisInitialized(_this), {
231
- isTriggeredByCopy: false,
232
- isTriggeredByCut: false,
233
- isBeginEditing: false,
234
- isFragmentSelectionEnabled: false
142
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
143
+ args[_key] = arguments[_key];
144
+ }
145
+ _this = _super.call.apply(_super, [this].concat(args));
146
+ _classPrivateMethodInitSpec(_assertThisInitialized(_this), _countCopiedHeaders);
147
+ _defineProperty(_assertThisInitialized(_this), "columnsLimit", Infinity);
148
+ _defineProperty(_assertThisInitialized(_this), "rowsLimit", Infinity);
149
+ _defineProperty(_assertThisInitialized(_this), "pasteMode", 'overwrite');
150
+ _defineProperty(_assertThisInitialized(_this), "uiContainer", _this.hot.rootDocument.body);
151
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _enableCopyColumnHeaders, {
152
+ writable: true,
153
+ value: false
154
+ });
155
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _enableCopyColumnGroupHeaders, {
156
+ writable: true,
157
+ value: false
158
+ });
159
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _enableCopyColumnHeadersOnly, {
160
+ writable: true,
161
+ value: false
162
+ });
163
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _copyMode, {
164
+ writable: true,
165
+ value: 'cells-only'
166
+ });
167
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _isTriggeredByCopy, {
168
+ writable: true,
169
+ value: false
170
+ });
171
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _isTriggeredByCut, {
172
+ writable: true,
173
+ value: false
174
+ });
175
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _copyableRangesFactory, {
176
+ writable: true,
177
+ value: new _copyableRanges.CopyableRangesFactory({
178
+ countRows: function countRows() {
179
+ return _this.hot.countRows();
180
+ },
181
+ countColumns: function countColumns() {
182
+ return _this.hot.countCols();
183
+ },
184
+ rowsLimit: function rowsLimit() {
185
+ return _this.rowsLimit;
186
+ },
187
+ columnsLimit: function columnsLimit() {
188
+ return _this.columnsLimit;
189
+ },
190
+ countColumnHeaders: function countColumnHeaders() {
191
+ return _this.hot.view.getColumnHeadersCount();
192
+ }
193
+ })
235
194
  });
195
+ _defineProperty(_assertThisInitialized(_this), "copyableRanges", []);
196
+ _defineProperty(_assertThisInitialized(_this), "focusableElement", void 0);
236
197
  return _this;
237
198
  }
238
- /**
239
- * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
240
- * hook and if it returns `true` than the {@link CopyPaste#enablePlugin} method is called.
241
- *
242
- * @returns {boolean}
243
- */
244
-
245
-
246
199
  _createClass(CopyPaste, [{
247
200
  key: "isEnabled",
248
- value: function isEnabled() {
201
+ value:
202
+ /**
203
+ * Checks if the [`CopyPaste`](#copypaste) plugin is enabled.
204
+ *
205
+ * This method gets called by Handsontable's [`beforeInit`](@/api/hooks.md#beforeinit) hook.
206
+ * If it returns `true`, the [`enablePlugin()`](#enableplugin) method gets called.
207
+ *
208
+ * @returns {boolean}
209
+ */
210
+ function isEnabled() {
249
211
  return !!this.hot.getSettings()[PLUGIN_KEY];
250
212
  }
213
+
251
214
  /**
252
- * Enables the plugin functionality for this Handsontable instance.
215
+ * Enables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
253
216
  */
254
-
255
217
  }, {
256
218
  key: "enablePlugin",
257
219
  value: function enablePlugin() {
258
220
  var _this2 = this;
259
-
260
221
  if (this.enabled) {
261
222
  return;
262
223
  }
263
-
264
224
  var _this$hot$getSettings = this.hot.getSettings(),
265
- settings = _this$hot$getSettings[PLUGIN_KEY],
266
- fragmentSelection = _this$hot$getSettings.fragmentSelection;
267
-
268
- var priv = privatePool.get(this);
269
- priv.isFragmentSelectionEnabled = !!fragmentSelection;
270
-
225
+ settings = _this$hot$getSettings[PLUGIN_KEY];
271
226
  if (_typeof(settings) === 'object') {
272
- this.pasteMode = settings.pasteMode || this.pasteMode;
227
+ var _settings$pasteMode, _settings$uiContainer;
228
+ this.pasteMode = (_settings$pasteMode = settings.pasteMode) !== null && _settings$pasteMode !== void 0 ? _settings$pasteMode : this.pasteMode;
273
229
  this.rowsLimit = isNaN(settings.rowsLimit) ? this.rowsLimit : settings.rowsLimit;
274
230
  this.columnsLimit = isNaN(settings.columnsLimit) ? this.columnsLimit : settings.columnsLimit;
275
- this.uiContainer = settings.uiContainer || this.uiContainer;
231
+ _classPrivateFieldSet(this, _enableCopyColumnHeaders, !!settings.copyColumnHeaders);
232
+ _classPrivateFieldSet(this, _enableCopyColumnGroupHeaders, !!settings.copyColumnGroupHeaders);
233
+ _classPrivateFieldSet(this, _enableCopyColumnHeadersOnly, !!settings.copyColumnHeadersOnly);
234
+ this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
276
235
  }
277
-
278
236
  this.addHook('afterContextMenuDefaultOptions', function (options) {
279
237
  return _this2.onAfterContextMenuDefaultOptions(options);
280
238
  });
@@ -295,238 +253,266 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
295
253
  }).addLocalHook('paste', function (event) {
296
254
  return _this2.onPaste(event);
297
255
  });
298
-
299
256
  _get(_getPrototypeOf(CopyPaste.prototype), "enablePlugin", this).call(this);
300
257
  }
258
+
301
259
  /**
302
- * Updates the plugin's state.
260
+ * Updates the state of the [`CopyPaste`](#copypaste) plugin.
303
261
  *
304
- * This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
262
+ * Gets called when [`updateSettings()`](@/api/core.md#updatesettings)
263
+ * is invoked with any of the following configuration options:
305
264
  * - [`copyPaste`](@/api/options.md#copypaste)
306
265
  * - [`fragmentSelection`](@/api/options.md#fragmentselection)
307
266
  */
308
-
309
267
  }, {
310
268
  key: "updatePlugin",
311
269
  value: function updatePlugin() {
312
270
  this.disablePlugin();
313
271
  this.enablePlugin();
314
272
  this.getOrCreateFocusableElement();
315
-
316
273
  _get(_getPrototypeOf(CopyPaste.prototype), "updatePlugin", this).call(this);
317
274
  }
275
+
318
276
  /**
319
- * Disables the plugin functionality for this Handsontable instance.
277
+ * Disables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
320
278
  */
321
-
322
279
  }, {
323
280
  key: "disablePlugin",
324
281
  value: function disablePlugin() {
325
282
  if (this.focusableElement) {
326
283
  (0, _focusableElement.destroyElement)(this.focusableElement);
327
284
  }
328
-
329
285
  _get(_getPrototypeOf(CopyPaste.prototype), "disablePlugin", this).call(this);
330
286
  }
287
+
331
288
  /**
332
- * Copies the selected cell into the clipboard.
289
+ * Copies the contents of the selected cells (and/or their related column headers) to the system clipboard.
290
+ *
291
+ * Takes an optional parameter (`copyMode`) that defines the scope of copying:
292
+ *
293
+ * | `copyMode` value | Description |
294
+ * | --------------------------- | --------------------------------------------------------------- |
295
+ * | `'cells-only'` (default) | Copy the selected cells |
296
+ * | `'with-column-headers'` | - Copy the selected cells<br>- Copy the nearest column headers |
297
+ * | `'with-all-column-headers'` | - Copy the selected cells<br>- Copy all related columns headers |
298
+ * | `'column-headers-only'` | Copy the nearest column headers (without copying cells) |
299
+ *
300
+ * @param {string} [copyMode='cells-only'] Copy mode.
333
301
  */
334
-
335
302
  }, {
336
303
  key: "copy",
337
304
  value: function copy() {
338
- var priv = privatePool.get(this);
339
- priv.isTriggeredByCopy = true;
305
+ var copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
306
+ _classPrivateFieldSet(this, _copyMode, copyMode);
307
+ _classPrivateFieldSet(this, _isTriggeredByCopy, true);
340
308
  this.getOrCreateFocusableElement();
341
309
  this.focusableElement.focus();
342
310
  this.hot.rootDocument.execCommand('copy');
343
311
  }
312
+
313
+ /**
314
+ * Copies the contents of the selected cells.
315
+ */
316
+ }, {
317
+ key: "copyCellsOnly",
318
+ value: function copyCellsOnly() {
319
+ this.copy('cells-only');
320
+ }
321
+ /**
322
+ * Copies the contents of column headers that are nearest to the selected cells.
323
+ */
324
+ }, {
325
+ key: "copyColumnHeadersOnly",
326
+ value: function copyColumnHeadersOnly() {
327
+ this.copy('column-headers-only');
328
+ }
344
329
  /**
345
- * Cuts the selected cell into the clipboard.
330
+ * Copies the contents of the selected cells and all their related column headers.
346
331
  */
332
+ }, {
333
+ key: "copyWithAllColumnHeaders",
334
+ value: function copyWithAllColumnHeaders() {
335
+ this.copy('with-column-group-headers');
336
+ }
337
+ /**
338
+ * Copies the contents of the selected cells and their nearest column headers.
339
+ */
340
+ }, {
341
+ key: "copyWithColumnHeaders",
342
+ value: function copyWithColumnHeaders() {
343
+ this.copy('with-column-headers');
344
+ }
347
345
 
346
+ /**
347
+ * Cuts the contents of the selected cells to the system clipboard.
348
+ */
348
349
  }, {
349
350
  key: "cut",
350
351
  value: function cut() {
351
- var priv = privatePool.get(this);
352
- priv.isTriggeredByCut = true;
352
+ _classPrivateFieldSet(this, _isTriggeredByCut, true);
353
353
  this.getOrCreateFocusableElement();
354
354
  this.focusableElement.focus();
355
355
  this.hot.rootDocument.execCommand('cut');
356
356
  }
357
+
357
358
  /**
358
- * Creates copyable text releated to range objects.
359
+ * Converts the contents of multiple ranges (`ranges`) into a single string.
359
360
  *
360
- * @param {object[]} ranges Array of objects with properties `startRow`, `endRow`, `startCol` and `endCol`.
361
- * @returns {string} Returns string which will be copied into clipboard.
361
+ * @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `endRow`, `startCol` and `endCol`.
362
+ * @returns {string} A string that will be copied to the clipboard.
362
363
  */
363
-
364
364
  }, {
365
365
  key: "getRangedCopyableData",
366
366
  value: function getRangedCopyableData(ranges) {
367
- var _this3 = this;
368
-
369
- var dataSet = [];
370
- var copyableRows = [];
371
- var copyableColumns = []; // Count all copyable rows and columns
372
-
373
- (0, _array.arrayEach)(ranges, function (range) {
374
- (0, _number.rangeEach)(range.startRow, range.endRow, function (row) {
375
- if (copyableRows.indexOf(row) === -1) {
376
- copyableRows.push(row);
377
- }
378
- });
379
- (0, _number.rangeEach)(range.startCol, range.endCol, function (column) {
380
- if (copyableColumns.indexOf(column) === -1) {
381
- copyableColumns.push(column);
382
- }
383
- });
384
- }); // Concat all rows and columns data defined in ranges into one copyable string
385
-
386
- (0, _array.arrayEach)(copyableRows, function (row) {
387
- var rowSet = [];
388
- (0, _array.arrayEach)(copyableColumns, function (column) {
389
- rowSet.push(_this3.hot.getCopyableData(row, column));
390
- });
391
- dataSet.push(rowSet);
392
- });
393
- return (0, _SheetClip.stringify)(dataSet);
367
+ return (0, _SheetClip.stringify)(this.getRangedData(ranges));
394
368
  }
369
+
395
370
  /**
396
- * Creates copyable text releated to range objects.
371
+ * Converts the contents of multiple ranges (`ranges`) into an array of arrays.
397
372
  *
398
- * @param {object[]} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
399
- * @returns {Array[]} Returns array of arrays which will be copied into clipboard.
373
+ * @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
374
+ * @returns {Array[]} An array of arrays that will be copied to the clipboard.
400
375
  */
401
-
402
376
  }, {
403
377
  key: "getRangedData",
404
378
  value: function getRangedData(ranges) {
405
- var _this4 = this;
406
-
407
- var dataSet = [];
408
- var copyableRows = [];
409
- var copyableColumns = []; // Count all copyable rows and columns
410
-
411
- (0, _array.arrayEach)(ranges, function (range) {
412
- (0, _number.rangeEach)(range.startRow, range.endRow, function (row) {
413
- if (copyableRows.indexOf(row) === -1) {
414
- copyableRows.push(row);
415
- }
416
- });
417
- (0, _number.rangeEach)(range.startCol, range.endCol, function (column) {
418
- if (copyableColumns.indexOf(column) === -1) {
419
- copyableColumns.push(column);
420
- }
421
- });
422
- }); // Concat all rows and columns data defined in ranges into one copyable string
379
+ var _this3 = this;
380
+ var data = [];
381
+ var _normalizeRanges = (0, _copyableRanges.normalizeRanges)(ranges),
382
+ rows = _normalizeRanges.rows,
383
+ columns = _normalizeRanges.columns;
423
384
 
424
- (0, _array.arrayEach)(copyableRows, function (row) {
385
+ // concatenate all rows and columns data defined in ranges into one copyable string
386
+ (0, _array.arrayEach)(rows, function (row) {
425
387
  var rowSet = [];
426
- (0, _array.arrayEach)(copyableColumns, function (column) {
427
- rowSet.push(_this4.hot.getCopyableData(row, column));
388
+ (0, _array.arrayEach)(columns, function (column) {
389
+ if (row < 0) {
390
+ // `row` as the second argument acts here as the `headerLevel` argument
391
+ rowSet.push(_this3.hot.getColHeader(column, row));
392
+ } else {
393
+ rowSet.push(_this3.hot.getCopyableData(row, column));
394
+ }
428
395
  });
429
- dataSet.push(rowSet);
396
+ data.push(rowSet);
430
397
  });
431
- return dataSet;
398
+ return data;
432
399
  }
400
+
433
401
  /**
434
402
  * Simulates the paste action.
435
403
  *
436
- * Due to security reasons, modern browsers disallow reading from the system clipboard.
404
+ * For security reasons, modern browsers don't allow reading from the system clipboard.
437
405
  *
438
- * @param {string} pastableText Value as raw string to paste.
439
- * @param {string} [pastableHtml=''] Value as HTML to paste.
406
+ * @param {string} pastableText The value to paste, as a raw string.
407
+ * @param {string} [pastableHtml=''] The value to paste, as HTML.
440
408
  */
441
-
442
409
  }, {
443
410
  key: "paste",
444
411
  value: function paste() {
445
412
  var pastableText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
446
413
  var pastableHtml = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : pastableText;
447
-
448
414
  if (!pastableText && !pastableHtml) {
449
415
  return;
450
416
  }
451
-
452
417
  var pasteData = new _pasteEvent.default();
453
-
454
418
  if (pastableText) {
455
419
  pasteData.clipboardData.setData('text/plain', pastableText);
456
420
  }
457
-
458
421
  if (pastableHtml) {
459
422
  pasteData.clipboardData.setData('text/html', pastableHtml);
460
423
  }
461
-
462
424
  this.getOrCreateFocusableElement();
463
425
  this.onPaste(pasteData);
464
426
  }
427
+
465
428
  /**
466
429
  * Prepares copyable text from the cells selection in the invisible textarea.
467
430
  */
468
-
469
431
  }, {
470
432
  key: "setCopyableText",
471
433
  value: function setCopyableText() {
472
- var selRange = this.hot.getSelectedRangeLast();
473
-
474
- if (!selRange) {
434
+ var selectionRange = this.hot.getSelectedRangeLast();
435
+ if (!selectionRange) {
475
436
  return;
476
437
  }
477
-
478
- var topStart = selRange.getTopStartCorner();
479
- var bottomEnd = selRange.getBottomEndCorner();
480
- var startRow = topStart.row;
481
- var startCol = topStart.col;
482
- var endRow = bottomEnd.row;
483
- var endCol = bottomEnd.col;
484
- var finalEndRow = Math.min(endRow, startRow + this.rowsLimit - 1);
485
- var finalEndCol = Math.min(endCol, startCol + this.columnsLimit - 1);
486
- this.copyableRanges.length = 0;
487
- this.copyableRanges.push({
488
- startRow: startRow,
489
- startCol: startCol,
490
- endRow: finalEndRow,
491
- endCol: finalEndCol
438
+ _classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
439
+ var groupedRanges = new Map([['headers', null], ['cells', null]]);
440
+ if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
441
+ groupedRanges.set('headers', _classPrivateFieldGet(this, _copyableRangesFactory).getMostBottomColumnHeadersRange());
442
+ } else {
443
+ if (_classPrivateFieldGet(this, _copyMode) === 'with-column-headers') {
444
+ groupedRanges.set('headers', _classPrivateFieldGet(this, _copyableRangesFactory).getMostBottomColumnHeadersRange());
445
+ } else if (_classPrivateFieldGet(this, _copyMode) === 'with-column-group-headers') {
446
+ groupedRanges.set('headers', _classPrivateFieldGet(this, _copyableRangesFactory).getAllColumnHeadersRange());
447
+ }
448
+ groupedRanges.set('cells', _classPrivateFieldGet(this, _copyableRangesFactory).getCellsRange());
449
+ }
450
+ this.copyableRanges = Array.from(groupedRanges.values()).filter(function (range) {
451
+ return range !== null;
452
+ }).map(function (_ref) {
453
+ var startRow = _ref.startRow,
454
+ startCol = _ref.startCol,
455
+ endRow = _ref.endRow,
456
+ endCol = _ref.endCol;
457
+ return {
458
+ startRow: startRow,
459
+ startCol: startCol,
460
+ endRow: endRow,
461
+ endCol: endCol
462
+ };
492
463
  });
493
464
  this.copyableRanges = this.hot.runHooks('modifyCopyableRange', this.copyableRanges);
494
-
495
- if (endRow !== finalEndRow || endCol !== finalEndCol) {
465
+ var cellsRange = groupedRanges.get('cells');
466
+ if (cellsRange !== null && cellsRange.isRangeTrimmed) {
467
+ var startRow = cellsRange.startRow,
468
+ startCol = cellsRange.startCol,
469
+ endRow = cellsRange.endRow,
470
+ endCol = cellsRange.endCol;
496
471
  this.hot.runHooks('afterCopyLimit', endRow - startRow + 1, endCol - startCol + 1, this.rowsLimit, this.columnsLimit);
497
472
  }
498
473
  }
474
+
499
475
  /**
500
476
  * Force focus on editable element.
501
477
  *
502
478
  * @private
503
479
  */
504
-
505
480
  }, {
506
481
  key: "getOrCreateFocusableElement",
507
482
  value: function getOrCreateFocusableElement() {
508
- var editor = this.hot.getActiveEditor();
509
- var editableElement = editor ? editor.TEXTAREA : void 0;
510
-
483
+ var _this$hot$getActiveEd;
484
+ var editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
511
485
  if (editableElement) {
512
486
  this.focusableElement.setFocusableElement(editableElement);
513
487
  } else {
514
488
  this.focusableElement.useSecondaryElement();
515
489
  }
516
490
  }
491
+
517
492
  /**
518
493
  * Verifies if editor exists and is open.
519
494
  *
520
495
  * @private
521
496
  * @returns {boolean}
522
497
  */
523
-
524
498
  }, {
525
499
  key: "isEditorOpened",
526
500
  value: function isEditorOpened() {
527
- var editor = this.hot.getActiveEditor();
528
- return editor && editor.isOpened();
501
+ var _this$hot$getActiveEd2;
502
+ return (_this$hot$getActiveEd2 = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd2 === void 0 ? void 0 : _this$hot$getActiveEd2.isOpened();
529
503
  }
504
+
505
+ /**
506
+ * Counts how many column headers will be copied based on the passed range.
507
+ *
508
+ * @private
509
+ * @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
510
+ * @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
511
+ * information with the number of copied headers.
512
+ */
513
+ }, {
514
+ key: "populateValues",
515
+ value:
530
516
  /**
531
517
  * Prepares new values to populate them into datasource.
532
518
  *
@@ -535,136 +521,110 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
535
521
  * @param {Array} [selection] The selection which indicates from what position the data will be populated.
536
522
  * @returns {Array} Range coordinates after populate data.
537
523
  */
538
-
539
- }, {
540
- key: "populateValues",
541
- value: function populateValues(inputArray) {
524
+ function populateValues(inputArray) {
542
525
  var selection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.hot.getSelectedRangeLast();
543
-
544
526
  if (!inputArray.length) {
545
527
  return;
546
528
  }
547
-
548
529
  var populatedRowsLength = inputArray.length;
549
530
  var populatedColumnsLength = inputArray[0].length;
550
531
  var newRows = [];
551
-
552
532
  var _selection$getTopStar = selection.getTopStartCorner(),
553
- startRow = _selection$getTopStar.row,
554
- startColumn = _selection$getTopStar.col;
555
-
533
+ startRow = _selection$getTopStar.row,
534
+ startColumn = _selection$getTopStar.col;
556
535
  var _selection$getBottomE = selection.getBottomEndCorner(),
557
- endRowFromSelection = _selection$getBottomE.row,
558
- endColumnFromSelection = _selection$getBottomE.col;
559
-
536
+ endRowFromSelection = _selection$getBottomE.row,
537
+ endColumnFromSelection = _selection$getBottomE.col;
560
538
  var visualRowForPopulatedData = startRow;
561
539
  var visualColumnForPopulatedData = startColumn;
562
540
  var lastVisualRow = startRow;
563
- var lastVisualColumn = startColumn; // We try to populate just all copied data or repeat copied data within a selection. Please keep in mind that we
541
+ var lastVisualColumn = startColumn;
542
+
543
+ // We try to populate just all copied data or repeat copied data within a selection. Please keep in mind that we
564
544
  // don't know whether populated data is bigger than selection on start as there are some cells for which values
565
545
  // should be not inserted (it's known right after getting cell meta).
566
-
567
546
  while (newRows.length < populatedRowsLength || visualRowForPopulatedData <= endRowFromSelection) {
568
547
  var _this$hot$getCellMeta = this.hot.getCellMeta(visualRowForPopulatedData, startColumn),
569
- skipRowOnPaste = _this$hot$getCellMeta.skipRowOnPaste,
570
- visualRow = _this$hot$getCellMeta.visualRow;
571
-
548
+ skipRowOnPaste = _this$hot$getCellMeta.skipRowOnPaste,
549
+ visualRow = _this$hot$getCellMeta.visualRow;
572
550
  visualRowForPopulatedData = visualRow + 1;
573
-
574
551
  if (skipRowOnPaste === true) {
575
552
  /* eslint-disable no-continue */
576
553
  continue;
577
554
  }
578
-
579
555
  lastVisualRow = visualRow;
580
556
  visualColumnForPopulatedData = startColumn;
581
557
  var newRow = [];
582
558
  var insertedRow = newRows.length % populatedRowsLength;
583
-
584
559
  while (newRow.length < populatedColumnsLength || visualColumnForPopulatedData <= endColumnFromSelection) {
585
560
  var _this$hot$getCellMeta2 = this.hot.getCellMeta(startRow, visualColumnForPopulatedData),
586
- skipColumnOnPaste = _this$hot$getCellMeta2.skipColumnOnPaste,
587
- visualCol = _this$hot$getCellMeta2.visualCol;
588
-
561
+ skipColumnOnPaste = _this$hot$getCellMeta2.skipColumnOnPaste,
562
+ visualCol = _this$hot$getCellMeta2.visualCol;
589
563
  visualColumnForPopulatedData = visualCol + 1;
590
-
591
564
  if (skipColumnOnPaste === true) {
592
565
  /* eslint-disable no-continue */
593
566
  continue;
594
567
  }
595
-
596
568
  lastVisualColumn = visualCol;
597
569
  var insertedColumn = newRow.length % populatedColumnsLength;
598
570
  newRow.push(inputArray[insertedRow][insertedColumn]);
599
571
  }
600
-
601
572
  newRows.push(newRow);
602
573
  }
603
-
604
574
  this.hot.populateFromArray(startRow, startColumn, newRows, void 0, void 0, 'CopyPaste.paste', this.pasteMode);
605
575
  return [startRow, startColumn, lastVisualRow, lastVisualColumn];
606
576
  }
577
+
607
578
  /**
608
579
  * `copy` event callback on textarea element.
609
580
  *
610
581
  * @param {Event} event ClipboardEvent.
611
582
  * @private
612
583
  */
613
-
614
584
  }, {
615
585
  key: "onCopy",
616
586
  value: function onCopy(event) {
617
- var priv = privatePool.get(this);
618
-
619
- if (!this.hot.isListening() && !priv.isTriggeredByCopy || this.isEditorOpened()) {
587
+ if (!this.hot.isListening() && !_classPrivateFieldGet(this, _isTriggeredByCopy) || this.isEditorOpened()) {
620
588
  return;
621
589
  }
622
-
623
590
  this.setCopyableText();
624
- priv.isTriggeredByCopy = false;
625
- var rangedData = this.getRangedData(this.copyableRanges);
626
- var allowCopying = !!this.hot.runHooks('beforeCopy', rangedData, this.copyableRanges);
627
-
591
+ _classPrivateFieldSet(this, _isTriggeredByCopy, false);
592
+ var data = this.getRangedData(this.copyableRanges);
593
+ var copiedHeadersCount = _classPrivateMethodGet(this, _countCopiedHeaders, _countCopiedHeaders2).call(this, this.copyableRanges);
594
+ var allowCopying = !!this.hot.runHooks('beforeCopy', data, this.copyableRanges, copiedHeadersCount);
628
595
  if (allowCopying) {
629
- var textPlain = (0, _SheetClip.stringify)(rangedData);
630
-
596
+ var textPlain = (0, _SheetClip.stringify)(data);
631
597
  if (event && event.clipboardData) {
632
- var textHTML = (0, _parseTable._dataToHTML)(rangedData, this.hot.rootDocument);
598
+ var textHTML = (0, _parseTable._dataToHTML)(data, this.hot.rootDocument);
633
599
  event.clipboardData.setData('text/plain', textPlain);
634
600
  event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
635
601
  } else if (typeof ClipboardEvent === 'undefined') {
636
602
  this.hot.rootWindow.clipboardData.setData('Text', textPlain);
637
603
  }
638
-
639
- this.hot.runHooks('afterCopy', rangedData, this.copyableRanges);
604
+ this.hot.runHooks('afterCopy', data, this.copyableRanges, copiedHeadersCount);
640
605
  }
641
-
606
+ _classPrivateFieldSet(this, _copyMode, 'cells-only');
642
607
  event.preventDefault();
643
608
  }
609
+
644
610
  /**
645
611
  * `cut` event callback on textarea element.
646
612
  *
647
613
  * @param {Event} event ClipboardEvent.
648
614
  * @private
649
615
  */
650
-
651
616
  }, {
652
617
  key: "onCut",
653
618
  value: function onCut(event) {
654
- var priv = privatePool.get(this);
655
-
656
- if (!this.hot.isListening() && !priv.isTriggeredByCut || this.isEditorOpened()) {
619
+ if (!this.hot.isListening() && !_classPrivateFieldGet(this, _isTriggeredByCut) || this.isEditorOpened()) {
657
620
  return;
658
621
  }
659
-
660
622
  this.setCopyableText();
661
- priv.isTriggeredByCut = false;
623
+ _classPrivateFieldSet(this, _isTriggeredByCut, false);
662
624
  var rangedData = this.getRangedData(this.copyableRanges);
663
625
  var allowCuttingOut = !!this.hot.runHooks('beforeCut', rangedData, this.copyableRanges);
664
-
665
626
  if (allowCuttingOut) {
666
627
  var textPlain = (0, _SheetClip.stringify)(rangedData);
667
-
668
628
  if (event && event.clipboardData) {
669
629
  var textHTML = (0, _parseTable._dataToHTML)(rangedData, this.hot.rootDocument);
670
630
  event.clipboardData.setData('text/plain', textPlain);
@@ -672,40 +632,34 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
672
632
  } else if (typeof ClipboardEvent === 'undefined') {
673
633
  this.hot.rootWindow.clipboardData.setData('Text', textPlain);
674
634
  }
675
-
676
635
  this.hot.emptySelectedCells('CopyPaste.cut');
677
636
  this.hot.runHooks('afterCut', rangedData, this.copyableRanges);
678
637
  }
679
-
680
638
  event.preventDefault();
681
639
  }
640
+
682
641
  /**
683
642
  * `paste` event callback on textarea element.
684
643
  *
685
644
  * @param {Event} event ClipboardEvent or pseudo ClipboardEvent, if paste was called manually.
686
645
  * @private
687
646
  */
688
-
689
647
  }, {
690
648
  key: "onPaste",
691
649
  value: function onPaste(event) {
692
650
  if (!this.hot.isListening() || this.isEditorOpened()) {
693
651
  return;
694
652
  }
695
-
696
653
  if (event && event.preventDefault) {
697
654
  event.preventDefault();
698
655
  }
699
-
700
656
  var pastedData;
701
-
702
657
  if (event && typeof event.clipboardData !== 'undefined') {
703
658
  var textHTML = (0, _string.sanitize)(event.clipboardData.getData('text/html'), {
704
659
  ADD_TAGS: ['meta'],
705
660
  ADD_ATTR: ['content'],
706
661
  FORCE_BODY: true
707
662
  });
708
-
709
663
  if (textHTML && /(<table)|(<TABLE)/g.test(textHTML)) {
710
664
  var parsedConfig = (0, _parseTable.htmlToGridSettings)(textHTML, this.hot.rootDocument);
711
665
  pastedData = parsedConfig.data;
@@ -715,49 +669,54 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
715
669
  } else if (typeof ClipboardEvent === 'undefined' && typeof this.hot.rootWindow.clipboardData !== 'undefined') {
716
670
  pastedData = this.hot.rootWindow.clipboardData.getData('Text');
717
671
  }
718
-
719
672
  if (typeof pastedData === 'string') {
720
673
  pastedData = (0, _SheetClip.parse)(pastedData);
721
674
  }
722
-
723
675
  if (pastedData && pastedData.length === 0) {
724
676
  return;
725
677
  }
726
-
727
678
  if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
728
679
  return;
729
680
  }
730
-
731
681
  var _this$populateValues = this.populateValues(pastedData),
732
- _this$populateValues2 = _slicedToArray(_this$populateValues, 4),
733
- startRow = _this$populateValues2[0],
734
- startColumn = _this$populateValues2[1],
735
- endRow = _this$populateValues2[2],
736
- endColumn = _this$populateValues2[3];
737
-
682
+ _this$populateValues2 = _slicedToArray(_this$populateValues, 4),
683
+ startRow = _this$populateValues2[0],
684
+ startColumn = _this$populateValues2[1],
685
+ endRow = _this$populateValues2[2],
686
+ endColumn = _this$populateValues2[3];
738
687
  this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
739
688
  this.hot.runHooks('afterPaste', pastedData, this.copyableRanges);
740
689
  }
690
+
741
691
  /**
742
692
  * Add copy and cut options to the Context Menu.
743
693
  *
744
694
  * @private
745
695
  * @param {object} options Contains default added options of the Context Menu.
746
696
  */
747
-
748
697
  }, {
749
698
  key: "onAfterContextMenuDefaultOptions",
750
699
  value: function onAfterContextMenuDefaultOptions(options) {
751
700
  options.items.push({
752
701
  name: '---------'
753
- }, (0, _copy.default)(this), (0, _cut.default)(this));
702
+ }, (0, _copy.default)(this));
703
+ if (_classPrivateFieldGet(this, _enableCopyColumnHeaders)) {
704
+ options.items.push((0, _copyWithColumnHeaders.default)(this));
705
+ }
706
+ if (_classPrivateFieldGet(this, _enableCopyColumnGroupHeaders)) {
707
+ options.items.push((0, _copyWithColumnGroupHeaders.default)(this));
708
+ }
709
+ if (_classPrivateFieldGet(this, _enableCopyColumnHeadersOnly)) {
710
+ options.items.push((0, _copyColumnHeadersOnly.default)(this));
711
+ }
712
+ options.items.push((0, _cut.default)(this));
754
713
  }
714
+
755
715
  /**
756
716
  * Force focus on focusableElement.
757
717
  *
758
718
  * @private
759
719
  */
760
-
761
720
  }, {
762
721
  key: "onAfterOnCellMouseUp",
763
722
  value: function onAfterOnCellMouseUp() {
@@ -766,62 +725,52 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
766
725
  if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
767
726
  return;
768
727
  }
769
-
770
728
  this.getOrCreateFocusableElement();
771
729
  this.focusableElement.focus();
772
730
  }
731
+
773
732
  /**
774
733
  * Force focus on focusableElement after end of the selection.
775
734
  *
776
735
  * @private
777
736
  */
778
-
779
737
  }, {
780
738
  key: "onAfterSelectionEnd",
781
739
  value: function onAfterSelectionEnd() {
782
- var _privatePool$get = privatePool.get(this),
783
- isFragmentSelectionEnabled = _privatePool$get.isFragmentSelectionEnabled;
784
-
785
740
  if (this.isEditorOpened()) {
786
741
  return;
787
742
  }
788
-
789
743
  this.getOrCreateFocusableElement();
790
-
791
- if (isFragmentSelectionEnabled && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && (0, _element.getSelectionText)()) {
744
+ if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && (0, _element.getSelectionText)()) {
792
745
  return;
793
746
  }
794
-
795
747
  this.setCopyableText();
796
748
  this.focusableElement.focus();
797
749
  }
750
+
798
751
  /**
799
752
  * `beforeKeyDown` listener to force focus of focusableElement.
800
753
  *
801
754
  * @private
802
755
  */
803
-
804
756
  }, {
805
757
  key: "onBeforeKeyDown",
806
758
  value: function onBeforeKeyDown() {
807
759
  if (!this.hot.isListening() || this.isEditorOpened()) {
808
760
  return;
809
761
  }
810
-
811
762
  var activeElement = this.hot.rootDocument.activeElement;
812
763
  var activeEditor = this.hot.getActiveEditor();
813
-
814
764
  if (!activeEditor || activeElement !== this.focusableElement.getFocusableElement() && activeElement !== activeEditor.select) {
815
765
  return;
816
766
  }
817
-
818
767
  this.getOrCreateFocusableElement();
819
768
  this.focusableElement.focus();
820
769
  }
770
+
821
771
  /**
822
- * Destroys the plugin instance.
772
+ * Destroys the `CopyPaste` plugin instance.
823
773
  */
824
-
825
774
  }, {
826
775
  key: "destroy",
827
776
  value: function destroy() {
@@ -829,7 +778,6 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
829
778
  (0, _focusableElement.destroyElement)(this.focusableElement);
830
779
  this.focusableElement = null;
831
780
  }
832
-
833
781
  _get(_getPrototypeOf(CopyPaste.prototype), "destroy", this).call(this);
834
782
  }
835
783
  }], [{
@@ -847,9 +795,28 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
847
795
  get: function get() {
848
796
  return PLUGIN_PRIORITY;
849
797
  }
850
- }]);
851
798
 
799
+ /**
800
+ * The maximum number of columns than can be copied to the clipboard.
801
+ *
802
+ * @type {number}
803
+ * @default Infinity
804
+ */
805
+ }]);
852
806
  return CopyPaste;
853
807
  }(_base.BasePlugin);
854
-
855
- exports.CopyPaste = CopyPaste;
808
+ exports.CopyPaste = CopyPaste;
809
+ function _countCopiedHeaders2(ranges) {
810
+ var _normalizeRanges2 = (0, _copyableRanges.normalizeRanges)(ranges),
811
+ rows = _normalizeRanges2.rows;
812
+ var columnHeadersCount = 0;
813
+ for (var row = 0; row < rows.length; row++) {
814
+ if (rows[row] >= 0) {
815
+ break;
816
+ }
817
+ columnHeadersCount += 1;
818
+ }
819
+ return {
820
+ columnHeadersCount: columnHeadersCount
821
+ };
822
+ }