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,15 +1,9 @@
1
1
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
-
3
2
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
3
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
4
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
-
9
5
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
-
11
6
  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; }
12
-
13
7
  import "core-js/modules/es.object.get-prototype-of.js";
14
8
  import "core-js/modules/es.array.includes.js";
15
9
  import "core-js/modules/es.string.includes.js";
@@ -24,6 +18,7 @@ import "core-js/modules/es.array.join.js";
24
18
  import "core-js/modules/es.string.trim.js";
25
19
  import "core-js/modules/es.string.replace.js";
26
20
  import "core-js/modules/es.array.concat.js";
21
+ import "core-js/modules/web.dom-collections.for-each.js";
27
22
  import "core-js/modules/es.symbol.js";
28
23
  import "core-js/modules/es.symbol.description.js";
29
24
  import "core-js/modules/es.symbol.iterator.js";
@@ -42,19 +37,16 @@ import { sanitize } from "../string.mjs";
42
37
  * @param {number} [level=0] Traversing deep level.
43
38
  * @returns {HTMLElement|null}
44
39
  */
45
-
46
40
  export function getParent(element) {
47
41
  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
48
42
  var iteration = -1;
49
43
  var parent = null;
50
44
  var elementToCheck = element;
51
-
52
45
  while (elementToCheck !== null) {
53
46
  if (iteration === level) {
54
47
  parent = elementToCheck;
55
48
  break;
56
49
  }
57
-
58
50
  if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
59
51
  elementToCheck = elementToCheck.host;
60
52
  } else {
@@ -62,39 +54,39 @@ export function getParent(element) {
62
54
  elementToCheck = elementToCheck.parentNode;
63
55
  }
64
56
  }
65
-
66
57
  return parent;
67
58
  }
59
+
68
60
  /**
69
61
  * Gets `frameElement` of the specified frame. Returns null if it is a top frame or if script has no access to read property.
70
62
  *
71
63
  * @param {Window} frame Frame from which should be get frameElement in safe way.
72
64
  * @returns {HTMLIFrameElement|null}
73
65
  */
74
-
75
66
  export function getFrameElement(frame) {
76
67
  return Object.getPrototypeOf(frame.parent) && frame.frameElement;
77
68
  }
69
+
78
70
  /**
79
71
  * Gets parent frame of the specified frame. Returns null if it is a top frame or if script has no access to read property.
80
72
  *
81
73
  * @param {Window} frame Frame from which should be get frameElement in safe way.
82
74
  * @returns {Window|null}
83
75
  */
84
-
85
76
  export function getParentWindow(frame) {
86
77
  return getFrameElement(frame) && frame.parent;
87
78
  }
79
+
88
80
  /**
89
81
  * Checks if script has access to read from parent frame of specified frame.
90
82
  *
91
83
  * @param {Window} frame Frame from which should be get frameElement in safe way.
92
84
  * @returns {boolean}
93
85
  */
94
-
95
86
  export function hasAccessToParentWindow(frame) {
96
87
  return !!Object.getPrototypeOf(frame.parent);
97
88
  }
89
+
98
90
  /**
99
91
  * Goes up the DOM tree (including given element) until it finds an parent element that matches the nodes or nodes name.
100
92
  * This method goes up through web components.
@@ -104,36 +96,31 @@ export function hasAccessToParentWindow(frame) {
104
96
  * @param {Node} [until] The element until the traversing ends.
105
97
  * @returns {Node|null}
106
98
  */
107
-
108
99
  export function closest(element) {
109
100
  var nodes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
110
101
  var until = arguments.length > 2 ? arguments[2] : undefined;
111
102
  var _Node = Node,
112
- ELEMENT_NODE = _Node.ELEMENT_NODE,
113
- DOCUMENT_FRAGMENT_NODE = _Node.DOCUMENT_FRAGMENT_NODE;
103
+ ELEMENT_NODE = _Node.ELEMENT_NODE,
104
+ DOCUMENT_FRAGMENT_NODE = _Node.DOCUMENT_FRAGMENT_NODE;
114
105
  var elementToCheck = element;
115
-
116
106
  while (elementToCheck !== null && elementToCheck !== void 0 && elementToCheck !== until) {
117
107
  var _elementToCheck = elementToCheck,
118
- nodeType = _elementToCheck.nodeType,
119
- nodeName = _elementToCheck.nodeName;
120
-
108
+ nodeType = _elementToCheck.nodeType,
109
+ nodeName = _elementToCheck.nodeName;
121
110
  if (nodeType === ELEMENT_NODE && (nodes.includes(nodeName) || nodes.includes(elementToCheck))) {
122
111
  return elementToCheck;
123
112
  }
124
-
125
113
  var _elementToCheck2 = elementToCheck,
126
- host = _elementToCheck2.host;
127
-
114
+ host = _elementToCheck2.host;
128
115
  if (host && nodeType === DOCUMENT_FRAGMENT_NODE) {
129
116
  elementToCheck = host;
130
117
  } else {
131
118
  elementToCheck = elementToCheck.parentNode;
132
119
  }
133
120
  }
134
-
135
121
  return null;
136
122
  }
123
+
137
124
  /**
138
125
  * Goes "down" the DOM tree (including given element) until it finds an element that matches the nodes or nodes name.
139
126
  *
@@ -142,30 +129,25 @@ export function closest(element) {
142
129
  * @param {HTMLElement} [until] The list of elements until the traversing ends.
143
130
  * @returns {HTMLElement|null}
144
131
  */
145
-
146
132
  export function closestDown(element, nodes, until) {
147
133
  var matched = [];
148
134
  var elementToCheck = element;
149
-
150
135
  while (elementToCheck) {
151
136
  elementToCheck = closest(elementToCheck, nodes, until);
152
-
153
137
  if (!elementToCheck || until && !until.contains(elementToCheck)) {
154
138
  break;
155
139
  }
156
-
157
140
  matched.push(elementToCheck);
158
-
159
141
  if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
160
142
  elementToCheck = elementToCheck.host;
161
143
  } else {
162
144
  elementToCheck = elementToCheck.parentNode;
163
145
  }
164
146
  }
165
-
166
147
  var length = matched.length;
167
148
  return length ? matched[length - 1] : null;
168
149
  }
150
+
169
151
  /**
170
152
  * Goes up the DOM tree and checks if element is child of another element.
171
153
  *
@@ -174,11 +156,9 @@ export function closestDown(element, nodes, until) {
174
156
  * If string provided, function returns `true` for the first occurrence of element with that class.
175
157
  * @returns {boolean}
176
158
  */
177
-
178
159
  export function isChildOf(child, parent) {
179
160
  var node = child.parentNode;
180
161
  var queriedParents = [];
181
-
182
162
  if (typeof parent === 'string') {
183
163
  if (child.defaultView) {
184
164
  queriedParents = Array.prototype.slice.call(child.querySelectorAll(parent), 0);
@@ -188,17 +168,15 @@ export function isChildOf(child, parent) {
188
168
  } else {
189
169
  queriedParents.push(parent);
190
170
  }
191
-
192
171
  while (node !== null) {
193
172
  if (queriedParents.indexOf(node) > -1) {
194
173
  return true;
195
174
  }
196
-
197
175
  node = node.parentNode;
198
176
  }
199
-
200
177
  return false;
201
178
  }
179
+
202
180
  /**
203
181
  * Counts index of element within its parent.
204
182
  * WARNING: for performance reasons, assumes there are only element nodes (no text nodes). This is true
@@ -208,20 +186,18 @@ export function isChildOf(child, parent) {
208
186
  * @param {Element} element The element to check.
209
187
  * @returns {number}
210
188
  */
211
-
212
189
  export function index(element) {
213
190
  var i = 0;
214
191
  var elementToCheck = element;
215
-
216
192
  if (elementToCheck.previousSibling) {
217
193
  /* eslint-disable no-cond-assign */
218
194
  while (elementToCheck = elementToCheck.previousSibling) {
219
195
  i += 1;
220
196
  }
221
197
  }
222
-
223
198
  return i;
224
199
  }
200
+
225
201
  /**
226
202
  * Check if the provided overlay contains the provided element.
227
203
  *
@@ -230,66 +206,51 @@ export function index(element) {
230
206
  * @param {HTMLElement} root The root element.
231
207
  * @returns {boolean}
232
208
  */
233
-
234
209
  export function overlayContainsElement(overlayType, element, root) {
235
210
  var overlayElement = root.parentElement.querySelector(".ht_clone_".concat(overlayType));
236
211
  return overlayElement ? overlayElement.contains(element) : null;
237
212
  }
238
-
239
213
  var _hasClass;
240
-
241
214
  var _addClass;
242
-
243
215
  var _removeClass;
216
+
244
217
  /**
245
218
  * @param {string} classNames The element "class" attribute string.
246
219
  * @returns {string[]}
247
220
  */
248
-
249
-
250
221
  function filterEmptyClassNames(classNames) {
251
222
  if (!classNames || !classNames.length) {
252
223
  return [];
253
224
  }
254
-
255
225
  return classNames.filter(function (x) {
256
226
  return !!x;
257
227
  });
258
228
  }
259
-
260
229
  if (isClassListSupported()) {
261
230
  var isSupportMultipleClassesArg = function isSupportMultipleClassesArg(rootDocument) {
262
231
  var element = rootDocument.createElement('div');
263
232
  element.classList.add('test', 'test2');
264
233
  return element.classList.contains('test2');
265
234
  };
266
-
267
235
  _hasClass = function _hasClass(element, className) {
268
236
  if (element.classList === void 0 || typeof className !== 'string' || className === '') {
269
237
  return false;
270
238
  }
271
-
272
239
  return element.classList.contains(className);
273
240
  };
274
-
275
241
  _addClass = function _addClass(element, classes) {
276
242
  var rootDocument = element.ownerDocument;
277
243
  var className = classes;
278
-
279
244
  if (typeof className === 'string') {
280
245
  className = className.split(' ');
281
246
  }
282
-
283
247
  className = filterEmptyClassNames(className);
284
-
285
248
  if (className.length > 0) {
286
249
  if (isSupportMultipleClassesArg(rootDocument)) {
287
250
  var _element$classList;
288
-
289
251
  (_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(className));
290
252
  } else {
291
253
  var len = 0;
292
-
293
254
  while (className[len]) {
294
255
  element.classList.add(className[len]);
295
256
  len += 1;
@@ -297,25 +258,19 @@ if (isClassListSupported()) {
297
258
  }
298
259
  }
299
260
  };
300
-
301
261
  _removeClass = function _removeClass(element, classes) {
302
262
  var rootDocument = element.ownerDocument;
303
263
  var className = classes;
304
-
305
264
  if (typeof className === 'string') {
306
265
  className = className.split(' ');
307
266
  }
308
-
309
267
  className = filterEmptyClassNames(className);
310
-
311
268
  if (className.length > 0) {
312
269
  if (isSupportMultipleClassesArg(rootDocument)) {
313
270
  var _element$classList2;
314
-
315
271
  (_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(className));
316
272
  } else {
317
273
  var len = 0;
318
-
319
274
  while (className[len]) {
320
275
  element.classList.remove(className[len]);
321
276
  len += 1;
@@ -327,22 +282,17 @@ if (isClassListSupported()) {
327
282
  var createClassNameRegExp = function createClassNameRegExp(className) {
328
283
  return new RegExp("(\\s|^)".concat(className, "(\\s|$)"));
329
284
  };
330
-
331
285
  _hasClass = function _hasClass(element, className) {
332
286
  // http://snipplr.com/view/3561/addclass-removeclass-hasclass/
333
287
  return element.className !== void 0 && createClassNameRegExp(className).test(element.className);
334
288
  };
335
-
336
289
  _addClass = function _addClass(element, classes) {
337
290
  var _className = element.className;
338
291
  var className = classes;
339
-
340
292
  if (typeof className === 'string') {
341
293
  className = className.split(' ');
342
294
  }
343
-
344
295
  className = filterEmptyClassNames(className);
345
-
346
296
  if (_className === '') {
347
297
  _className = className.join(' ');
348
298
  } else {
@@ -352,32 +302,27 @@ if (isClassListSupported()) {
352
302
  }
353
303
  }
354
304
  }
355
-
356
305
  element.className = _className;
357
306
  };
358
-
359
307
  _removeClass = function _removeClass(element, classes) {
360
308
  var len = 0;
361
309
  var _className = element.className;
362
310
  var className = classes;
363
-
364
311
  if (typeof className === 'string') {
365
312
  className = className.split(' ');
366
313
  }
367
-
368
314
  className = filterEmptyClassNames(className);
369
-
370
315
  while (className[len]) {
371
316
  // String.prototype.trim is defined in polyfill.js
372
317
  _className = _className.replace(createClassNameRegExp(className[len]), ' ').trim();
373
318
  len += 1;
374
319
  }
375
-
376
320
  if (element.className !== _className) {
377
321
  element.className = _className;
378
322
  }
379
323
  };
380
324
  }
325
+
381
326
  /**
382
327
  * Checks if element has class name.
383
328
  *
@@ -385,46 +330,44 @@ if (isClassListSupported()) {
385
330
  * @param {string} className Class name to check.
386
331
  * @returns {boolean}
387
332
  */
388
-
389
-
390
333
  export function hasClass(element, className) {
391
334
  return _hasClass(element, className);
392
335
  }
336
+
393
337
  /**
394
338
  * Add class name to an element.
395
339
  *
396
340
  * @param {HTMLElement} element An element to process.
397
341
  * @param {string|Array} className Class name as string or array of strings.
398
342
  */
399
-
400
343
  export function addClass(element, className) {
401
344
  _addClass(element, className);
402
345
  }
346
+
403
347
  /**
404
348
  * Remove class name from an element.
405
349
  *
406
350
  * @param {HTMLElement} element An element to process.
407
351
  * @param {string|Array} className Class name as string or array of strings.
408
352
  */
409
-
410
353
  export function removeClass(element, className) {
411
354
  _removeClass(element, className);
412
355
  }
356
+
413
357
  /**
414
358
  * @param {HTMLElement} element An element from the text is removed.
415
359
  */
416
-
417
360
  export function removeTextNodes(element) {
418
361
  if (element.nodeType === 3) {
419
362
  element.parentNode.removeChild(element); // bye text nodes!
420
363
  } else if (['TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TR'].indexOf(element.nodeName) > -1) {
421
364
  var childs = element.childNodes;
422
-
423
365
  for (var i = childs.length - 1; i >= 0; i--) {
424
366
  removeTextNodes(childs[i]);
425
367
  }
426
368
  }
427
369
  }
370
+
428
371
  /**
429
372
  * Remove childs function
430
373
  * WARNING - this doesn't unload events and data attached by jQuery
@@ -433,16 +376,16 @@ export function removeTextNodes(element) {
433
376
  *
434
377
  * @param {HTMLElement} element An element to clear.
435
378
  */
436
-
437
379
  export function empty(element) {
438
380
  var child;
439
- /* eslint-disable no-cond-assign */
440
381
 
382
+ /* eslint-disable no-cond-assign */
441
383
  while (child = element.lastChild) {
442
384
  element.removeChild(child);
443
385
  }
444
386
  }
445
387
  export var HTML_CHARACTERS = /(<(.*)>|&(.*);)/;
388
+
446
389
  /**
447
390
  * Insert content into element trying avoid innerHTML method.
448
391
  *
@@ -450,28 +393,26 @@ export var HTML_CHARACTERS = /(<(.*)>|&(.*);)/;
450
393
  * @param {string} content The text to write.
451
394
  * @param {boolean} [sanitizeContent=true] If `true`, the content will be sanitized before writing to the element.
452
395
  */
453
-
454
396
  export function fastInnerHTML(element, content) {
455
397
  var sanitizeContent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
456
-
457
398
  if (HTML_CHARACTERS.test(content)) {
458
399
  element.innerHTML = sanitizeContent ? sanitize(content) : content;
459
400
  } else {
460
401
  fastInnerText(element, content);
461
402
  }
462
403
  }
404
+
463
405
  /**
464
406
  * Insert text content into element.
465
407
  *
466
408
  * @param {HTMLElement} element An element to write into.
467
409
  * @param {string} content The text to write.
468
410
  */
469
-
470
411
  export function fastInnerText(element, content) {
471
412
  var child = element.firstChild;
472
-
473
413
  if (child && child.nodeType === 3 && child.nextSibling === null) {
474
414
  // fast lane - replace existing text node
415
+
475
416
  if (isTextContentSupported) {
476
417
  // http://jsperf.com/replace-text-vs-reuse
477
418
  child.textContent = content;
@@ -485,17 +426,16 @@ export function fastInnerText(element, content) {
485
426
  element.appendChild(element.ownerDocument.createTextNode(content));
486
427
  }
487
428
  }
429
+
488
430
  /**
489
431
  * Returns true if element is attached to the DOM and visible, false otherwise.
490
432
  *
491
433
  * @param {HTMLElement} element An element to check.
492
434
  * @returns {boolean}
493
435
  */
494
-
495
436
  export function isVisible(element) {
496
437
  var documentElement = element.ownerDocument.documentElement;
497
438
  var next = element;
498
-
499
439
  while (next !== documentElement) {
500
440
  // until <html> reached
501
441
  if (next === null) {
@@ -513,7 +453,6 @@ export function isVisible(element) {
513
453
  // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features enabled
514
454
  return isVisible(next.host);
515
455
  }
516
-
517
456
  throw new Error('Lost in Web Components world');
518
457
  } else {
519
458
  return false; // this is a node detached from document in IE8
@@ -521,19 +460,17 @@ export function isVisible(element) {
521
460
  } else if (next.style && next.style.display === 'none') {
522
461
  return false;
523
462
  }
524
-
525
463
  next = next.parentNode;
526
464
  }
527
-
528
465
  return true;
529
466
  }
467
+
530
468
  /**
531
469
  * Returns elements top and left offset relative to the document. Function is not compatible with jQuery offset.
532
470
  *
533
471
  * @param {HTMLElement} element An element to get the offset position from.
534
472
  * @returns {object} Returns object with `top` and `left` props.
535
473
  */
536
-
537
474
  export function offset(element) {
538
475
  var rootDocument = element.ownerDocument;
539
476
  var rootWindow = rootDocument.defaultView;
@@ -543,7 +480,6 @@ export function offset(element) {
543
480
  var offsetTop;
544
481
  var lastElem;
545
482
  var box;
546
-
547
483
  if (hasCaptionProblem() && elementToCheck.firstChild && elementToCheck.firstChild.nodeName === 'CAPTION') {
548
484
  // fixes problem with Firefox ignoring <caption> in TABLE offset (see also export outerHeight)
549
485
  // http://jsperf.com/offset-vs-getboundingclientrect/8
@@ -553,35 +489,33 @@ export function offset(element) {
553
489
  left: box.left + (rootWindow.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)
554
490
  };
555
491
  }
556
-
557
492
  offsetLeft = elementToCheck.offsetLeft;
558
493
  offsetTop = elementToCheck.offsetTop;
559
494
  lastElem = elementToCheck;
560
- /* eslint-disable no-cond-assign */
561
495
 
496
+ /* eslint-disable no-cond-assign */
562
497
  while (elementToCheck = elementToCheck.offsetParent) {
563
498
  // from my observation, document.body always has scrollLeft/scrollTop == 0
564
499
  if (elementToCheck === rootDocument.body) {
565
500
  break;
566
501
  }
567
-
568
502
  offsetLeft += elementToCheck.offsetLeft;
569
503
  offsetTop += elementToCheck.offsetTop;
570
504
  lastElem = elementToCheck;
571
- } // slow - http://jsperf.com/offset-vs-getboundingclientrect/6
572
-
505
+ }
573
506
 
507
+ // slow - http://jsperf.com/offset-vs-getboundingclientrect/6
574
508
  if (lastElem && lastElem.style.position === 'fixed') {
575
509
  // if(lastElem !== document.body) { //faster but does gives false positive in Firefox
576
510
  offsetLeft += rootWindow.pageXOffset || documentElement.scrollLeft;
577
511
  offsetTop += rootWindow.pageYOffset || documentElement.scrollTop;
578
512
  }
579
-
580
513
  return {
581
514
  left: offsetLeft,
582
515
  top: offsetTop
583
516
  };
584
517
  }
518
+
585
519
  /**
586
520
  * Returns the document's scrollTop property.
587
521
  *
@@ -589,18 +523,16 @@ export function offset(element) {
589
523
  * @returns {number}
590
524
  */
591
525
  // eslint-disable-next-line no-restricted-globals
592
-
593
526
  export function getWindowScrollTop() {
594
527
  var rootWindow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
595
528
  var res = rootWindow.scrollY;
596
-
597
529
  if (res === void 0) {
598
530
  // IE8-11
599
531
  res = rootWindow.document.documentElement.scrollTop;
600
532
  }
601
-
602
533
  return res;
603
534
  }
535
+
604
536
  /**
605
537
  * Returns the document's scrollLeft property.
606
538
  *
@@ -608,18 +540,16 @@ export function getWindowScrollTop() {
608
540
  * @returns {number}
609
541
  */
610
542
  // eslint-disable-next-line no-restricted-globals
611
-
612
543
  export function getWindowScrollLeft() {
613
544
  var rootWindow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
614
545
  var res = rootWindow.scrollX;
615
-
616
546
  if (res === void 0) {
617
547
  // IE8-11
618
548
  res = rootWindow.document.documentElement.scrollLeft;
619
549
  }
620
-
621
550
  return res;
622
551
  }
552
+
623
553
  /**
624
554
  * Returns the provided element's scrollTop property.
625
555
  *
@@ -628,16 +558,14 @@ export function getWindowScrollLeft() {
628
558
  * @returns {number}
629
559
  */
630
560
  // eslint-disable-next-line no-restricted-globals
631
-
632
561
  export function getScrollTop(element) {
633
562
  var rootWindow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
634
-
635
563
  if (element === rootWindow) {
636
564
  return getWindowScrollTop(rootWindow);
637
565
  }
638
-
639
566
  return element.scrollTop;
640
567
  }
568
+
641
569
  /**
642
570
  * Returns the provided element's scrollLeft property.
643
571
  *
@@ -646,102 +574,86 @@ export function getScrollTop(element) {
646
574
  * @returns {number}
647
575
  */
648
576
  // eslint-disable-next-line no-restricted-globals
649
-
650
577
  export function getScrollLeft(element) {
651
578
  var rootWindow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
652
-
653
579
  if (element === rootWindow) {
654
580
  return getWindowScrollLeft(rootWindow);
655
581
  }
656
-
657
582
  return element.scrollLeft;
658
583
  }
584
+
659
585
  /**
660
586
  * Returns a DOM element responsible for scrolling of the provided element.
661
587
  *
662
588
  * @param {HTMLElement} element An element to get the scrollable element from.
663
589
  * @returns {HTMLElement} Element's scrollable parent.
664
590
  */
665
-
666
591
  export function getScrollableElement(element) {
667
592
  var rootDocument = element.ownerDocument;
668
593
  var rootWindow = rootDocument ? rootDocument.defaultView : void 0;
669
-
670
594
  if (!rootDocument) {
671
595
  rootDocument = element.document ? element.document : element;
672
596
  rootWindow = rootDocument.defaultView;
673
597
  }
674
-
675
598
  var props = ['auto', 'scroll'];
676
599
  var supportedGetComputedStyle = isGetComputedStyleSupported();
677
600
  var el = element.parentNode;
678
-
679
601
  while (el && el.style && rootDocument.body !== el) {
680
602
  var _el$style = el.style,
681
- overflow = _el$style.overflow,
682
- overflowX = _el$style.overflowX,
683
- overflowY = _el$style.overflowY;
684
-
603
+ overflow = _el$style.overflow,
604
+ overflowX = _el$style.overflowX,
605
+ overflowY = _el$style.overflowY;
685
606
  if ([overflow, overflowX, overflowY].includes('scroll')) {
686
607
  return el;
687
608
  } else if (supportedGetComputedStyle) {
688
609
  var _rootWindow$getComput = rootWindow.getComputedStyle(el);
689
-
690
610
  overflow = _rootWindow$getComput.overflow;
691
611
  overflowX = _rootWindow$getComput.overflowX;
692
612
  overflowY = _rootWindow$getComput.overflowY;
693
-
694
613
  if (props.includes(overflow) || props.includes(overflowX) || props.includes(overflowY)) {
695
614
  return el;
696
615
  }
697
- } // The '+ 1' after the scrollHeight/scrollWidth is to prevent problems with zoomed out Chrome.
698
-
616
+ }
699
617
 
618
+ // The '+ 1' after the scrollHeight/scrollWidth is to prevent problems with zoomed out Chrome.
700
619
  if (el.clientHeight <= el.scrollHeight + 1 && (props.includes(overflowY) || props.includes(overflow))) {
701
620
  return el;
702
621
  }
703
-
704
622
  if (el.clientWidth <= el.scrollWidth + 1 && (props.includes(overflowX) || props.includes(overflow))) {
705
623
  return el;
706
624
  }
707
-
708
625
  el = el.parentNode;
709
626
  }
710
-
711
627
  return rootWindow;
712
628
  }
629
+
713
630
  /**
714
631
  * Returns a DOM element responsible for trimming the provided element.
715
632
  *
716
633
  * @param {HTMLElement} base Base element.
717
634
  * @returns {HTMLElement} Base element's trimming parent.
718
635
  */
719
-
720
636
  export function getTrimmingContainer(base) {
721
637
  var rootDocument = base.ownerDocument;
722
638
  var rootWindow = rootDocument.defaultView;
723
639
  var el = base.parentNode;
724
-
725
640
  while (el && el.style && rootDocument.body !== el) {
726
641
  if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
727
642
  return el;
728
643
  }
729
-
730
644
  var computedStyle = getComputedStyle(el, rootWindow);
731
645
  var allowedProperties = ['scroll', 'hidden', 'auto'];
732
646
  var property = computedStyle.getPropertyValue('overflow');
733
647
  var propertyY = computedStyle.getPropertyValue('overflow-y');
734
648
  var propertyX = computedStyle.getPropertyValue('overflow-x');
735
-
736
649
  if (allowedProperties.includes(property) || allowedProperties.includes(propertyY) || allowedProperties.includes(propertyX)) {
737
650
  return el;
738
651
  }
739
-
740
652
  el = el.parentNode;
741
653
  }
742
-
743
654
  return rootWindow;
744
655
  }
656
+
745
657
  /**
746
658
  * Returns a style property for the provided element. (Be it an inline or external style).
747
659
  *
@@ -751,10 +663,8 @@ export function getTrimmingContainer(base) {
751
663
  * @returns {string|undefined} Element's style property.
752
664
  */
753
665
  // eslint-disable-next-line no-restricted-globals
754
-
755
666
  export function getStyle(element, prop) {
756
667
  var rootWindow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;
757
-
758
668
  if (!element) {
759
669
  return;
760
670
  } else if (element === rootWindow) {
@@ -763,22 +673,18 @@ export function getStyle(element, prop) {
763
673
  } else if (prop === 'height') {
764
674
  return "".concat(rootWindow.innerHeight, "px");
765
675
  }
766
-
767
676
  return;
768
677
  }
769
-
770
678
  var styleProp = element.style[prop];
771
-
772
679
  if (styleProp !== '' && styleProp !== void 0) {
773
680
  return styleProp;
774
681
  }
775
-
776
682
  var computedStyle = getComputedStyle(element, rootWindow);
777
-
778
683
  if (computedStyle[prop] !== '' && computedStyle[prop] !== void 0) {
779
684
  return computedStyle[prop];
780
685
  }
781
686
  }
687
+
782
688
  /**
783
689
  * Verifies if element fit to provided CSSRule.
784
690
  *
@@ -786,11 +692,9 @@ export function getStyle(element, prop) {
786
692
  * @param {CSSRule} rule Selector text from CSSRule.
787
693
  * @returns {boolean}
788
694
  */
789
-
790
695
  export function matchesCSSRules(element, rule) {
791
696
  var selectorText = rule.selectorText;
792
697
  var result = false;
793
-
794
698
  if (rule.type === CSSRule.STYLE_RULE && selectorText) {
795
699
  if (element.msMatchesSelector) {
796
700
  result = element.msMatchesSelector(selectorText);
@@ -798,9 +702,9 @@ export function matchesCSSRules(element, rule) {
798
702
  result = element.matches(selectorText);
799
703
  }
800
704
  }
801
-
802
705
  return result;
803
706
  }
707
+
804
708
  /**
805
709
  * Returns a computed style object for the provided element. (Needed if style is declared in external stylesheet).
806
710
  *
@@ -809,28 +713,27 @@ export function matchesCSSRules(element, rule) {
809
713
  * @returns {IEElementStyle|CssStyle} Elements computed style object.
810
714
  */
811
715
  // eslint-disable-next-line no-restricted-globals
812
-
813
716
  export function getComputedStyle(element) {
814
717
  var rootWindow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
815
718
  return element.currentStyle || rootWindow.getComputedStyle(element);
816
719
  }
720
+
817
721
  /**
818
722
  * Returns the element's outer width.
819
723
  *
820
724
  * @param {HTMLElement} element An element to get the width from.
821
725
  * @returns {number} Element's outer width.
822
726
  */
823
-
824
727
  export function outerWidth(element) {
825
728
  return element.offsetWidth;
826
729
  }
730
+
827
731
  /**
828
732
  * Returns the element's outer height.
829
733
  *
830
734
  * @param {HTMLElement} element An element to get the height from.
831
735
  * @returns {number} Element's outer height.
832
736
  */
833
-
834
737
  export function outerHeight(element) {
835
738
  if (hasCaptionProblem() && element.firstChild && element.firstChild.nodeName === 'CAPTION') {
836
739
  // fixes problem with Firefox ignoring <caption> in TABLE.offsetHeight
@@ -842,47 +745,47 @@ export function outerHeight(element) {
842
745
  // http://lists.w3.org/Archives/Public/www-style/2009Oct/0140.html#start140
843
746
  return element.offsetHeight + element.firstChild.offsetHeight;
844
747
  }
845
-
846
748
  return element.offsetHeight;
847
749
  }
750
+
848
751
  /**
849
752
  * Returns the element's inner height.
850
753
  *
851
754
  * @param {HTMLElement} element An element to get the height from.
852
755
  * @returns {number} Element's inner height.
853
756
  */
854
-
855
757
  export function innerHeight(element) {
856
758
  return element.clientHeight || element.innerHeight;
857
759
  }
760
+
858
761
  /**
859
762
  * Returns the element's inner width.
860
763
  *
861
764
  * @param {HTMLElement} element An element to get the width from.
862
765
  * @returns {number} Element's inner width.
863
766
  */
864
-
865
767
  export function innerWidth(element) {
866
768
  return element.clientWidth || element.innerWidth;
867
769
  }
770
+
868
771
  /**
869
772
  * @param {HTMLElement} element An element to which the event is added.
870
773
  * @param {string} event The event name.
871
774
  * @param {Function} callback The callback to add.
872
775
  */
873
-
874
776
  export function addEvent(element, event, callback) {
875
777
  element.addEventListener(event, callback, false);
876
778
  }
779
+
877
780
  /**
878
781
  * @param {HTMLElement} element An element from which the event is removed.
879
782
  * @param {string} event The event name.
880
783
  * @param {Function} callback The function reference to remove.
881
784
  */
882
-
883
785
  export function removeEvent(element, event, callback) {
884
786
  element.removeEventListener(event, callback, false);
885
787
  }
788
+
886
789
  /**
887
790
  * Returns caret position in text input.
888
791
  *
@@ -890,56 +793,48 @@ export function removeEvent(element, event, callback) {
890
793
  * @param {HTMLElement} el An element to check.
891
794
  * @returns {number}
892
795
  */
893
-
894
796
  export function getCaretPosition(el) {
895
797
  var rootDocument = el.ownerDocument;
896
-
897
798
  if (el.selectionStart) {
898
799
  return el.selectionStart;
899
800
  } else if (rootDocument.selection) {
900
801
  // IE8
901
802
  el.focus();
902
803
  var r = rootDocument.selection.createRange();
903
-
904
804
  if (r === null) {
905
805
  return 0;
906
806
  }
907
-
908
807
  var re = el.createTextRange();
909
808
  var rc = re.duplicate();
910
809
  re.moveToBookmark(r.getBookmark());
911
810
  rc.setEndPoint('EndToStart', re);
912
811
  return rc.text.length;
913
812
  }
914
-
915
813
  return 0;
916
814
  }
815
+
917
816
  /**
918
817
  * Returns end of the selection in text input.
919
818
  *
920
819
  * @param {HTMLElement} el An element to check.
921
820
  * @returns {number}
922
821
  */
923
-
924
822
  export function getSelectionEndPosition(el) {
925
823
  var rootDocument = el.ownerDocument;
926
-
927
824
  if (el.selectionEnd) {
928
825
  return el.selectionEnd;
929
826
  } else if (rootDocument.selection) {
930
827
  // IE8
931
828
  var r = rootDocument.selection.createRange();
932
-
933
829
  if (r === null) {
934
830
  return 0;
935
831
  }
936
-
937
832
  var re = el.createTextRange();
938
833
  return re.text.indexOf(r.text) + r.text.length;
939
834
  }
940
-
941
835
  return 0;
942
836
  }
837
+
943
838
  /**
944
839
  * Returns text under selection.
945
840
  *
@@ -947,31 +842,29 @@ export function getSelectionEndPosition(el) {
947
842
  * @returns {string}
948
843
  */
949
844
  // eslint-disable-next-line no-restricted-globals
950
-
951
845
  export function getSelectionText() {
952
846
  var rootWindow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
953
847
  var rootDocument = rootWindow.document;
954
848
  var text = '';
955
-
956
849
  if (rootWindow.getSelection) {
957
850
  text = rootWindow.getSelection().toString();
958
851
  } else if (rootDocument.selection && rootDocument.selection.type !== 'Control') {
959
852
  text = rootDocument.selection.createRange().text;
960
853
  }
961
-
962
854
  return text;
963
855
  }
856
+
964
857
  /**
965
858
  * Cross-platform helper to clear text selection.
966
859
  *
967
860
  * @param {Window} [rootWindow] The document window owner.
968
861
  */
969
862
  // eslint-disable-next-line no-restricted-globals
970
-
971
863
  export function clearTextSelection() {
972
864
  var rootWindow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
973
- var rootDocument = rootWindow.document; // http://stackoverflow.com/questions/3169786/clear-text-selection-with-javascript
865
+ var rootDocument = rootWindow.document;
974
866
 
867
+ // http://stackoverflow.com/questions/3169786/clear-text-selection-with-javascript
975
868
  if (rootWindow.getSelection) {
976
869
  if (rootWindow.getSelection().empty) {
977
870
  // Chrome
@@ -985,6 +878,7 @@ export function clearTextSelection() {
985
878
  rootDocument.selection.empty();
986
879
  }
987
880
  }
881
+
988
882
  /**
989
883
  * Sets caret position in text input.
990
884
  *
@@ -993,15 +887,12 @@ export function clearTextSelection() {
993
887
  * @param {number} pos The selection start position.
994
888
  * @param {number} endPos The selection end position.
995
889
  */
996
-
997
890
  export function setCaretPosition(element, pos, endPos) {
998
891
  if (endPos === void 0) {
999
892
  endPos = pos;
1000
893
  }
1001
-
1002
894
  if (element.setSelectionRange) {
1003
895
  element.focus();
1004
-
1005
896
  try {
1006
897
  element.setSelectionRange(pos, endPos);
1007
898
  } catch (err) {
@@ -1014,6 +905,7 @@ export function setCaretPosition(element, pos, endPos) {
1014
905
  }
1015
906
  }
1016
907
  var cachedScrollbarWidth;
908
+
1017
909
  /**
1018
910
  * Helper to calculate scrollbar width.
1019
911
  * Source: https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes.
@@ -1023,7 +915,6 @@ var cachedScrollbarWidth;
1023
915
  * @returns {number}
1024
916
  */
1025
917
  // eslint-disable-next-line no-restricted-globals
1026
-
1027
918
  function walkontableCalculateScrollbarWidth() {
1028
919
  var rootDocument = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
1029
920
  var inner = rootDocument.createElement('div');
@@ -1043,14 +934,13 @@ function walkontableCalculateScrollbarWidth() {
1043
934
  var w1 = inner.offsetWidth;
1044
935
  outer.style.overflow = 'scroll';
1045
936
  var w2 = inner.offsetWidth;
1046
-
1047
937
  if (w1 === w2) {
1048
938
  w2 = outer.clientWidth;
1049
939
  }
1050
-
1051
940
  (rootDocument.body || rootDocument.documentElement).removeChild(outer);
1052
941
  return w1 - w2;
1053
942
  }
943
+
1054
944
  /**
1055
945
  * Returns the computed width of the native browser scroll bar.
1056
946
  *
@@ -1058,37 +948,34 @@ function walkontableCalculateScrollbarWidth() {
1058
948
  * @returns {number} Width.
1059
949
  */
1060
950
  // eslint-disable-next-line no-restricted-globals
1061
-
1062
-
1063
951
  export function getScrollbarWidth() {
1064
952
  var rootDocument = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
1065
-
1066
953
  if (cachedScrollbarWidth === void 0) {
1067
954
  cachedScrollbarWidth = walkontableCalculateScrollbarWidth(rootDocument);
1068
955
  }
1069
-
1070
956
  return cachedScrollbarWidth;
1071
957
  }
958
+
1072
959
  /**
1073
960
  * Checks if the provided element has a vertical scrollbar.
1074
961
  *
1075
962
  * @param {HTMLElement} element An element to check.
1076
963
  * @returns {boolean}
1077
964
  */
1078
-
1079
965
  export function hasVerticalScrollbar(element) {
1080
966
  return element.offsetWidth !== element.clientWidth;
1081
967
  }
968
+
1082
969
  /**
1083
970
  * Checks if the provided element has a vertical scrollbar.
1084
971
  *
1085
972
  * @param {HTMLElement} element An element to check.
1086
973
  * @returns {boolean}
1087
974
  */
1088
-
1089
975
  export function hasHorizontalScrollbar(element) {
1090
976
  return element.offsetHeight !== element.clientHeight;
1091
977
  }
978
+
1092
979
  /**
1093
980
  * Sets overlay position depending on it's type and used browser.
1094
981
  *
@@ -1096,7 +983,6 @@ export function hasHorizontalScrollbar(element) {
1096
983
  * @param {number|string} left The left position of the overlay.
1097
984
  * @param {number|string} top The top position of the overlay.
1098
985
  */
1099
-
1100
986
  export function setOverlayPosition(overlayElem, left, top) {
1101
987
  if (isIE9()) {
1102
988
  overlayElem.style.top = top;
@@ -1107,26 +993,24 @@ export function setOverlayPosition(overlayElem, left, top) {
1107
993
  overlayElem.style.transform = "translate3d(".concat(left, ",").concat(top, ",0)");
1108
994
  }
1109
995
  }
996
+
1110
997
  /**
1111
998
  * @param {HTMLElement} element An element to process.
1112
999
  * @returns {number|Array}
1113
1000
  */
1114
-
1115
1001
  export function getCssTransform(element) {
1116
1002
  var transform;
1117
-
1118
1003
  if (element.style.transform && (transform = element.style.transform) !== '') {
1119
1004
  return ['transform', transform];
1120
1005
  } else if (element.style['-webkit-transform'] && (transform = element.style['-webkit-transform']) !== '') {
1121
1006
  return ['-webkit-transform', transform];
1122
1007
  }
1123
-
1124
1008
  return -1;
1125
1009
  }
1010
+
1126
1011
  /**
1127
1012
  * @param {HTMLElement} element An element to process.
1128
1013
  */
1129
-
1130
1014
  export function resetCssTransform(element) {
1131
1015
  if (element.style.transform && element.style.transform !== '') {
1132
1016
  element.style.transform = '';
@@ -1134,6 +1018,7 @@ export function resetCssTransform(element) {
1134
1018
  element.style['-webkit-transform'] = '';
1135
1019
  }
1136
1020
  }
1021
+
1137
1022
  /**
1138
1023
  * Determines if the given DOM element is an input field.
1139
1024
  * Notice: By 'input' we mean input, textarea and select nodes.
@@ -1141,11 +1026,11 @@ export function resetCssTransform(element) {
1141
1026
  * @param {HTMLElement} element - DOM element.
1142
1027
  * @returns {boolean}
1143
1028
  */
1144
-
1145
1029
  export function isInput(element) {
1146
1030
  var inputs = ['INPUT', 'SELECT', 'TEXTAREA'];
1147
1031
  return element && (inputs.indexOf(element.nodeName) > -1 || element.contentEditable === 'true');
1148
1032
  }
1033
+
1149
1034
  /**
1150
1035
  * Determines if the given DOM element is an input field placed OUTSIDE of HOT.
1151
1036
  * Notice: By 'input' we mean input, textarea and select nodes which have defined 'data-hot-input' attribute.
@@ -1153,30 +1038,49 @@ export function isInput(element) {
1153
1038
  * @param {HTMLElement} element - DOM element.
1154
1039
  * @returns {boolean}
1155
1040
  */
1156
-
1157
1041
  export function isOutsideInput(element) {
1158
1042
  return isInput(element) && element.hasAttribute('data-hot-input') === false;
1159
1043
  }
1044
+
1160
1045
  /**
1161
1046
  * Check if the given DOM element can be focused (by using "select" method).
1162
1047
  *
1163
1048
  * @param {HTMLElement} element - DOM element.
1164
1049
  */
1165
-
1166
1050
  export function selectElementIfAllowed(element) {
1167
1051
  var activeElement = element.ownerDocument.activeElement;
1168
-
1169
1052
  if (!isOutsideInput(activeElement)) {
1170
1053
  element.select();
1171
1054
  }
1172
1055
  }
1056
+
1173
1057
  /**
1174
1058
  * Check if the provided element is detached from DOM.
1175
1059
  *
1176
1060
  * @param {HTMLElement} element HTML element to be checked.
1177
1061
  * @returns {boolean} `true` if the element is detached, `false` otherwise.
1178
1062
  */
1179
-
1180
1063
  export function isDetached(element) {
1181
1064
  return !element.parentNode;
1065
+ }
1066
+
1067
+ /**
1068
+ * Set up an observer to recognize when the provided element first becomes visible and trigger a callback when it
1069
+ * happens.
1070
+ *
1071
+ * @param {HTMLElement} elementToBeObserved Element to be observed.
1072
+ * @param {Function} callback The callback function.
1073
+ */
1074
+ export function observeVisibilityChangeOnce(elementToBeObserved, callback) {
1075
+ var visibilityObserver = new IntersectionObserver(function (entries, observer) {
1076
+ entries.forEach(function (entry) {
1077
+ if (entry.isIntersecting && elementToBeObserved.offsetParent !== null) {
1078
+ callback();
1079
+ observer.unobserve(elementToBeObserved);
1080
+ }
1081
+ });
1082
+ }, {
1083
+ root: elementToBeObserved.ownerDocument.body
1084
+ });
1085
+ visibilityObserver.observe(elementToBeObserved);
1182
1086
  }