handsontable 9.0.1 → 11.0.1

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 (757) hide show
  1. package/3rdparty/autoResize/autoResize.js +2 -0
  2. package/3rdparty/autoResize/autoResize.mjs +1 -0
  3. package/3rdparty/walkontable/src/border.js +3 -1
  4. package/3rdparty/walkontable/src/border.mjs +2 -1
  5. package/3rdparty/walkontable/src/calculator/constants.js +1 -1
  6. package/3rdparty/walkontable/src/calculator/index.js +2 -0
  7. package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +18 -0
  8. package/3rdparty/walkontable/src/cell/coords.d.ts +16 -0
  9. package/3rdparty/walkontable/src/cell/range.d.ts +51 -0
  10. package/3rdparty/walkontable/src/index.d.ts +1 -0
  11. package/3rdparty/walkontable/src/overlay/bottom.js +3 -3
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
  13. package/3rdparty/walkontable/src/overlay/bottomLeftCorner.js +3 -3
  14. package/3rdparty/walkontable/src/overlay/bottomLeftCorner.mjs +2 -2
  15. package/3rdparty/walkontable/src/overlay/constants.js +1 -1
  16. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  17. package/3rdparty/walkontable/src/overlay/left.js +3 -3
  18. package/3rdparty/walkontable/src/overlay/left.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/registerer.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/top.js +3 -3
  21. package/3rdparty/walkontable/src/overlay/top.mjs +2 -2
  22. package/3rdparty/walkontable/src/overlay/topLeftCorner.js +3 -3
  23. package/3rdparty/walkontable/src/overlay/topLeftCorner.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlays.js +2 -0
  25. package/3rdparty/walkontable/src/overlays.mjs +1 -0
  26. package/3rdparty/walkontable/src/renderer/cells.js +1 -1
  27. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
  28. package/3rdparty/walkontable/src/renderer/colGroup.js +3 -3
  29. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  30. package/3rdparty/walkontable/src/renderer/columnHeaders.js +3 -3
  31. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  32. package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -1
  33. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
  34. package/3rdparty/walkontable/src/renderer/rows.js +3 -3
  35. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  36. package/3rdparty/walkontable/src/selection.js +5 -3
  37. package/3rdparty/walkontable/src/selection.mjs +3 -2
  38. package/3rdparty/walkontable/src/table/bottom.js +3 -3
  39. package/3rdparty/walkontable/src/table/bottom.mjs +2 -2
  40. package/3rdparty/walkontable/src/table/bottomLeftCorner.js +3 -3
  41. package/3rdparty/walkontable/src/table/bottomLeftCorner.mjs +2 -2
  42. package/3rdparty/walkontable/src/table/left.js +3 -3
  43. package/3rdparty/walkontable/src/table/left.mjs +2 -2
  44. package/3rdparty/walkontable/src/table/master.js +3 -3
  45. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  46. package/3rdparty/walkontable/src/table/top.js +3 -3
  47. package/3rdparty/walkontable/src/table/top.mjs +2 -2
  48. package/3rdparty/walkontable/src/table/topLeftCorner.js +3 -3
  49. package/3rdparty/walkontable/src/table/topLeftCorner.mjs +2 -2
  50. package/3rdparty/walkontable/src/table.js +5 -3
  51. package/3rdparty/walkontable/src/table.mjs +3 -2
  52. package/3rdparty/walkontable/src/utils/orderView/constants.js +1 -1
  53. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +3 -3
  54. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  55. package/CHANGELOG.md +72 -0
  56. package/LICENSE.txt +19 -22
  57. package/README.md +2 -1
  58. package/base.d.ts +1 -1
  59. package/base.js +16 -3
  60. package/base.mjs +14 -4
  61. package/cellTypes/autocompleteType/autocompleteType.d.ts +17 -0
  62. package/cellTypes/autocompleteType/autocompleteType.js +1 -1
  63. package/cellTypes/autocompleteType/index.d.ts +1 -0
  64. package/cellTypes/base.d.ts +14 -0
  65. package/cellTypes/checkboxType/checkboxType.d.ts +14 -0
  66. package/cellTypes/checkboxType/index.d.ts +1 -0
  67. package/cellTypes/dateType/dateType.d.ts +17 -0
  68. package/cellTypes/dateType/index.d.ts +1 -0
  69. package/cellTypes/dropdownType/dropdownType.d.ts +17 -0
  70. package/cellTypes/dropdownType/index.d.ts +1 -0
  71. package/cellTypes/handsontableType/handsontableType.d.ts +14 -0
  72. package/cellTypes/handsontableType/index.d.ts +1 -0
  73. package/cellTypes/index.d.ts +47 -0
  74. package/cellTypes/index.js +18 -2
  75. package/cellTypes/index.mjs +26 -9
  76. package/cellTypes/numericType/index.d.ts +1 -0
  77. package/cellTypes/numericType/numericType.d.ts +17 -0
  78. package/cellTypes/passwordType/index.d.ts +1 -0
  79. package/cellTypes/passwordType/passwordType.d.ts +14 -0
  80. package/cellTypes/registry.d.ts +18 -0
  81. package/cellTypes/registry.js +2 -2
  82. package/cellTypes/textType/index.d.ts +1 -0
  83. package/cellTypes/textType/textType.d.ts +14 -0
  84. package/cellTypes/timeType/index.d.ts +1 -0
  85. package/cellTypes/timeType/timeType.d.ts +17 -0
  86. package/common.d.ts +74 -0
  87. package/core.d.ts +159 -0
  88. package/core.js +143 -103
  89. package/core.mjs +141 -103
  90. package/{dataMap.js → dataMap/dataMap.js} +37 -35
  91. package/{dataMap.mjs → dataMap/dataMap.mjs} +37 -35
  92. package/dataMap/index.js +5 -1
  93. package/dataMap/index.mjs +3 -2
  94. package/dataMap/metaManager/index.js +54 -6
  95. package/dataMap/metaManager/index.mjs +51 -6
  96. package/dataMap/metaManager/lazyFactoryMap.js +3 -3
  97. package/dataMap/metaManager/lazyFactoryMap.mjs +3 -3
  98. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -0
  99. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
  100. package/dataMap/metaManager/metaLayers/globalMeta.js +2 -1
  101. package/dataMap/metaManager/metaLayers/globalMeta.mjs +2 -1
  102. package/dataMap/metaManager/metaSchema.js +2331 -871
  103. package/dataMap/metaManager/metaSchema.mjs +2331 -871
  104. package/dataMap/metaManager/mods/dynamicCellMeta.js +136 -0
  105. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +119 -0
  106. package/dataMap/metaManager/utils.js +3 -3
  107. package/dataSource.js +2 -0
  108. package/dataSource.mjs +1 -0
  109. package/dist/handsontable.css +309 -303
  110. package/dist/handsontable.full.css +309 -303
  111. package/dist/handsontable.full.js +50435 -45020
  112. package/dist/handsontable.full.min.css +25 -28
  113. package/dist/handsontable.full.min.js +181 -164
  114. package/dist/handsontable.js +31234 -28030
  115. package/dist/handsontable.min.css +25 -28
  116. package/dist/handsontable.min.js +22 -25
  117. package/editorManager.js +15 -12
  118. package/editorManager.mjs +15 -13
  119. package/editors/autocompleteEditor/autocompleteEditor.d.ts +29 -0
  120. package/editors/autocompleteEditor/autocompleteEditor.js +91 -87
  121. package/editors/autocompleteEditor/autocompleteEditor.mjs +89 -84
  122. package/editors/autocompleteEditor/index.d.ts +1 -0
  123. package/editors/autocompleteEditor/index.js +1 -1
  124. package/editors/baseEditor/baseEditor.d.ts +45 -0
  125. package/editors/baseEditor/baseEditor.js +8 -7
  126. package/editors/baseEditor/baseEditor.mjs +5 -5
  127. package/editors/baseEditor/index.d.ts +1 -0
  128. package/editors/baseEditor/index.js +1 -1
  129. package/editors/checkboxEditor/checkboxEditor.d.ts +12 -0
  130. package/editors/checkboxEditor/checkboxEditor.js +4 -4
  131. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  132. package/editors/checkboxEditor/index.d.ts +1 -0
  133. package/editors/checkboxEditor/index.js +1 -1
  134. package/editors/dateEditor/dateEditor.d.ts +18 -0
  135. package/editors/dateEditor/dateEditor.js +20 -20
  136. package/editors/dateEditor/dateEditor.mjs +19 -19
  137. package/editors/dateEditor/index.d.ts +1 -0
  138. package/editors/dateEditor/index.js +1 -1
  139. package/editors/dropdownEditor/dropdownEditor.d.ts +7 -0
  140. package/editors/dropdownEditor/dropdownEditor.js +5 -5
  141. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  142. package/editors/dropdownEditor/index.d.ts +1 -0
  143. package/editors/dropdownEditor/index.js +1 -1
  144. package/editors/handsontableEditor/handsontableEditor.d.ts +10 -0
  145. package/editors/handsontableEditor/handsontableEditor.js +4 -4
  146. package/editors/handsontableEditor/handsontableEditor.mjs +3 -3
  147. package/editors/handsontableEditor/index.d.ts +1 -0
  148. package/editors/index.d.ts +53 -0
  149. package/editors/index.js +19 -2
  150. package/editors/index.mjs +28 -10
  151. package/editors/numericEditor/index.d.ts +1 -0
  152. package/editors/numericEditor/numericEditor.d.ts +7 -0
  153. package/editors/numericEditor/numericEditor.js +3 -3
  154. package/editors/numericEditor/numericEditor.mjs +2 -2
  155. package/editors/passwordEditor/index.d.ts +1 -0
  156. package/editors/passwordEditor/passwordEditor.d.ts +7 -0
  157. package/editors/passwordEditor/passwordEditor.js +4 -4
  158. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  159. package/editors/registry.d.ts +29 -0
  160. package/editors/registry.js +2 -2
  161. package/editors/selectEditor/index.d.ts +1 -0
  162. package/editors/selectEditor/selectEditor.d.ts +16 -0
  163. package/editors/selectEditor/selectEditor.js +4 -4
  164. package/editors/selectEditor/selectEditor.mjs +3 -3
  165. package/editors/textEditor/index.d.ts +1 -0
  166. package/editors/textEditor/textEditor.d.ts +24 -0
  167. package/editors/textEditor/textEditor.js +4 -4
  168. package/editors/textEditor/textEditor.mjs +3 -3
  169. package/eventManager.d.ts +13 -0
  170. package/eventManager.js +1 -1
  171. package/handsontable-non-commercial-license.pdf +0 -0
  172. package/helpers/array.d.ts +18 -0
  173. package/helpers/array.js +10 -10
  174. package/helpers/array.mjs +1 -1
  175. package/helpers/browser.d.ts +25 -0
  176. package/helpers/browser.js +11 -9
  177. package/helpers/browser.mjs +1 -0
  178. package/helpers/console.d.ts +4 -0
  179. package/helpers/console.js +2 -2
  180. package/helpers/data.d.ts +13 -0
  181. package/helpers/data.js +7 -35
  182. package/helpers/data.mjs +1 -27
  183. package/helpers/date.d.ts +1 -0
  184. package/helpers/dom/element.d.ts +49 -0
  185. package/helpers/dom/element.js +44 -45
  186. package/helpers/dom/element.mjs +7 -8
  187. package/helpers/dom/event.d.ts +4 -0
  188. package/helpers/dom/event.js +2 -2
  189. package/helpers/dom/index.d.ts +2 -0
  190. package/helpers/feature.d.ts +11 -0
  191. package/helpers/feature.js +6 -6
  192. package/helpers/function.d.ts +10 -0
  193. package/helpers/function.js +43 -5
  194. package/helpers/function.mjs +35 -0
  195. package/helpers/index.d.ts +14 -0
  196. package/helpers/mixed.d.ts +5 -0
  197. package/helpers/mixed.js +5 -5
  198. package/helpers/mixed.mjs +2 -2
  199. package/helpers/number.d.ts +5 -0
  200. package/helpers/number.js +96 -17
  201. package/helpers/number.mjs +85 -17
  202. package/helpers/object.d.ts +16 -0
  203. package/helpers/object.js +11 -11
  204. package/helpers/string.d.ts +7 -0
  205. package/helpers/string.js +4 -4
  206. package/helpers/templateLiteralTag.d.ts +1 -0
  207. package/helpers/unicode.d.ts +73 -0
  208. package/helpers/unicode.js +49 -33
  209. package/helpers/unicode.mjs +44 -27
  210. package/i18n/constants.js +1 -1
  211. package/i18n/index.d.ts +2 -0
  212. package/i18n/index.js +2 -0
  213. package/i18n/languages/de-CH.d.ts +5 -0
  214. package/i18n/languages/de-DE.d.ts +5 -0
  215. package/i18n/languages/en-US.d.ts +5 -0
  216. package/i18n/languages/es-MX.d.ts +5 -0
  217. package/i18n/languages/fr-FR.d.ts +5 -0
  218. package/i18n/languages/index.d.ts +35 -0
  219. package/i18n/languages/it-IT.d.ts +5 -0
  220. package/i18n/languages/ja-JP.d.ts +5 -0
  221. package/i18n/languages/ko-KR.d.ts +5 -0
  222. package/i18n/languages/lv-LV.d.ts +5 -0
  223. package/i18n/languages/nb-NO.d.ts +5 -0
  224. package/i18n/languages/nl-NL.d.ts +5 -0
  225. package/i18n/languages/pl-PL.d.ts +5 -0
  226. package/i18n/languages/pt-BR.d.ts +5 -0
  227. package/i18n/languages/ru-RU.d.ts +5 -0
  228. package/i18n/languages/zh-CN.d.ts +5 -0
  229. package/i18n/languages/zh-TW.d.ts +5 -0
  230. package/i18n/phraseFormatters/index.js +1 -1
  231. package/i18n/registry.d.ts +13 -0
  232. package/i18n/registry.js +4 -4
  233. package/i18n/utils.js +1 -1
  234. package/index.d.ts +516 -0
  235. package/index.js +40 -112
  236. package/index.mjs +17 -90
  237. package/mixins/localHooks.js +17 -14
  238. package/mixins/localHooks.mjs +16 -13
  239. package/package.json +103 -10
  240. package/pluginHooks.d.ts +255 -0
  241. package/pluginHooks.js +132 -57
  242. package/pluginHooks.mjs +131 -57
  243. package/plugins/autoColumnSize/autoColumnSize.d.ts +27 -0
  244. package/plugins/autoColumnSize/autoColumnSize.js +20 -13
  245. package/plugins/autoColumnSize/autoColumnSize.mjs +18 -12
  246. package/plugins/autoColumnSize/index.d.ts +1 -0
  247. package/plugins/autoColumnSize/index.js +1 -1
  248. package/plugins/autoRowSize/autoRowSize.d.ts +27 -0
  249. package/plugins/autoRowSize/autoRowSize.js +22 -14
  250. package/plugins/autoRowSize/autoRowSize.mjs +19 -12
  251. package/plugins/autoRowSize/index.d.ts +1 -0
  252. package/plugins/autoRowSize/index.js +1 -1
  253. package/plugins/autofill/autofill.d.ts +18 -0
  254. package/plugins/autofill/autofill.js +10 -19
  255. package/plugins/autofill/autofill.mjs +7 -16
  256. package/plugins/autofill/index.d.ts +1 -0
  257. package/plugins/autofill/index.js +1 -1
  258. package/plugins/autofill/utils.js +1 -1
  259. package/plugins/base/base.d.ts +21 -0
  260. package/plugins/base/base.js +2 -2
  261. package/plugins/base/base.mjs +1 -1
  262. package/plugins/base/index.d.ts +1 -0
  263. package/plugins/base/index.js +1 -1
  264. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.d.ts +9 -0
  265. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -3
  266. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -2
  267. package/plugins/bindRowsWithHeaders/index.d.ts +1 -0
  268. package/plugins/bindRowsWithHeaders/index.js +1 -1
  269. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +4 -4
  270. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  271. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +6 -4
  272. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +4 -3
  273. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +22 -0
  274. package/plugins/collapsibleColumns/collapsibleColumns.js +13 -6
  275. package/plugins/collapsibleColumns/collapsibleColumns.mjs +11 -5
  276. package/plugins/collapsibleColumns/index.d.ts +1 -0
  277. package/plugins/collapsibleColumns/index.js +1 -1
  278. package/plugins/columnSorting/columnSorting.d.ts +30 -0
  279. package/plugins/columnSorting/columnSorting.js +19 -14
  280. package/plugins/columnSorting/columnSorting.mjs +16 -12
  281. package/plugins/columnSorting/columnStatesManager.js +5 -3
  282. package/plugins/columnSorting/columnStatesManager.mjs +4 -3
  283. package/plugins/columnSorting/index.d.ts +1 -0
  284. package/plugins/columnSorting/index.js +1 -1
  285. package/plugins/columnSorting/rootComparator.js +2 -0
  286. package/plugins/columnSorting/rootComparator.mjs +1 -0
  287. package/plugins/columnSorting/sortFunction/checkbox.js +1 -1
  288. package/plugins/columnSorting/sortFunction/date.js +1 -1
  289. package/plugins/columnSorting/sortFunction/default.js +4 -3
  290. package/plugins/columnSorting/sortFunction/default.mjs +3 -2
  291. package/plugins/columnSorting/sortFunction/numeric.js +1 -1
  292. package/plugins/columnSorting/sortService/engine.js +1 -1
  293. package/plugins/columnSorting/sortService/registry.js +1 -1
  294. package/plugins/columnSorting/utils.js +4 -4
  295. package/plugins/columnSorting/utils.mjs +1 -1
  296. package/plugins/columnSummary/columnSummary.d.ts +72 -0
  297. package/plugins/columnSummary/columnSummary.js +31 -12
  298. package/plugins/columnSummary/columnSummary.mjs +29 -10
  299. package/plugins/columnSummary/endpoints.js +6 -4
  300. package/plugins/columnSummary/endpoints.mjs +5 -4
  301. package/plugins/columnSummary/index.d.ts +1 -0
  302. package/plugins/columnSummary/index.js +1 -1
  303. package/plugins/comments/commentEditor.js +1 -1
  304. package/plugins/comments/commentEditor.mjs +1 -1
  305. package/plugins/comments/comments.d.ts +50 -0
  306. package/plugins/comments/comments.js +11 -6
  307. package/plugins/comments/comments.mjs +10 -5
  308. package/plugins/comments/displaySwitch.js +1 -1
  309. package/plugins/comments/displaySwitch.mjs +1 -1
  310. package/plugins/comments/index.d.ts +1 -0
  311. package/plugins/comments/index.js +1 -1
  312. package/plugins/contextMenu/commandExecutor.js +1 -1
  313. package/plugins/contextMenu/commandExecutor.mjs +1 -1
  314. package/plugins/contextMenu/contextMenu.d.ts +65 -0
  315. package/plugins/contextMenu/contextMenu.js +8 -7
  316. package/plugins/contextMenu/contextMenu.mjs +6 -5
  317. package/plugins/contextMenu/cursor.js +1 -1
  318. package/plugins/contextMenu/cursor.mjs +1 -1
  319. package/plugins/contextMenu/index.d.ts +1 -0
  320. package/plugins/contextMenu/index.js +1 -1
  321. package/plugins/contextMenu/itemsFactory.js +1 -1
  322. package/plugins/contextMenu/itemsFactory.mjs +1 -1
  323. package/plugins/contextMenu/menu.js +4 -4
  324. package/plugins/contextMenu/menu.mjs +3 -3
  325. package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
  326. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  327. package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -1
  328. package/plugins/contextMenu/predefinedItems/columnRight.js +1 -1
  329. package/plugins/contextMenu/predefinedItems/noItems.js +1 -1
  330. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
  331. package/plugins/contextMenu/predefinedItems/redo.js +1 -1
  332. package/plugins/contextMenu/predefinedItems/removeColumn.js +4 -2
  333. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +2 -1
  334. package/plugins/contextMenu/predefinedItems/removeRow.js +4 -2
  335. package/plugins/contextMenu/predefinedItems/removeRow.mjs +2 -1
  336. package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -1
  337. package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -1
  338. package/plugins/contextMenu/predefinedItems/separator.js +1 -1
  339. package/plugins/contextMenu/predefinedItems/undo.js +1 -1
  340. package/plugins/contextMenu/predefinedItems.js +2 -2
  341. package/plugins/contextMenu/utils.js +10 -10
  342. package/plugins/copyPaste/clipboardData.js +3 -0
  343. package/plugins/copyPaste/clipboardData.mjs +3 -0
  344. package/plugins/copyPaste/copyPaste.d.ts +35 -0
  345. package/plugins/copyPaste/copyPaste.js +13 -10
  346. package/plugins/copyPaste/copyPaste.mjs +11 -9
  347. package/plugins/copyPaste/focusableElement.js +1 -2
  348. package/plugins/copyPaste/focusableElement.mjs +1 -2
  349. package/plugins/copyPaste/index.d.ts +1 -0
  350. package/plugins/copyPaste/index.js +1 -1
  351. package/plugins/copyPaste/pasteEvent.js +3 -0
  352. package/plugins/copyPaste/pasteEvent.mjs +3 -0
  353. package/plugins/customBorders/customBorders.d.ts +38 -0
  354. package/plugins/customBorders/customBorders.js +11 -9
  355. package/plugins/customBorders/customBorders.mjs +8 -7
  356. package/plugins/customBorders/index.d.ts +1 -0
  357. package/plugins/customBorders/index.js +1 -1
  358. package/plugins/customBorders/utils.js +3 -3
  359. package/plugins/dragToScroll/dragToScroll.d.ts +15 -0
  360. package/plugins/dragToScroll/dragToScroll.js +5 -5
  361. package/plugins/dragToScroll/dragToScroll.mjs +3 -3
  362. package/plugins/dragToScroll/index.d.ts +1 -0
  363. package/plugins/dragToScroll/index.js +1 -1
  364. package/plugins/dropdownMenu/dropdownMenu.d.ts +24 -0
  365. package/plugins/dropdownMenu/dropdownMenu.js +9 -9
  366. package/plugins/dropdownMenu/dropdownMenu.mjs +7 -7
  367. package/plugins/dropdownMenu/index.d.ts +1 -0
  368. package/plugins/dropdownMenu/index.js +1 -1
  369. package/plugins/exportFile/dataProvider.js +3 -5
  370. package/plugins/exportFile/dataProvider.mjs +3 -5
  371. package/plugins/exportFile/exportFile.d.ts +12 -0
  372. package/plugins/exportFile/exportFile.js +6 -5
  373. package/plugins/exportFile/exportFile.mjs +4 -3
  374. package/plugins/exportFile/index.d.ts +1 -0
  375. package/plugins/exportFile/index.js +1 -1
  376. package/plugins/exportFile/typeFactory.js +2 -1
  377. package/plugins/exportFile/typeFactory.mjs +1 -0
  378. package/plugins/exportFile/types/_base.js +0 -1
  379. package/plugins/exportFile/types/_base.mjs +0 -1
  380. package/plugins/exportFile/types/csv.js +3 -4
  381. package/plugins/exportFile/types/csv.mjs +2 -3
  382. package/plugins/filters/component/_base.js +1 -1
  383. package/plugins/filters/component/_base.mjs +1 -1
  384. package/plugins/filters/component/actionBar.js +4 -4
  385. package/plugins/filters/component/actionBar.mjs +3 -3
  386. package/plugins/filters/component/condition.js +7 -5
  387. package/plugins/filters/component/condition.mjs +5 -4
  388. package/plugins/filters/component/operators.js +4 -4
  389. package/plugins/filters/component/operators.mjs +3 -3
  390. package/plugins/filters/component/value.js +13 -6
  391. package/plugins/filters/component/value.mjs +11 -5
  392. package/plugins/filters/condition/beginsWith.js +5 -3
  393. package/plugins/filters/condition/beginsWith.mjs +3 -2
  394. package/plugins/filters/condition/between.js +4 -2
  395. package/plugins/filters/condition/between.mjs +2 -1
  396. package/plugins/filters/condition/byValue.js +4 -2
  397. package/plugins/filters/condition/byValue.mjs +2 -1
  398. package/plugins/filters/condition/contains.js +5 -3
  399. package/plugins/filters/condition/contains.mjs +3 -2
  400. package/plugins/filters/condition/date/after.js +4 -2
  401. package/plugins/filters/condition/date/after.mjs +2 -1
  402. package/plugins/filters/condition/date/before.js +4 -2
  403. package/plugins/filters/condition/date/before.mjs +2 -1
  404. package/plugins/filters/condition/date/today.js +1 -1
  405. package/plugins/filters/condition/date/tomorrow.js +1 -1
  406. package/plugins/filters/condition/date/yesterday.js +1 -1
  407. package/plugins/filters/condition/empty.js +1 -1
  408. package/plugins/filters/condition/endsWith.js +5 -3
  409. package/plugins/filters/condition/endsWith.mjs +3 -2
  410. package/plugins/filters/condition/equal.js +5 -3
  411. package/plugins/filters/condition/equal.mjs +3 -2
  412. package/plugins/filters/condition/false.js +1 -1
  413. package/plugins/filters/condition/greaterThan.js +4 -2
  414. package/plugins/filters/condition/greaterThan.mjs +2 -1
  415. package/plugins/filters/condition/greaterThanOrEqual.js +4 -2
  416. package/plugins/filters/condition/greaterThanOrEqual.mjs +2 -1
  417. package/plugins/filters/condition/lessThan.js +4 -2
  418. package/plugins/filters/condition/lessThan.mjs +2 -1
  419. package/plugins/filters/condition/lessThanOrEqual.js +4 -2
  420. package/plugins/filters/condition/lessThanOrEqual.mjs +2 -1
  421. package/plugins/filters/condition/none.js +1 -1
  422. package/plugins/filters/condition/notBetween.js +1 -1
  423. package/plugins/filters/condition/notContains.js +1 -1
  424. package/plugins/filters/condition/notEmpty.js +1 -1
  425. package/plugins/filters/condition/notEqual.js +1 -1
  426. package/plugins/filters/condition/true.js +1 -1
  427. package/plugins/filters/conditionCollection.d.ts +32 -0
  428. package/plugins/filters/conditionCollection.js +8 -5
  429. package/plugins/filters/conditionCollection.mjs +6 -4
  430. package/plugins/filters/conditionRegisterer.js +1 -1
  431. package/plugins/filters/conditionUpdateObserver.d.ts +10 -0
  432. package/plugins/filters/conditionUpdateObserver.js +3 -1
  433. package/plugins/filters/conditionUpdateObserver.mjs +2 -1
  434. package/plugins/filters/constants.js +2 -1
  435. package/plugins/filters/constants.mjs +1 -0
  436. package/plugins/filters/dataFilter.js +1 -1
  437. package/plugins/filters/dataFilter.mjs +1 -1
  438. package/plugins/filters/filters.d.ts +56 -0
  439. package/plugins/filters/filters.js +19 -14
  440. package/plugins/filters/filters.mjs +17 -13
  441. package/plugins/filters/index.d.ts +1 -0
  442. package/plugins/filters/index.js +1 -1
  443. package/plugins/filters/logicalOperationRegisterer.js +1 -1
  444. package/plugins/filters/logicalOperations/conjunction.js +3 -3
  445. package/plugins/filters/logicalOperations/conjunction.mjs +1 -0
  446. package/plugins/filters/logicalOperations/disjunction.js +3 -3
  447. package/plugins/filters/logicalOperations/disjunction.mjs +1 -0
  448. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +3 -3
  449. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +1 -0
  450. package/plugins/filters/ui/_base.js +2 -3
  451. package/plugins/filters/ui/_base.mjs +2 -3
  452. package/plugins/filters/ui/input.js +3 -3
  453. package/plugins/filters/ui/input.mjs +3 -3
  454. package/plugins/filters/ui/link.js +3 -3
  455. package/plugins/filters/ui/link.mjs +3 -3
  456. package/plugins/filters/ui/multipleSelect.js +31 -5
  457. package/plugins/filters/ui/multipleSelect.mjs +30 -5
  458. package/plugins/filters/ui/radioInput.js +3 -3
  459. package/plugins/filters/ui/radioInput.mjs +3 -3
  460. package/plugins/filters/ui/select.js +3 -3
  461. package/plugins/filters/ui/select.mjs +3 -3
  462. package/plugins/filters/utils.js +3 -3
  463. package/plugins/formulas/engine/register.js +3 -3
  464. package/plugins/formulas/engine/settings.js +4 -4
  465. package/plugins/formulas/engine/settings.mjs +2 -3
  466. package/plugins/formulas/formulas.d.ts +31 -0
  467. package/plugins/formulas/formulas.js +286 -89
  468. package/plugins/formulas/formulas.mjs +279 -86
  469. package/plugins/formulas/index.d.ts +1 -0
  470. package/plugins/formulas/index.js +1 -1
  471. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +3 -1
  472. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -1
  473. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +4 -2
  474. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -1
  475. package/plugins/hiddenColumns/hiddenColumns.d.ts +21 -0
  476. package/plugins/hiddenColumns/hiddenColumns.js +37 -24
  477. package/plugins/hiddenColumns/hiddenColumns.mjs +36 -23
  478. package/plugins/hiddenColumns/index.d.ts +1 -0
  479. package/plugins/hiddenColumns/index.js +1 -1
  480. package/plugins/hiddenRows/contextMenuItem/hideRow.js +3 -1
  481. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -1
  482. package/plugins/hiddenRows/contextMenuItem/showRow.js +4 -2
  483. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -1
  484. package/plugins/hiddenRows/hiddenRows.d.ts +21 -0
  485. package/plugins/hiddenRows/hiddenRows.js +37 -25
  486. package/plugins/hiddenRows/hiddenRows.mjs +36 -24
  487. package/plugins/hiddenRows/index.d.ts +1 -0
  488. package/plugins/hiddenRows/index.js +1 -1
  489. package/plugins/index.d.ts +111 -0
  490. package/plugins/index.js +98 -58
  491. package/plugins/index.mjs +75 -34
  492. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +3 -1
  493. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +2 -1
  494. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +3 -1
  495. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +2 -1
  496. package/plugins/manualColumnFreeze/index.d.ts +1 -0
  497. package/plugins/manualColumnFreeze/index.js +1 -1
  498. package/plugins/manualColumnFreeze/manualColumnFreeze.d.ts +11 -0
  499. package/plugins/manualColumnFreeze/manualColumnFreeze.js +11 -6
  500. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +10 -5
  501. package/plugins/manualColumnMove/index.d.ts +1 -0
  502. package/plugins/manualColumnMove/index.js +1 -1
  503. package/plugins/manualColumnMove/manualColumnMove.d.ts +14 -0
  504. package/plugins/manualColumnMove/manualColumnMove.js +28 -23
  505. package/plugins/manualColumnMove/manualColumnMove.mjs +27 -22
  506. package/plugins/manualColumnMove/ui/_base.js +1 -1
  507. package/plugins/manualColumnMove/ui/_base.mjs +1 -1
  508. package/plugins/manualColumnMove/ui/backlight.js +4 -4
  509. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  510. package/plugins/manualColumnMove/ui/guideline.js +4 -4
  511. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  512. package/plugins/manualColumnResize/index.d.ts +1 -0
  513. package/plugins/manualColumnResize/index.js +1 -1
  514. package/plugins/manualColumnResize/manualColumnResize.d.ts +30 -0
  515. package/plugins/manualColumnResize/manualColumnResize.js +7 -6
  516. package/plugins/manualColumnResize/manualColumnResize.mjs +6 -5
  517. package/plugins/manualRowMove/index.d.ts +1 -0
  518. package/plugins/manualRowMove/index.js +1 -1
  519. package/plugins/manualRowMove/manualRowMove.d.ts +14 -0
  520. package/plugins/manualRowMove/manualRowMove.js +25 -22
  521. package/plugins/manualRowMove/manualRowMove.mjs +24 -21
  522. package/plugins/manualRowMove/ui/_base.js +1 -2
  523. package/plugins/manualRowMove/ui/_base.mjs +1 -2
  524. package/plugins/manualRowMove/ui/backlight.js +5 -5
  525. package/plugins/manualRowMove/ui/backlight.mjs +4 -4
  526. package/plugins/manualRowMove/ui/guideline.js +5 -5
  527. package/plugins/manualRowMove/ui/guideline.mjs +4 -4
  528. package/plugins/manualRowResize/index.d.ts +1 -0
  529. package/plugins/manualRowResize/index.js +1 -1
  530. package/plugins/manualRowResize/manualRowResize.d.ts +29 -0
  531. package/plugins/manualRowResize/manualRowResize.js +6 -5
  532. package/plugins/manualRowResize/manualRowResize.mjs +5 -4
  533. package/plugins/mergeCells/calculations/autofill.js +4 -3
  534. package/plugins/mergeCells/calculations/autofill.mjs +3 -3
  535. package/plugins/mergeCells/calculations/selection.js +1 -2
  536. package/plugins/mergeCells/calculations/selection.mjs +1 -2
  537. package/plugins/mergeCells/cellCoords.js +1 -1
  538. package/plugins/mergeCells/cellCoords.mjs +1 -1
  539. package/plugins/mergeCells/cellsCollection.js +5 -3
  540. package/plugins/mergeCells/cellsCollection.mjs +4 -3
  541. package/plugins/mergeCells/index.d.ts +1 -0
  542. package/plugins/mergeCells/index.js +1 -1
  543. package/plugins/mergeCells/mergeCells.d.ts +22 -0
  544. package/plugins/mergeCells/mergeCells.js +7 -4
  545. package/plugins/mergeCells/mergeCells.mjs +5 -3
  546. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  547. package/plugins/multiColumnSorting/domHelpers.mjs +1 -0
  548. package/plugins/multiColumnSorting/index.d.ts +1 -0
  549. package/plugins/multiColumnSorting/index.js +1 -1
  550. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -0
  551. package/plugins/multiColumnSorting/multiColumnSorting.js +11 -8
  552. package/plugins/multiColumnSorting/multiColumnSorting.mjs +9 -6
  553. package/plugins/multiColumnSorting/rootComparator.js +2 -0
  554. package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
  555. package/plugins/multipleSelectionHandles/index.d.ts +1 -0
  556. package/plugins/multipleSelectionHandles/index.js +1 -1
  557. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +21 -0
  558. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +7 -5
  559. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +5 -3
  560. package/plugins/nestedHeaders/index.d.ts +1 -0
  561. package/plugins/nestedHeaders/index.js +1 -1
  562. package/plugins/nestedHeaders/nestedHeaders.d.ts +17 -0
  563. package/plugins/nestedHeaders/nestedHeaders.js +41 -21
  564. package/plugins/nestedHeaders/nestedHeaders.mjs +38 -19
  565. package/plugins/nestedHeaders/stateManager/headersTree.js +11 -5
  566. package/plugins/nestedHeaders/stateManager/headersTree.mjs +10 -5
  567. package/plugins/nestedHeaders/stateManager/index.js +9 -6
  568. package/plugins/nestedHeaders/stateManager/index.mjs +9 -6
  569. package/plugins/nestedHeaders/stateManager/nodeModifiers/utils/tree.js +1 -1
  570. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -0
  571. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
  572. package/plugins/nestedHeaders/stateManager/sourceSettings.js +8 -4
  573. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +8 -4
  574. package/plugins/nestedHeaders/utils/ghostTable.js +10 -2
  575. package/plugins/nestedHeaders/utils/ghostTable.mjs +10 -2
  576. package/plugins/nestedRows/data/dataManager.js +40 -14
  577. package/plugins/nestedRows/data/dataManager.mjs +38 -13
  578. package/plugins/nestedRows/index.d.ts +1 -0
  579. package/plugins/nestedRows/index.js +1 -1
  580. package/plugins/nestedRows/nestedRows.d.ts +12 -0
  581. package/plugins/nestedRows/nestedRows.js +48 -34
  582. package/plugins/nestedRows/nestedRows.mjs +43 -32
  583. package/plugins/nestedRows/ui/_base.js +1 -2
  584. package/plugins/nestedRows/ui/_base.mjs +1 -2
  585. package/plugins/nestedRows/ui/collapsing.js +6 -5
  586. package/plugins/nestedRows/ui/collapsing.mjs +4 -4
  587. package/plugins/nestedRows/ui/contextMenu.js +2 -3
  588. package/plugins/nestedRows/ui/contextMenu.mjs +2 -3
  589. package/plugins/nestedRows/ui/headers.js +4 -5
  590. package/plugins/nestedRows/ui/headers.mjs +3 -4
  591. package/plugins/nestedRows/utils/rowMoveController.js +10 -9
  592. package/plugins/nestedRows/utils/rowMoveController.mjs +8 -8
  593. package/plugins/persistentState/index.d.ts +1 -0
  594. package/plugins/persistentState/persistentState.d.ts +13 -0
  595. package/plugins/persistentState/persistentState.js +13 -4
  596. package/plugins/persistentState/persistentState.mjs +12 -3
  597. package/plugins/persistentState/storage.js +1 -1
  598. package/plugins/persistentState/storage.mjs +1 -1
  599. package/plugins/registry.d.ts +9 -0
  600. package/plugins/registry.js +4 -2
  601. package/plugins/registry.mjs +2 -1
  602. package/plugins/search/index.d.ts +1 -0
  603. package/plugins/search/search.d.ts +28 -0
  604. package/plugins/search/search.js +7 -6
  605. package/plugins/search/search.mjs +7 -6
  606. package/plugins/touchScroll/index.d.ts +1 -0
  607. package/plugins/touchScroll/touchScroll.d.ts +13 -0
  608. package/plugins/touchScroll/touchScroll.js +9 -9
  609. package/plugins/touchScroll/touchScroll.mjs +8 -8
  610. package/plugins/trimRows/index.d.ts +1 -0
  611. package/plugins/trimRows/trimRows.d.ts +17 -0
  612. package/plugins/trimRows/trimRows.js +3 -2
  613. package/plugins/trimRows/trimRows.mjs +3 -2
  614. package/plugins/undoRedo/index.d.ts +1 -0
  615. package/plugins/undoRedo/undoRedo.d.ts +49 -0
  616. package/plugins/undoRedo/undoRedo.js +28 -30
  617. package/plugins/undoRedo/undoRedo.mjs +26 -29
  618. package/registry.d.ts +6 -0
  619. package/registry.js +46 -0
  620. package/registry.mjs +27 -0
  621. package/renderers/autocompleteRenderer/autocompleteRenderer.d.ts +5 -0
  622. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  623. package/renderers/autocompleteRenderer/index.d.ts +1 -0
  624. package/renderers/base.d.ts +3 -0
  625. package/renderers/baseRenderer/baseRenderer.d.ts +5 -0
  626. package/renderers/baseRenderer/baseRenderer.js +1 -1
  627. package/renderers/baseRenderer/index.d.ts +1 -0
  628. package/renderers/checkboxRenderer/checkboxRenderer.d.ts +5 -0
  629. package/renderers/checkboxRenderer/checkboxRenderer.js +3 -5
  630. package/renderers/checkboxRenderer/checkboxRenderer.mjs +3 -4
  631. package/renderers/checkboxRenderer/index.d.ts +1 -0
  632. package/renderers/htmlRenderer/htmlRenderer.d.ts +5 -0
  633. package/renderers/htmlRenderer/htmlRenderer.js +1 -1
  634. package/renderers/htmlRenderer/index.d.ts +1 -0
  635. package/renderers/index.d.ts +42 -0
  636. package/renderers/index.js +16 -2
  637. package/renderers/index.mjs +22 -7
  638. package/renderers/numericRenderer/index.d.ts +1 -0
  639. package/renderers/numericRenderer/numericRenderer.d.ts +5 -0
  640. package/renderers/numericRenderer/numericRenderer.js +1 -1
  641. package/renderers/passwordRenderer/index.d.ts +1 -0
  642. package/renderers/passwordRenderer/passwordRenderer.d.ts +5 -0
  643. package/renderers/passwordRenderer/passwordRenderer.js +1 -1
  644. package/renderers/registry.d.ts +18 -0
  645. package/renderers/registry.js +3 -2
  646. package/renderers/textRenderer/index.d.ts +1 -0
  647. package/renderers/textRenderer/textRenderer.d.ts +5 -0
  648. package/renderers/textRenderer/textRenderer.js +1 -1
  649. package/selection/highlight/constants.js +1 -1
  650. package/selection/highlight/highlight.js +7 -5
  651. package/selection/highlight/highlight.mjs +5 -4
  652. package/selection/highlight/types/activeHeader.js +2 -0
  653. package/selection/highlight/types/activeHeader.mjs +1 -0
  654. package/selection/highlight/types/area.js +2 -0
  655. package/selection/highlight/types/area.mjs +1 -0
  656. package/selection/highlight/types/cell.js +2 -0
  657. package/selection/highlight/types/cell.mjs +1 -0
  658. package/selection/highlight/types/customSelection.js +2 -0
  659. package/selection/highlight/types/customSelection.mjs +1 -0
  660. package/selection/highlight/types/fill.js +2 -0
  661. package/selection/highlight/types/fill.mjs +1 -0
  662. package/selection/highlight/types/header.js +2 -0
  663. package/selection/highlight/types/header.mjs +1 -0
  664. package/selection/highlight/types/index.js +2 -0
  665. package/selection/highlight/types/index.mjs +1 -0
  666. package/selection/highlight/visualSelection.js +7 -5
  667. package/selection/highlight/visualSelection.mjs +5 -4
  668. package/selection/index.d.ts +5 -0
  669. package/selection/index.js +2 -0
  670. package/selection/mouseEventHandler.js +4 -4
  671. package/selection/mouseEventHandler.mjs +3 -3
  672. package/selection/range.js +5 -5
  673. package/selection/range.mjs +4 -4
  674. package/selection/selection.js +18 -9
  675. package/selection/selection.mjs +17 -9
  676. package/selection/transformation.js +3 -2
  677. package/selection/transformation.mjs +3 -2
  678. package/selection/utils.js +6 -4
  679. package/selection/utils.mjs +3 -2
  680. package/settings.d.ts +208 -0
  681. package/tableView.js +20 -14
  682. package/tableView.mjs +19 -14
  683. package/translations/changesObservable/observable.js +10 -5
  684. package/translations/changesObservable/observable.mjs +10 -5
  685. package/translations/changesObservable/observer.js +6 -1
  686. package/translations/changesObservable/observer.mjs +6 -1
  687. package/translations/changesObservable/utils.js +1 -0
  688. package/translations/changesObservable/utils.mjs +1 -0
  689. package/translations/index.d.ts +1 -0
  690. package/translations/index.js +3 -1
  691. package/translations/indexMapper.d.ts +45 -0
  692. package/translations/indexMapper.js +8 -3
  693. package/translations/indexMapper.mjs +6 -2
  694. package/translations/mapCollections/aggregatedCollection.js +3 -3
  695. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  696. package/translations/mapCollections/index.js +2 -0
  697. package/translations/mapCollections/mapCollection.js +1 -1
  698. package/translations/maps/hidingMap.js +3 -3
  699. package/translations/maps/hidingMap.mjs +2 -2
  700. package/translations/maps/indexMap.d.ts +10 -0
  701. package/translations/maps/indexesSequence.js +4 -4
  702. package/translations/maps/indexesSequence.mjs +3 -3
  703. package/translations/maps/linkedPhysicalIndexToValueMap.js +4 -2
  704. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +3 -2
  705. package/translations/maps/physicalIndexToValueMap.js +4 -4
  706. package/translations/maps/physicalIndexToValueMap.mjs +3 -3
  707. package/translations/maps/trimmingMap.js +3 -3
  708. package/translations/maps/trimmingMap.mjs +2 -2
  709. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  710. package/translations/maps/utils/actionsOnIndexes.mjs +1 -0
  711. package/translations/maps/utils/indexesSequence.js +2 -0
  712. package/translations/maps/utils/indexesSequence.mjs +1 -0
  713. package/translations/maps/utils/physicallyIndexed.js +2 -0
  714. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  715. package/utils/dataStructures/priorityMap.js +4 -2
  716. package/utils/dataStructures/priorityMap.mjs +2 -1
  717. package/utils/dataStructures/tree.js +3 -1
  718. package/utils/dataStructures/tree.mjs +1 -0
  719. package/utils/dataStructures/uniqueMap.js +3 -1
  720. package/utils/dataStructures/uniqueMap.mjs +2 -1
  721. package/utils/dataStructures/uniqueSet.js +2 -0
  722. package/utils/dataStructures/uniqueSet.mjs +1 -0
  723. package/utils/ghostTable.js +5 -4
  724. package/utils/ghostTable.mjs +3 -3
  725. package/utils/interval.js +1 -2
  726. package/utils/interval.mjs +0 -1
  727. package/utils/parseTable.d.ts +5 -0
  728. package/utils/parseTable.js +2 -2
  729. package/utils/parseTable.mjs +1 -1
  730. package/utils/rootInstance.js +3 -2
  731. package/utils/samplesGenerator.js +0 -1
  732. package/utils/samplesGenerator.mjs +0 -1
  733. package/utils/staticRegister.js +3 -1
  734. package/utils/staticRegister.mjs +1 -0
  735. package/validators/autocompleteValidator/autocompleteValidator.d.ts +5 -0
  736. package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
  737. package/validators/autocompleteValidator/index.d.ts +1 -0
  738. package/validators/base.d.ts +6 -0
  739. package/validators/dateValidator/dateValidator.d.ts +5 -0
  740. package/validators/dateValidator/dateValidator.js +2 -2
  741. package/validators/dateValidator/index.d.ts +1 -0
  742. package/validators/index.d.ts +33 -0
  743. package/validators/index.js +13 -2
  744. package/validators/index.mjs +16 -4
  745. package/validators/numericValidator/index.d.ts +1 -0
  746. package/validators/numericValidator/numericValidator.d.ts +5 -0
  747. package/validators/numericValidator/numericValidator.js +1 -1
  748. package/validators/registry.d.ts +18 -0
  749. package/validators/registry.js +3 -2
  750. package/validators/timeValidator/index.d.ts +1 -0
  751. package/validators/timeValidator/timeValidator.d.ts +5 -0
  752. package/validators/timeValidator/timeValidator.js +3 -1
  753. package/validators/timeValidator/timeValidator.mjs +1 -0
  754. package/handsontable-general-terms.pdf +0 -0
  755. package/handsontable.d.ts +0 -2616
  756. package/plugins/formulas/autofill.js +0 -180
  757. package/plugins/formulas/autofill.mjs +0 -172
@@ -6,6 +6,10 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
6
6
 
7
7
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
8
8
 
9
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
10
+
11
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
+
9
13
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10
14
 
11
15
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -16,14 +20,14 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
16
20
 
17
21
  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; }
18
22
 
19
- function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
23
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20
24
 
21
25
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
26
 
23
27
  import "core-js/modules/es.array.concat.js";
28
+ import "core-js/modules/es.object.to-string.js";
24
29
  import "core-js/modules/web.dom-collections.for-each.js";
25
30
  import "core-js/modules/es.array.iterator.js";
26
- import "core-js/modules/es.object.to-string.js";
27
31
  import "core-js/modules/es.set.js";
28
32
  import "core-js/modules/es.string.iterator.js";
29
33
  import "core-js/modules/web.dom-collections.iterator.js";
@@ -44,6 +48,10 @@ import "core-js/modules/es.symbol.iterator.js";
44
48
  import "core-js/modules/es.array.slice.js";
45
49
  import "core-js/modules/es.function.name.js";
46
50
  import "core-js/modules/es.array.from.js";
51
+ import "core-js/modules/es.regexp.exec.js";
52
+ import "core-js/modules/es.object.keys.js";
53
+ import "core-js/modules/es.array.filter.js";
54
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
47
55
 
48
56
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
49
57
 
@@ -51,7 +59,7 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
51
59
 
52
60
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
53
61
 
54
- function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
62
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
55
63
 
56
64
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
57
65
 
@@ -61,7 +69,7 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func
61
69
 
62
70
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
63
71
 
64
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
72
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
65
73
 
66
74
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
67
75
 
@@ -71,6 +79,10 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
71
79
 
72
80
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
73
81
 
82
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
83
+
84
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
85
+
74
86
  function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
75
87
 
76
88
  function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
@@ -82,9 +94,9 @@ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!priva
82
94
  function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
83
95
 
84
96
  import { BasePlugin } from "../base/index.mjs";
85
- import { createAutofillHooks } from "./autofill.mjs";
86
97
  import staticRegister from "../../utils/staticRegister.mjs";
87
98
  import { error, warn } from "../../helpers/console.mjs";
99
+ import { isNumeric } from "../../helpers/number.mjs";
88
100
  import { isDefined, isUndefined } from "../../helpers/mixed.mjs";
89
101
  import { setupEngine, setupSheet, unregisterEngine, getRegisteredHotInstances } from "./engine/register.mjs";
90
102
  import { isEscapedFormulaExpression, unescapeFormulaExpression } from "./utils.mjs";
@@ -94,20 +106,32 @@ import { toUpperCaseFirst } from "../../helpers/string.mjs";
94
106
  import Hooks from "../../pluginHooks.mjs";
95
107
  export var PLUGIN_KEY = 'formulas';
96
108
  export var PLUGIN_PRIORITY = 260;
109
+ var ROW_MOVE_UNDO_REDO_NAME = 'row_move';
97
110
  Hooks.getSingleton().register('afterNamedExpressionAdded');
98
111
  Hooks.getSingleton().register('afterNamedExpressionRemoved');
99
112
  Hooks.getSingleton().register('afterSheetAdded');
100
113
  Hooks.getSingleton().register('afterSheetRemoved');
101
114
  Hooks.getSingleton().register('afterSheetRenamed');
102
- Hooks.getSingleton().register('afterFormulasValuesUpdate');
115
+ Hooks.getSingleton().register('afterFormulasValuesUpdate'); // This function will be used for detecting changes coming from the `UndoRedo` plugin. This kind of change won't be
116
+ // handled by whole body of listeners and therefore won't change undo/redo stack inside engine provided by HyperFormula.
117
+ // HyperFormula's `undo` and `redo` methods will do it instead. Please keep in mind that undo/redo stacks inside
118
+ // instances of Handsontable and HyperFormula should be synced (number of actions should be the same).
119
+
120
+ var isBlockedSource = function isBlockedSource(source) {
121
+ return source === 'UndoRedo.undo' || source === 'UndoRedo.redo' || source === 'auto';
122
+ };
103
123
  /**
104
124
  * This plugin allows you to perform Excel-like calculations in your business applications. It does it by an
105
125
  * integration with our other product, [HyperFormula](https://github.com/handsontable/hyperformula/), which is a
106
126
  * powerful calculation engine with an extensive number of features.
107
127
  *
128
+ * To test out HyperFormula, see [this guide](@/guides/formulas/formula-calculation.md#available-functions).
129
+ *
108
130
  * @plugin Formulas
131
+ * @class Formulas
109
132
  */
110
133
 
134
+
111
135
  var _internalOperationPending = /*#__PURE__*/new WeakMap();
112
136
 
113
137
  var _hotWasInitializedWithEmptyData = /*#__PURE__*/new WeakMap();
@@ -130,17 +154,17 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
130
154
 
131
155
  _this = _super.call.apply(_super, [this].concat(_args));
132
156
 
133
- _internalOperationPending.set(_assertThisInitialized(_this), {
157
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _internalOperationPending, {
134
158
  writable: true,
135
159
  value: false
136
160
  });
137
161
 
138
- _hotWasInitializedWithEmptyData.set(_assertThisInitialized(_this), {
162
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _hotWasInitializedWithEmptyData, {
139
163
  writable: true,
140
164
  value: false
141
165
  });
142
166
 
143
- _engineListeners.set(_assertThisInitialized(_this), {
167
+ _classPrivateFieldInitSpec(_assertThisInitialized(_this), _engineListeners, {
144
168
  writable: true,
145
169
  value: [['valuesUpdated', function () {
146
170
  var _this2;
@@ -225,7 +249,11 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
225
249
 
226
250
 
227
251
  if (this.sheetName !== null && !this.engine.doesSheetExist(this.sheetName)) {
228
- this.sheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
252
+ var newSheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
253
+
254
+ if (newSheetName !== false) {
255
+ this.sheetName = newSheetName;
256
+ }
229
257
  }
230
258
 
231
259
  this.addHook('beforeLoadData', function () {
@@ -275,10 +303,31 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
275
303
  });
276
304
  this.addHook('afterRemoveCol', function () {
277
305
  return _this8.onAfterRemoveCol.apply(_this8, arguments);
306
+ }); // Handling undo actions on data just using HyperFormula's UndoRedo mechanism
307
+
308
+ this.addHook('beforeUndo', function (action) {
309
+ // TODO: Move action isn't handled by HyperFormula.
310
+ if ((action === null || action === void 0 ? void 0 : action.actionType) === ROW_MOVE_UNDO_REDO_NAME) {
311
+ return;
312
+ }
313
+
314
+ _this8.engine.undo();
315
+ }); // Handling redo actions on data just using HyperFormula's UndoRedo mechanism
316
+
317
+ this.addHook('beforeRedo', function (action) {
318
+ // TODO: Move action isn't handled by HyperFormula.
319
+ if ((action === null || action === void 0 ? void 0 : action.actionType) === ROW_MOVE_UNDO_REDO_NAME) {
320
+ return;
321
+ }
322
+
323
+ _this8.engine.redo();
324
+ });
325
+ this.addHook('afterDetachChild', function () {
326
+ return _this8.onAfterDetachChild.apply(_this8, arguments);
327
+ });
328
+ this.addHook('beforeAutofill', function () {
329
+ return _this8.onBeforeAutofill.apply(_this8, arguments);
278
330
  });
279
- var autofillHooks = createAutofillHooks(this);
280
- this.addHook('beforeAutofill', autofillHooks.beforeAutofill);
281
- this.addHook('afterAutofill', autofillHooks.afterAutofill);
282
331
 
283
332
  _classPrivateFieldGet(this, _engineListeners).forEach(function (_ref) {
284
333
  var _ref2 = _slicedToArray(_ref, 2),
@@ -308,6 +357,7 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
308
357
  });
309
358
 
310
359
  unregisterEngine(this.engine, this.hot);
360
+ this.engine = null;
311
361
 
312
362
  _get(_getPrototypeOf(Formulas.prototype), "disablePlugin", this).call(this);
313
363
  }
@@ -364,6 +414,7 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
364
414
  _classPrivateFieldSet(this, _engineListeners, null);
365
415
 
366
416
  unregisterEngine(this.engine, this.hot);
417
+ this.engine = null;
367
418
 
368
419
  _get(_getPrototypeOf(Formulas.prototype), "destroy", this).call(this);
369
420
  }
@@ -453,7 +504,7 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
453
504
  var actualSheetName = this.engine.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : void 0);
454
505
 
455
506
  if (sheetData) {
456
- this.engine.setSheetContent(actualSheetName, sheetData);
507
+ this.engine.setSheetContent(this.engine.getSheetId(actualSheetName), sheetData);
457
508
  }
458
509
 
459
510
  return actualSheetName;
@@ -490,18 +541,26 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
490
541
  * @param {number} row Visual row index.
491
542
  * @param {number} column Visual column index.
492
543
  * @param {number} [sheet] The target sheet id, defaults to the current sheet.
493
- * @returns {string} Possible values: 'FORMULA' | 'VALUE' | 'MATRIX' | 'EMPTY'.
544
+ * @returns {string} Possible values: 'FORMULA' | 'VALUE' | 'ARRAYFORMULA' | 'EMPTY'.
494
545
  */
495
546
 
496
547
  }, {
497
548
  key: "getCellType",
498
549
  value: function getCellType(row, column) {
499
550
  var sheet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.sheetId;
500
- return this.engine.getCellType({
501
- sheet: sheet,
502
- row: this.hot.toPhysicalRow(row),
503
- col: this.hot.toPhysicalColumn(column)
504
- });
551
+ var physicalRow = this.hot.toPhysicalRow(row);
552
+ var physicalColumn = this.hot.toPhysicalColumn(column);
553
+
554
+ if (physicalRow !== null && physicalColumn !== null) {
555
+ return this.engine.getCellType({
556
+ sheet: sheet,
557
+ row: physicalRow,
558
+ col: physicalColumn
559
+ });
560
+ } else {
561
+ // Should return `EMPTY` when out of bounds (according to the test cases).
562
+ return 'EMPTY';
563
+ }
505
564
  }
506
565
  /**
507
566
  * Returns `true` if under specified visual coordinates is formula.
@@ -516,8 +575,18 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
516
575
  key: "isFormulaCellType",
517
576
  value: function isFormulaCellType(row, column) {
518
577
  var sheet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.sheetId;
519
- var cellType = this.getCellType(row, column, sheet);
520
- return cellType === 'FORMULA' || cellType === 'MATRIX';
578
+ var physicalRow = this.hot.toPhysicalRow(row);
579
+ var physicalColumn = this.hot.toPhysicalColumn(column);
580
+
581
+ if (physicalRow === null || physicalColumn === null) {
582
+ return false;
583
+ }
584
+
585
+ return this.engine.doesCellHaveFormula({
586
+ sheet: sheet,
587
+ row: physicalRow,
588
+ col: physicalColumn
589
+ });
521
590
  }
522
591
  /**
523
592
  * Renders dependent sheets (handsontable instances) based on the changes - list of the
@@ -666,6 +735,44 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
666
735
 
667
736
  return value;
668
737
  }
738
+ /**
739
+ * `onBeforeAutofill` hook callback.
740
+ *
741
+ * @private
742
+ * @param {Array[]} fillData The data that was used to fill the `targetRange`. If `beforeAutofill` was used
743
+ * and returned `[[]]`, this will be the same object that was returned from `beforeAutofill`.
744
+ * @param {CellRange} sourceRange The range values will be filled from.
745
+ * @param {CellRange} targetRange The range new values will be filled into.
746
+ * @returns {boolean|*}
747
+ */
748
+
749
+ }, {
750
+ key: "onBeforeAutofill",
751
+ value: function onBeforeAutofill(fillData, sourceRange, targetRange) {
752
+ var _this13 = this;
753
+
754
+ var withSheetId = function withSheetId(range) {
755
+ return _objectSpread(_objectSpread({}, range), {}, {
756
+ sheet: _this13.sheetId
757
+ });
758
+ };
759
+
760
+ var engineSourceRange = {
761
+ start: withSheetId(sourceRange.getTopLeftCorner()),
762
+ end: withSheetId(sourceRange.getBottomRightCorner())
763
+ };
764
+ var engineTargetRange = {
765
+ start: withSheetId(targetRange.getTopLeftCorner()),
766
+ end: withSheetId(targetRange.getBottomRightCorner())
767
+ }; // Blocks the autofill operation if HyperFormula says that at least one of
768
+ // the underlying cell's contents cannot be set.
769
+
770
+ if (this.engine.isItPossibleToSetCellContents(engineTargetRange) === false) {
771
+ return false;
772
+ }
773
+
774
+ return this.engine.getFillRangeData(engineSourceRange, engineTargetRange);
775
+ }
669
776
  /**
670
777
  * `beforeLoadData` hook callback.
671
778
  *
@@ -711,10 +818,10 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
711
818
  if (!_classPrivateFieldGet(this, _hotWasInitializedWithEmptyData)) {
712
819
  var sourceDataArray = this.hot.getSourceDataArray();
713
820
 
714
- if (this.engine.isItPossibleToReplaceSheetContent(this.sheetName, sourceDataArray)) {
821
+ if (this.engine.isItPossibleToReplaceSheetContent(this.sheetId, sourceDataArray)) {
715
822
  _classPrivateFieldSet(this, _internalOperationPending, true);
716
823
 
717
- var dependentCells = this.engine.setSheetContent(this.sheetName, this.hot.getSourceDataArray());
824
+ var dependentCells = this.engine.setSheetContent(this.sheetId, this.hot.getSourceDataArray());
718
825
  this.renderDependentSheets(dependentCells);
719
826
 
720
827
  _classPrivateFieldSet(this, _internalOperationPending, false);
@@ -739,18 +846,23 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
739
846
  value: function onModifyData(row, column, valueHolder, ioMode) {
740
847
  if (ioMode !== 'get' || _classPrivateFieldGet(this, _internalOperationPending) || this.sheetName === null || !this.engine.doesSheetExist(this.sheetName)) {
741
848
  return;
742
- } // `column` is here as visual index because of inconsistencies related to hook execution in `src/dataMap`.
849
+ }
743
850
 
851
+ var visualRow = this.hot.toVisualRow(row); // `column` is here as visual index because of inconsistencies related to hook execution in `src/dataMap`.
744
852
 
745
- var isFormulaCellType = this.isFormulaCellType(this.hot.toVisualRow(row), column);
853
+ var isFormulaCellType = this.isFormulaCellType(visualRow, column);
746
854
 
747
855
  if (!isFormulaCellType) {
748
- if (isEscapedFormulaExpression(valueHolder.value)) {
749
- valueHolder.value = unescapeFormulaExpression(valueHolder.value);
750
- }
856
+ var cellType = this.getCellType(visualRow, column);
751
857
 
752
- return;
753
- } // `toPhysicalColumn` is here because of inconsistencies related to hook execution in `src/dataMap`.
858
+ if (cellType !== 'ARRAY') {
859
+ if (isEscapedFormulaExpression(valueHolder.value)) {
860
+ valueHolder.value = unescapeFormulaExpression(valueHolder.value);
861
+ }
862
+
863
+ return;
864
+ }
865
+ } // `toPhysicalColumn` is here because of inconsistencies related to hook execution in `DataMap`.
754
866
 
755
867
 
756
868
  var address = {
@@ -781,12 +893,17 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
781
893
  return;
782
894
  }
783
895
 
896
+ var visualRow = this.hot.toVisualRow(row);
784
897
  var visualColumn = this.hot.propToCol(columnOrProp); // `column` is here as visual index because of inconsistencies related to hook execution in `src/dataMap`.
785
898
 
786
- var isFormulaCellType = this.isFormulaCellType(this.hot.toVisualRow(row), visualColumn);
899
+ var isFormulaCellType = this.isFormulaCellType(visualRow, visualColumn);
787
900
 
788
901
  if (!isFormulaCellType) {
789
- return;
902
+ var cellType = this.getCellType(visualRow, visualColumn);
903
+
904
+ if (cellType !== 'ARRAY') {
905
+ return;
906
+ }
790
907
  }
791
908
 
792
909
  var dimensions = this.engine.getSheetDimensions(this.engine.getSheetId(this.sheetName)); // Don't actually change the source data if HyperFormula is not
@@ -811,42 +928,49 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
811
928
  *
812
929
  * @private
813
930
  * @param {Array[]} changes An array of changes in format [[row, prop, oldValue, value], ...].
931
+ * @param {string} [source] String that identifies source of hook call
932
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
814
933
  */
815
934
 
816
935
  }, {
817
936
  key: "onAfterSetDataAtCell",
818
- value: function onAfterSetDataAtCell(changes) {
819
- var _this13 = this;
937
+ value: function onAfterSetDataAtCell(changes, source) {
938
+ var _this14 = this;
939
+
940
+ if (isBlockedSource(source)) {
941
+ return;
942
+ }
820
943
 
821
- var dependentCells = [];
822
944
  var outOfBoundsChanges = [];
823
945
  var changedCells = [];
824
- changes.forEach(function (_ref9) {
825
- var _ref10 = _slicedToArray(_ref9, 4),
826
- row = _ref10[0],
827
- prop = _ref10[1],
828
- newValue = _ref10[3];
946
+ var dependentCells = this.engine.batch(function () {
947
+ changes.forEach(function (_ref9) {
948
+ var _ref10 = _slicedToArray(_ref9, 4),
949
+ row = _ref10[0],
950
+ prop = _ref10[1],
951
+ newValue = _ref10[3];
829
952
 
830
- var column = _this13.hot.propToCol(prop);
953
+ var column = _this14.hot.propToCol(prop);
831
954
 
832
- var physicalRow = _this13.hot.toPhysicalRow(row);
955
+ var physicalRow = _this14.hot.toPhysicalRow(row);
833
956
 
834
- var physicalColumn = _this13.hot.toPhysicalColumn(column);
957
+ var physicalColumn = _this14.hot.toPhysicalColumn(column);
835
958
 
836
- var address = {
837
- row: physicalRow,
838
- col: physicalColumn,
839
- sheet: _this13.sheetId
840
- };
959
+ var address = {
960
+ row: physicalRow,
961
+ col: physicalColumn,
962
+ sheet: _this14.sheetId
963
+ };
841
964
 
842
- if (physicalRow !== null && physicalColumn !== null) {
843
- dependentCells.push.apply(dependentCells, _toConsumableArray(_this13.syncChangeWithEngine(row, column, newValue)));
844
- } else {
845
- outOfBoundsChanges.push([row, column, newValue]);
846
- }
965
+ if (physicalRow !== null && physicalColumn !== null) {
966
+ _this14.syncChangeWithEngine(row, column, newValue);
967
+ } else {
968
+ outOfBoundsChanges.push([row, column, newValue]);
969
+ }
847
970
 
848
- changedCells.push({
849
- address: address
971
+ changedCells.push({
972
+ address: address
973
+ });
850
974
  });
851
975
  });
852
976
 
@@ -854,17 +978,18 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
854
978
  // Workaround for rows/columns being created two times (by HOT and the engine).
855
979
  // (unfortunately, this requires an extra re-render)
856
980
  this.hot.addHookOnce('afterChange', function () {
857
- var outOfBoundsDependentCells = [];
858
- outOfBoundsChanges.forEach(function (_ref11) {
859
- var _ref12 = _slicedToArray(_ref11, 3),
860
- row = _ref12[0],
861
- column = _ref12[1],
862
- newValue = _ref12[2];
863
-
864
- outOfBoundsDependentCells.push.apply(outOfBoundsDependentCells, _toConsumableArray(_this13.syncChangeWithEngine(row, column, newValue)));
981
+ var outOfBoundsDependentCells = _this14.engine.batch(function () {
982
+ outOfBoundsChanges.forEach(function (_ref11) {
983
+ var _ref12 = _slicedToArray(_ref11, 3),
984
+ row = _ref12[0],
985
+ column = _ref12[1],
986
+ newValue = _ref12[2];
987
+
988
+ _this14.syncChangeWithEngine(row, column, newValue);
989
+ });
865
990
  });
866
991
 
867
- _this13.renderDependentSheets(outOfBoundsDependentCells, true);
992
+ _this14.renderDependentSheets(outOfBoundsDependentCells, true);
868
993
  });
869
994
  }
870
995
 
@@ -876,28 +1001,40 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
876
1001
  *
877
1002
  * @private
878
1003
  * @param {Array[]} changes An array of changes in format [[row, column, oldValue, value], ...].
1004
+ * @param {string} [source] String that identifies source of hook call
1005
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
879
1006
  */
880
1007
 
881
1008
  }, {
882
1009
  key: "onAfterSetSourceDataAtCell",
883
- value: function onAfterSetSourceDataAtCell(changes) {
884
- var _this14 = this;
1010
+ value: function onAfterSetSourceDataAtCell(changes, source) {
1011
+ var _this15 = this;
1012
+
1013
+ if (isBlockedSource(source)) {
1014
+ return;
1015
+ }
885
1016
 
886
1017
  var dependentCells = [];
887
1018
  var changedCells = [];
888
1019
  changes.forEach(function (_ref13) {
889
1020
  var _ref14 = _slicedToArray(_ref13, 4),
890
1021
  row = _ref14[0],
891
- column = _ref14[1],
1022
+ prop = _ref14[1],
892
1023
  newValue = _ref14[3];
893
1024
 
1025
+ var column = _this15.hot.propToCol(prop);
1026
+
1027
+ if (!isNumeric(column)) {
1028
+ return;
1029
+ }
1030
+
894
1031
  var address = {
895
1032
  row: row,
896
- col: _this14.toPhysicalColumnPosition(column),
897
- sheet: _this14.sheetId
1033
+ col: _this15.toPhysicalColumnPosition(column),
1034
+ sheet: _this15.sheetId
898
1035
  };
899
1036
 
900
- if (!_this14.engine.isItPossibleToSetCellContents(address)) {
1037
+ if (!_this15.engine.isItPossibleToSetCellContents(address)) {
901
1038
  warn("Not possible to set source cell data at ".concat(JSON.stringify(address)));
902
1039
  return;
903
1040
  }
@@ -905,7 +1042,7 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
905
1042
  changedCells.push({
906
1043
  address: address
907
1044
  });
908
- dependentCells.push.apply(dependentCells, _toConsumableArray(_this14.engine.setCellContents(address, newValue)));
1045
+ dependentCells.push.apply(dependentCells, _toConsumableArray(_this15.engine.setCellContents(address, newValue)));
909
1046
  });
910
1047
  this.renderDependentSheets(dependentCells);
911
1048
  this.validateDependentCells(dependentCells, changedCells);
@@ -922,7 +1059,7 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
922
1059
  }, {
923
1060
  key: "onBeforeCreateRow",
924
1061
  value: function onBeforeCreateRow(row, amount) {
925
- if (!this.engine.isItPossibleToAddRows(this.sheetId, [this.toPhysicalRowPosition(row), amount])) {
1062
+ if (this.sheetId === null || !this.engine.doesSheetExist(this.sheetName) || !this.engine.isItPossibleToAddRows(this.sheetId, [this.toPhysicalRowPosition(row), amount])) {
926
1063
  return false;
927
1064
  }
928
1065
  }
@@ -938,7 +1075,7 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
938
1075
  }, {
939
1076
  key: "onBeforeCreateCol",
940
1077
  value: function onBeforeCreateCol(col, amount) {
941
- if (!this.engine.isItPossibleToAddColumns(this.sheetId, [this.toPhysicalColumnPosition(col), amount])) {
1078
+ if (this.sheetId === null || !this.engine.doesSheetExist(this.sheetName) || !this.engine.isItPossibleToAddColumns(this.sheetId, [this.toPhysicalColumnPosition(col), amount])) {
942
1079
  return false;
943
1080
  }
944
1081
  }
@@ -955,10 +1092,10 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
955
1092
  }, {
956
1093
  key: "onBeforeRemoveRow",
957
1094
  value: function onBeforeRemoveRow(row, amount, physicalRows) {
958
- var _this15 = this;
1095
+ var _this16 = this;
959
1096
 
960
1097
  var possible = physicalRows.every(function (physicalRow) {
961
- return _this15.engine.isItPossibleToRemoveRows(_this15.sheetId, [physicalRow, 1]);
1098
+ return _this16.engine.isItPossibleToRemoveRows(_this16.sheetId, [physicalRow, 1]);
962
1099
  });
963
1100
  return possible === false ? false : void 0;
964
1101
  }
@@ -975,10 +1112,10 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
975
1112
  }, {
976
1113
  key: "onBeforeRemoveCol",
977
1114
  value: function onBeforeRemoveCol(col, amount, physicalColumns) {
978
- var _this16 = this;
1115
+ var _this17 = this;
979
1116
 
980
1117
  var possible = physicalColumns.every(function (physicalColumn) {
981
- return _this16.engine.isItPossibleToRemoveColumns(_this16.sheetId, [physicalColumn, 1]);
1118
+ return _this17.engine.isItPossibleToRemoveColumns(_this17.sheetId, [physicalColumn, 1]);
982
1119
  });
983
1120
  return possible === false ? false : void 0;
984
1121
  }
@@ -988,11 +1125,17 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
988
1125
  * @private
989
1126
  * @param {number} row Represents the visual index of first newly created row in the data source array.
990
1127
  * @param {number} amount Number of newly created rows in the data source array.
1128
+ * @param {string} [source] String that identifies source of hook call
1129
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
991
1130
  */
992
1131
 
993
1132
  }, {
994
1133
  key: "onAfterCreateRow",
995
- value: function onAfterCreateRow(row, amount) {
1134
+ value: function onAfterCreateRow(row, amount, source) {
1135
+ if (isBlockedSource(source)) {
1136
+ return;
1137
+ }
1138
+
996
1139
  var changes = this.engine.addRows(this.sheetId, [this.toPhysicalRowPosition(row), amount]);
997
1140
  this.renderDependentSheets(changes);
998
1141
  }
@@ -1002,11 +1145,17 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
1002
1145
  * @private
1003
1146
  * @param {number} col Represents the visual index of first newly created column in the data source.
1004
1147
  * @param {number} amount Number of newly created columns in the data source.
1148
+ * @param {string} [source] String that identifies source of hook call
1149
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
1005
1150
  */
1006
1151
 
1007
1152
  }, {
1008
1153
  key: "onAfterCreateCol",
1009
- value: function onAfterCreateCol(col, amount) {
1154
+ value: function onAfterCreateCol(col, amount, source) {
1155
+ if (isBlockedSource(source)) {
1156
+ return;
1157
+ }
1158
+
1010
1159
  var changes = this.engine.addColumns(this.sheetId, [this.toPhysicalColumnPosition(col), amount]);
1011
1160
  this.renderDependentSheets(changes);
1012
1161
  }
@@ -1017,17 +1166,23 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
1017
1166
  * @param {number} row Visual index of starter row.
1018
1167
  * @param {number} amount An amount of removed rows.
1019
1168
  * @param {number[]} physicalRows An array of physical rows removed from the data source.
1169
+ * @param {string} [source] String that identifies source of hook call
1170
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
1020
1171
  */
1021
1172
 
1022
1173
  }, {
1023
1174
  key: "onAfterRemoveRow",
1024
- value: function onAfterRemoveRow(row, amount, physicalRows) {
1025
- var _this17 = this;
1175
+ value: function onAfterRemoveRow(row, amount, physicalRows, source) {
1176
+ var _this18 = this;
1177
+
1178
+ if (isBlockedSource(source)) {
1179
+ return;
1180
+ }
1026
1181
 
1027
1182
  var descendingPhysicalRows = physicalRows.sort().reverse();
1028
1183
  var changes = this.engine.batch(function () {
1029
1184
  descendingPhysicalRows.forEach(function (physicalRow) {
1030
- _this17.engine.removeRows(_this17.sheetId, [physicalRow, 1]);
1185
+ _this18.engine.removeRows(_this18.sheetId, [physicalRow, 1]);
1031
1186
  });
1032
1187
  });
1033
1188
  this.renderDependentSheets(changes);
@@ -1039,21 +1194,59 @@ export var Formulas = /*#__PURE__*/function (_BasePlugin) {
1039
1194
  * @param {number} col Visual index of starter column.
1040
1195
  * @param {number} amount An amount of removed columns.
1041
1196
  * @param {number[]} physicalColumns An array of physical columns removed from the data source.
1197
+ * @param {string} [source] String that identifies source of hook call
1198
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
1042
1199
  */
1043
1200
 
1044
1201
  }, {
1045
1202
  key: "onAfterRemoveCol",
1046
- value: function onAfterRemoveCol(col, amount, physicalColumns) {
1047
- var _this18 = this;
1203
+ value: function onAfterRemoveCol(col, amount, physicalColumns, source) {
1204
+ var _this19 = this;
1205
+
1206
+ if (isBlockedSource(source)) {
1207
+ return;
1208
+ }
1048
1209
 
1049
1210
  var descendingPhysicalColumns = physicalColumns.sort().reverse();
1050
1211
  var changes = this.engine.batch(function () {
1051
1212
  descendingPhysicalColumns.forEach(function (physicalColumn) {
1052
- _this18.engine.removeColumns(_this18.sheetId, [physicalColumn, 1]);
1213
+ _this19.engine.removeColumns(_this19.sheetId, [physicalColumn, 1]);
1053
1214
  });
1054
1215
  });
1055
1216
  this.renderDependentSheets(changes);
1056
1217
  }
1218
+ /**
1219
+ * `afterDetachChild` hook callback.
1220
+ * Used to sync the data of the rows detached in the Nested Rows plugin with the engine's dataset.
1221
+ *
1222
+ * @private
1223
+ * @param {object} parent An object representing the parent from which the element was detached.
1224
+ * @param {object} element The detached element.
1225
+ * @param {number} finalElementRowIndex The final row index of the detached element.
1226
+ */
1227
+
1228
+ }, {
1229
+ key: "onAfterDetachChild",
1230
+ value: function onAfterDetachChild(parent, element, finalElementRowIndex) {
1231
+ var _element$__children,
1232
+ _this20 = this;
1233
+
1234
+ _classPrivateFieldSet(this, _internalOperationPending, true);
1235
+
1236
+ var rowsData = this.hot.getSourceDataArray(finalElementRowIndex, 0, finalElementRowIndex + (((_element$__children = element.__children) === null || _element$__children === void 0 ? void 0 : _element$__children.length) || 0), this.hot.countSourceCols());
1237
+
1238
+ _classPrivateFieldSet(this, _internalOperationPending, false);
1239
+
1240
+ rowsData.forEach(function (row, relativeRowIndex) {
1241
+ row.forEach(function (value, colIndex) {
1242
+ _this20.engine.setCellContents({
1243
+ col: colIndex,
1244
+ row: finalElementRowIndex + relativeRowIndex,
1245
+ sheet: _this20.sheetId
1246
+ }, [[value]]);
1247
+ });
1248
+ });
1249
+ }
1057
1250
  /**
1058
1251
  * Called when a value is updated in the engine.
1059
1252
  *