handsontable 0.0.0-next-a7809f3-20240708 → 0.0.0-next-b799724-20240710

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (430) hide show
  1. package/3rdparty/walkontable/src/calculator/renderAllColumns.js +1 -1
  2. package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
  3. package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
  4. package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
  5. package/3rdparty/walkontable/src/calculator/viewportColumns.js +3 -3
  6. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +3 -3
  7. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  8. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  9. package/3rdparty/walkontable/src/cell/coords.js +3 -3
  10. package/3rdparty/walkontable/src/cell/coords.mjs +3 -3
  11. package/3rdparty/walkontable/src/cell/range.js +4 -4
  12. package/3rdparty/walkontable/src/cell/range.mjs +3 -3
  13. package/3rdparty/walkontable/src/core/_base.js +2 -2
  14. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  15. package/3rdparty/walkontable/src/core/clone.js +2 -2
  16. package/3rdparty/walkontable/src/core/clone.mjs +1 -1
  17. package/3rdparty/walkontable/src/core/core.js +1 -1
  18. package/3rdparty/walkontable/src/event.js +2 -2
  19. package/3rdparty/walkontable/src/event.mjs +2 -2
  20. package/3rdparty/walkontable/src/facade/core.js +1 -1
  21. package/3rdparty/walkontable/src/filter/column.js +1 -1
  22. package/3rdparty/walkontable/src/filter/column.mjs +1 -1
  23. package/3rdparty/walkontable/src/filter/row.js +1 -1
  24. package/3rdparty/walkontable/src/filter/row.mjs +1 -1
  25. package/3rdparty/walkontable/src/index.js +1 -1
  26. package/3rdparty/walkontable/src/overlay/_base.js +2 -2
  27. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  28. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  29. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  30. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +1 -1
  31. package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -1
  32. package/3rdparty/walkontable/src/overlay/top.js +2 -2
  33. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  34. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +2 -2
  35. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
  36. package/3rdparty/walkontable/src/overlays.js +3 -3
  37. package/3rdparty/walkontable/src/overlays.mjs +3 -3
  38. package/3rdparty/walkontable/src/renderer/_base.js +2 -2
  39. package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
  40. package/3rdparty/walkontable/src/renderer/cells.js +2 -2
  41. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
  42. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  43. package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
  44. package/3rdparty/walkontable/src/renderer/index.js +1 -1
  45. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  46. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
  47. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  48. package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
  49. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  50. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  51. package/3rdparty/walkontable/src/scroll.js +3 -3
  52. package/3rdparty/walkontable/src/scroll.mjs +3 -3
  53. package/3rdparty/walkontable/src/selection/index.js +1 -1
  54. package/3rdparty/walkontable/src/selection/manager.js +4 -4
  55. package/3rdparty/walkontable/src/selection/manager.mjs +3 -3
  56. package/3rdparty/walkontable/src/selection/scanner.js +3 -3
  57. package/3rdparty/walkontable/src/selection/scanner.mjs +3 -3
  58. package/3rdparty/walkontable/src/selection/selection.js +1 -1
  59. package/3rdparty/walkontable/src/settings.js +1 -1
  60. package/3rdparty/walkontable/src/settings.mjs +1 -1
  61. package/3rdparty/walkontable/src/table/bottom.js +1 -1
  62. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -1
  63. package/3rdparty/walkontable/src/table/inlineStart.js +1 -1
  64. package/3rdparty/walkontable/src/table/master.js +1 -1
  65. package/3rdparty/walkontable/src/table/top.js +1 -1
  66. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -1
  67. package/3rdparty/walkontable/src/table.js +2 -2
  68. package/3rdparty/walkontable/src/table.mjs +1 -1
  69. package/3rdparty/walkontable/src/utils/column.js +1 -1
  70. package/3rdparty/walkontable/src/utils/column.mjs +1 -1
  71. package/3rdparty/walkontable/src/utils/columnStretching.js +3 -3
  72. package/3rdparty/walkontable/src/utils/columnStretching.mjs +3 -3
  73. package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
  74. package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
  75. package/3rdparty/walkontable/src/utils/orderView/index.js +1 -1
  76. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +1 -1
  77. package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
  78. package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
  79. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  80. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  81. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +2 -2
  82. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
  83. package/3rdparty/walkontable/src/utils/row.js +1 -1
  84. package/3rdparty/walkontable/src/utils/row.mjs +1 -1
  85. package/base.js +3 -3
  86. package/base.mjs +2 -2
  87. package/cellTypes/registry.js +1 -1
  88. package/core.d.ts +2 -0
  89. package/core.js +11 -1
  90. package/core.mjs +10 -0
  91. package/dataMap/dataMap.js +1 -1
  92. package/dataMap/dataMap.mjs +1 -1
  93. package/dataMap/dataSource.js +1 -1
  94. package/dataMap/dataSource.mjs +1 -1
  95. package/dataMap/index.js +1 -1
  96. package/dataMap/metaManager/index.js +1 -1
  97. package/dataMap/metaManager/lazyFactoryMap.js +1 -1
  98. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -1
  99. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
  100. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
  101. package/dataMap/metaManager/metaLayers/columnMeta.js +2 -2
  102. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
  103. package/dataMap/metaManager/metaLayers/globalMeta.js +2 -2
  104. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  105. package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
  106. package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
  107. package/dataMap/metaManager/metaSchema.js +25 -0
  108. package/dataMap/metaManager/metaSchema.mjs +25 -0
  109. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -2
  110. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  111. package/dataMap/metaManager/mods/extendMetaProperties.js +3 -3
  112. package/dataMap/metaManager/mods/extendMetaProperties.mjs +3 -3
  113. package/dataMap/replaceData.js +1 -1
  114. package/dist/handsontable.css +126 -88
  115. package/dist/handsontable.full.css +126 -88
  116. package/dist/handsontable.full.js +1206 -1091
  117. package/dist/handsontable.full.min.css +7 -7
  118. package/dist/handsontable.full.min.js +15 -15
  119. package/dist/handsontable.js +1202 -1034
  120. package/dist/handsontable.min.css +6 -6
  121. package/dist/handsontable.min.js +14 -14
  122. package/dist/languages/all.js +3 -3
  123. package/dist/languages/ar-AR.js +3 -3
  124. package/dist/languages/cs-CZ.js +3 -3
  125. package/dist/languages/de-CH.js +3 -3
  126. package/dist/languages/de-DE.js +3 -3
  127. package/dist/languages/en-US.js +3 -3
  128. package/dist/languages/es-MX.js +3 -3
  129. package/dist/languages/fr-FR.js +3 -3
  130. package/dist/languages/hr-HR.js +3 -3
  131. package/dist/languages/it-IT.js +3 -3
  132. package/dist/languages/ja-JP.js +3 -3
  133. package/dist/languages/ko-KR.js +3 -3
  134. package/dist/languages/lv-LV.js +3 -3
  135. package/dist/languages/nb-NO.js +3 -3
  136. package/dist/languages/nl-NL.js +3 -3
  137. package/dist/languages/pl-PL.js +3 -3
  138. package/dist/languages/pt-BR.js +3 -3
  139. package/dist/languages/ru-RU.js +3 -3
  140. package/dist/languages/sr-SP.js +3 -3
  141. package/dist/languages/zh-CN.js +3 -3
  142. package/dist/languages/zh-TW.js +3 -3
  143. package/editorManager.js +4 -4
  144. package/editorManager.mjs +3 -3
  145. package/editors/autocompleteEditor/autocompleteEditor.js +3 -3
  146. package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -3
  147. package/editors/baseEditor/baseEditor.js +2 -2
  148. package/editors/baseEditor/baseEditor.mjs +1 -1
  149. package/editors/dateEditor/dateEditor.js +2 -2
  150. package/editors/dateEditor/dateEditor.mjs +1 -1
  151. package/editors/dropdownEditor/dropdownEditor.js +1 -1
  152. package/editors/registry.js +1 -1
  153. package/editors/textEditor/textEditor.js +2 -2
  154. package/editors/textEditor/textEditor.mjs +1 -1
  155. package/eventManager.js +1 -1
  156. package/eventManager.mjs +1 -1
  157. package/focusManager.js +3 -3
  158. package/focusManager.mjs +3 -3
  159. package/helpers/dom/element.js +10 -0
  160. package/helpers/dom/element.mjs +9 -0
  161. package/helpers/mixed.js +2 -2
  162. package/helpers/mixed.mjs +1 -1
  163. package/helpers/string.js +1 -1
  164. package/i18n/languages/index.js +1 -1
  165. package/i18n/phraseFormatters/index.js +1 -1
  166. package/i18n/registry.js +1 -1
  167. package/index.js +1 -1
  168. package/languages/all.js +3 -3
  169. package/languages/ar-AR.js +3 -3
  170. package/languages/cs-CZ.js +3 -3
  171. package/languages/de-CH.js +3 -3
  172. package/languages/de-DE.js +3 -3
  173. package/languages/en-US.js +3 -3
  174. package/languages/es-MX.js +3 -3
  175. package/languages/fr-FR.js +3 -3
  176. package/languages/hr-HR.js +3 -3
  177. package/languages/index.js +3 -3
  178. package/languages/it-IT.js +3 -3
  179. package/languages/ja-JP.js +3 -3
  180. package/languages/ko-KR.js +3 -3
  181. package/languages/lv-LV.js +3 -3
  182. package/languages/nb-NO.js +3 -3
  183. package/languages/nl-NL.js +3 -3
  184. package/languages/pl-PL.js +3 -3
  185. package/languages/pt-BR.js +3 -3
  186. package/languages/ru-RU.js +3 -3
  187. package/languages/sr-SP.js +3 -3
  188. package/languages/zh-CN.js +3 -3
  189. package/languages/zh-TW.js +3 -3
  190. package/package.json +1 -2
  191. package/pluginHooks.d.ts +205 -205
  192. package/pluginHooks.js +1 -1
  193. package/pluginHooks.mjs +1 -1
  194. package/plugins/autoColumnSize/autoColumnSize.d.ts +1 -1
  195. package/plugins/autoColumnSize/autoColumnSize.js +123 -123
  196. package/plugins/autoColumnSize/autoColumnSize.mjs +122 -122
  197. package/plugins/autoRowSize/autoRowSize.d.ts +2 -1
  198. package/plugins/autoRowSize/autoRowSize.js +162 -100
  199. package/plugins/autoRowSize/autoRowSize.mjs +161 -99
  200. package/plugins/autofill/autofill.js +4 -4
  201. package/plugins/autofill/autofill.mjs +3 -3
  202. package/plugins/base/base.js +5 -5
  203. package/plugins/base/base.mjs +4 -4
  204. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -4
  205. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  206. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -4
  207. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -4
  208. package/plugins/columnSorting/columnSorting.js +4 -4
  209. package/plugins/columnSorting/columnSorting.mjs +3 -3
  210. package/plugins/columnSorting/columnStatesManager.js +1 -1
  211. package/plugins/columnSorting/columnStatesManager.mjs +1 -1
  212. package/plugins/columnSorting/sortService/registry.js +1 -1
  213. package/plugins/columnSorting/utils.js +1 -1
  214. package/plugins/columnSummary/columnSummary.js +4 -4
  215. package/plugins/columnSummary/columnSummary.mjs +3 -3
  216. package/plugins/columnSummary/endpoints.js +1 -1
  217. package/plugins/columnSummary/endpoints.mjs +1 -1
  218. package/plugins/comments/commentEditor.js +3 -3
  219. package/plugins/comments/commentEditor.mjs +2 -2
  220. package/plugins/comments/comments.js +5 -5
  221. package/plugins/comments/comments.mjs +4 -4
  222. package/plugins/comments/displaySwitch.js +2 -2
  223. package/plugins/comments/displaySwitch.mjs +1 -1
  224. package/plugins/comments/editorResizeObserver.js +4 -4
  225. package/plugins/comments/editorResizeObserver.mjs +3 -3
  226. package/plugins/contextMenu/commandExecutor.js +1 -1
  227. package/plugins/contextMenu/commandExecutor.mjs +1 -1
  228. package/plugins/contextMenu/contextMenu.js +4 -4
  229. package/plugins/contextMenu/contextMenu.mjs +3 -3
  230. package/plugins/contextMenu/itemsFactory.js +1 -1
  231. package/plugins/contextMenu/itemsFactory.mjs +1 -1
  232. package/plugins/contextMenu/menu/cursor.js +1 -1
  233. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  234. package/plugins/contextMenu/menu/menu.js +4 -4
  235. package/plugins/contextMenu/menu/menu.mjs +3 -3
  236. package/plugins/contextMenu/menu/positioner.js +2 -2
  237. package/plugins/contextMenu/menu/positioner.mjs +2 -2
  238. package/plugins/copyPaste/copyPaste.js +5 -5
  239. package/plugins/copyPaste/copyPaste.mjs +4 -4
  240. package/plugins/copyPaste/copyableRanges.js +3 -3
  241. package/plugins/copyPaste/copyableRanges.mjs +3 -3
  242. package/plugins/copyPaste/pasteEvent.js +1 -1
  243. package/plugins/customBorders/contextMenuItem/index.js +1 -1
  244. package/plugins/customBorders/customBorders.js +3 -3
  245. package/plugins/customBorders/customBorders.mjs +3 -3
  246. package/plugins/dragToScroll/dragToScroll.js +3 -3
  247. package/plugins/dragToScroll/dragToScroll.mjs +3 -3
  248. package/plugins/dropdownMenu/dropdownMenu.js +5 -5
  249. package/plugins/dropdownMenu/dropdownMenu.mjs +4 -4
  250. package/plugins/exportFile/dataProvider.js +1 -1
  251. package/plugins/exportFile/dataProvider.mjs +1 -1
  252. package/plugins/exportFile/exportFile.js +1 -1
  253. package/plugins/exportFile/typeFactory.js +1 -1
  254. package/plugins/exportFile/types/_base.js +1 -1
  255. package/plugins/exportFile/types/_base.mjs +1 -1
  256. package/plugins/exportFile/types/csv.js +1 -1
  257. package/plugins/filters/component/_base.js +2 -2
  258. package/plugins/filters/component/_base.mjs +1 -1
  259. package/plugins/filters/component/actionBar.js +3 -3
  260. package/plugins/filters/component/actionBar.mjs +3 -3
  261. package/plugins/filters/component/condition.js +3 -3
  262. package/plugins/filters/component/condition.mjs +3 -3
  263. package/plugins/filters/component/operators.js +3 -3
  264. package/plugins/filters/component/operators.mjs +3 -3
  265. package/plugins/filters/component/value.js +3 -3
  266. package/plugins/filters/component/value.mjs +3 -3
  267. package/plugins/filters/condition/date/after.js +1 -1
  268. package/plugins/filters/condition/date/before.js +1 -1
  269. package/plugins/filters/condition/date/today.js +1 -1
  270. package/plugins/filters/condition/date/tomorrow.js +1 -1
  271. package/plugins/filters/condition/date/yesterday.js +1 -1
  272. package/plugins/filters/conditionCollection.js +2 -2
  273. package/plugins/filters/conditionCollection.mjs +1 -1
  274. package/plugins/filters/conditionUpdateObserver.js +4 -4
  275. package/plugins/filters/conditionUpdateObserver.mjs +3 -3
  276. package/plugins/filters/dataFilter.js +1 -1
  277. package/plugins/filters/dataFilter.mjs +1 -1
  278. package/plugins/filters/filters.js +5 -5
  279. package/plugins/filters/filters.mjs +4 -4
  280. package/plugins/filters/ui/_base.js +2 -2
  281. package/plugins/filters/ui/_base.mjs +1 -1
  282. package/plugins/filters/ui/input.js +3 -3
  283. package/plugins/filters/ui/input.mjs +3 -3
  284. package/plugins/filters/ui/link.js +2 -2
  285. package/plugins/filters/ui/link.mjs +2 -2
  286. package/plugins/filters/ui/multipleSelect.js +3 -3
  287. package/plugins/filters/ui/multipleSelect.mjs +3 -3
  288. package/plugins/filters/ui/radioInput.js +2 -2
  289. package/plugins/filters/ui/radioInput.mjs +2 -2
  290. package/plugins/filters/ui/select.js +3 -3
  291. package/plugins/filters/ui/select.mjs +3 -3
  292. package/plugins/formulas/engine/register.js +1 -1
  293. package/plugins/formulas/formulas.js +5 -5
  294. package/plugins/formulas/formulas.mjs +4 -4
  295. package/plugins/formulas/indexSyncer/axisSyncer.js +2 -2
  296. package/plugins/formulas/indexSyncer/axisSyncer.mjs +2 -2
  297. package/plugins/formulas/indexSyncer/index.js +3 -3
  298. package/plugins/formulas/indexSyncer/index.mjs +2 -2
  299. package/plugins/formulas/utils.js +1 -1
  300. package/plugins/hiddenColumns/hiddenColumns.js +4 -4
  301. package/plugins/hiddenColumns/hiddenColumns.mjs +3 -3
  302. package/plugins/hiddenRows/hiddenRows.js +4 -4
  303. package/plugins/hiddenRows/hiddenRows.mjs +3 -3
  304. package/plugins/manualColumnFreeze/manualColumnFreeze.js +4 -4
  305. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -3
  306. package/plugins/manualColumnMove/manualColumnMove.js +4 -4
  307. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -3
  308. package/plugins/manualColumnMove/ui/_base.js +1 -1
  309. package/plugins/manualColumnMove/ui/_base.mjs +1 -1
  310. package/plugins/manualColumnMove/ui/backlight.js +1 -1
  311. package/plugins/manualColumnMove/ui/guideline.js +1 -1
  312. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  313. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  314. package/plugins/manualRowMove/manualRowMove.js +4 -4
  315. package/plugins/manualRowMove/manualRowMove.mjs +3 -3
  316. package/plugins/manualRowMove/ui/_base.js +1 -1
  317. package/plugins/manualRowMove/ui/_base.mjs +1 -1
  318. package/plugins/manualRowMove/ui/backlight.js +1 -1
  319. package/plugins/manualRowMove/ui/guideline.js +1 -1
  320. package/plugins/manualRowResize/manualRowResize.js +3 -3
  321. package/plugins/manualRowResize/manualRowResize.mjs +3 -3
  322. package/plugins/mergeCells/calculations/autofill.js +1 -1
  323. package/plugins/mergeCells/calculations/autofill.mjs +1 -1
  324. package/plugins/mergeCells/calculations/selection.js +1 -1
  325. package/plugins/mergeCells/calculations/selection.mjs +1 -1
  326. package/plugins/mergeCells/cellCoords.js +3 -3
  327. package/plugins/mergeCells/cellCoords.mjs +3 -3
  328. package/plugins/mergeCells/cellsCollection.js +4 -4
  329. package/plugins/mergeCells/cellsCollection.mjs +3 -3
  330. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -1
  331. package/plugins/mergeCells/focusOrder.js +4 -4
  332. package/plugins/mergeCells/focusOrder.mjs +3 -3
  333. package/plugins/mergeCells/mergeCells.js +5 -5
  334. package/plugins/mergeCells/mergeCells.mjs +4 -4
  335. package/plugins/multiColumnSorting/multiColumnSorting.js +1 -1
  336. package/plugins/multiColumnSorting/multiColumnSorting.mjs +1 -1
  337. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
  338. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
  339. package/plugins/nestedHeaders/nestedHeaders.d.ts +1 -0
  340. package/plugins/nestedHeaders/nestedHeaders.js +19 -8
  341. package/plugins/nestedHeaders/nestedHeaders.mjs +18 -7
  342. package/plugins/nestedHeaders/stateManager/headersTree.js +3 -3
  343. package/plugins/nestedHeaders/stateManager/headersTree.mjs +2 -2
  344. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  345. package/plugins/nestedHeaders/stateManager/index.mjs +2 -2
  346. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  347. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  348. package/plugins/nestedHeaders/stateManager/sourceSettings.js +2 -2
  349. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +2 -2
  350. package/plugins/nestedHeaders/stateManager/utils.js +6 -2
  351. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -2
  352. package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
  353. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
  354. package/plugins/nestedRows/data/dataManager.js +1 -1
  355. package/plugins/nestedRows/data/dataManager.mjs +1 -1
  356. package/plugins/nestedRows/nestedRows.js +5 -5
  357. package/plugins/nestedRows/nestedRows.mjs +4 -4
  358. package/plugins/nestedRows/ui/_base.js +1 -1
  359. package/plugins/nestedRows/ui/_base.mjs +1 -1
  360. package/plugins/nestedRows/ui/collapsing.js +1 -1
  361. package/plugins/nestedRows/ui/contextMenu.js +4 -4
  362. package/plugins/nestedRows/ui/contextMenu.mjs +3 -3
  363. package/plugins/nestedRows/ui/headers.js +1 -1
  364. package/plugins/nestedRows/utils/rowMoveController.js +1 -1
  365. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
  366. package/plugins/persistentState/persistentState.js +2 -2
  367. package/plugins/persistentState/persistentState.mjs +1 -1
  368. package/plugins/persistentState/storage.js +1 -1
  369. package/plugins/persistentState/storage.mjs +1 -1
  370. package/plugins/search/search.js +3 -3
  371. package/plugins/search/search.mjs +3 -3
  372. package/plugins/touchScroll/touchScroll.js +3 -3
  373. package/plugins/touchScroll/touchScroll.mjs +3 -3
  374. package/plugins/trimRows/trimRows.js +3 -3
  375. package/plugins/trimRows/trimRows.mjs +3 -3
  376. package/plugins/undoRedo/undoRedo.js +1 -1
  377. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  378. package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
  379. package/renderers/numericRenderer/numericRenderer.js +1 -1
  380. package/renderers/registry.js +1 -1
  381. package/selection/highlight/highlight.js +3 -3
  382. package/selection/highlight/highlight.mjs +3 -3
  383. package/selection/highlight/types/activeHeader.js +1 -1
  384. package/selection/highlight/types/area.js +1 -1
  385. package/selection/highlight/types/areaLayered.js +1 -1
  386. package/selection/highlight/types/column.js +1 -1
  387. package/selection/highlight/types/customSelection.js +1 -1
  388. package/selection/highlight/types/fill.js +1 -1
  389. package/selection/highlight/types/focus.js +1 -1
  390. package/selection/highlight/types/header.js +1 -1
  391. package/selection/highlight/types/row.js +1 -1
  392. package/selection/highlight/visualSelection.js +1 -1
  393. package/selection/highlight/visualSelection.mjs +1 -1
  394. package/selection/index.js +1 -1
  395. package/selection/range.js +1 -1
  396. package/selection/range.mjs +1 -1
  397. package/selection/selection.js +4 -4
  398. package/selection/selection.mjs +3 -3
  399. package/selection/transformation.js +4 -4
  400. package/selection/transformation.mjs +3 -3
  401. package/settings.d.ts +1 -0
  402. package/tableView.js +46 -18
  403. package/tableView.mjs +46 -18
  404. package/translations/changesObservable/observable.js +2 -2
  405. package/translations/changesObservable/observable.mjs +2 -2
  406. package/translations/changesObservable/observer.js +3 -3
  407. package/translations/changesObservable/observer.mjs +2 -2
  408. package/translations/indexMapper.js +2 -2
  409. package/translations/indexMapper.mjs +1 -1
  410. package/translations/mapCollections/aggregatedCollection.js +1 -1
  411. package/translations/mapCollections/aggregatedCollection.mjs +1 -1
  412. package/translations/mapCollections/mapCollection.js +2 -2
  413. package/translations/mapCollections/mapCollection.mjs +1 -1
  414. package/translations/maps/indexMap.js +2 -2
  415. package/translations/maps/indexMap.mjs +1 -1
  416. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
  417. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
  418. package/utils/dataStructures/linkedList.js +1 -1
  419. package/utils/dataStructures/linkedList.mjs +1 -1
  420. package/utils/dataStructures/tree.js +1 -1
  421. package/utils/dataStructures/tree.mjs +1 -1
  422. package/utils/ghostTable.js +1 -1
  423. package/utils/ghostTable.mjs +1 -1
  424. package/utils/interval.js +4 -4
  425. package/utils/interval.mjs +4 -4
  426. package/utils/samplesGenerator.js +1 -1
  427. package/utils/samplesGenerator.mjs +1 -1
  428. package/validators/dateValidator/dateValidator.js +1 -1
  429. package/validators/registry.js +1 -1
  430. package/validators/timeValidator/timeValidator.js +1 -1
@@ -1,14 +1,16 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ import "core-js/modules/es.array.push.js";
3
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
5
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
6
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
10
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
7
11
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
8
12
  import { BasePlugin } from "../base/index.mjs";
9
- import { arrayEach, arrayFilter } from "../../helpers/array.mjs";
10
13
  import { cancelAnimationFrame, requestAnimationFrame } from "../../helpers/feature.mjs";
11
- import { isVisible } from "../../helpers/dom/element.mjs";
12
14
  import GhostTable from "../../utils/ghostTable.mjs";
13
15
  import { isObject, hasOwnProperty } from "../../helpers/object.mjs";
14
16
  import { valueAccordingPercent, rangeEach } from "../../helpers/number.mjs";
@@ -103,6 +105,7 @@ const ROW_WIDTHS_MAP_NAME = 'autoRowSize';
103
105
  * :::
104
106
  */
105
107
  /* eslint-enable jsdoc/require-description-complete-sentence */
108
+ var _visualRowsToRefresh = /*#__PURE__*/new WeakMap();
106
109
  var _AutoRowSize_brand = /*#__PURE__*/new WeakSet();
107
110
  export class AutoRowSize extends BasePlugin {
108
111
  static get PLUGIN_KEY() {
@@ -131,7 +134,9 @@ export class AutoRowSize extends BasePlugin {
131
134
  constructor(hotInstance) {
132
135
  super(hotInstance);
133
136
  /**
134
- * On before view render listener.
137
+ * Calculates specific rows height (overwrite cache values).
138
+ *
139
+ * @param {number[]} visualRows List of visual rows to calculate.
135
140
  */
136
141
  _classPrivateMethodInitSpec(this, _AutoRowSize_brand);
137
142
  _defineProperty(this, "headerHeight", null);
@@ -171,13 +176,6 @@ export class AutoRowSize extends BasePlugin {
171
176
  value: cellValue
172
177
  };
173
178
  }));
174
- /**
175
- * `true` if only the first calculation was performed.
176
- *
177
- * @private
178
- * @type {boolean}
179
- */
180
- _defineProperty(this, "firstCalculation", true);
181
179
  /**
182
180
  * `true` if the size calculation is in progress.
183
181
  *
@@ -197,6 +195,12 @@ export class AutoRowSize extends BasePlugin {
197
195
  * @type {PhysicalIndexToValueMap}
198
196
  */
199
197
  _defineProperty(this, "rowHeightsMap", new IndexToValueMap());
198
+ /**
199
+ * An array of row indexes whose height will be recalculated.
200
+ *
201
+ * @type {number[]}
202
+ */
203
+ _classPrivateFieldInitSpec(this, _visualRowsToRefresh, []);
200
204
  this.hot.rowIndexMapper.registerMap(ROW_WIDTHS_MAP_NAME, this.rowHeightsMap);
201
205
 
202
206
  // Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
@@ -230,10 +234,22 @@ export class AutoRowSize extends BasePlugin {
230
234
  }
231
235
  return _assertClassBrand(_AutoRowSize_brand, _this, _onAfterLoadData).call(_this, ...args);
232
236
  });
233
- this.addHook('beforeChangeRender', changes => _assertClassBrand(_AutoRowSize_brand, this, _onBeforeChange).call(this, changes));
237
+ this.addHook('beforeChangeRender', function () {
238
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
239
+ args[_key2] = arguments[_key2];
240
+ }
241
+ return _assertClassBrand(_AutoRowSize_brand, _this, _onBeforeChange).call(_this, ...args);
242
+ });
234
243
  this.addHook('beforeColumnResize', () => this.recalculateAllRowsHeight());
235
- this.addHook('beforeViewRender', force => _assertClassBrand(_AutoRowSize_brand, this, _onBeforeViewRender).call(this, force));
244
+ this.addHook('afterFormulasValuesUpdate', function () {
245
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
246
+ args[_key3] = arguments[_key3];
247
+ }
248
+ return _assertClassBrand(_AutoRowSize_brand, _this, _onAfterFormulasValuesUpdate).call(_this, ...args);
249
+ });
250
+ this.addHook('beforeRender', () => _assertClassBrand(_AutoRowSize_brand, this, _onBeforeRender).call(this));
236
251
  this.addHook('modifyRowHeight', (height, row) => this.getRowHeight(row, height));
252
+ this.addHook('init', () => _assertClassBrand(_AutoRowSize_brand, this, _onInit).call(this));
237
253
  this.addHook('modifyColumnHeaderHeight', () => this.getColumnHeaderHeight());
238
254
  super.enablePlugin();
239
255
  }
@@ -246,16 +262,36 @@ export class AutoRowSize extends BasePlugin {
246
262
  super.disablePlugin();
247
263
 
248
264
  // Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
249
- // This is necesseary for height recalculation for resize handler doubleclick (ManualRowResize).
265
+ // This is necessary for height recalculation for resize handler doubleclick (ManualRowResize).
250
266
  this.addHook('beforeRowResize', (size, row, isDblClick) => _assertClassBrand(_AutoRowSize_brand, this, _onBeforeRowResize).call(this, size, row, isDblClick));
251
267
  }
252
268
 
269
+ /**
270
+ * Calculates heights for visible rows in the viewport only.
271
+ */
272
+ calculateVisibleRowsHeight() {
273
+ // Keep last row heights unchanged for situation when all columns was deleted or trimmed
274
+ if (!this.hot.countCols()) {
275
+ return;
276
+ }
277
+ const firstVisibleRow = this.getFirstVisibleRow();
278
+ const lastVisibleRow = this.getLastVisibleRow();
279
+ if (firstVisibleRow === -1 || lastVisibleRow === -1) {
280
+ return;
281
+ }
282
+ const overwriteCache = this.hot.renderCall;
283
+ this.calculateRowsHeight({
284
+ from: firstVisibleRow,
285
+ to: lastVisibleRow
286
+ }, undefined, overwriteCache);
287
+ }
288
+
253
289
  /**
254
290
  * Calculate a given rows height.
255
291
  *
256
292
  * @param {number|object} rowRange Row index or an object with `from` and `to` indexes as a range.
257
293
  * @param {number|object} colRange Column index or an object with `from` and `to` indexes as a range.
258
- * @param {boolean} [force=false] If `true` the calculation will be processed regardless of whether the width exists in the cache.
294
+ * @param {boolean} [overwriteCache=false] If `true` the calculation will be processed regardless of whether the width exists in the cache.
259
295
  */
260
296
  calculateRowsHeight() {
261
297
  let rowRange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
@@ -266,8 +302,7 @@ export class AutoRowSize extends BasePlugin {
266
302
  from: 0,
267
303
  to: this.hot.countCols() - 1
268
304
  };
269
- let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
270
- // eslint-disable-line max-len
305
+ let overwriteCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
271
306
  const rowsRange = typeof rowRange === 'number' ? {
272
307
  from: rowRange,
273
308
  to: rowRange
@@ -280,15 +315,17 @@ export class AutoRowSize extends BasePlugin {
280
315
  const samples = this.samplesGenerator.generateRowSamples(-1, columnsRange);
281
316
  this.ghostTable.addColumnHeadersRow(samples.get(-1));
282
317
  }
283
- rangeEach(rowsRange.from, rowsRange.to, row => {
318
+ rangeEach(rowsRange.from, rowsRange.to, visualRow => {
319
+ let physicalRow = this.hot.toPhysicalRow(visualRow);
320
+ if (physicalRow === null) {
321
+ physicalRow = visualRow;
322
+ }
323
+
284
324
  // For rows we must calculate row height even when user had set height value manually.
285
325
  // We can shrink column but cannot shrink rows!
286
- if (force || this.rowHeightsMap.getValueAtIndex(row) === null) {
287
- const samples = this.samplesGenerator.generateRowSamples(row, columnsRange);
288
- arrayEach(samples, _ref => {
289
- let [rowIndex, sample] = _ref;
290
- return this.ghostTable.addRow(rowIndex, sample);
291
- });
326
+ if (overwriteCache || this.rowHeightsMap.getValueAtIndex(physicalRow) === null) {
327
+ const samples = this.samplesGenerator.generateRowSamples(visualRow, columnsRange);
328
+ samples.forEach((sample, row) => this.ghostTable.addRow(row, sample));
292
329
  }
293
330
  });
294
331
  if (this.ghostTable.rows.length) {
@@ -311,12 +348,14 @@ export class AutoRowSize extends BasePlugin {
311
348
  * To retrieve height for specified row use {@link AutoRowSize#getRowHeight} method.
312
349
  *
313
350
  * @param {object|number} colRange Row index or an object with `from` and `to` properties which define row range.
351
+ * @param {boolean} [overwriteCache] If `true` the calculation will be processed regardless of whether the width exists in the cache.
314
352
  */
315
353
  calculateAllRowsHeight() {
316
354
  let colRange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
317
355
  from: 0,
318
356
  to: this.hot.countCols() - 1
319
357
  };
358
+ let overwriteCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
320
359
  let current = 0;
321
360
  const length = this.hot.countRows() - 1;
322
361
  let timer = null;
@@ -331,7 +370,7 @@ export class AutoRowSize extends BasePlugin {
331
370
  this.calculateRowsHeight({
332
371
  from: current,
333
372
  to: Math.min(current + AutoRowSize.CALCULATION_STEP, length)
334
- }, colRange);
373
+ }, colRange, overwriteCache);
335
374
  current = current + AutoRowSize.CALCULATION_STEP + 1;
336
375
  if (current < length) {
337
376
  timer = requestAnimationFrame(loop);
@@ -351,12 +390,11 @@ export class AutoRowSize extends BasePlugin {
351
390
  const syncLimit = this.getSyncCalculationLimit();
352
391
 
353
392
  // sync
354
- if (this.firstCalculation && syncLimit >= 0) {
393
+ if (syncLimit >= 0) {
355
394
  this.calculateRowsHeight({
356
395
  from: 0,
357
396
  to: syncLimit
358
- }, colRange);
359
- this.firstCalculation = false;
397
+ }, colRange, overwriteCache);
360
398
  current = syncLimit + 1;
361
399
  }
362
400
  // async
@@ -367,7 +405,6 @@ export class AutoRowSize extends BasePlugin {
367
405
  this.hot.view.adjustElementsSize();
368
406
  }
369
407
  }
370
-
371
408
  /**
372
409
  * Sets the sampling options.
373
410
  *
@@ -389,9 +426,11 @@ export class AutoRowSize extends BasePlugin {
389
426
  * Recalculates all rows height (overwrite cache values).
390
427
  */
391
428
  recalculateAllRowsHeight() {
392
- if (isVisible(this.hot.view._wt.wtTable.TABLE)) {
393
- this.clearCache();
394
- this.calculateAllRowsHeight();
429
+ if (this.hot.view.isVisible()) {
430
+ this.calculateAllRowsHeight({
431
+ from: 0,
432
+ to: this.hot.countCols() - 1
433
+ }, true);
395
434
  }
396
435
  }
397
436
 
@@ -431,8 +470,7 @@ export class AutoRowSize extends BasePlugin {
431
470
  * @param {number} [defaultHeight] If no height is found, `defaultHeight` is returned instead.
432
471
  * @returns {number} The height of the specified row, in pixels.
433
472
  */
434
- getRowHeight(row) {
435
- let defaultHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
473
+ getRowHeight(row, defaultHeight) {
436
474
  const cachedHeight = row < 0 ? this.headerHeight : this.rowHeightsMap.getValueAtIndex(this.hot.toPhysicalRow(row));
437
475
  let height = defaultHeight;
438
476
  if (cachedHeight !== null && cachedHeight > (defaultHeight || 0)) {
@@ -456,14 +494,8 @@ export class AutoRowSize extends BasePlugin {
456
494
  * @returns {number} Returns row index, -1 if table is not rendered or if there are no rows to base the the calculations on.
457
495
  */
458
496
  getFirstVisibleRow() {
459
- const wot = this.hot.view._wt;
460
- if (wot.wtViewport.rowsVisibleCalculator) {
461
- return wot.wtTable.getFirstVisibleRow();
462
- }
463
- if (wot.wtViewport.rowsRenderCalculator) {
464
- return wot.wtTable.getFirstRenderedRow();
465
- }
466
- return -1;
497
+ var _this$hot$view$getFir;
498
+ return (_this$hot$view$getFir = this.hot.view.getFirstRenderedVisibleRow()) !== null && _this$hot$view$getFir !== void 0 ? _this$hot$view$getFir : -1;
467
499
  }
468
500
 
469
501
  /**
@@ -472,22 +504,27 @@ export class AutoRowSize extends BasePlugin {
472
504
  * @returns {number} Returns row index or -1 if table is not rendered.
473
505
  */
474
506
  getLastVisibleRow() {
475
- const wot = this.hot.view._wt;
476
- if (wot.wtViewport.rowsVisibleCalculator) {
477
- return wot.wtTable.getLastVisibleRow();
478
- }
479
- if (wot.wtViewport.rowsRenderCalculator) {
480
- return wot.wtTable.getLastRenderedRow();
481
- }
482
- return -1;
507
+ var _this$hot$view$getLas;
508
+ return (_this$hot$view$getLas = this.hot.view.getLastRenderedVisibleRow()) !== null && _this$hot$view$getLas !== void 0 ? _this$hot$view$getLas : -1;
483
509
  }
484
510
 
485
511
  /**
486
- * Clears cached heights.
512
+ * Clears cache of calculated row heights. If you want to clear only selected rows pass an array with their indexes.
513
+ * Otherwise whole cache will be cleared.
514
+ *
515
+ * @param {number[]} [physicalRows] List of physical row indexes to clear.
487
516
  */
488
- clearCache() {
517
+ clearCache(physicalRows) {
489
518
  this.headerHeight = null;
490
- this.rowHeightsMap.init();
519
+ if (Array.isArray(physicalRows)) {
520
+ this.hot.batchExecution(() => {
521
+ physicalRows.forEach(physicalIndex => {
522
+ this.rowHeightsMap.setValueAtIndex(physicalIndex, null);
523
+ });
524
+ }, true);
525
+ } else {
526
+ this.rowHeightsMap.clear();
527
+ }
491
528
  }
492
529
 
493
530
  /**
@@ -516,8 +553,13 @@ export class AutoRowSize extends BasePlugin {
516
553
  * @returns {boolean}
517
554
  */
518
555
  isNeedRecalculate() {
519
- return !!arrayFilter(this.rowHeightsMap.getValues().slice(0, this.measuredRows), item => item === null).length;
556
+ return !!this.rowHeightsMap.getValues().slice(0, this.measuredRows).filter(item => item === null).length;
520
557
  }
558
+
559
+ /**
560
+ * On before view render listener.
561
+ */
562
+
521
563
  /**
522
564
  * Destroys the plugin instance.
523
565
  */
@@ -526,29 +568,32 @@ export class AutoRowSize extends BasePlugin {
526
568
  super.destroy();
527
569
  }
528
570
  }
529
- function _onBeforeViewRender() {
530
- const force = this.hot.renderCall;
531
- const fixedRowsBottom = this.hot.getSettings().fixedRowsBottom;
532
- const firstVisibleRow = this.getFirstVisibleRow();
533
- const lastVisibleRow = this.getLastVisibleRow();
534
- if (firstVisibleRow === -1 || lastVisibleRow === -1) {
535
- return;
536
- }
537
- this.calculateRowsHeight({
538
- from: firstVisibleRow,
539
- to: lastVisibleRow
540
- }, undefined, force);
541
-
542
- // Calculate rows height synchronously for bottom overlay
543
- if (fixedRowsBottom) {
544
- const totalRows = this.hot.countRows() - 1;
545
- this.calculateRowsHeight({
546
- from: totalRows - fixedRowsBottom,
547
- to: totalRows
548
- });
571
+ function _calculateSpecificRowsHeight(visualRows) {
572
+ const columnsRange = {
573
+ from: 0,
574
+ to: this.hot.countCols() - 1
575
+ };
576
+ visualRows.forEach(visualRow => {
577
+ // For rows we must calculate row height even when user had set height value manually.
578
+ // We can shrink column but cannot shrink rows!
579
+ const samples = this.samplesGenerator.generateRowSamples(visualRow, columnsRange);
580
+ samples.forEach((sample, row) => this.ghostTable.addRow(row, sample));
581
+ });
582
+ if (this.ghostTable.rows.length) {
583
+ this.hot.batchExecution(() => {
584
+ this.ghostTable.getHeights((visualRow, height) => {
585
+ const physicalRow = this.hot.toPhysicalRow(visualRow);
586
+ this.rowHeightsMap.setValueAtIndex(physicalRow, height);
587
+ });
588
+ }, true);
589
+ this.ghostTable.clean();
549
590
  }
550
- if (this.isNeedRecalculate() && !this.inProgress) {
551
- this.calculateAllRowsHeight();
591
+ }
592
+ function _onBeforeRender() {
593
+ this.calculateVisibleRowsHeight();
594
+ if (!this.inProgress) {
595
+ _assertClassBrand(_AutoRowSize_brand, this, _calculateSpecificRowsHeight).call(this, _classPrivateFieldGet(_visualRowsToRefresh, this));
596
+ _classPrivateFieldSet(_visualRowsToRefresh, this, []);
552
597
  }
553
598
  }
554
599
  /**
@@ -569,17 +614,13 @@ function _onBeforeRowResize(size, row, isDblClick) {
569
614
  }
570
615
  /**
571
616
  * On after load data listener.
617
+ *
618
+ * @param {Array} sourceData Source data.
619
+ * @param {boolean} isFirstLoad `true` if this is the first load.
572
620
  */
573
- function _onAfterLoadData() {
574
- if (this.hot.view) {
621
+ function _onAfterLoadData(sourceData, isFirstLoad) {
622
+ if (!isFirstLoad) {
575
623
  this.recalculateAllRowsHeight();
576
- } else {
577
- // first load - initialization
578
- this.hot._registerTimeout(() => {
579
- if (this.hot) {
580
- this.recalculateAllRowsHeight();
581
- }
582
- });
583
624
  }
584
625
  }
585
626
  /**
@@ -588,16 +629,37 @@ function _onAfterLoadData() {
588
629
  * @param {Array} changes 2D array containing information about each of the edited cells.
589
630
  */
590
631
  function _onBeforeChange(changes) {
591
- let range = null;
592
- if (changes.length === 1) {
593
- range = changes[0][0];
594
- } else if (changes.length > 1) {
595
- range = {
596
- from: changes[0][0],
597
- to: changes[changes.length - 1][0]
598
- };
599
- }
600
- if (range !== null) {
601
- this.clearCacheByRange(range);
602
- }
632
+ const changedRows = changes.reduce((acc, _ref) => {
633
+ let [row] = _ref;
634
+ if (acc.indexOf(row) === -1) {
635
+ acc.push(row);
636
+ }
637
+ return acc;
638
+ }, []);
639
+ _classPrivateFieldGet(_visualRowsToRefresh, this).push(...changedRows);
640
+ }
641
+ /**
642
+ * On after Handsontable init plugin with all necessary values.
643
+ */
644
+ function _onInit() {
645
+ this.recalculateAllRowsHeight();
646
+ }
647
+ /**
648
+ * After formulas values updated listener.
649
+ *
650
+ * @param {Array} changes An array of modified data.
651
+ */
652
+ function _onAfterFormulasValuesUpdate(changes) {
653
+ const changedRows = changes.reduce((acc, change) => {
654
+ var _change$address;
655
+ const physicalRow = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.row;
656
+ if (Number.isInteger(physicalRow)) {
657
+ const visualRow = this.hot.toVisualRow(physicalRow);
658
+ if (acc.indexOf(visualRow) === -1) {
659
+ acc.push(visualRow);
660
+ }
661
+ }
662
+ return acc;
663
+ }, []);
664
+ _classPrivateFieldGet(_visualRowsToRefresh, this).push(...changedRows);
603
665
  }
@@ -9,10 +9,10 @@ var _element = require("../../helpers/dom/element");
9
9
  var _array = require("../../helpers/array");
10
10
  var _mixed = require("../../helpers/mixed");
11
11
  var _utils = require("./utils");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
14
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
15
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
14
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
15
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
16
16
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
17
17
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
18
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -1,8 +1,8 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
4
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
5
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
7
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
8
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -11,11 +11,11 @@ var _registry3 = require("../../editors/registry");
11
11
  var _registry4 = require("../../renderers/registry");
12
12
  var _registry5 = require("../../validators/registry");
13
13
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
16
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
17
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
18
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
16
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
17
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
18
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
19
19
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
20
20
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
21
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -1,9 +1,9 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
4
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
5
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
5
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
6
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
7
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
8
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
9
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -5,10 +5,10 @@ require("core-js/modules/es.error.cause.js");
5
5
  var _base = require("../base");
6
6
  var _looseBindsMap = _interopRequireDefault(require("./maps/looseBindsMap"));
7
7
  var _strictBindsMap = _interopRequireDefault(require("./maps/strictBindsMap"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
10
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
11
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
10
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
11
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
12
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
13
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
14
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -1,7 +1,7 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
3
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
6
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -11,10 +11,10 @@ var _element = require("../../helpers/dom/element");
11
11
  var _event = require("../../helpers/dom/event");
12
12
  var _shortcutContexts = require("../../shortcutContexts");
13
13
  var _a11y = require("../../helpers/a11y");
14
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
15
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
16
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
17
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
15
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
16
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
19
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
20
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -1,9 +1,9 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
4
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
5
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
5
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
6
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
7
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
8
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
9
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -18,10 +18,10 @@ var _domHelpers = require("./domHelpers");
18
18
  var _rootComparator = require("./rootComparator");
19
19
  var _sortService = require("./sortService");
20
20
  var _a11y = require("../../helpers/a11y");
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
23
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
24
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
23
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
24
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
25
25
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
26
26
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
27
27
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -1,8 +1,8 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
4
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
5
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
7
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
8
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -5,7 +5,7 @@ require("core-js/modules/es.error.cause.js");
5
5
  var _object = require("../../helpers/object");
6
6
  var _translations = require("../../translations");
7
7
  var _mixed = require("../../helpers/mixed");
8
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9
9
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
10
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
11
11
  const inheritedColumnProperties = ['sortEmptyCells', 'indicator', 'headerAction', 'compareFunctionFactory'];